Question

J'ai trouvé la question Comment déterminer si les données fichier tar valide sans fichier , mais je me demandais: est-il une solution de ligne de commande prêt à l'emploi

?
Était-ce utile?

La solution

Qu'en est-il juste obtenir une liste des tarball et jeter la sortie, plutôt que le fichier décompresser?

tar -tzf my_tar.tar.gz >/dev/null

Edité selon un commentaire. Merci zrajm!

Modifier comme par commentaire. Merci Frozen Flame! Ce test ne signifie nullement l'intégrité des données. Parce qu'il a été conçu comme un utilitaire d'archivage de bande la plupart des implémentations de goudron permettront plusieurs copies du même fichier!

Autres conseils

Vous pouvez également vérifier le contenu du fichier * .tag.gz en utilisant pigz (gzip parallèle) pour speedup le contrôle de l'archive:

pigz -cvdp number_of_threads /[...]path[...]/archive_name.tar.gz | tar -tv > /dev/null

Je l'ai essayé la commande suivante et ils fonctionnent bien.

bzip2 -t file.bz2
gunzip -t file.gz

Cependant, on peut retrouver ces deux commandes sont de temps. Peut-être que nous avons besoin d'un moyen plus rapide pour déterminer intact des fichiers Compresser.

Une option intéressante est d'utiliser tar -tvvf <filePath> qui ajoute une ligne qui indique le type de fichier.

Exemple dans un fichier .tar valide:

> tar -tvvf filename.tar 
drwxr-xr-x  0 diegoreymendez staff       0 Jul 31 12:46 ./testfolder2/
-rw-r--r--  0 diegoreymendez staff      82 Jul 31 12:46 ./testfolder2/._.DS_Store
-rw-r--r--  0 diegoreymendez staff    6148 Jul 31 12:46 ./testfolder2/.DS_Store
drwxr-xr-x  0 diegoreymendez staff       0 Jul 31 12:42 ./testfolder2/testfolder/
-rw-r--r--  0 diegoreymendez staff      82 Jul 31 12:42 ./testfolder2/testfolder/._.DS_Store
-rw-r--r--  0 diegoreymendez staff    6148 Jul 31 12:42 ./testfolder2/testfolder/.DS_Store
-rw-r--r--  0 diegoreymendez staff  325377 Jul  5 09:50 ./testfolder2/testfolder/Scala.pages
Archive Format: POSIX ustar format,  Compression: none

Corrupted fichier .tar:

> tar -tvvf corrupted.tar 
tar: Unrecognized archive format
Archive Format: (null),  Compression: none
tar: Error exit delayed from previous errors.

Ce sont toutes les solutions très sous-optimales. De GZIP spec

  ID2 (IDentification 2)


  Celles-ci ont des valeurs fixes ID1 = 31 (0x1f, \ 037), ID2 = 139   (0x8b, \ 213), pour identifier le fichier comme étant au format gzip.

A à coder dans la langue que vous utilisez.

  

> utiliser l'option -o. [...] Si le fichier tar est corrompu, le processus abandonnera avec une erreur.

Parfois, oui, mais parfois pas. Voyons un exemple d'un fichier corrompu:

echo Pete > my_name
tar -cf my_data.tar my_name 

# // Simulate a corruption
sed < my_data.tar 's/Pete/Fool/' > my_data_now.tar
# // "my_data_now.tar" is the corrupted file

tar -xvf my_data_now.tar -O

Il indique:

my_name
Fool  

Même si vous exécutez

echo $?

tar dit qu'il n'y avait pas d'erreur:

0

mais le fichier a été endommagé, il est maintenant "Fool" au lieu de "Pete".

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top