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

0

Eu divido uma pasta enorme:

$ tar cvpf - somedir | split -b 50000m

... e depois eu transferi os arquivos divididos para outro servidor e os fundei:

$ cat x* > somedir.tar.gz

mas quando tentei extrair o arquivo, ele mostra 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 a pasta novamente? obrigado

    
por user167043 01.05.2012 / 03:33

2 respostas

3

  1. Você não compactou, portanto, não nomeie o arquivo de destino somedir.tar.gz - chame-o de somedir.tar
    • isso não é realmente relevante para o seu problema - tar xvf deveria ter funcionado, no entanto
  2. Verifique novamente se a transferência (especificamente se via FTP) é binária (e não uma transferência de texto)
  3. Finalmente, verifique se os arquivos foram realmente 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 coincidem em ambas as extremidades, você deve primeiro tentar verificar sua divisão. Então, a junção e o tar-tf funcionam na máquina de origem?

Se o seu somedir for muito grande, tente o fluxo de trabalho com um pequeno diretório.
Use tar cvpf para obter primeiro um tarball simples, dividir e testar depois de voltar.
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.

    
por 01.05.2012 / 04:38
1

Não nomeie seu tarball concatenado somefile.tar.gz , pois ele não é compactado. Para evitar confundir a detecção automática de compactação de tar , você realmente precisa nomear somefile.tar .

Citação do manual tar info:

The format recognition algorithm is based on "signatures", a special byte sequences [sic] in the beginning of file, that are specific for certain compression formats. If this approach fails, 'tar' falls back to using archive name suffix to determine its format ...

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 tar volta a usar o nome do arquivo para determinar a compactação. No seu caso, o nome termina com .gz , por isso, assume a compactação gzip . Isso leva aos erros que você está recebendo, pois o arquivo não está realmente compactado.

tl; dr: nomeie o tarball com o sufixo .tar , não .tar.gz .

    
por 01.05.2012 / 05:51

Tags