
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
tar
selbst schreibt keine Prüfsumme für spätere Vergleiche. Wenn Sie gzip
das tar
Archiv haben, können Sie diese Funktionalität nutzen.
tar
verwendet compress
. Wenn Sie das -Z
Flag beim Erstellen des Archivs verwenden, wird das Programm beim Lesen oder Schreiben des Archivs tar
verwendet . Aus der Manpage:compress
gzip
Der StandardKompresseDas Format ist nicht darauf ausgelegt, Konsistenzprüfungen zu ermöglichen.
Sie können jedoch den -z
Parameter verwenden. Dann tar
liest und schreibt er das Archiv durch gzip
. Und gzip
schreibt 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 gzip
Manpage:
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
tar
hat 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.tar
Archivs hat sich geändert, sodass die Datei b
einen 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 pax
Befehl (alternativer Tar-Reader) pax -r < a.tar
bemerkt 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.