Gzip ajoute-t-il un contrôle d'intégrité / crc à un .tar?

12

J'exécute des commandes:

tar -cf myArchive.tar myDirectory/
gzip myArchive.tar

puis je copie le fichier sur un grand nombre de supports non fiables, puis je le décompresse en utilisant:

tar -xzf myArchive.tar.gz

Le fait que j'aie compressé la balle tar, cela garantira-t-il de quelque façon l'intégrité, ou du moins un CRC du contenu décompressé?

Aksel Willgert
la source

Réponses:

15

tarlui-même n'écrit pas une somme de contrôle pour une comparaison ultérieure. Si vous gzipl' tararchivez, vous pouvez avoir cette fonctionnalité.

tarutilise compress. Si vous utilisez l' -Zindicateur lors de la création de l'archive tar, le compressprogramme sera utilisé lors de la lecture ou de l'écriture de l'archive. Depuis la gzippage de manuel:

Le format de compression standard n'a pas été conçu pour permettre des contrôles de cohérence.

Mais, vous pouvez utiliser le -zparamètre. Puis tarlit et écrit l'archive gzip. Et gzipécrit une somme de contrôle crc. Pour afficher cette somme de contrôle, utilisez cette commande:

$ gzip -lv archive.tar.gz
method  crc     date  time           compressed        uncompressed  ratio uncompressed_name
defla 3f641c33 Sep 25 14:01               24270              122880  80.3% archive.tar

Depuis la gzippage de manuel:

Lorsque vous utilisez les deux premiers formats ( gzip ou zip signifie ), gunzip vérifie un CRC 32 bits.

le chaos
la source
5

Oui, le format de fichier gzip contient une somme de contrôle CRC-32 qui peut être utilisée pour détecter si l'archive a été corrompue.

Bien sûr, alors que la somme de contrôle permet à gzip de vous dire que l'archive est corrompue, elle ne fait rien pour vous aider à récupérer les données à l'intérieur de l'archive. Ainsi, il est surtout utile pour des choses comme vérifier qu'une archive que vous venez de télécharger sur le Web a vraiment été téléchargée correctement.

Si vous êtes réellement préoccupé par le stockage ou la transmission de vos archives sur des supports non fiables, vous voudrez peut-être envisager d'utiliser un format d'archive comme le pair qui fournit en fait une correction d'erreur en plus de la détection d'erreur. Bien sûr, l'inconvénient de ces formats est que la redondance nécessaire à la correction des erreurs augmente nécessairement quelque peu la taille du fichier.

Ilmari Karonen
la source
4

tarn'a pas de contrôle d'intégrité. Exemple:

$ echo JJJJJJJJJJJJJJJJJJ > b
$ tar cvf a.tar b
$ sed -i s/JJJJJJJJJJJJJJJJJJ/tttttttttttttttttt/g a.tar
$ tar xvf a.tar
$ cat b

tttttttttttttttttt

Vous voyez, le contenu de l' a.tararchive a changé, donc le fichier ba un contenu complètement différent, mais tar ne l'a pas remarqué. Cela est vrai pour tout tar, y compris tar-1.28 (dernier) avec les deux formats tar --format=gnu --format=posix. La paxcommande (lecteur tar alternatif) pax -r < a.tarne remarque pas non plus les changements d'archive.

user115641
la source
2
L'OP semble être conscient (ou du moins suspect) que tar(au moins sans l' -zoption) ne fait pas de vérification d'intégrité. En outre, la réponse acceptée le dit. La question est la suivante: gzip(ou l'utilisation de l' -zoption) ajoute- t-elle un contrôle d'intégrité?
G-Man dit 'Réinstalle Monica'
G-Man correct, cela pourrait être une bonne réponse s'il incluait également la partie gzip et démontre que gzip détecte que le contenu a changé.
Aksel Willgert
2

Si tar trouve des erreurs lors du déballage, il affichera un message et quittera avec une valeur de sortie non nulle. Ce comportement est indépendant de l'algorithme de compression utilisé après la création du fichier tar.

Si vous souhaitez vérifier que le fichier a bien été envoyé à la destination via un lien non fiable, créez une somme md5 du fichier avant l'envoi et vérifiez la somme md5 après la réception.

Jan
la source
si je ne suis intéressé que par l'intégrité du contenu décompressé. md5 sur le goudron n'ajoute rien de plus par rapport au goudron de contrôle pendant le déballage?
Aksel Willgert,
L'intégrité du contenu à l'intérieur de l'archive tar est prise en charge par tarelle-même. Vous pouvez ajouter une couche supplémentaire si nécessaire: si l'intégrité du fichier tar est vérifiée, le contenu de l'archive tar est également OK. Mais tout cela devrait être pris en charge par le protocole utilisé pour transférer les données en premier lieu.
Jan
-1

Le package PKZip (win / dos) est livré avec un programme appelé PKZipFix qui peut récupérer des fichiers à partir d'archives endommagées. J'ai utilisé cet utilitaire dans le passé, il peut récupérer des fichiers d'archives modérément endommagées qui ne se décompresseraient pas.

user87282
la source