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.
- Confirme a origem, o nome do pacote e o espaço disponível; preserve arquivos que já usam esses nomes.
- Crie o pacote e confira o código de saída e os diagnósticos antes de usar o resultado.
- Liste os membros, examine os caminhos e escolha um destino novo, vazio e separado.
- 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.




