Como posso extrair esse arquivo tar quando meu arquivo pode estar corrompido?

7

Ao tentar extrair todos os arquivos de um arquivo tar, recebo a seguinte mensagem de erro:

tar: Skipping to next header
tar: Error exit delayed from previous errors

Alguns dos arquivos são extraídos corretamente antes que essa mensagem de erro seja impressa e o processo resulta em um arquivo truncado que parece conter o restante do arquivo. Todos os arquivos neste arquivo são arquivos de texto.

Existe algo que eu possa tentar recuperar o resto dos arquivos?

    
por Scottie T 25.06.2009 / 19:42

3 respostas

4

Você pode tentar sua extração com a opção -i para ignorar zeros:

The --ignore-zeros (-i) option causes tar to ignore blocks of zeros in
the archive. Normally a block of zeros indicates the end of the archive,
but when reading a damaged archive, or one which was created by cat-ing
several archives together, this option allows tar to read the entire
archive. This option is not on by default because many versions of tar
write garbage after the zeroed blocks.
    
por 25.06.2009 / 20:01
1

Você pode tentar outras versões do tar: gnu tar, star, bsdtar, etc. Um deles pode lidar melhor com erros.

Você diz que seus arquivos são todos arquivos de texto, então você deve poder editar manualmente o arquivo, selecionar cada arquivo e copiá-lo / colá-lo em um novo arquivo. Procure pelo separador de tar entre cada arquivo, parece um bloco de NULLs ASCII com os metadados do arquivo (nome, permissões, timestamps, etc.) embutidos nele.

    
por 25.06.2009 / 19:59
0

Não é bonito, mas funcionará como último recurso:

Instale "photorec", que pode ser incluído no pacote "testdisk" em sua distribuição (ambos podem ser encontrados aqui ).

Digite "photorec <foo.tar>" e siga os prompts (escolha "Nenhum - mídia não particionada" e "outro" para a opção filesytem). Ele deve ser capaz de recuperar muitos dos arquivos, mas você terá que identificá-los e renomeá-los manualmente. Pelo menos, é melhor perder tudo. (Para referência, eu gravei meu diretório / etc e tentei isso. Mesmo em um arquivo tar não danificado, ele só tem 225 de 337 arquivos, e até mesmo alguns deles foram bem alterados.)

Uma abordagem de força ainda mais bruta seria executar "strings foo.tar > out.txt" para recuperar dados de texto do arquivo, que precisariam ser classificados e colocados em arquivos separados manualmente.

BTW ... um google em "recuperar arquivo tar corrompido" rendeu várias ferramentas específicas para o seu problema.

    
por 01.07.2009 / 05:50

Tags