Compactação e descompactação de arquivos com Tar e gzip

Introdução

O Tar e o gzip são duas ferramentas utilizadas em sistemas operacionais baseados no Unix, como o GNU/Linux, para o "empacotamento" e para a compressão de arquivos, respectivamente. Embora seja perfeitamente possível usar qualquer desses programas de forma individual, a utilização de ambos ao mesmo tempo é muito comum e útil. Sendo assim, que tal aprender a compactar e a descompactar arquivos utilizando Tar e gzip e, conseqüentemente, entender o funcionando dos famosos arquivos de extensão tar.gz? É isso que você verá neste artigo. De quebra, você ainda saberá como trabalhar com o compactador bzip2.


Comando Tar

Backup (cópia de segurança) de arquivos é uma necessidade antiga. Há várias formas de se fazer isso, mas nos sistemas operacionais baseados no Unix, uma das maneiras mais tradicionais corresponde à utilização da ferramenta Tar, sigla de Tape Archive. O que o Tar faz é muito simples de entender: ele "empacota" vários arquivos em um só, isto é, faz com que um único arquivo contenha vários outros. Assim, é possível, por exemplo, armazenar em único arquivo as cópias de documentos existentes na pasta de um usuário.

O arquivo resultante de um empacotamento feito com Tar tem, como é de se esperar, a extensão .tar (por exemplo, infowester.tar), embora sua utilização não seja obrigatória (mas é recomendada para fins de organização). Quando for necessário extrair o conteúdo existente dentro de um arquivo .tar, naturalmente, basta acionar o programa Tar. Os procedimentos para empacotamento e extração de arquivos são executados através de comandos e parâmetros inseridos em terminais (shell). Quando um usuário domina essas instruções, consegue executar tais tarefas de forma ágil. Isso se deve principalmente ao fato do Tar manter as propriedades dos arquivos e a estruturas de diretórios originais, facilitando a localização e a utilização de cada item após a extração.

A sintaxe do Tar é a seguinte:

tar [parâmetros] [nome_do_arquivo_tar] [arquivos_de_origem]

Na linha acima, tar é o comando. Em parâmetros, é possível utilizar várias opções. Eis as principais:

-c - cria um novo arquivo tar;
-t - exibe o conteúdo de um arquivo tar;
-p - mantém as permissões originais do(s) arquivo(s);
-r - adiciona arquivos a um arquivo tar existente;
-f - permite especificar o arquivo tar a ser utilizado;
-v - exibe detalhes da operação;
-w - pede confirmação antes de cada ação no comando;
-x - extrai arquivos de um arquivo tar existente;
-z - comprime o arquivo tar resultante com o gzip (visto mais à frente);
-C - especifica o diretório dos arquivos a serem armazenados (note que, neste caso, a letra é maiúscula).

O campo nome_do_arquivo_tar especifica qual o nome que o arquivo .tar terá, e o campo arquivos_de_origem define o diretório ou os arquivos que se tornarão um .tar. Vamos ver alguns exemplos para facilitar a compreensão:

tar -cf lendas.tar saci.txt curupira.txt

O comando acima cria o arquivo lendas.tar, que contém os arquivos saci.txt e curupira.txt. Aqui, você deve ter reparado que é possível combinar parâmetros. Neste exemplo, isso ocorreu com -c e -f. No exemplo abaixo, o diretório hardware tem todo o seu conteúdo compactado no arquivo infowester.tar, só que os detalhes são exibidos graças à opção -v:

tar -cvf infowester.tar hardware

Usando tar

O exemplo a seguir lista o conteúdo do arquivo infowester.tar:

tar -tf infowester.tar

Por sua vez, o comando abaixo faz com que todos os arquivos de infowester.tar sejam extraídos (neste ponto, você certamente já sabe as funções dos parâmetros x, v e f no comando):

tar -xvf infowester.tar

Extraindo arquivos de um .tar

Já no comando a seguir, apenas o arquivo saci.txt é extraído:

tar -xvf lendas.tar saci.txt

Uma coisa interessante é que, se a opção -v for usada duas vezes, detalhes como permissões e data do(s) arquivo(s) apareção:

tar -xvvf lendas.tar saci.txt


Comando gzip

A ferramenta Tar, por si somente, serve apenas para juntar vários arquivos em um só. No entanto, o programa não é capaz de diminuir o tamanho do arquivo resultante, isto é, de compactá-lo. É neste ponto que entra em cena o gzip (GNU zip) ou outro compactador de sua preferência. Se utilizado isoladamente, o gzip faz uso da seguinte sintaxe:

gzip [parâmetros] [nome_do_arquivo]

Entre os parâmetros disponíveis, tem-se:

-c - extrai um arquivo para a saída padrão;
-d - descompacta um arquivo comprimido;
-l - lista o conteúdo de um arquivo compactado;
-v - exibe detalhes sobre o procedimento;
-r - compacta pastas;
-t testa a integridade de um arquivo compactado.

Ainda no que se refere às opções de parâmetros, é possível utilizar uma numeração de 1 a 9 para indicar o nível de compactação. Quanto maior o número, maior será a compactação do arquivo.

Eis alguns exemplos para facilitar a compreensão do comando gzip:

gzip infowester.odt

O comando acima compacta o arquivo infowester.odt. Note que os arquivos compactados com gzip recebem a extensão .gz.

gzip -d infowester.odt.gz

O comando acima descompacta o arquivo infowester.odt.gz.

gzip -1 colorado.ods

O procedimento acima faz com que o arquivo colorado.ods seja compactado considerando o nível mais baixo de compreensão.


Usando Tar e gzip

O uso conjunto dos comandos Tar e gzip é um belo exemplo de coerência da frase "a união faz a força". Muitas vezes, é necessário juntar arquivos e, ao mesmo, fazer com que o arquivo resultante, além de conter todos os outros, também seja compactado. É aí que entra em cena a capacidade de juntar arquivos do Tar com a capacidade de compactação do gzip. Para utilizar ambos ao mesmo tempo, o procedimento é muito simples: basta aplicar o comando tar com o parâmetro -z. O arquivo resultante desse procedimento receberá a extensão .tar.gz.

Neste ponto, vemos um comando bastante usado na instalação de programas e bibliotecas:

tar -zxvf nome_do_arquivo.tar.gz

Se você estiver lendo este artigo deste o começo, certamente já sabe o que o comando acima faz, mesmo assim, vamos explicar para não restar dúvidas: a letra z deve ser usada porque o arquivo foi compactado com gzip; a letra x indica que o comando deve extrair o arquivo (portanto, a referida instrução serve para extrair e descompactar o arquivo tar.gz); a letra v exibe os detalhes do procedimento; por fim, a letra f especifica qual arquivo será usado nesta atividade.

Suponha, agora, que você queira deixar em um único pacote os arquivos marvin.png, zaphod.txt e trillian.odt. O arquivo resultante terá o nome guia.tar.gz. Eis o comando que utilizaremos para este exemplo:

tar -zcvf guia.tar.gz marvin.png zaphod.txt trillian.odt

Usando Tar e gzip

Note que o comando é muito parecido com o procedimento de descompactação do exemplo anterior, com a diferença de que o parâmetro c foi utilizado no lugar de x, pois o objetivo aqui é criar um arquivo novo, e não fazer a extração de um já existente. Para extrair o conteúdo desse arquivo, basta executar o comando abaixo (também exibido na figura acima):

tar -zxvf guia.tar.gz

Se você quiser extrair apenas um dos arquivos contidos no arquivo compactado, basta indicá-lo no final do comando. Por exemplo, suponha que você queira extrair o arquivo marvin.png de guia.tar.gz. Eis o que você deve digitar:

tar -zxvf guia.tar.gz marvin.png

Extraindo um único arquivo de um  .tar.gz


Usando Tar e bzip2

A combinação Tar e gzip é muito utilizada, mas não é a única. Também é possível utilizar o algoritmo de compressão bzip2, cuja extensão é .bz2. Há quem prefira esta opção pela característica do bzip2 de gerar arquivos menores que o gzip, embora o programa o faça de maneira mais lenta que este último.

Para utilizar Tar com bzip2, basta utilizar o parâmetro -j. Por exemplo:

tar -jcvf frases.tar.bz2 confucio.html nietzsche.html

Para extrair o conteúdo arquivo, o comando é:

tar -jxvf frases.tar.bz2

Usando Tar e bzip2

Caso queira utilizar o bzip2 isoladamente, a sintaxe é:

bzip2 [parâmetros] [nome_do_arquivo]

Os parâmetros são praticamente os mesmos do gzip, por isso não serão mostrados aqui. Eis um comando de exemplo:

bzip2 -d vivaldi.htm.bz2

Esse comando descompacta o arquivo vivaldi.htm.


Finalizando

Atualmente, é possível encontrar interfaces gráficas que permitem manipular as opções provenientes dos programa Tar, gzip, bzip2 e suas possíveis combinações de maneira simples, apenas com o uso do mouse. No entanto, entender como utilizar esses comandos é essencial para quando somente a linha de comando estiver disponível e, claro, é importante também para que você possa compreender perfeitamente o que está sendo feito. É por isso que este artigo foi escrito.

Caso você queira mais detalhes sobre esses programas, digite em um terminal os comandos man tar, man gzip ou man bzip2. Se preferir, visite os sites que serviram de referência para este artigo:

- www.gnu.org/software/tar;
- www.gzip.org;
- focalinux.cipsga.org.br;
- en.wikipedia.org/wiki/Tar_(file_format);
- en.wikipedia.org/wiki/Bzip2;
- bzip.org.

Escrito por - Publicado em 10/6/2008 - Atualizado em 10/6/2008