A extração de um arquivo tar.gz retorna: “Isto não se parece com um arquivo tar.”

21

Eu tenho um arquivo tar.gz e quero extraí-lo usando terminal. Eu usei os seguintes comandos: tar tvzf ldtp_3.5.0.orig.tar.gz e tar -xvzf ldtp_3.5.0.orig.tar.gz . No entanto, recebo o mesmo resultado para os dois arquivos:

tar: This does not look like a tar archive
tar: Skipping to next header
tar: Exiting with failure status due to previous errors

A saída do comando file mostra um arquivo gzip:

$ file ldtp_3.5.0.orig.tar.gz 
ldtp_3.5.0.orig.tar.gz: gzip compressed data, from Unix

Eu posso extraí-lo usando o botão direito do mouse - > Extraia mas quero fazer isso usando o terminal. Alguém pode me dizer como fazer isso?

    
por TheRookierLearner 18.11.2014 / 19:44

1 resposta

26

Olhando para o erro que você está vendo junto com o fato de que você pode realmente descompactar ele diz que o arquivo é um arquivo TAR / Gzip genuíno, mas talvez não seja criado um TAR depois do Gzip.

Ou seja, se você fez o download de um servidor da Web, às vezes, o Gzip compression é aplicado ao conteúdo da Web no nível do servidor para acelerar o download do conteúdo. Mas se não for definido corretamente no servidor para ignorar conteúdo já compactado como esse, ele poderá inadvertidamente duplicar arquivos Gzip.

Com isso em mente, eu veria se simplesmente descompactá-lo da linha de comando para ver o que acontece. Use um comando como este:

gzip -d ldtp_3.5.0.orig.tar.gz

E veja qual é o arquivo resultante. Eu tenho uma sensação engraçada depois de executar esse comando, você não verá um ldtp_3.5.0.orig.tar no diretório, mas sim um arquivo chamado como a fonte - ldtp_3.5.0.orig.tar.gz - mas talvez com modificação alterada? Se for esse o caso, é verdadeiramente double-Gzipped. Então, neste ponto - depois daquele un-Gzip inicial - você pode executar o comando tar que você tem assim:

tar -xvzf ldtp_3.5.0.orig.tar.gz

E agora deve descompactar corretamente o arquivo TAR completo.

Outra maneira de fazer algo semelhante a esse processo de duas etapas é canalizar a saída de gzip para tar da seguinte forma:

gzip -dc ldtp_3.5.0.orig.tar.gz | tar -xvzf -

O c no gzip , assim como o - no final do comando, é a chave:

  • A opção c para gzip dirá que gzip será descompactado para o fluxo de saída padrão.
  • O - no final do comando tar significa "usar entrada padrão". Assim, juntamente com o -c em gzip , o canal levará o fluxo de saída padrão para ele a partir de gzip e conecte-o à entrada padrão em tar .
por 18.11.2014 / 20:06