Wie kann ich die Gültigkeit einer gz-Datei überprüfen? Ich habe nicht den Hash der Datei, die ich verwende, gzip -t
aber es wird keine Ausgabe zurückgegeben.
Vielen Dank
Der gzip -t
Befehl 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 -v
wird 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 0
in 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 gzip
Archiv ist, sondern auch den Inhalt, den Sie erwarten sein.
gzip -t
nicht 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 ...