Como Usar o Comando tar - Compactar, Extrair e Evitar Erros

Como Usar o Comando tar - Compactar, Extrair e Evitar Erros

O que você vai aprender

  • Como compactar, extrair e listar conteúdo com tar
  • Entender as diferenças entre .tar.gz / .tgz / .tar
  • Como evitar acidentes comuns (extrair em locais errados, sobrescrever, problemas de caminho)

Resumo Rápido

Comece com estes comandos - eles cobrirão a maioria dos casos:

  • Criar (gzip): tar -czf archive.tar.gz DIR/
  • Extrair: tar -xzf archive.tar.gz
  • Listar conteúdo: tar -tzf archive.tar.gz
  • Especificar destino: tar -xzf archive.tar.gz -C /path/to/dir

Pré-requisitos

  • SO: Ubuntu
  • Shell: bash
  • Permissões: Usuário regular (use sudo quando necessário)

1. Visão geral dos formatos de arquivo tar

Conclusão: Formatos: .tar simples, gzip .tar.gz/.tgz, além de variantes bzip2 e xz.

  • .tar: Arquivos agrupados (sem compactação)
  • .tar.gz / .tgz: Agrupados com tar, compactados com gzip
  • .tar.bz2: Agrupados com tar, compactados com bzip2
  • .tar.xz: Agrupados com tar, compactados com xz

Mais comumente vistos: .tar.gz / .tgz. Comece com estes.

2. Criando arquivos (compactação)

Conclusão: Crie um arquivo gzip com tar -czf archive.tar.gz DIR/; múltiplas entradas funcionam.

2-1. Criar .tar.gz de um diretório (básico)

$ tar -czf archive.tar.gz DIR/
  • c: criar
  • z: compactação gzip
  • f: especificar nome do arquivo (obrigatório - sem ele, comportamento inesperado pode ocorrer)

2-2. Agrupar múltiplos arquivos/diretórios

$ tar -czf archive.tar.gz DIR1/ DIR2/ file.txt

3. Extraindo arquivos

Conclusão: Extraia com tar -xzf archive.tar.gz; adicione -C para definir um destino seguro.

3-1. Extrair no diretório atual (básico)

$ tar -xzf archive.tar.gz
  • x: extrair
  • z: gzip
  • f: especificar arquivo

3-2. Especificar diretório de destino (recomendado para segurança)

$ tar -xzf archive.tar.gz -C /path/to/dir

Até se sentir confortável, sempre use -C para evitar acidentes de extração.

4. Listando conteúdo (sempre verifique antes de extrair)

Conclusão: Execute tar -tzf archive.tar.gz para inspecionar o conteúdo antes de extrair com segurança.

4-1. Listar todo o conteúdo (.tar.gz)

$ tar -tzf archive.tar.gz

4-2. Ver apenas o início (para listas longas)

$ tar -tzf archive.tar.gz | head

5. Acidentes comuns e prevenção (mais importante)

Conclusão: Local errado, caminhos absolutos, sobrescrita e espalhamento são acidentes comuns.

Acidente A: Extraindo no local errado

Causas:

  • Não saber seu diretório atual
  • Não usar a flag -C

Prevenção:

  1. Verifique o diretório atual antes de extrair: pwd
  2. Sempre especifique o destino com -C
$ pwd
$ tar -xzf archive.tar.gz -C /tmp

Acidente B: Arquivo contém caminhos absolutos (ex.: começa com /)

Perigo:

  • Caminhos como /etc/... são caminhos absolutos
  • A extração pode sobrescrever arquivos do sistema

Prevenção:

  • Verifique os caminhos com tar -tzf antes de extrair
  • Quando incerto, extraia para um local seguro como /tmp primeiro
$ mkdir -p /tmp/tar-test
$ tar -xzf archive.tar.gz -C /tmp/tar-test

Acidente C: Sobrescrevendo arquivos existentes

Prevenção:

  • Não extraia diretamente em diretórios de produção
  • Primeiro extraia para um diretório de trabalho vazio e verifique o conteúdo
$ mkdir -p ~/work/extract-test
$ tar -xzf archive.tar.gz -C ~/work/extract-test

Acidente D: Arquivos espalhados em vez de um único diretório

Dependendo de como o arquivo foi criado, os arquivos podem não estar em um único diretório.

Boa prática (ao criar):

  • Navegue para o diretório pai do diretório que deseja arquivar
  • Exemplo: Para criar DIR/ como um único diretório
$ cd /path/to
$ tar -czf DIR.tar.gz DIR/

6. Outros formatos (.tar / .tar.bz2 / .tar.xz)

Conclusão: tar simples usa -cf/-xf, bzip2 usa -xjf, e xz usa -xJf.

Use quando necessário:

6-1. .tar (sem compactação)

Criar:

$ tar -cf archive.tar DIR/

Extrair:

$ tar -xf archive.tar

6-2. .tar.bz2

Extrair:

$ tar -xjf archive.tar.bz2

6-3. .tar.xz

Extrair:

$ tar -xJf archive.tar.xz

Verificação

Conclusão: Após extrair, execute ls -la para confirmar que os arquivos foram para onde esperado.

Após a extração, verifique se os arquivos estão no local esperado:

$ ls -la

Próximas leituras