Linux / Comando tar: criar pacotes, listar e extrair arquivos

O comando tar reúne arquivos e diretórios em um único pacote de arquivamento e também extrai seu conteúdo. Um arquivo .tar não implica compressão: opções como -z, -j e -J combinam o empacotamento com gzip, bzip2 e xz.

O pacote guarda os nomes dos membros e sua estrutura de diretórios. No GNU tar, -c cria, -t lista e -x extrai; escolha uma dessas operações. A opção -f recebe o nome do arquivo de arquivamento. Antes de extrair, confira os membros e escolha um destino separado para evitar sobrescritas inesperadas.

Sintaxe e preparação

tar [operação] [opções] -f pacote [arquivo ou diretório...]

Essa linha descreve a sintaxe, não um comando pronto. Confira tar --version e man tar no seu sistema: há implementações diferentes, e este guia segue o GNU tar. As opções de compressão precisam do programa correspondente disponível; a extensão do nome sozinha não transforma os dados em outro formato.

Para os exemplos, prepare um diretório project/ com arquivos de teste em uma área onde você tenha permissão de leitura e escrita. Execute a partir do diretório que contém project/. Verifique se project.tar.gz, bundle.tar e note.txt já existem antes de usar esses nomes: os comandos de criação e de redirecionamento podem substituir conteúdo.

Criar, listar e extrair um pacote comprimido

Criar com gzip: o comando combina -c para criar, -z para compressão gzip e -f para selecionar o arquivo de saída. O diretório project/ é incluído com seu próprio nome e os arquivos internos; os originais continuam no lugar.

tar -czf project.tar.gz project/

Se o arquivo de saída já existir, ele pode ser substituído. Criar um novo pacote com -c não significa acrescentar membros a um pacote anterior. Guarde uma cópia dos dados importantes e escolha outro nome de saída quando quiser preservar a versão existente.

Listar antes de extrair: use -t para ver os nomes dos membros sem gravá-los no diretório de destino. O -z informa a compressão gzip utilizada neste exemplo.

tar -tzf project.tar.gz

Espere nomes começando por project/, seguidos dos arquivos que você incluiu. A lista exata depende do conteúdo da origem. Conferir essa lista ajuda a entender a estrutura, mas não comprova que um pacote desconhecido seja seguro nem que os dados possam ser restaurados integralmente.

Extrair em um diretório separado: os comandos abaixo pressupõem que restore/ ainda não existe e será um destino vazio. Se esse nome já estiver em uso, escolha outro nome nos dois comandos antes de executar. O mkdir -p não esvazia um diretório existente.

mkdir -p restore
tar -xzf project.tar.gz -C restore/

A opção -C restore/ muda o diretório base da extração. Ela não retira o primeiro nível do pacote: um membro project/readme.txt será extraído como restore/project/readme.txt. Confira a estrutura e o conteúdo dos arquivos recuperados antes de considerar a operação concluída.

Criar um pacote simples e conferir seus membros

O exemplo seguinte cria note.txt, escreve hello seguido de uma quebra de linha, empacota o arquivo sem compressão e lista os membros. Use uma área de teste e confirme que os dois nomes de saída estão livres.

printf 'hello\n' > note.txt
tar -cf bundle.tar note.txt
tar -tf bundle.tar

Neste exemplo, a lista contém um único membro:

note.txt

Essa saída identifica o nome armazenado; ela não mostra o texto dentro de note.txt. O -f bundle.tar seleciona o pacote, enquanto o note.txt no comando de criação é o arquivo de origem. Um pacote pode ser listado sem extrair seus membros.

  1. Confirme a origem, o nome do pacote e o espaço disponível; preserve arquivos que já usam esses nomes.
  2. Crie o pacote e confira o código de saída e os diagnósticos antes de usar o resultado.
  3. Liste os membros, examine os caminhos e escolha um destino novo, vazio e separado.
  4. Extraia sem privilégios administrativos desnecessários e confira os arquivos recuperados, incluindo os atributos exigidos pela sua restauração.

Opções principais

Opção Finalidade e condição
-c / -t / -x Escolhe criar, listar ou extrair. São operações diferentes; selecione uma para cada execução.
-f arquivo Define o arquivo de arquivamento a ler ou escrever. Na criação, um nome já existente pode ser sobrescrito.
-z / -j / -J Usa gzip, bzip2 ou xz, respectivamente. J maiúsculo e j minúsculo escolhem compressores diferentes.
-C diretório Muda o diretório de referência a partir desse ponto. Na extração do exemplo, define a pasta de destino sem remover níveis dos membros.
-v Mostra os nomes dos arquivos processados. A saída detalhada ajuda na conferência, mas não substitui o teste de recuperação.

Sobrescrita, caminhos e recuperação

Um pacote obtido de uma fonte desconhecida pode conter caminhos inesperados, links simbólicos ou outros tipos de membro. Confira nomes absolutos, referências ao diretório pai como ../ e links que apontem para outros locais. Não ative opções que alteram a proteção de caminhos sem entender suas consequências; a revisão da lista não é uma garantia de isolamento.

O manual do GNU tar recomenda extrair pacotes não confiáveis em diretórios vazios separados, dentro de uma área acessível somente a usuários confiáveis. Não extraia diretamente como administrador sobre o sistema ou seus dados importantes. Separe também pacotes desconhecidos diferentes: um deles pode criar links que afetariam uma extração posterior na mesma pasta.

Na criação, tar -cf escreve um novo pacote no caminho escolhido. Na extração, membros com nomes que coincidam com arquivos existentes podem substituir dados. Por isso, verifique tanto o nome do pacote quanto o destino, e não confunda “criar novamente” com “acrescentar”. O espaço necessário depois da descompressão também pode ser maior que o tamanho do arquivo comprimido.

Uma listagem correta e uma execução sem erro não comprovam, sozinhas, que todo o estado necessário foi recuperado. Compare o conteúdo dos arquivos importantes e, conforme a finalidade, proprietários, permissões, links e outros atributos. Se a origem estiver mudando durante a criação, planeje uma forma consistente de obter os dados; empacotar arquivos de um serviço ativo não garante um backup utilizável desse serviço.

Na verificação local de 29 de outubro de 2026, GNU tar 1.35, gzip 1.14 e Bash 5.3.9 do Git for Windows criaram, listaram e extraíram um pacote de arquivos de teste. Os bytes dos arquivos restaurados coincidiram com os originais. O exemplo de note.txt produziu a lista mostrada e seis bytes de texto com quebra de linha. Uma recriação controlada do mesmo pacote substituiu a lista anterior de membros. Esses testes não verificaram arquivos desconhecidos, permissões nativas do Linux ou a preservação de todos os metadados.

Pergunta frequente

Qual é a diferença entre tar e gzip?

O tar reúne arquivos e sua estrutura em um pacote; o gzip comprime um fluxo de dados. O tar -czf combina as duas funções. O guia do comando gzip, em inglês explica a compressão separadamente.

Documentação oficial

Consulte o manual oficial do GNU tar para criação, listagem, extração, compressores, diretórios e cuidados de segurança. Confira também o manual da implementação instalada, pois opções e regras de metadados podem variar.