Como Descompactar um Arquivo no Linux: Um Guia Avançado para Usuários Avançados
Extrair .tar, .tar.gz, .tar.bz2 e outros formatos de tarball é uma habilidade fundamental na administração de sistemas Linux, pipelines DevOps e gerenciamento de servidores. Embora o comando tar pareça simples à primeira vista, administradores experientes podem aproveitar seus sinalizadores avançados, integrações de scripts e tratamento de casos extremos para alcançar precisão cirúrgica nas operações de arquivo.
Este guia abrangente cobre tudo, desde descompressão básica até extração condicional, verificação de integridade, benchmarking e automação de fluxos de trabalho — tudo o que um usuário avançado precisa para dominar tar no Linux.
O que é um arquivo .tar?
Um arquivo .tar — abreviação de Tape Archive — é um formato de arquivo consolidado que agrupa vários arquivos e diretórios em um único arquivo, preservando:
- Estrutura de diretórios
- Permissões de arquivo
- Metadados de propriedade
- Timestamps
Por padrão, os arquivos .tar não são comprimidos. A compressão é aplicada como uma camada adicional usando formatos como .gz, .bz2, .xz ou .zst. Este design modular oferece aos administradores controle refinado sobre o equilíbrio entre velocidade e taxa de compressão.
| Formato | Extensão | Ferramenta de Compressão |
|---|---|---|
| Sem compressão | .tar | — |
| Gzip | .tar.gz / .tgz | gzip |
| Bzip2 | .tar.bz2 | bzip2 |
| XZ | .tar.xz | xz |
| Zstandard | .tar.zst | zstd |
Comandos de Extração Básica
1. Extrair um arquivo .tar (Sem Compressão)
tar -xf archive.tar2. Extrair um arquivo .tar.gz ou .tgz
tar -xzf archive.tar.gz3. Extrair um arquivo .tar.bz2
tar -xjf archive.tar.bz24. Extrair um arquivo .tar.xz
tar -xJf archive.tar.xz5. Extrair um arquivo .tar.zst (Zstandard)
tar --use-compress-program=unzstd -xf archive.tar.zst> Nota: Zstandard (.zst) oferece uma excelente relação velocidade-compressão e é cada vez mais comum em distribuições Linux modernas e camadas de imagens de contêiner.
Sinalizadores Comuns e Suas Funções
Compreender os sinalizadores tar é essencial para escrever scripts confiáveis e lidar com cenários complexos de extração. Abaixo está uma tabela de referência das opções mais importantes:
| Sinalizador | Função |
|---|---|
-x | Extrair arquivos de um arquivo |
-f | Especificar o arquivo a ser usado |
-v | Saída detalhada — lista arquivos conforme são extraídos |
-z | Filtrar através da compressão gzip |
-j | Filtrar através da compressão bzip2 |
-J | Filtrar através da compressão xz |
-C <dir> | Mudar para o diretório especificado antes de extrair |
--strip-components=N | Remover os primeiros N componentes de caminho dos nomes de arquivo |
--wildcards | Ativar correspondência de padrão curinga durante a extração |
--no-same-owner | Não restaurar propriedade de arquivo (útil para usuários não-root) |
--overwrite | Sobrescrever arquivos existentes sem solicitar confirmação |
--exclude=PATTERN | Excluir arquivos que correspondem ao padrão especificado |
--ignore-zeros | Pular blocos preenchidos com zeros (útil para arquivos corrompidos) |
-t | Listar conteúdo do arquivo sem extrair |
Exemplos de Extração Avançada
Extrair para um Diretório Específico
Direcione o conteúdo extraído para um caminho de destino usando o sinalizador -C:
tar -xf archive.tar.gz -C /opt/myapp> O diretório de destino deve existir antes de executar este comando. Use mkdir -p /opt/myapp se necessário.
Achatar a Estrutura do Arquivo (Remover Pasta de Nível Superior)
Quando um arquivo agrupa tudo dentro de um único diretório de nível superior, use --strip-components para removê-lo:
tar -xf archive.tar.gz --strip-components=1Isto é especialmente útil ao implantar aplicações diretamente em um diretório de destino sem uma camada de pasta intermediária.
Extrair Apenas Arquivos Específicos
Você pode extrair arquivos individuais especificando seus caminhos conforme aparecem dentro do arquivo:
tar -xf archive.tar.gz path/to/file1 path/to/file2Extrair Arquivos Correspondentes a um Padrão Curinga
Use --wildcards para filtrar a extração por padrão:
tar -xf archive.tar.gz --wildcards '*.conf'Isto extrai apenas arquivos de configuração .conf do arquivo — ideal para restaurar seletivamente a configuração sem afetar outros dados.
Excluir Arquivos Durante a Extração
Exclua arquivos ou padrões específicos de serem extraídos:
tar -xf archive.tar.gz --exclude='*.log'Você pode encadear vários sinalizadores --exclude para filtrar vários padrões simultaneamente.
Benchmark do Tempo de Extração
Use o utilitário time para medir quanto tempo a extração leva — útil ao comparar formatos de compressão ou otimizar fluxos de trabalho de backup:
time tar -xf archive.tar.gzTratamento de Casos Extremos
🧱 Lidar com Arquivos Corrompidos
Se um arquivo está parcialmente corrompido — por exemplo, devido a um download interrompido ou erro de disco — use --ignore-zeros para pular blocos preenchidos com zeros corrompidos e recuperar o máximo de dados possível:
tar -xzf broken.tar.gz --ignore-zerosEste sinalizador diz ao tar para continuar processando mesmo quando encontra EOF inesperado ou blocos zero, maximizando a recuperação de dados.
🔍 Visualizar Conteúdo do Arquivo Antes de Extrair
Sempre inspecione um arquivo antes de extraí-lo, especialmente ao trabalhar com fontes não confiáveis ou ambientes de produção:
tar -tf archive.tar.gzIsto lista todos os arquivos dentro do arquivo sem escrever nada no disco.
✅ Verificação de Integridade para Arquivos Comprimidos com Gzip
Verifique se um arquivo .tar.gz não está corrompido antes de tentar extrair:
gzip -t archive.tar.gz && echo "Archive integrity OK"Para arquivos .tar.xz:
xz --test archive.tar.xz && echo "Archive integrity OK"Incorporar verificações de integridade em scripts automatizados previne implantações falhadas causadas por arquivos de backup corrompidos.
Dicas de Script para Administradores de Sistema
Integrar tar em scripts shell é uma das formas mais poderosas de automatizar fluxos de trabalho de backup, implantação e restauração em servidores Linux.
Script de Backup Automatizado
#!/bin/bash
TARGET_DIR="/var/www"
ARCHIVE="/backups/site-$(date +%F).tar.gz"
tar -czf "$ARCHIVE" -C "$TARGET_DIR" . && echo "Backup saved to $ARCHIVE"Este script cria um arquivo comprimido com data de um diretório raiz da web. Combine-o com um trabalho cron para backups diários totalmente automatizados.
Script Automatizado de Desempacotamento e Implantação
#!/bin/bash
SRC="$1"
DEST="$2"
mkdir -p "$DEST"
tar -xzf "$SRC" -C "$DEST" --strip-components=1Passe o caminho do arquivo e o diretório de destino como argumentos. O sinalizador --strip-components=1 garante que o diretório de nível superior seja removido, colocando arquivos diretamente em $DEST.
Extração Paralela para Arquivos Grandes
Em servidores multi-núcleo, você pode acelerar a extração de arquivos .tar.gz usando pigz (gzip paralelo):
tar -I pigz -xf large-archive.tar.gz -C /destinationIsto é particularmente valioso em Hospedagem VPS ou Servidores Dedicados com múltiplos núcleos de CPU, onde a descompressão paralela pode reduzir significativamente os tempos de implantação.
Casos de Uso Práticos em Ambientes de Servidor
Compreender tar profundamente torna-se especialmente importante em cenários de servidor do mundo real:
- Implantações de aplicações web — Extrair tarballs de lançamento diretamente em diretórios raiz da web em seu ambiente de Hospedagem Web Compartilhada ou VPS.
- Backups de banco de dados — Arquivar e comprimir arquivos de despejo de banco de dados para armazen
