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

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 um .tar.gz ou um .tar.bz2 extensão são arquivos compactados. Um arquivo com apenas um .alcatrão a extensão é descompactada, mas isso será muito raro.

O .alcatrão parte da extensão do arquivo significa tmacaco archive, e é a razão pela qual esses dois tipos de arquivo são chamados de arquivos tar. Os arquivos de alcatrão datam de 1979, quando o alcatrão O comando foi criado para permitir que os administradores de sistema arquivem arquivos em fita. Quarenta anos depois, ainda estamos usando o alcatrão comando para extrair arquivos tar em nossos discos rígidos. Alguém em algum lugar provavelmente ainda está usando alcatrão com fita adesiva.

O.gz ou .bz2 o sufixo da extensão indica que o arquivo foi compactado, usando o gzip ou bzip2 algoritmo de compressão. O alcatrão O comando 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 todos os lugares que você tiver um shell Bash. Você só precisa usar o apropriado alcatrão opções de linha de comando.

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.

Vamos extrair as canções do ukulele:

tar -xvzf ukulele_songs.tar.gz 

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

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

  • -x: Extraia, recupere os arquivos do arquivo tar.
  • -v: Detalhado, liste 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 que queremos alcatrão trabalhar com. Esta opção deve ser seguida pelo nome do arquivo tar.

Liste os arquivos no diretório com ls e 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? Estava contido no alcatrão arquivo e foi extraído junto com os arquivos.

Agora vamos extrair as músicas de guitarra. Para fazer isso, usaremos quase exatamente o mesmo comando de antes, mas com uma diferença importante. O .bz2 o sufixo da extensão nos diz que foi compactado usando o comando bzip2. Em vez de usar o-z (gzip) opção, usaremos a -j opção (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 alcatrão para o .tar.bz2 arquivo eram:

  • -x: Extraia, recupere os arquivos do arquivo tar.
  • -v: Detalhado, liste 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 que o tar trabalhe.

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 diferente do diretório atual, podemos especificar um diretório de destino usando o -C opção (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.

Observe que o diretório de destino já deve existir, alcatrão não o criará se não estiver presente. Se você precisa criar um diretório e ter alcatrão extraia os arquivos em um único 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 /

O -p (pais) opção causa mkdir para criar qualquer diretório pai necessário, garantindo que o diretório de destino seja criado.

Olhando dentro de arquivos de alcatrão antes de extraí-los

Até agora, acabamos de dar um salto de fé e extraímos os arquivos sem ver. Você pode gostar de olhar antes de pular. Você pode revisar o conteúdo de um alcatrão antes de extraí-lo usando o -t (lista) opção. Geralmente é conveniente canalizar a saída através do menos comando.

tar -tf ukulele_songs.tar.gz | menos

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

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.

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 /"

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 do --wildcards opção.

tar -xvz --wildcards -f ukulele_songs.tar.gz "Canções Ukulele / Possibles / B *"

Extraindo arquivos sem extrair diretórios

Se você não quiser que a estrutura do diretório no arquivo tar seja recriada em seu disco rígido, use o --strip-components opção. O --strip-components opçã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 no disco rígido.

Se especificarmos --strip-components = 1 com nosso arquivo tar de exemplo, o diretório mais alto do Ukulele Songs dentro do arquivo tar não é 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

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

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

Se você olhar a página do manual do Linux, verá que alcatrão deve ser um bom candidato para o título de “comando com mais 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 algumas dessas opções.


$config[zx-auto] not found$config[zx-overlay] not found