Recuperar tarball corrompido

2

Eu tenho um tarball corrupto em minhas mãos. Minha primeira tentativa de recuperação foi assim:

$ tar --ignore-failed-read --ignore-command-error -xf tarball.tar
tar: Skipping to next header tar: Archive contains ‘180738 0’ where numeric mode_t value expected
tar: Archive contains ‘0.445647 -9.’ where numeric time_t value expected
tar: Archive contains ‘.259273 ’ where numeric uid_t value expected
tar: Archive contains obsolescent base-64 headers
tar: Archive contains ‘-0.94874’ where numeric gid_t value expected
tar: text from a text file is here: implausibly old time stamp 1969-12-31 18:59:59
tar: more text file contents are here: Unknown file type 'p', extracted as normal file
tar: Skipping to next header
tar: Skipping to next header
tar: Exiting with failure status due to previous errors

Isso não extraiu muito do tarball antes de errar. O status de saída é 2, o que a página man tar diz ser um erro fatal.

A documentação do " gzip Recovery Toolkit " sugeriu isso:

cpio -F tarball.tar -i -v

Isso extraiu 1.2G de um tarball de 1.8G, o que é muito bom. Ele pára com um monte de lixo digitado após o prompt do terminal - ele não é impresso na tela, é como se eu tivesse digitado e não tivesse retornado ainda.

Existe uma maneira de melhorar? Existe uma maneira de tentar "pular os pedaços ruins" do tarball?

Com --ignore-zeros tar parece estar lendo todo o arquivo tar.

tar -R --ignore-failed-read --ignore-command-error --ignore-zeros -xvf tarball.tar
[...]
block 3670356: ** Block of NULs **
block 3670357: ** Block of NULs **
block 3670358: ** Block of NULs **
block 3670359: ** End of File **
tar: Exiting with failure status due to previous errors

Existem muitos erros Block of NULs , por isso parece que o conteúdo pode ser irrecuperável.

    
por Praxeolitic 27.06.2015 / 04:48

1 resposta

2

Você não está usando tar , mas gtar e a mensagem de erro:

tar: Archive contains obsolescent base-64 headers

está relacionado a um bug bem conhecido em gtar que é relatado repetidamente desde mais de 20 anos. Houve mudanças de origem no passado que tornaram esse problema menos provável, mas essas mudanças ainda não corrigiram o problema relacionado em gtar .

Se você quiser verificar seu arquivo, poderá usar tartest do pacote star e tentar usar estrela para extrair o arquivo e star -i caso a estrela relate erros.

    
por 04.09.2015 / 15:25