Como você verifica um arquivo tar que já está gravado?

15

Eu sei que você pode fazer -W ao criar um arquivo, mas como você verifica um arquivo já criado? tvWf diz que não é um arquivo tar válido?

$ 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

O mesmo acontece com o tar 1.15 (que é o padrão do sistema no centos 5) e com o 1,26 (que é a versão mais recente do gnu).

cespinoza
fonte

Respostas:

8

Você não pode usar Wcom 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

Acredito que tsó basta testar o arquivo.

EightBitTony
fonte
tsozinho apenas lista o conteúdo do arquivo. Quero verificar se os arquivos no alcatrão têm o mesmo conteúdo que os originais (ainda no sistema de arquivos), o que eu pensei que era o que Wdeveria fazer (certo?).
cespinoza
1
W faz isso apenas ao escrever o arquivo. Se você quiser ter certeza de que o conteúdo é um byte por byte, precisará extraí-lo em algum lugar e diferenciar / somar os arquivos.
precisa
Não é para mim: tar tvWf t.tar tar: --verify cannot be used with -t:tar (GNU tar) 1.27.1
Tom Hale
14

GNU tartem uma --compareopção. Consulte a seção Comparando membros do arquivo com o sistema de arquivos da documentação para obter detalhes.

Jon
fonte
5
Por exemplo tar -df /path/to/archive.tar.bz2, mostrará diferenças entre os arquivos no arquivo e o sistema de arquivos, resolvendo os caminhos relativos no arquivo no diretório de trabalho atual.
Walf
3

Joerg Schillings starpossui uma opção diff , que é capaz de comparar arquivos em um arquivo tar com o original. Você pode indicar o que deve ser reconhecido como diferença.

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).

Observe que ele mencionou testfile como sendo de tamanho e dados diferentes. Se eu não tivesse excluído os horários (incluindo o tempo de acesso!), Ele também teria declarado o horário de acesso e também listaria todos os arquivos cujos horários foram alterados apenas olhando para eles.

Desde o fim do BerliOS, starpode ser encontrado no sourceforge . É altamente portátil e compila sem problemas na maioria dos sistemas unixóides e similares.

Tatjana Heuser
fonte
Fontes recentes estão no schilytoolspacote de fontes.
schily