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
sudoquando 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: criarz: compactação gzipf: 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: extrairz: gzipf: 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:
- Verifique o diretório atual antes de extrair:
pwd - 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 -tzfantes de extrair - Quando incerto, extraia para um local seguro como
/tmpprimeiro
$ 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