Vérifier la validité du fichier gz

13

Comment puis-je vérifier la validité d'un fichier gz, je n'ai pas le hachage du fichier, j'utilise gzip -tmais il ne renvoie aucune sortie.

Merci

Noor
la source

Réponses:

22

La gzip -tcommande renvoie uniquement un code de sortie au shell indiquant si le fichier a réussi le test d'intégrité ou non.

Exemple (dans un script):

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

L'ajout lui -vfera réellement rapporter le résultat avec un message.

Exemple:

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

Le fichier est donc correct. Corrompuons le fichier (en écrivant le caractère 0à l'octet 40 dans le fichier) et réessayons.

$ 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

L'intégrité d'un fichier par rapport à sa compression ne garantit pas que le contenu du fichier est ce que vous croyez qu'il est. Si vous avez une somme de contrôle MD5 (ou une somme de contrôle similaire) du fichier de la part de celui qui l'a fourni, vous pourrez obtenir une confirmation supplémentaire que le fichier est non seulement une gziparchive valide , mais aussi que son contenu correspond à ce que vous attendez. être.

Kusalananda
la source
4

gzip -tn'ont une sortie autre que le code de retour, si c'est un fichier compressé gzip correct.

Il ne renvoie une erreur que si vous l'essayez sur quelque chose qui n'est pas un fichier compressé gzip:

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

gzip: commands.txt: not in gzip format

Conclusion: Votre fichier est presque certainement un fichier compressé gzip. Ce que je ne peux pas vous dire, c'est si c'est le fichier exact que vous pensez qu'il est censé être, ce à quoi le hachage serait utile ...

Shadur
la source