Questão Qual comando eu preciso descompactar / extrair um arquivo .tar.gz?


Eu recebi um enorme arquivo .tar.gz de um cliente que contém cerca de 800 mb de arquivos de imagem (quando descompactado). O ftp da nossa empresa de hospedagem é seriamente lento, então extrair todos os arquivos localmente e enviá-los via ftp não é prático. Consegui fazer o ftp do arquivo .tar.gz para o nosso site de hospedagem, mas quando eu ssh no meu diretório e tentei usar o unzip, ele me deu este erro:

[esthers@clients locations]$ unzip community_images.tar.gz
Archive:  community_images.tar.gz
  End-of-central-directory signature not found.  Either this file is not a zipfile, or it constitutes one disk of a multi-part archive.  In the latter case the central directory and zipfile comment will be found on the last disk(s) of this archive.
note:  community_images.tar.gz may be a plain executable, not an archive
unzip:  cannot find zipfile directory in one of community_images.tar.gz or community_images.tar.gz.zip, and cannot find community_images.tar.gz.ZIP, period.

Qual comando eu preciso usar para extrair todos os arquivos em um arquivo .tar.gz?


628
2018-02-08 22:50


origem




Respostas:


Tipo man tar para mais informações, mas este comando deve fazer o truque:

tar -xvzf community_images.tar.gz

Para explicar um pouco mais, o tar coletou todos os arquivos em um pacote, community_images.tar. O programa gzip aplicou compressão, daí a extensão gz. Então o comando faz algumas coisas:

  • f: este deve ser o último sinalizador do comando e o tar file deve ser imediatamente depois. Diz ao tar o nome e o caminho do arquivo compactado.
  • z: diz ao tar para descompactar o arquivo usando gzip
  • x: tar pode coletar arquivos ou extrate-os. x faz o último.
  • vfaz o tar falar muito. VA saída de e-mail mostra todos os arquivos que estão sendo extraídos.

1059
2018-02-08 22:57



@Shiki Eu vi sua edição proposta. Não acho que seja uma mudança apropriada, prefiro o modo como expliquei essa ferramenta. Eu Faz acho que o seu tar -xf sugestão faria uma grande resposta adicional. - djeikyb
Esta é uma das melhores explicações dos milhões de perguntas formuladas de forma semelhante - JohnMerlino
@ KasunSiyambalapitiya Por padrão, acaba na pasta atual. Veja também man tar; procure o -C opção. Ou talvez confira a outra resposta - djeikyb
@nikoss eu adiciono o v mudar o tempo todo porque eu gostar vendo a listagem de arquivos durante a extração. ensinando isso também prepara o leitor para outros comandos de tar como tar -tvf foo.tar que exibe o conteúdo do arquivo sem extrair. - djeikyb
Me lembra de Artigo do xckd sobre tar.Eu tenho que voltar o tempo todo. - mgarey


Se você quiser que os arquivos sejam extraídos para um destino específico, você pode adicionar -C /destination/path/
Certifique-se de criar o diretório primeiro, neste caso: ~ / Pictures / Community

Exemplo:

mkdir ~/Pictures/Community
tar xf community_images.tar.gz -C /home/emmys/Pictures/Community/

Você pode memorizá-lo facilmente se considerar contar alcatrão dedo do pé X trato a F ile

gif of process done at terminal

Nota: Lembre-se que você pode pesquisar dentro de páginas man com ?+ termo a procurar e, em seguida, n e N para ir para a instância seguinte ou anterior do termo que você está procurando.


131
2017-08-20 11:02



não esqueça C para "change directory "! também, eu sinto que é melhor não misturar opções de hífen e sem hífen (especialmente confuso ao usar ps). - djeikyb
Por que não é como todos os outros comandos? - Jan M.
Eu amo sua dica 'tar to e X tract a File' - Nam G VU
1+ para o gif animado - Nick Steele


Em algum ponto tar foi atualizado para auto-descomprimir. Tudo o que você precisa agora é:

tar xf community_images.tar.gz

A mesma explicação se aplica:

  • f: este deve ser o último sinalizador do comando e o tar file deve ser imediatamente depois. Diz ao tar o nome e o caminho do arquivo compactado.
  • x: extrato os arquivos.

Observe a falta de hífen para as flags de comando. Isso ocorre porque a maioria das versões do tar permite opções de estilo gnu e bsd (simplificadamente, o gnu requer um hífen, o bsd não).


89
2017-12-31 23:54



Existe alguma documentação sobre isso? Eu tenho procurado por toda parte por uma referência a isso, eu nunca uso o sinalizador -z e tudo fica compactado, então eu tenho me preocupado se eu não tenho comprido meus tarballs, haha. Obrigado. - neurosnap
@neurosnap ver o manual do gnu e do manual do bsd - djeikyb
Provavelmente teria sido melhor editar sua resposta original. - Seth♦
@Seth se sente / parece suficientemente distinto para ser uma resposta separada, especialmente no contexto da edição destrutiva que a provocou. Vou repensá-lo depois do trabalho, pode ser uma maneira mais simples de mesclar do que eu pensava inicialmente. - djeikyb
@EnricoMariaDeAngelis bsd tar desde pelo menos 2004 e gnu tar desde pelo menos 2010 suportam auto-seleção de um descompressor. é possível que nenhuma versão "recente" (neste século? noventa +?) do tar requeira a seleção manual de um descompressor. - djeikyb


Caso você não seja capaz de extrair .tar.gz arquivo usando

tar -xvzf fileName.tar.gz

Tente extrair usando

tar xf fileName.tar.gz

4
2018-01-05 06:29



se for um arquivo tar gzipado, o primeiro comando sempre funcionará. se não funcionar, você não possui um arquivo tar compactado com gzip. o último comando é uma ótima recomendação para pessoas que não se importam com qual algoritmo de compressão foi usado em seu arquivo tar. - djeikyb