tar: Isto não se parece com um arquivo tar

tar: Isto não se parece com um arquivo tar

Eu dividi uma pasta enorme:

$ tar cvpf - somedir | split -b 50000m

… e então transferi os arquivos divididos para outro servidor e mesclei-os:

$ cat x* > somedir.tar.gz

mas quando tentei extrair o arquivo, ele apresentou erros:

$ tar xvf somedir.tar.gz
tar: This does not look like a tar archive
tar: Skipping to next header
tar: Archive contains obsolescent base-64 headers
tar: Error exit delayed from previous errors

Como posso transferir/extrair para uma pasta novamente? obrigado

Responder1

  1. Você não comprimiu, então não nomeie o arquivo de destino somedir.tar.gz- chame-osomedir.tar
    • isso não é realmente relevante para o seu problema - tar xvfdeveria ter funcionado mesmo assim
  2. Verifique novamente se sua transferência (especificamente se for via FTP) é binária (e não uma transferência de texto)
  3. Por fim, verifique se os arquivos foram transferidos corretamente
    • para isso, você pode verificar os tamanhos dos arquivos de origem e de destino
    • ou melhor ainda, combine suas somas MD5 em ambos os lados (isso também verificará o ponto 2)

Se você verificou os pontos acima e as somas MD5 correspondem em ambas as extremidades, você deve primeiro tentar verificar sua divisão. Então, o join e o tar-tf funcionam na máquina de origem?

Se o seu somedirfor muito grande, tente o fluxo de trabalho com um diretório pequeno.
Use tar cvpfpara obter um tarball simples primeiro, divida e teste após reingressar.
Agora, copie a divisão para sua máquina de destino como antes e teste depois de reingressar lá.
Isso deve acelerar a localização do seu problema.

Responder2

Não nomeie seu tarball concatenado somefile.tar.gz, pois énãocomprimido. Para evitar confusão tarna detecção automática de compactação, você realmente precisa nomeá-la somefile.tar.

Citando o tarmanual de informações:

O algoritmo de reconhecimento de formato é baseado em "assinaturas", sequências de bytes especiais [sic] no início do arquivo, que são específicas para determinados formatos de compactação. Se esta abordagem falhar, `tar' volta a usar o sufixo do nome do arquivo para determinar seu formato ...

Então, o que provavelmente está acontecendo é que o seu tarball não começa com nenhuma das assinaturas dos métodos de compactação conhecidos, então tarvolte a usar o nome do arquivo para determinar a compactação. No seu caso, o nome termina com .gz, portanto assume gzipcompactação. Isso leva aos erros que você está recebendo, já que o arquivo não está realmente compactado.

dr: Nomeie o tarball com o .tarsufixo, não .tar.gz.

informação relacionada