Você pode tentar o utilitário gzrecover e extrair o arquivo recuperado com cpio .
Ele ajudou na recuperação de arquivos corrompidos no passado, mas sua milhagem pode variar. Estou tendo um problema em que ele não pode recuperar um arquivo para mim, aviso tão justo.
EDIT: Por um mod me ameaçando violentamente com uma faca, vou adicionar alguns detalhes como eu recuperei arquivos antecipadamente. (Estou brincando. Não me machuque, @ Scott!)
Você pode instalar os dois pacotes usando
sudo apt-get install cpio gzrt
Depois de garantir que ambos os pacotes estejam instalados, vamos começar a trabalhar.
Primeiro, coloque seu arquivo onde você não se importa com os dados que estão sendo extraídos. De lá, você pode correr
gzrecover broken-archive.tar.gz
O gzrecover provavelmente levará algum tempo, dependendo do tamanho do arquivo. No entanto, com alguma sorte, você verá "broken-archive.tar.recovered" no mesmo diretório após a conclusão da operação.
O arquivo recuperado provavelmente sofreu algum tipo de dano também; é aqui que o cpio é útil. Já deve estar instalado no seu sistema.
Para extrair o arquivo recuperado, use
cpio -F broken-archive.tar.recovered -i -v
Esteja ciente de que o cpio divulgará uma grande quantidade de informações durante esse período. Eu recomendo que você faça isso em um tty separado inteiramente ao invés de um terminal em sua sessão X. Para fazer isso, você pode simplesmente pressionar CTRL + ALT + F1 e sua tela irá mudar para um terminal. Para retornar à sua sessão X, pressione CTRL + ALT + F8 (pode variar, mas geralmente é F7-9).
O processo de extração do arquivo recuperado também será bastante intensivo. Como o cpio não é otimizado para uso com múltiplos núcleos, ele se ater a um núcleo. Qualquer que seja o núcleo que aconteça, provavelmente prenderá o núcleo com 100% de uso. Se você tiver uma máquina dual-core, talvez não tenha que usar o computador por um tempo.
Esteja avisado que este processo pode levar vários dias, especialmente considerando o tamanho do arquivo. Encontre uma máquina diferente para descarregar esse trabalho (CPUs mais lentas farão com que isso demore mais), planeje não usar o computador por um tempo ou simplesmente prepare-se para o seu sistema sufocando durante o trabalho. Além disso, se você fizer isso execute isto dentro de um terminal em sua sessão X, você provavelmente fixará um segundo núcleo em 100%. Se você for um usuário avançado, poderá usar o comando taskset
para atribuir o (s) processo (s) a um núcleo específico. No entanto, isso está fora do escopo da minha resposta.
Desejo-lhe boa sorte.