Como Usar o Comando tar - Compactar, Extrair e Evitar Erros
O que voce vai aprender
- Como compactar, extrair e listar conteudo com
tar - Entender as diferencas entre
.tar.gz/.tgz/.tar - Como evitar acidentes comuns (extrair em locais errados, sobrescrever, problemas de caminho)
Resumo Rapido
Comece com estes comandos - eles cobrirao a maioria dos casos:
- Criar (gzip):
tar -czf archive.tar.gz DIR/ - Extrair:
tar -xzf archive.tar.gz - Listar conteudo:
tar -tzf archive.tar.gz - Especificar destino:
tar -xzf archive.tar.gz -C /path/to/dir
Pre-requisitos
- SO: Ubuntu
- Shell: bash
- Permissoes: Usuario regular (use
sudoquando necessario)
1. Visao geral dos formatos de arquivo tar
Conclusao: Formatos: .tar simples, gzip .tar.gz/.tgz, alem de variantes bzip2 e xz.
.tar: Arquivos agrupados (sem compactacao).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 (compactacao)
Conclusao: Crie um arquivo gzip com tar -czf archive.tar.gz DIR/; multiplas entradas funcionam.
2-1. Criar .tar.gz de um diretorio (basico)
$ tar -czf archive.tar.gz DIR/
c: criarz: compactacao gzipf: especificar nome do arquivo (obrigatorio - sem ele, comportamento inesperado pode ocorrer)
2-2. Agrupar multiplos arquivos/diretorios
$ tar -czf archive.tar.gz DIR1/ DIR2/ file.txt
3. Extraindo arquivos
Conclusao: Extraia com tar -xzf archive.tar.gz; adicione -C para definir um destino seguro.
3-1. Extrair no diretorio atual (basico)
$ tar -xzf archive.tar.gz
x: extrairz: gzipf: especificar arquivo
3-2. Especificar diretorio de destino (recomendado para seguranca)
$ tar -xzf archive.tar.gz -C /path/to/dir
Ate se sentir confortavel, sempre use -C para evitar acidentes de extracao.
4. Listando conteudo (sempre verifique antes de extrair)
Conclusao: Execute tar -tzf archive.tar.gz para inspecionar o conteudo antes de extrair com seguranca.
4-1. Listar todo o conteudo (.tar.gz)
$ tar -tzf archive.tar.gz
4-2. Ver apenas o inicio (para listas longas)
$ tar -tzf archive.tar.gz | head
5. Acidentes comuns e prevencao (mais importante)
Conclusao: Local errado, caminhos absolutos, sobrescrita e espalhamento sao acidentes comuns.
Acidente A: Extraindo no local errado
Causas:
- Nao saber seu diretorio atual
- Nao usar a flag
-C
Prevencao:
- Verifique o diretorio atual antes de extrair:
pwd - Sempre especifique o destino com
-C
$ pwd $ tar -xzf archive.tar.gz -C /tmp
Acidente B: Arquivo contem caminhos absolutos (ex.: comeca com /)
Perigo:
- Caminhos como
/etc/...sao caminhos absolutos - A extracao pode sobrescrever arquivos do sistema
Prevencao:
- 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
Prevencao:
- Nao extraia diretamente em diretorios de producao
- Primeiro extraia para um diretorio de trabalho vazio e verifique o conteudo
$ mkdir -p ~/work/extract-test $ tar -xzf archive.tar.gz -C ~/work/extract-test
Acidente D: Arquivos espalhados em vez de um unico diretorio
Dependendo de como o arquivo foi criado, os arquivos podem nao estar em um unico diretorio.
Boa pratica (ao criar):
- Navegue para o diretorio pai do diretorio que deseja arquivar
- Exemplo: Para criar
DIR/como um unico diretorio
$ cd /path/to $ tar -czf DIR.tar.gz DIR/
6. Outros formatos (.tar / .tar.bz2 / .tar.xz)
Conclusao: tar simples usa -cf/-xf, bzip2 usa -xjf, e xz usa -xJf.
Use quando necessario:
6-1. .tar (sem compactacao)
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
Verificacao
Conclusao: Apos extrair, execute ls -la para confirmar que os arquivos foram para onde esperado.
Apos a extracao, verifique se os arquivos estao no local esperado:
$ ls -la