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
- 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 xvf
deveria ter funcionado mesmo assim
- isso não é realmente relevante para o seu problema -
- Verifique novamente se sua transferência (especificamente se for via FTP) é binária (e não uma transferência de texto)
- 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 somedir
for muito grande, tente o fluxo de trabalho com um diretório pequeno.
Use tar cvpf
para 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 tar
na detecção automática de compactação, você realmente precisa nomeá-la somefile.tar
.
Citando o tar
manual 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 tar
volte a usar o nome do arquivo para determinar a compactação. No seu caso, o nome termina com .gz
, portanto assume gzip
compactação. Isso leva aos erros que você está recebendo, já que o arquivo não está realmente compactado.
dr: Nomeie o tarball com o .tar
sufixo, não .tar.gz
.