Überprüfen Sie die Gültigkeit der gz-Datei

12

Wie kann ich die Gültigkeit einer gz-Datei überprüfen? Ich habe nicht den Hash der Datei, die ich verwende, gzip -taber es wird keine Ausgabe zurückgegeben.

Vielen Dank

Noor
quelle

Antworten:

21

Der gzip -tBefehl gibt nur einen Exit-Code an die Shell zurück, der angibt, ob die Datei den Integritätstest bestanden hat oder nicht.

Beispiel (in einem Skript):

if gzip -t file.gz; then
    echo 'file is ok'
else 
    echo 'file is corrupt'
fi

Durch Hinzufügen -vwird das Ergebnis tatsächlich mit einer Nachricht gemeldet.

Beispiel:

$ gzip -v -t file.gz
file.gz:        OK

Die Datei ist also in Ordnung. Lassen Sie uns die Datei beschädigen (indem Sie das Zeichen 0in Byte 40 in die Datei schreiben ) und es erneut versuchen.

$ dd seek=40 bs=1 count=1 of=file.gz <<<"0"
1+0 records in
1+0 records out
1 bytes transferred in 0.000 secs (2028 bytes/sec)
$ gzip -v -t file.gz
file.gz:        gzip: file.gz: Inappropriate file type or format

Die Integrität einer Datei in Bezug auf seine Kompression ist nicht garantiert , dass die Datei Inhalt ist das, was Sie glauben , es ist. Wenn Sie eine MD5-Prüfsumme (oder eine ähnliche Prüfsumme) der Datei von demjenigen haben, der sie bereitgestellt hat, können Sie eine zusätzliche Bestätigung erhalten, dass die Datei nicht nur ein gültiges gzipArchiv ist, sondern auch den Inhalt, den Sie erwarten sein.

Kusalananda
quelle
4

gzip -tnicht haben keine Ausgabe, außer den Return - Code, wenn es sich um eine korrekte gzip komprimierte Datei ist.

Es wird nur dann ein Fehler zurückgegeben, wenn Sie es mit etwas versuchen, das keine gzip-komprimierte Datei ist:

steamsrv@leviathan:~$ gzip -t commands.txt

gzip: commands.txt: not in gzip format

Fazit: Ihre Datei ist mit ziemlicher Sicherheit eine gzip-komprimierte Datei. Was ich Ihnen nicht sagen kann, ist, ob es genau die Datei ist, von der Sie denken, dass sie es sein soll, wofür der Hash nützlich wäre ...

Shadur
quelle