Como recuperar um arquivo "tar.gz" corrompido

11

De repente, eu precisava recuperar um tar.gzarquivo antigo , mas assim que o executava:

tar -zxvf filename.tar.gz

Eu entendi isso:

gzip: stdin: invalid compressed data--format violated  
tar: Child returned status 1  
tar: Error is not recoverable: exiting now
arrrrgv
fonte
8
Isso é realmente um tarball compactado? Tente filecomandar primeiro.
28411 alex
1
Sim, aconteceu comigo mais de uma vez que recebi um .tar.gzque era realmente um .tare até um PDF.
21414 vonbrand

Respostas:

12

O que você deve tentar é o seguinte:

  1. Use o filecomando no arquivo gzipmorto para ver se é reconhecido como dados digitados.
  2. Execute strace gunzipno arquivo Isso imprimirá os últimos bytes lidos do arquivo, o que pode ajudá-lo a identificar o ponto no arquivo em que ocorre a corrupção.
  3. Execute uma compilação de depuração de gunzipunder gdb. Tente corrigir a seção corrompida (você precisa ter mais sorte para poder fazer isso) e veja se ela pode continuar até o final do arquivo.

Dependendo da natureza da corrupção, você pode ou não conseguir recuperar seus dados.

alex
fonte
gunzip filename.tar.gztrabalhou para mim.
Ravi Dhoriya ツ
2

Recuperação total não é possível. Formatos como .zip oferecem melhores opções de proteção e recuperação, mas também não estão completos.

.tar.gz agrupa todos os arquivos e aplica uma compactação. .zip reinicia a compactação para cada arquivo. Portanto, no arquivo .zip, um dano causado ao bloco compactado afeta apenas o arquivo ao qual esse bloco pertence. No arquivo .tar.gz, o dano afetará todos os arquivos subseqüentes até que a compactação seja reiniciada.

anatoly techtonik
fonte
que eu estava pensando, boa explicação thx! Gostaria de saber se existem outros formatos tão bons quanto o zip (mas com melhor compactação), mas o zip é sempre reconhecido em todos os lugares e é provavelmente a melhor opção em relação à recuperação.
Poder de Aquário
1

Execute zcat bad.tar.gz > some.tare extraia isso. Passar a parte corrompida do arquivo será complicado. A página de manual fornece indicadores para o formato, mas eu procuraria outras opções no Google.

Tem certeza de que isso está compactado com o gzip? Pode estar reclamando porque não entende o formato ...

vonbrand
fonte
1

Todas as novas tentativas aplicam-se apenas à extração de informações do início do arquivo para apontar onde ocorreu o erro ou onde o arquivo foi cortado.

Infelizmente, nenhum destinatário descreve como recuperar parte do arquivo / fluxo após a área de corrupção. Alguém que recebe?

Znik
fonte
-1

use este: https://github.com/arenn/gzrt

gzrecover foo.tar.gz
cpio -F foo.tar.recovered -i -v
W4U
fonte
Seu comando resulta em uma cpio: illegal option -- Fmensagem de erro.
schily
1
cpio --help oferece a opção: -F, --file = [[USER @] HOST:] NOME DO ARQUIVO Use este NOME DO ARQUIVO em vez da entrada ou saída padrão. USER e HOST opcionais especificam os nomes de usuário e host no caso de um arquivo remoto
W4U 2/18/18
Você não está falando sobre abpout cpio, mas sobre um clone com opções específicas do fornecedor, por exemplo, schillix.sourceforge.net/man/man1/cpio.1.html Se você, no entanto, falar sobre um clone em vez do original, mencione qual clone você estão usando.
schily
1
@ Schilly, eu estou falando sobre cpioincluir no debian. GNU cpio: link
W4U