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

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

A mesma coisa acontece com o tar 1.15 (que é o padrão do sistema no centos 5) e 1.26 (que é a versão mais nova do gnu).

    
por cespinoza 23.06.2011 / 04:42

3 respostas

8

Você não pode usar W com 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 t sozinho é suficiente para testar o arquivo.

    
por 23.06.2011 / 07:04
11

O GNU tar tem uma opção --compare . Consulte a seção Comparando membros do arquivo com o sistema de arquivos da documentação para obter detalhes.

    
por 21.01.2013 / 08:29
3

Joerg Schillings star tem 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 testfile é de tamanho e dados diferentes. Se eu não tivesse excluído os horários (incluindo o tempo de acesso!), Ele também teria informado 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, star pode ser encontrado em sourceforge . É altamente portável e compila sem dor na maioria dos sistemas unixóides e semelhanças unixóides.

    
por 03.02.2012 / 16:50

Tags