Arquivar e comprimir arquivos com comando tar no Linux

Arquivar e comprimir arquivos com comando tar no Linux

O utilitário tar no Linux é uma ferramenta extremamente útil e amplamente utilizada para empacotamento / arquivamento e compressão de arquivos e diretórios. A palavra “tar” vem de “Tape Archive“, pois historicamente o comando foi desenvolvido para fazer backups em fitas magnéticas.

O tar permite agrupar vários arquivos em um único arquivo, conhecido como arquivo tar ou tarball, que pode ser comprimido para economizar espaço.

Neste tutorial veremos como usar o comando tar para empacotar e comprimir arquivos e diretórios no Linux.

Sintaxe Básica do Comando tar

A sintaxe básica do comando tar é:

tar [opções] arquivo.tar [arquivos/diretórios]

Algumas das opções mais comuns incluem:

  • -c : Cria um novo arquivo tar.
  • -x : Extrai os arquivos de um arquivo tar.
  • -t : Lista o conteúdo de um arquivo tar.
  • -v : Mostra o processo detalhado (verbose) enquanto o comando é executado.
  • -f : Especifica o nome do arquivo tar.
  • -z : Compacta o arquivo com gzip (.tar.gz).
  • -j : Compacta o arquivo com bzip2 (.tar.bz2).
  • -J : Compacta o arquivo com xz (.tar.xz).

Como criar arquivos Tar

Para criar um arquivo tar, usamos a opção -c combinada com a opção -f para especificar o nome do arquivo. Vejamos alguns exemplos.

Exemplo 1: Criar um arquivo empacotado tar de nome vim.tar com o conteúdo do diretório /etc/vim

$ tar -cvf vim.tar /etc/vim/

Esse comando, portanto, cria um arquivo chamado vim.tar com o conteúdo do diretório /etc/vim/.

Exemplo 2: Criar um Arquivo tar Compactado com gzip

Vamos criar agora um arquivo empacotado semelhante ao exemplo anterior, porém compactando-o com o utilitário gzip. Para tal, basta acrescentar a opção -z ao comando (e não esqueça de acrescentar a extensão .gz ao arquivo): 

tar -czvf vim.tar.gz /etc/vim/

Aqui, o arquivo vim.tar.gz é criado e compactado com gzip. Podemos comparar os arquivos criados para ver seus respectivos tamanhos:

$ ls -l vim*

Exemplo 3: Criar um arquivo tar compactado com a ferramenta bzip2

(Não esqueça de alterar a extensão para .bz2).

$ tar -cjvf vim.tar.bz2 /etc/vim/

Este comando cria um arquivo .tar.bz2, usando bzip2. Verificamos os tamanhos dos arquivos criados para comparação na sequência:

$ ls -l vim*

Como extrair arquivos tar

Para extrair arquivos, usa-se a opção -x, e normalmente -v para ver o progresso.

Exemplo 1: Extrair o arquivo tar vim.tar

$ tar -xvf vim.tar
$ ls

Com esse comando extraímos o conteúdo de vim.tar no diretório atual.

Exemplo 2: Extrair um Arquivo tar compactado com gzip

$ tar -xzvf vim.tar.gz

Aqui, o conteúdo de vim.tar.gz é extraído e descompactado no diretório atual.

Exemplo 3: Extrair um arquivo tar para um diretório específico

Vamos extrair o conteúdo do pacote vim.tar para dentro do diretório Documentos do usuário atual:

$ tar -xvf vim.tar -C ~/Documentos/
$ ls ~/Documentos

Com esse comando o conteúdo do arquivo vim.tar será extraído para o diretório especificado.

Exemplo 4: Extrair um arquivo específico de um pacote tar

Podemos também extrair um ou mais arquivos específicos de um pacote tar, sem no entanto extrair o conteúdo completo do pacote. Para tal usamos a opção –extract como segue:

$ tar -vf arquivo.tar --extract arquivo1 arquivo2 ...

Exemplo: Suponha um arquivo backup.tar que contenha diversos arquivos, entre eles um arquivo de nome ls.txt. Para extrair apenas esse arquivo no diretório atual executamos:

$ tar -vf backup.tar --extract ls.txt

Como listar o conteúdo de um arquivo tar

O que há dentro do arquivo tar criado? A opção -t permite ver o conteúdo de um arquivo tar sem extraí-lo.

$ tar -tvf vim.tar

Esse comando exibe uma lista de arquivos e diretórios dentro de vim.tar.

Como adicionar mais arquivos a um arquivo tar existente

O tar também permite adicionar mais arquivos a um arquivo tar existente usando a opção -r. Vamos adicionar o arquivo pwd.dat ao arquivo vim criado anteriormente, e depois visualizar seu conteúdo atualizado:

$ pwd > pwd.dat
$ tar -rvf vim.tar pwd.dat
$ tar -tvf vim.tar

Como remover arquivos de um arquivo tar

Para excluir arquivos de dentro de um pacote tar criado, podemos usar a opção –delete seguida do nome do arquivo ou arquivos a excluir. Por exemplo, vamos remover o arquivo pwd.dat de dentro de vim.tar:

$ tar -vf vim.tar --delete pwd.dat
$ tar -tvf vim.tar

É isso aí! Vimos vários exemplos de uso do tar, e agora vamos fazer mais alguns exercícios de reforço para fixar o aprendizado da ferramenta.

Exercícios com resolução

A seguir temos alguns exercícios para treinarmos o uso do comando tar no Linux.

Exercício 1: Criar um arquivo tar com dois diretórios e compactá-lo com gzip

Instrução: Use o comando tar para criar um arquivo chamado backup.tar.gz que inclua os diretórios /home/fabio/Documentos e /home/fabio/Imagens, compactando-o com gzip.

Solução:

tar -czvf backup.tar.gz /home/fabio/Documentos /home/fabio/Imagens

Esse comando cria um arquivo chamado backup.tar.gz contendo ambos os diretórios. Com o comando ls podemos ver o arquivo criado no diretório atual:

$ ls -l

Exercício 2: Extrair um Arquivo tar para um diretório específico

Instrução: Extraia o conteúdo do arquivo backup.tar.gz para o diretório /tmp/backup.

Solução:

$ mkdir /tmp/backup
$ tar -xzvf backup.tar.gz -C /tmp/backup/
$ tree /tmp/backup

Exercício 3: Listar o conteúdo de um arquivo compactado sem extraí-lo

Devemos listar todos os arquivos e diretórios dentro de backup.tar.gz sem extrair o arquivo.

Solução:

$ tar -tzvf backup.tar.gz

Exercício 4: Adicionar um arquivo de texto a um arquivo tar existente

Instrução: Adicione o arquivo /home/fabio/ls.txt ao arquivo backup.tar e depois visualize o conteúdo do arquivo tar.

Lembre-se de criar o arquivo sem compactação .tar antes, pois não é possível atualizar o conteúdo de arquivos compactados. Suponha também que você já esteja no diretório do usuário, por exemplo /home/fabio/.

Solução:

ls > ls.txt
tar -cvf backup.tar ./Documentos ./Imagens
tar -rvf backup.tar /home/fabio/ls.txt
tar -tvf backup.tar.gz

Conclusão

O tar é uma ferramenta essencial para manipulação de arquivos no Linux, permitindo arquivar e compactar grandes volumes de dados. Ele é amplamente utilizado para backup, transferência e armazenamento de dados em uma estrutura organizada e eficiente, e por conta disso é essencial prender a usar essa ferramenta de forma adequada.

Sobre Fábio dos Reis (1223 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 30 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Ciência e Tecnologia em geral, adora Viagens e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.

Escreva um comentário

Seu e-mail não será divulgado


*