Voltar ao Diminua Blog

Artigo

Dominando o `tar` no Linux: Arquivamento e Compressão para Profissionais de TI

Um guia completo para criar, extrair e gerenciar arquivos tar.gz, tar.bz2 e outros no ambiente Linux.

Dominando o `tar` no Linux: Arquivamento e Compressão para Profissionais de TI

Introdução ao `tar`: O Coringa do Arquivamento no Linux

No universo Linux, a manipulação de arquivos é uma tarefa diária para administradores de sistemas, desenvolvedores e entusiastas. Entre as ferramentas mais poderosas e versáteis para essa finalidade, destaca-se o comando tar. Seja para consolidar múltiplos arquivos em um único pacote (arquivamento) ou para reduzir o tamanho desses pacotes (compressão), o tar é a escolha predileta. Este artigo desmistificará o tar, explicando seus usos mais comuns e fornecendo exemplos práticos para que você possa dominá-lo.

O que é o `tar` e Por Que Usá-lo?

tar significa Tape ARchiver (Arquivador de Fita), uma referência às suas origens em sistemas que utilizavam fitas magnéticas para backup. Sua principal função é agrupar vários arquivos e diretórios em um único arquivo, chamado de arquivo tar (ou tarball). Essa consolidação é extremamente útil para:

  • Facilitar o backup: Um único arquivo é mais fácil de gerenciar do que muitos.
  • Transferir múltiplos arquivos: Enviar um único arquivo é mais simples e eficiente.
  • Organizar projetos: Agrupar todos os arquivos de um projeto em um só lugar.

Além de arquivar, o tar pode, em conjunto com outros utilitários de compressão como gzip, bzip2 e xz, reduzir o tamanho dos arquivos resultantes. Isso é crucial para economizar espaço em disco e acelerar transferências de dados.

Comandos Essenciais do `tar`: Criando e Extraindo Arquivos

A sintaxe básica do tar envolve a especificação de opções (flags) que determinam a ação a ser executada, seguida pelo nome do arquivo de saída (ou entrada) e os arquivos/diretórios que serão processados.

Criando um Arquivo `tar`

Para criar um arquivo tar, usamos a opção -c (create). Para especificar o nome do arquivo de saída, usamos -f (file). Se quisermos que o arquivo seja também comprimido, adicionamos a opção de compressão.

Exemplo 1: Criando um arquivo tar simples (sem compressão)

tar -cvf meu_arquivo.tar diretorio_a_arquivar arquivo1.txt
  • -c: Cria um novo arquivo.
  • -v: Modo verboso, mostra os arquivos sendo adicionados (útil para ver o progresso).
  • -f: Especifica o nome do arquivo de saída.
  • meu_arquivo.tar: O nome do arquivo tar que será criado.
  • diretorio_a_arquivar e arquivo1.txt: Os arquivos e diretórios a serem incluídos.

Exemplo 2: Criando um arquivo tar comprimido com gzip

gzip é um dos métodos de compressão mais comuns e rápidos. A opção para usá-lo com tar é -z.

tar -czvf meu_arquivo.tar.gz diretorio_a_arquivar arquivo1.txt
  • -z: Comprime o arquivo usando gzip. O nome do arquivo de saída geralmente termina com .tar.gz ou .tgz.

Exemplo 3: Criando um arquivo tar comprimido com bzip2

bzip2 oferece uma taxa de compressão geralmente melhor que gzip, mas é mais lento. A opção é -j.

tar -cjvf meu_arquivo.tar.bz2 diretorio_a_arquivar arquivo1.txt
  • -j: Comprime o arquivo usando bzip2. O nome do arquivo de saída geralmente termina com .tar.bz2 ou .tbz2.

Exemplo 4: Criando um arquivo tar comprimido com xz

xz oferece a melhor taxa de compressão entre os três, mas é o mais lento. A opção é -J.

tar -cJvf meu_arquivo.tar.xz diretorio_a_arquivar arquivo1.txt
  • -J: Comprime o arquivo usando xz. O nome do arquivo de saída geralmente termina com .tar.xz ou .txz.

Extraindo Arquivos `tar`

Para extrair arquivos, usamos a opção -x (extract). A opção -f é sempre necessária para especificar o arquivo que será extraído. O tar é inteligente o suficiente para detectar o tipo de compressão pelo nome do arquivo ou, se não especificado, tentar detectar automaticamente.

Exemplo 5: Extraindo um arquivo tar simples

tar -xvf meu_arquivo.tar
  • -x: Extrai os arquivos do arquivo tar.

Exemplo 6: Extraindo um arquivo tar.gz ou .tgz

tar -xzvf meu_arquivo.tar.gz
  • O -z aqui indica que o arquivo está comprimido com gzip.

Exemplo 7: Extraindo um arquivo tar.bz2 ou .tbz2

tar -xjvf meu_arquivo.tar.bz2
  • O -j aqui indica que o arquivo está comprimido com bzip2.

Exemplo 8: Extraindo um arquivo tar.xz ou .txz

tar -xJvf meu_arquivo.tar.xz
  • O -J aqui indica que o arquivo está comprimido com xz.

Dica: Se você não tem certeza do tipo de compressão, pode tentar extrair sem a opção específica de compressão (-z, -j, -J). Versões mais recentes do tar geralmente detectam automaticamente. Caso contrário, use a opção correta.

Listando o Conteúdo de um Arquivo `tar`

Antes de extrair, pode ser útil saber o que há dentro de um arquivo tar. Para isso, usamos a opção -t (list).

Exemplo 9: Listando o conteúdo de um arquivo tar.gz

tar -tzvf meu_arquivo.tar.gz
  • -t: Lista o conteúdo do arquivo tar.

Opções Avançadas e Uso Prático

Preservando Permissões e Propriedade

Ao criar ou extrair arquivos, é comum querer preservar as permissões originais, o proprietário e o grupo dos arquivos. As opções --preserve-permissions (ou -p) e --same-owner podem ser úteis, especialmente em ambientes de servidor.

# Criar preservando permissões
tar -czvpf meu_arquivo.tar.gz diretorio_a_arquivar

# Extrair preservando permissões e tentando manter o mesmo dono (pode exigir root)
tar -xzvpf meu_arquivo.tar.gz

Aviso de Segurança: Extrair arquivos com -p e --same-owner como usuário root pode restaurar permissões que concedem acesso indevido a outros usuários ou grupos. Sempre verifique a origem dos arquivos tar que você extrai como root.

Criando Arquivos a Partir de um Lista de Arquivos

Se você tem uma lista de arquivos em um arquivo de texto e quer arquivá-los, pode usar a opção -T (files-from).

# Suponha que 'lista_arquivos.txt' contenha:
# arquivo1.txt
# diretorio_a_arquivar/
# outro_arquivo.log

tar -czvf meu_arquivo.tar.gz -T lista_arquivos.txt

Extraindo para um Diretório Específico

Para evitar que os arquivos sejam extraídos no diretório atual, use a opção -C (directory).

# Extrai o conteúdo de meu_arquivo.tar.gz para o diretório /tmp/destino
tar -xzvf meu_arquivo.tar.gz -C /tmp/destino/

Entendendo os Sufixos Comuns

A convenção de nomes para arquivos tar com compressão é bastante útil para identificar o tipo de arquivamento e compressão utilizados:

  • .tar: Arquivo tar simples, sem compressão.
  • .tar.gz ou .tgz: Arquivo tar comprimido com gzip.
  • .tar.bz2 ou .tbz2: Arquivo tar comprimido com bzip2.
  • .tar.xz ou .txz: Arquivo tar comprimido com xz.

Considerações Finais e Boas Práticas

O comando tar é uma ferramenta fundamental no ecossistema Linux. Dominá-lo significa ter mais controle sobre seus arquivos, otimizar o uso de espaço em disco e agilizar transferências de dados.

  • Use compressão: Sempre que o espaço ou a largura de banda forem uma preocupação, opte por arquivos comprimidos (.tar.gz, .tar.bz2, .tar.xz).
  • Verifique o conteúdo: Use -t para inspecionar o conteúdo antes de extrair, especialmente se você não criou o arquivo.
  • Cuidado com a extração em diretórios importantes: Utilize -C para extrair em locais seguros ou específicos.
  • Permissões: Esteja ciente das implicações de preservar permissões e propriedade, especialmente ao lidar com arquivos de fontes não confiáveis ou ao operar como superusuário.

Para fluxos de trabalho mais complexos de backup e sincronização, ferramentas como o rsync podem complementar o tar, oferecendo funcionalidades adicionais. Se você busca otimizar seus backups e transferências de arquivos de forma ainda mais eficiente, um artigo sobre Dominando o `rsync`: Sincronização Eficiente de Arquivos e Diretórios no Linux pode ser o próximo passo em sua jornada.

Foto de Rafael Minguet Delgado no Pexels.