Comment vérifiez-vous une archive tar déjà écrite?

15

Je sais que vous pouvez faire -W lors de la création d'une archive, mais comment vérifier et archiver déjà créé? tvWf dit que ce n'est pas une archive tar valide?

$ mkdir tmp
$ echo asdkfjh > tmp/a
$ echo qweroiu > tmp/b
$ ls
tmp
$ tar cvf archive.tar tmp
tmp/
tmp/a
tmp/b
$ tar tvWf archive.tar
tar: This does not look like a tar archive
tar: Skipping to next header
tar: VERIFY FAILURE: 1 invalid header detected
tar: Error exit delayed from previous errors

La même chose se produit avec tar 1.15 (qui est la valeur par défaut du système sur centos 5) et 1.26 (qui est la dernière version de gnu).

cespinoza
la source

Réponses:

8

Vous ne pouvez pas utiliser Wavec t.

mkdir tmp
echo bdb > tmp/a
echo bdb > tmp/b

tar cvf archive.tar tmp
tmp/
tmp/a
tmp/b

ls -l archive.tar
-rw-r--r-- 1 tony tony 10240 Jun 23 05:57 archive.tar

tar tvf archive.tar
drwxr-sr-x tony/tony         0 2011-06-23 05:57 tmp/
-rw-r--r-- tony/tony         4 2011-06-23 05:57 tmp/a
-rw-r--r-- tony/tony         4 2011-06-23 05:57 tmp/b

tar tvWf archive.tar
tar: This does not look like a tar archive
tar: Skipping to next header
tar: Exiting with failure status due to previous errors

Je crois que tseul suffit pour tester les archives.

EightBitTony
la source
tseul énumère simplement le contenu de l'archive. Je veux vérifier que les fichiers dans le tar ont le même contenu que les originaux (toujours sur le système de fichiers), ce que je pensais être ce qu'il Wfallait faire (non?).
cespinoza
1
W ne le fait que lors de l' écriture de l'archive. Si vous voulez vous assurer que le contenu est un octet pour une correspondance d'octets, vous devrez l'extraire quelque part et faire la différence / additionner les fichiers.
EightBitTony
Pas pour moi: tar tvWf t.tar tar: --verify cannot be used with -t:tar (GNU tar) 1.27.1
Tom Hale
14

GNU tara une --compareoption. Consultez la section Comparaison des membres d'archive avec le système de fichiers de la documentation pour plus de détails.

Jon
la source
5
Par exemple tar -df /path/to/archive.tar.bz2, montrera les différences entre les fichiers de l'archive et le système de fichiers, en résolvant les chemins relatifs dans l'archive par rapport au répertoire de travail actuel.
Walf
3

Joerg Schillings stararbore une option diff , qui est capable de comparer les fichiers d'une archive tar avec leur original. Vous pouvez indiquer ce qui devrait être reconnu comme différence.

0 1 newt pts/1 ~ 17> :> tmp/testfile
0 1 newt pts/1 ~ 19> star -cz tmp > tmp.tar
0 1 newt pts/1 ~ 19> echo bla > tmp/testfile
0 1 newt pts/1 ~ 20> star -z -diff diffopts=not,times < tmp.tar
diffopts=perm,symperm,type,nlink,uid,gid,uname,gname,size,data,rdev,hardlink,symlink,sympath,sparse,dir,acl,xattr,fflags
tmp/testfile: different size,data
star: 115 blocks + 0 bytes (total of 1177600 bytes = 1150.00k).

Notez qu'il est mentionné testfilecomme étant de taille et de données différentes. Si je n'avais pas exclu les temps (y compris le temps d'accès!), Cela aurait également indiqué le temps d'accès et répertorié tous les fichiers dont les temps avaient changé juste en les regardant.

Depuis la disparition de BerliOS, starpeut être trouvé sur sourceforge . Il est hautement portable et se compile sans douleur sur la plupart des systèmes unixoïdes et des sosies unixoïdes.

Tatjana Heuser
la source
Les sources récentes sont dans le schilytoolspackage source.
schily