147 Stimmen

Wie kann man überprüfen, ob eine Unix .tar.gz-Datei eine gültige Datei ist, ohne sie zu entpacken?

Ich habe die Frage gefunden Wie lässt sich feststellen, ob die Daten in einer tar-Datei gültig sind, ohne dass eine Datei vorhanden ist? aber ich habe mich gefragt: Gibt es eine fertige Kommandozeilenlösung?

5voto

Shicheng Guo Punkte 1107

Ich habe die folgenden Befehle ausprobiert und sie funktionieren gut.

bzip2 -t file.bz2
gunzip -t file.gz

Es zeigt sich jedoch, dass diese beiden Befehle zeitaufwendig sind. Vielleicht brauchen wir einen schnelleren Weg, um die Unversehrtheit der komprimierten Dateien zu bestimmen.

1voto

Kevin Liu Punkte 11

Dies sind alles sehr suboptimale Lösungen. Von der GZIP-Spezifikation

ID2 (ID-Identifikation 2)
Diese haben die festen Werte ID1 = 31 (0x1f, \037 ), ID2 = 139 (0x8b, \213 ), um die Datei als im gzip-Format vorliegend zu kennzeichnen.

Muss in der von Ihnen verwendeten Sprache kodiert werden.

0voto

Sys Punkte 33

> verwenden Sie die Option -O. [...] Wenn die tar-Datei beschädigt ist, wird der Prozess mit einem Fehler abgebrochen.

Manchmal ja, manchmal aber auch nicht. Schauen wir uns ein Beispiel für eine beschädigte Datei an:

echo Pete > my_name
tar -cf my_data.tar my_name 

# // Simulate a corruption
sed < my_data.tar 's/Pete/Fool/' > my_data_now.tar
# // "my_data_now.tar" is the corrupted file

tar -xvf my_data_now.tar -O

Sie zeigt:

my_name
Fool  

Auch wenn Sie die

echo $?

Teer sagte, dass es keinen Fehler gab:

0

aber die Datei wurde beschädigt, sie enthält jetzt "Fool" statt "Pete".

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X