Recebi um arquivo .tar.gz enorme de um cliente que contém cerca de 800 mb de arquivos de imagem (quando descompactados). O ftp da nossa empresa de hospedagem é muito lento, então extrair todos os arquivos localmente e enviá-los via ftp não é prático. Eu consegui ftp o arquivo .tar.gz para o nosso site de hospedagem, mas quando eu ssh no meu diretório e tento usar unzip, ele me dá 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.
Que comando preciso usar para extrair todos os arquivos em um arquivo .tar.gz?
Digite
man tar
para obter mais informações, mas este comando deve fazer o truque:Para explicar um pouco mais,
tar
coletei todos os arquivos em um pacote,community_images.tar
. O programa gzip aplicou compressão, daí agz
extensão. Então o comando faz algumas coisas:f
: este deve ser o último sinalizador do comando, e o arquivo tar deve ser imediatamente posterior. Ele informa ao tar o nome e o caminho do arquivo compactado.z
: diz ao tar para descompactar o arquivo usando g z ipx
: o tar pode coletar arquivos ou e x tratá-los.x
faz o último.v
: faz o tar falar muito. A saída V erbose mostra todos os arquivos que estão sendo extraídos.Para extrair para uma pasta personalizada, adicione a
-C
opção com um nome de pasta de sua escolha:Se você deseja que os arquivos sejam extraídos para um destino específico, você pode adicionar Certifique-se de criar o diretório primeiro, neste caso: ~/Pictures/Community
-C /destination/path/
Exemplo:
Você pode memorizá-lo facilmente se considerar dizer ao tar para e X tratar um arquivo
Nota: Lembre-se de que você pode pesquisar dentro de páginas de manual com
?
+termo para procurar e, em seguida,n
irN
para a instância seguinte ou anterior do termo que está procurando.Em algum momento
tar
foi atualizado para auto-descompressão. Tudo que você precisa agora é:A mesma explicação se aplica:
f
: este deve ser o último sinalizador do comando, e o arquivo tar deve ser imediatamente posterior. Ele informa ao tar o nome e o caminho do arquivo compactado.x
: e x trato os arquivos.Observe a falta de hífen para os sinalizadores de comando. Isso ocorre porque a maioria das versões do tar permite opções de estilo gnu e bsd (simplesmente, gnu requer um hífen, bsd não).
Lembrar todas as bandeiras para
tar
pode ser tedioso. XKCD obrigatório:Portanto, fiz meu próprio pequeno script em Python para fazer isso. Rápido, sujo,
cp
como em uso:Use-o assim:
Veja também script semelhante para descompactar arquivos zip .
Resposta rápida:
[ NOTA ]:
-v
Liste detalhadamente os arquivos processados.-z
Filtre o arquivo através do gzip.-f
Use arquivo ou dispositivo ARCHIVE.-x
Extraia arquivos de um arquivo.-j
bzip2.-xf
archive.tar # Extraia todos os arquivos dearchive.tar
.Caso você não consiga extrair
.tar.gz
o arquivo usandoTente extrair usando
Você pode fazer isso também na primeira etapa:
Então você tem o arquivo: community_images.tar
O segundo passo seria:
E o arquivo *.tar seria extraído.
tar arquivo xvf.tar.gz
Qualquer versão remotamente moderna do tar deve detectar automaticamente que o arquivo está compactado e adicionar "z" para você.