Fügt gzip einer .tar-Datei eine Integritäts- / CRC-Prüfung hinzu?

12

Ich führe Befehle aus:

tar -cf myArchive.tar myDirectory/
gzip myArchive.tar

dann kopiere ich die Datei über viele unzuverlässige Medien und entpacke sie später mit:

tar -xzf myArchive.tar.gz

Wird die Tatsache, dass ich den Teerball komprimiert habe, in irgendeiner Weise die Integrität oder zumindest eine CRC des entpackten Inhalts garantieren?

Aksel Willgert
quelle

Antworten:

15

tarselbst schreibt keine Prüfsumme für einen späteren Vergleich auf. Wenn Sie gzipdas tarArchiv haben, können Sie diese Funktionalität haben.

tarverwendet compress. Wenn Sie -Zbeim Erstellen des Archivs das Flag verwenden, tarwird das compressProgramm beim Lesen oder Schreiben des Archivs verwendet. Aus der gzipManpage:

Das Standardkomprimierungsformat wurde nicht Konsistenzprüfungen ermöglichen konzipiert.

Sie können jedoch den -zParameter verwenden. Dann tarliest und schreibt das Archiv durch gzip. Und gzipschreibt eine CRC-Prüfsumme. Um diese Prüfsumme anzuzeigen, verwenden Sie diesen Befehl:

$ gzip -lv archive.tar.gz
method  crc     date  time           compressed        uncompressed  ratio uncompressed_name
defla 3f641c33 Sep 25 14:01               24270              122880  80.3% archive.tar

Aus der gzipManpage:

Bei Verwendung der ersten beiden Formate (" gzip" oder "zip" ist gemeint ) überprüft "gunzip" eine 32-Bit-CRC.

Chaos
quelle
5

Ja, das gzip-Dateiformat enthält eine CRC-32-Prüfsumme, mit der festgestellt werden kann, ob das Archiv beschädigt wurde.

Obwohl die Prüfsumme mit gzip angibt , dass das Archiv beschädigt ist, hilft es Ihnen natürlich nicht, die Daten im Archiv wiederherzustellen. Daher ist es vor allem nützlich, um zu überprüfen, ob ein Archiv, das Sie gerade aus dem Internet heruntergeladen haben, wirklich korrekt heruntergeladen wurde.

Wenn Sie tatsächlich Bedenken haben, Ihre Archive über unzuverlässige Medien zu speichern oder zu übertragen, sollten Sie ein Archivformat wie par verwenden , das neben der Fehlererkennung auch eine Fehlerkorrektur bietet . Der Nachteil solcher Formate ist natürlich, dass die für die Fehlerkorrektur erforderliche Redundanz die Dateigröße notwendigerweise etwas erhöht.

Ilmari Karonen
quelle
4

tarhat keine Integritätsprüfung. Beispiel:

$ echo JJJJJJJJJJJJJJJJJJ > b
$ tar cvf a.tar b
$ sed -i s/JJJJJJJJJJJJJJJJJJ/tttttttttttttttttt/g a.tar
$ tar xvf a.tar
$ cat b

tttttttttttttttttt

Sehen Sie, der Inhalt des a.tarArchivs hat sich geändert, so dass die Datei beinen völlig anderen Inhalt hat, aber tar hat dies nicht bemerkt. Dies gilt für jeden Teer, einschließlich tar-1.28 (spätestens) mit beiden Teerformaten --format=gnu --format=posix. Der paxBefehl (alternativer Teer Reader) pax -r < a.tarbemerkt auch keine Archivänderungen.

user115641
quelle
2
Das OP scheint zu wissen (oder zumindest zu vermuten), dass tar(zumindest ohne die -zOption) keine Integritätsprüfung durchgeführt wird. Auch die akzeptierte Antwort besagt dies. Die Frage ist: Fügt gzip(oder die Verwendung der -zOption) eine Integritätsprüfung hinzu?
G-Man sagt, dass Monica
Richtig, G-Man. Dies könnte eine gute Antwort sein, wenn es auch den gzip-Teil enthält und zeigt, dass gzip erkennt, dass sich der Inhalt geändert hat.
Aksel Willgert
2

Wenn tar beim Entpacken Fehler findet, wird eine Meldung gedruckt und mit einem Exit-Wert ungleich Null beendet. Dieses Verhalten ist unabhängig von dem Komprimierungsalgorithmus, der nach dem Erstellen der TAR-Datei verwendet wird.

Wenn Sie überprüfen möchten, ob die Datei über eine unzuverlässige Verbindung erfolgreich an das Ziel gesendet wurde, erstellen Sie vor dem Senden eine MD5-Summe der Datei und überprüfen Sie die MD5-Summe nach dem Empfang.

Jan
quelle
Wenn ich nur an der Integrität des entpackten Inhalts interessiert bin. md5 auf dem Teer fügt im Vergleich zum Checkteer beim Auspacken nichts hinzu?
Aksel Willgert
Die Integrität des Inhalts im tar-Archiv wird von tarselbst sichergestellt. Bei Bedarf können Sie eine zusätzliche Ebene hinzufügen: Wenn die Integrität der Tar-Datei überprüft wurde, ist der Inhalt im Tar-Archiv ebenfalls in Ordnung. All dies sollte jedoch in dem Protokoll berücksichtigt werden, das in erster Linie für die Übertragung der Daten verwendet wird.
Jan
-1

Das PKZip-Paket (win / dos) enthält ein Programm namens PKZipFix, mit dem Dateien aus beschädigten Archiven wiederhergestellt werden können. Ich habe dieses Dienstprogramm in der Vergangenheit verwendet. Es kann Dateien aus mäßig beschädigten Archiven wiederherstellen, die nicht dekomprimiert werden.

user87282
quelle