Wie kann ich die Gültigkeit einer GZ-Datei überprüfen? Ich habe den Hash der Datei nicht, verwende sie, gzip -t
aber es wird keine Ausgabe zurückgegeben.
Antwort1
Der gzip -t
Befehl gibt lediglich 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 das Hinzufügen -v
wird das Ergebnis tatsächlich mit einer Meldung gemeldet.
Beispiel:
$ gzip -v -t file.gz
file.gz: OK
Die Datei ist also in Ordnung. Lassen Sie uns die Datei beschädigen (indem wir 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 ihre Komprimierungnichtgarantieren, dass die DateiInhaltist das, was Sie glauben. 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, dass ihr Inhalt Ihren Erwartungen entspricht.
Antwort2
gzip -t
nichthabenjede Ausgabe außer dem Rückgabecode, sofern es sich um eine korrekt mit GZIP komprimierte Datei handelt.
Es wird nur dann ein Fehler zurückgegeben, wenn Sie es bei etwas versuchen, dasist nichteine gzip-komprimierte Datei:
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 sich um die genaue Datei handelt, die Sie vermuten, und wofür der Hash nützlich wäre ...