Para ilustrar o ponto: baixei a biblioteca LEDA do site da empresa . O uso do tar -xzf nele falha:
$ tar -xzf LEDA-6.3-free-fedora-core-8-64-g++-4.1.2-mt.tar.gz
tar: This does not look like a tar archive
tar: Skipping to next header
tar: Exiting with failure status due to previous errors
No entanto, gunzip seguido por tar -xf funciona perfeitamente:
$ gunzip LEDA-6.3-free-fedora-core-8-64-g++-4.1.2-mt.tar.gz
$ tar -xf LEDA-6.3-free-fedora-core-8-64-g++-4.1.2-mt.tar
# no error
Alguém pode me dizer por que isso poderia ser? - Eu gostaria que o tar
comando padrão funcionasse o tempo todo.
tar
que não implementa -zgunzip < archive.tar.gz | tar -x
deve funcionar em qualquer lugar.tar
não suporta gunzip descompressão, você pode fazer o seguinte em vez disso:gunzip -c $file | tar -x
. É comum agrupar isso em uma função shell.tar xzf
dá um erro, no Debian GNU / Linux (que obviamente usa gnutar). Ímpar.Respostas:
O que parece ter acontecido é que eles compactaram duas vezes o arquivo.
Se você rodar
file
em seu arquivo zipado, você ainda encontrará um arquivo gzip. E se você renomeá-lo para ter .gz novamente, poderá alterá-lo novamente.Parece que recentemente o gnu tar adicionará automaticamente a
-z
opção, desde que a entrada seja um arquivo. Então, é por isso que funciona sem a-z
opção depois que você já executougunzip
uma vez, o tar a adicionou automaticamente.Esse comportamento está documentado, na página de informações:
Isso é do §8.1.1 "Criando e lendo arquivos compactados".
fonte