Formato de arquivo não reconhecido ao tentar extrair conteúdo de um arquivo TAR

0

Eu tenho um arquivo TAR não compactado criado no Linux.

Se eu usar less para visualizar o arquivo, posso ver todos os dados; principalmente arquivos de código. No entanto, se eu tentar descompactar, recebo o seguinte erro:

tar: Unrecognized archive format error.

Se eu fizer um file thetarfile.tar , obtenho os dados de tipo.

Como posso extrair o arquivo?

    
por Jens 25.11.2014 / 05:35

3 respostas

0

Você pode tentar salvar o que ainda é possível com o utilitário cpio .
( GNU cpio copia arquivos para dentro ou fora de um arquivo cpio ou tar ... )

O comando abaixo deve fazer o trabalho de extrair os arquivos e recriar a árvore de diretórios:

      cpio -ivd -H tar < myfile.tar 

Ps > Trabalhe em um lugar seguro (diretório).

Em detalhes:

  • -i ou --extract Executar em modo de cópia .
  • -d ou --make-directories Crie diretórios principais onde for necessário.
    (por padrão não cria diretório)
  • -v ou --verbose como frequentemente escreve mais informações, desta vez lista os arquivos processados.
  • -H format ou --format=format Use o formato de arquivo formato .

Resume:
É quase um arquivo tar completo. Não tem o número mágico no cabeçalho, tem a assinatura final. Além disso, você pode ler a peça com arquivos de texto (quando você usa menos), sem compressão. Está corrompido. Por que (se porque o servidor não terminou o trabalho ou foi transferido corrompendo algumas partes) é secundário. Se você puder gerá-lo novamente, é melhor. Se não, você pode tentar o que está acima ou abaixo ...

Referências:
Você pode encontrar ajuda no site do cpio ou no mac site também.
Lista de opções completa

Alternativas:

  • Seguindo esta postar e baixar este script perl , depois que você descomprimi-lo (com bunzip2 find_tar_headers.pl.bz2 ) você pode usá-lo:

    perl find_tar_headers.pl yourfile.tar
    

    ele responderá com uma série de linhas como

    yourfile.tar:12345:dir/subdir/yourfile:126344
    yourfile.tar:20578:dir/subdir/yourfile:123453 ...

    leia o 1º número, neste caso 12345 e o que segue deve resolver o seu problema

    tail -c +12345 yourfile.tar > extracted_tail_yourfile.tar
    tar xf extracted_tail_yourfile.tar
    
  • 75 73 74 61 72 00 30 30 ou 75 73 74 61 72 20 20 00 são as assinaturas de um arquivo tar. (de acordo com esta lista ). Você pode escrever um deles no deslocamento 257 em uma cópia do seu arquivo com um editor hexadecimal ou com dd e ele será reconhecido como um arquivo tar . Provavelmente você poderá extrair algo também, mas ainda estará corrompido : é melhor se você puder gerá-lo novamente.

por 26.11.2014 / 18:21
1

Só porque um arquivo tem um sufixo tar ou tgz, não é um arquivo tar.

Você pode verificar o número mágico no cabeçalho do arquivo com o comando file:

file myfile

E ele informará o tipo de arquivo. Poderia ser o formato zip, o formato bzip ou mesmo o cpio.

Se ele retornar "dados", talvez não seja um arquivo conhecido ou não seja um arquivo.

    
por 25.11.2014 / 06:13
0

Pode ser um número de coisas que fazem com que o TAR seja visto como corrupto. Se fosse um arquivo parcialmente concluído, simplesmente não seria completo, mas pelo menos não TAR a um ponto. Se file thetarfile.tar retornar "dados", pode ser que seja um arquivo compactado?

Uma ideia é ver se existe algum tipo de problema de retorno / quebra de linha. E isso pode ser resolvido através de dos2unix , um utilitário no Linux / Unix que converte retornos de linha de arquivo / quebras de linha em quebras compatíveis com o Linux. Para usá-lo, faça o seguinte.

Primeiro, instale dos2unix . Não está claro em qual sistema você está tentando fazer isso, mas no Ubuntu você pode executar este comando aptitude para instalá-lo a partir de um repositório:

sudo aptitude install dos2unix 

Agora crie uma cópia do original .tar para testá-lo assim:

cp tarfile.tar tarfile_TEST.tar

Agora, com dos2unix , basta executar este comando:

dos2unix tarfile_TEST.tar

A saída seria algo assim:

dos2unix: converting file tarfile_TEST.tar to UNIX format ...

Em seguida, tente descomprimir o conteúdo desse arquivo TAR assim:

tar -xf tarfile_TEST.tar

Agora, se você precisar instalar o dos2unix no Mac OS X, são dicas aqui sobre como lidar com isso . Mas tudo isso é um palpite da minha parte; Não mergulhe muito fundo neste buraco teórico, a menos que se mostre uma verdadeira solução.

    
por 25.11.2014 / 07:13

Tags