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

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

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

Garantiert die Tatsache, dass ich den Tarball komprimiert habe, in irgendeiner Weise die Integrität oder zumindest einen CRC des entpackten Inhalts?

Antwort1

tarselbst schreibt keine Prüfsumme für spätere Vergleiche. Wenn Sie gzipdas tarArchiv haben, können Sie diese Funktionalität nutzen.

tarverwendet compress. Wenn Sie das -ZFlag beim Erstellen des Archivs verwenden, wird das Programm beim Lesen oder Schreiben des Archivs tarverwendet . Aus der Manpage:compressgzip

Der StandardKompresseDas Format ist nicht darauf ausgelegt, Konsistenzprüfungen zu ermöglichen.

Sie können jedoch den -zParameter verwenden. Dann tarliest und schreibt er 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), Gunzip überprüft einen 32-Bit-CRC.

Antwort2

Ja dasGZIP-Dateiformatenthält eine CRC-32-Prüfsumme, mit der festgestellt werden kann, ob das Archiv beschädigt ist.

Natürlich, während die Prüfsumme gziperzählenSie darüber informiert, dass das Archiv beschädigt ist, hilft es Ihnen jedoch nicht dabei, die Daten im Archiv wiederherzustellen. Daher ist es hauptsächlich nützlich, um beispielsweise zu überprüfen, ob ein gerade aus dem Internet heruntergeladenes Archiv wirklich korrekt heruntergeladen wurde.

Wenn Sie sich tatsächlich Sorgen über die Speicherung oder Übertragung Ihrer Archive über unzuverlässige Medien machen, sollten Sie die Verwendung eines Archivformats wiePardas bietet tatsächlichfehler Korrekturzusätzlich zur Fehlererkennung. Der Nachteil solcher Formate besteht natürlich darin, dass die zur Fehlerkorrektur erforderliche Redundanz zwangsläufig die Dateigröße etwas erhöht.

Antwort3

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, sodass die Datei beinen völlig anderen Inhalt hat, aber Tar hat dies nicht bemerkt. Dies gilt für alle Tar-Versionen, einschließlich Tar-1.28 (aktuellste) mit beiden Tar-Formaten --format=gnu --format=posix. Der paxBefehl (alternativer Tar-Reader) pax -r < a.tarbemerkt Archivänderungen ebenfalls nicht.

Antwort4

Das PKZip-Paket (Win/DOS) enthält ein Programm namens PKZipFix, das Dateien aus beschädigten Archiven wiederherstellen kann. Ich habe dieses Dienstprogramm in der Vergangenheit verwendet. Es kann Dateien aus mäßig beschädigten Archiven wiederherstellen, die sich nicht dekomprimieren ließen.

verwandte Informationen