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

Bash shell no conceito de desktop Unity
Fatmawati Achmad Zaenuri / Shutterstock.com

Os arquivos tar são arquivos compactados. Você os encontrará com frequência ao usar uma distribuição Linux como o Ubuntu ou 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?

Os arquivos que possuem uma extensão .tar.gzou .tar.bz2são arquivos compactados. Um arquivo com apenas uma .tarextensão é descompactado, mas isso será muito raro.

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

sufixo da extensão .gzou .bz2indica que o arquivo foi compactado, usando o algoritmo de compactação gzipou bzip2. O tarcomando funcionará bem 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 é chamado ukulele_songs.tar.gz, o outro é chamado guitar_songs.tar.bz2. Esses arquivos estão no diretório Downloads.

Recomendado:  Como operadoras e fabricantes tornam o software do seu telefone Android pior

Dois arquivos tar no diretório de 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 na janela do terminal.

Extração de todos os arquivos do arquivo tar

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

  • -x : Extrai, recupera os arquivos do arquivo tar.
  • -v : Detalhado, lista os arquivos à medida que são extraídos.
  • -z : Gzip, use o gzip para descompactar o arquivo tar.
  • -f : Arquivo, o nome do arquivo tar com o qual queremos tartrabalhar. Esta opção deve ser seguida pelo nome do arquivo tar.

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

Diretório de músicas Ukulele criado no diretório de downloads

Agora vamos extrair as músicas da guitarra. Para fazer isso, usaremos quase exatamente o mesmo comando de antes, mas com uma diferença importante. O .bz2sufixo da extensão nos diz que foi compactado usando o comando bzip2. Em vez de usar a -zopção (gzip), usaremos a -jopção (bzip2).

tar -xvjf guitar_songs.tar.bz2

Extração de arquivo tar de músicas de guitarra na pasta Downloads

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

  • -x : Extrai, recupera os arquivos do arquivo tar.
  • -v : Detalhado, lista os arquivos à medida que são extraídos.
  • -j : Bzip2, use bzip2 para descompactar o arquivo tar.
  • -f : Arquivo, nome do arquivo tar com o qual queremos trabalhar.

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

Diretório de músicas de guitarra criado no diretório Downloads

Escolhendo para onde extrair os arquivos

Se quisermos extrair os arquivos para um local diferente 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 ~ / Documentos / Músicas /

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

Recomendado:  O que é ASLR e como ele mantém seu computador seguro?

Diretório de músicas de guitarra criado no diretório Documentos / Músicas

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

mkdir -p ~ / Documentos / Músicas / Baixados && tar -xvjf guitar_songs.tar.gz -C ~ / Documentos / Músicas / Baixados /

A -p opção (pais) faz mkdircom que sejam criados quaisquer diretórios pais necessários, garantindo que o diretório de destino seja criado.

Olhando dentro de 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 tararquivo antes de extraí-lo usando a -topção (listar). Geralmente é conveniente canalizar a saída por meio do lesscomando.

tar -tf ukulele_songs.tar.gz | Menos

Observe que não precisamos usar a -zopção de listar os arquivos. Só precisamos adicionar a -zopção quando estamos extraindo arquivos de um .tar.gzarquivo. Da mesma forma, não precisamos da -jopção de listar os arquivos em um tar.bz2arquivo.

Conteúdo do arquivo tar encaminhado para menos

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

Segunda visão do conteúdo do arquivo tar canalizado através de menos

Podemos ver que o diretório Ukulele Songs contém diretórios chamados Random Songs, Ramones e Possibles.

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 "Canções Ukulele / Ramones /"

Extraindo uma única pasta do arquivo tar

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"

Extraindo um único arquivo do arquivo tar

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 --wildcardsopção.

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

Extraindo músicas do alcatrão com curingas

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 --strip-componentsopção. A --strip-componentsopção 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.

Recomendado:  O que é um arquivo 7Z (e como faço para abrir um)?

Se especificarmos --strip-components=1com nosso arquivo tar de exemplo, o diretório mais alto das Músicas Ukulele dentro do arquivo tar não será criado no disco rígido. Os arquivos e diretórios que seriam extraídos para aquele diretório são extraídos no diretório de destino.

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

Extraindo arquivos do arquivo tar com --strip-components = 1

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

Extraindo arquivos do arquivo tar com --strip-components = 2

Se você olhar a página do manual do Linux  , verá que tardeve ser um bom candidato para o título de “comando com mais opções de linha de comando”. Felizmente, para nos permitir extrair arquivos .tar.gze tar.bz2arquivos com um bom grau de controle granular, só precisamos lembrar algumas dessas opções.