Como extrair arquivos de um arquivo .tar.gz ou .tar.bz2 no Linux

  • Dave McKay

    @TheGurkha

  • 5 de abril de 2019, 8h EDT
Fatmawati Achmad Zaenuri / .com

Os arquivos tar são arquivos compactados. Você os encontrará com frequência ao usar uma distribuição Linux como o Ubuntu ou até mesmo ao usar o terminal no macOS. Veja como extrair – ou descompactar – o conteúdo de um arquivo tar, também conhecido como tarball.

O que significam .tar.gz e .tar.bz2?

Arquivos que têm uma extensão .tar.gz ou .tar.bz2 são arquivos compactados. Um arquivo com apenas uma extensão .tar é descompactado, mas isso será muito raro.

A parte .tar de a extensão do arquivo significa arquivo em fita e é a razão de ambos os tipos de arquivo serem chamados de arquivos tar. Os arquivos tar datam de 1979, quando o comando tar foi criado para permitir que os administradores do sistema arquivassem os arquivos em fita. Quarenta anos depois, ainda estamos usando o comando tar para extrair arquivos tar em nossos discos rígidos. Alguém em algum lugar provavelmente ainda está usando tar com fita.

Publicidade

O .gz ou .bz2 sufixo de extensão indica que o arquivo foi compactado, usando o gzip ou bzip2 algoritmo de compressão. O comando tar funcionará perfeitamente com os dois tipos de arquivo, então não importa qual método de compactação foi usado – e deve estar disponível em qualquer lugar que você tenha um shell Bash. Você só precisa usar as tar opções de linha de comando apropriadas.

Extraindo arquivos de arquivos Tar

Digamos que você tenha baixado dois arquivos de partituras. Um arquivo é denominado ukulele_songs.tar.gz, o outro é denominado guitar_songs.tar.bz2. Esses arquivos estão no diretório Downloads.

Vamos extrair as músicas do ukulele:

tar -xvzf ukulele_songs.tar.gz 

Conforme os arquivos são extraídos, eles são listados em a janela do terminal.

As opções de linha de comando que usamos são:

  • -x: Extraia, recupera os arquivos do arquivo tar.
  • – v: Detalhado, liste os arquivos conforme eles estão sendo extraídos.
  • -z: Gzip, use gzip para descompactar o arquivo tar.
  • -f: Arquivo, o nome do tar arquivo com o qual queremos tar trabalhar. Esta opção deve ser seguida pelo nome do arquivo tar.

Liste os arquivos no diretório com ls e você verá que um foi criado um diretório chamado Ukulele Songs. Os arquivos extraídos estão nesse diretório. De onde veio esse diretório? Ele estava contido no arquivo tar e foi extraído junto com os arquivos.

Anúncio

Agora vamos extrair as canções de guitarra. Para fazer isso, usaremos quase exatamente o mesmo comando de antes, mas com uma diferença importante. O sufixo da extensão .bz2 nos diz que foi compactado usando o comando bzip2. Em vez de usar a opção -z (gzip), usaremos a opção -j (bzip2).

tar -xvjf guitar_songs.tar.bz2

Mais uma vez, os arquivos são listados no terminal à medida que são extraídos. Para ser claro, as opções de linha de comando que usamos com tar para o arquivo .tar.bz2 foram:

Se listarmos os arquivos no diretório de download, veremos que outro diretório chamado Guitar Songs foi criado.

Escolhendo para onde extrair os arquivos

Se quisermos extrair os arquivos para um local além do diretório atual, podemos especificar um diretório de destino usando a opção -C (diretório especificado).

tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/
Anúncio

Olhando em nosso diretório de Documentos / Músicas, veremos que o diretório Guitar Songs foi criado.

Observe que o diretório de destino já deve existir, tar não o criará se não estiver presente. Se precisar criar um diretório e tar extrair todos os arquivos em um comando, você pode fazer isso da seguinte maneira:

mkdir -p ~/Documents/Songs/Downloaded && tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/Downloaded/

A opção -p (pais) faz com que mkdir crie todos os diretórios pais necessários, garantindo o diretório de destino é criado.

Olhando dentro dos arquivos tar antes de extraí-los

Até agora, acabamos de dar um salto de fé e extraímos os arquivos sem ver. Você pode querer olhar antes de pular. Você pode revisar o conteúdo de um arquivo tar antes de extraí-lo usando a opção -t (lista).Normalmente é conveniente canalizar a saída por meio do comando less.

tar -tf ukulele_songs.tar.gz | less
Anúncio

Observe que não precisamos usar a opção -z para listar os arquivos. Só precisamos adicionar a opção -z quando estamos extraindo arquivos de um arquivo .tar.gz. Da mesma forma, não precisamos da opção -j para listar os arquivos em um arquivo tar.bz2.

Rolando através a saída, podemos ver que tudo no arquivo tar é mantido dentro de um diretório chamado Ukulele Songs, e dentro desse diretório, existem arquivos e outros diretórios.

Podemos ver que o diretório Ukulele Songs contém diretórios chamados Músicas aleatórias, Ramones e possíveis.

Para extrair todos os arquivos de um diretório dentro de um arquivo tar, use o seguinte comando. Observe que o caminho está entre aspas porque há espaços no caminho.

tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/Ramones/"
Anúncio

Para extrair um único arquivo, forneça o caminho e o nome do arquivo.

tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/023 - My Babe.odt"

Você pode extrair uma seleção de arquivos usando curingas, onde * representa qualquer sequência de caracteres e ? representa qualquer caractere único. O uso de curingas requer o uso da opção --wildcards.

tar -xvz --wildcards -f ukulele_songs.tar.gz "Ukulele Songs/Possibles/B*"

Extraindo arquivos sem extrair diretórios

Se você não quiser que a estrutura de diretórios no arquivo tar seja recriada em seu disco rígido, use a opção --strip-components. A opção --strip-components requer um parâmetro numérico. O número representa quantos níveis de diretórios devem ser ignorados. Os arquivos dos diretórios ignorados ainda são extraídos, mas a estrutura do diretório não é replicada em seu disco rígido.

Se especificarmos --strip-components=1 com nosso arquivo tar de exemplo, o O diretório mais alto do Ukulele Songs no arquivo tar não é criado no disco rígido. Os arquivos e diretórios que seriam extraídos para esse diretório são extraídos no diretório de destino.

tar -xvzf ukulele_songs.tar.gz --strip-components=1
Anúncio

Existem apenas dois níveis de aninhamento de diretório em nosso arquivo tar de exemplo. Portanto, se usarmos --strip-components=2, todos os arquivos serão extraídos no diretório de destino e nenhum outro diretório será criado.

tar -xvzf ukulele_songs.tar.gz --strip-components=2

Se você olhar a página do manual do Linux, verá que tar deve ser um bom candidato para o título de “comando com o maior número de opções de linha de comando”. Felizmente, para nos permitir extrair arquivos de .tar.gz e tar.bz2 arquivos com um bom grau de controle granular, só precisamos lembrar alguns dessas opções.

Dave McKay
Dave McKay usou computadores pela primeira vez quando a fita de papel perfurada estava na moda, e ele tem programado desde então . Depois de mais de 30 anos no setor de TI, ele agora é jornalista de tecnologia em tempo integral. Durante sua carreira, ele trabalhou como programador freelance, gerente de uma equipe internacional de desenvolvimento de software, gerente de projeto de serviços de TI e, mais recentemente , como oficial de proteção de dados. Dave é um evangelista do Linux e defensor do código aberto. Leia a biografia completa “

Leave a Reply

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *