Como Descompactar um Arquivo .tar.gz no Linux: Guia Completo com Dicas Avançadas
Trabalhar com ficheiros comprimidos é uma realidade diária em qualquer ambiente Linux. Entre os formatos mais utilizados está .tar.gz, um formato de duas fases que combina tar para arquivamento e gzip para compressão. Quer esteja a descompactar código-fonte de software, a restaurar cópias de segurança ou a implementar ficheiros de configuração num servidor VPS Hosting, saber como lidar com arquivos .tar.gz de forma eficiente e segura é uma competência fundamental do Linux.
Este guia abrange tudo, desde o comando de extração básico até técnicas avançadas para arquivos grandes, endurecimento de segurança e boas práticas de scripting.
O que é um ficheiro .tar.gz?
Um ficheiro .tar.gz — frequentemente chamado de tarball — é criado em duas etapas:
- tar agrupa múltiplos ficheiros e diretórios num único arquivo (
.tar) - gzip comprime esse arquivo para reduzir o seu tamanho (
.tar.gzou.tgz)
Casos de Uso Comuns
- Distribuição de código-fonte de software
- Empacotamento de ficheiros de configuração e cópias de segurança
- Arquivamento de ficheiros de registo para armazenamento a longo prazo
- Transferência de grandes árvores de diretórios entre servidores
Nome de ficheiro de exemplo: project-files.tar.gz
Comando de Extração Básico
O comando padrão para extrair um ficheiro .tar.gz é:
tar -xvzf file.tar.gzAnálise de Sinalizadores
| Sinalizador | Significado |
|---|---|
-x | Extrair ficheiros do arquivo |
-v | Modo verboso — lista cada ficheiro conforme é extraído |
-z | Descompactar usando gzip |
-f | Especifica o nome do ficheiro a operar |
Este comando único trata da grande maioria das tarefas de extração do dia a dia.
Extrair para um Diretório Específico
Por padrão, tar extrai ficheiros para o diretório de trabalho atual. Para redirecionar a saída para uma localização específica, use o sinalizador -C:
tar -xvzf file.tar.gz -C /path/to/target-directory> Nota: O diretório de destino já deve existir. Crie-o primeiro com mkdir -p /path/to/target-directory se necessário.
Esta abordagem é especialmente útil em scripts de implementação automatizada ou ao organizar múltiplos arquivos num servidor de produção.
Pré-visualizar Conteúdo do Arquivo Antes de Extrair
Antes de extrair um arquivo — particularmente um de uma fonte desconhecida — é uma boa prática inspecionar primeiro o seu conteúdo:
tar -tvzf file.tar.gzO sinalizador -t lista todos os ficheiros e diretórios dentro do arquivo sem extrair nada. Isto ajuda-o a:
- Compreender a estrutura de diretórios interna
- Evitar sobrescrever acidentalmente ficheiros existentes
- Detetar caminhos suspeitos ou inesperados
Extrair Ficheiros ou Diretórios Específicos
Nem sempre precisa de extrair um arquivo inteiro. Para extrair um único ficheiro ou pasta, especifique o seu caminho exatamente como aparece dentro do arquivo:
tar -xvzf file.tar.gz path/to/specific-file.txtPara encontrar o caminho interno exato, execute primeiro o comando --list:
tar -tvzf file.tar.gz | grep filename> Importante: Use o caminho relativo mostrado na listagem do arquivo, não um caminho absoluto começando com /.
Considerações de Segurança ao Extrair Arquivos Não Confiáveis
Extrair ficheiros .tar.gz de fontes desconhecidas ou não confiáveis pode representar riscos de segurança graves, incluindo ataques de travessia de caminho onde arquivos maliciosos sobrescrevem ficheiros críticos do sistema. Aplique estas proteções:
Impedir Sobrescrita de Diretórios
tar --no-overwrite-dir -xvzf file.tar.gzRemover Componentes de Caminho Iniciais
O sinalizador --strip-components remove níveis de diretório iniciais dos caminhos extraídos, o que neutraliza tentativas de injeção de caminho absoluto:
tar --strip-components=1 -xvzf untrusted-archive.tar.gzExtrair para um Diretório Isolado
Sempre extraia arquivos não confiáveis para um diretório sandbox dedicado e inspecione o conteúdo antes de mover ficheiros para o seu destino final:
mkdir /tmp/sandbox && tar -xvzf untrusted-archive.tar.gz -C /tmp/sandboxEstas práticas são especialmente críticas em infraestrutura partilhada. Se gerir múltiplos sites ou clientes, considere usar ambientes de Alojamento Web Partilhado com limites de permissão rigorosos.
Lidar com Arquivos Grandes de Forma Eficiente
Para arquivos que abrangem vários gigabytes, a extração padrão pode parecer uma caixa preta. Estas técnicas melhoram a visibilidade e o desempenho.
Monitorizar Progresso com pv
pv (pipe viewer) apresenta uma barra de progresso em tempo real e velocidade de transferência:
pv file.tar.gz | tar xzvf -Instale pv se ainda não estiver disponível:
# Debian/Ubuntu
sudo apt install pv
# CentOS/RHEL/AlmaLinux
sudo dnf install pvDesativar Modo Verboso para Extração Mais Rápida
Ao extrair arquivos muito grandes, o sinalizador -v pode abrandar as coisas ao imprimir milhares de nomes de ficheiros no terminal. Remova-o para melhor desempenho:
tar -xzf file.tar.gzUsar Descompressão Paralela com pigz
Para servidores multi-núcleo, pigz substitui gzip com uma implementação paralela e pode reduzir dramaticamente o tempo de descompressão:
tar -I pigz -xf file.tar.gzDescompactar em Duas Etapas Separadas
Às vezes precisa de controlo mais fino — por exemplo, ao integrar num pipeline ou ao inspecionar o ficheiro .tar intermédio antes de descompactar. Pode dividir o processo em dois comandos:
# Step 1: Decompress gzip to get a plain .tar archive
gunzip file.tar.gz
# Step 2: Extract the .tar archive
tar -xvf file.tarEsta abordagem é útil quando:
- Quer inspecionar o
.tarbruto antes da extração - O seu pipeline processa etapas
.tare.gzseparadamente - Precisa passar o ficheiro
.tarpara outra ferramenta
Criar um Arquivo .tar.gz
Saber como criar arquivos é tão importante quanto extraí-los. A sintaxe espelha a extração mas usa -c (criar) em vez de -x:
tar -czvf archive-name.tar.gz /path/to/directory/Excluir Ficheiros ou Diretórios Específicos
tar -czvf archive.tar.gz /path/to/directory/ --exclude='*.log' --exclude='node_modules'Isto é inestimável para criar pacotes de implementação limpos ou cópias de segurança sem bloat desnecessário.
Automatizar Operações .tar.gz em Scripts
Em servidores de produção — quer execute um Servidor Dedicado ou um VPS gerido — automatizar operações de arquivo poupa tempo e reduz erros humanos.
Exemplo: Script de Cópia de Segurança Automatizada
#!/bin/bash
BACKUP_DIR="/var/backups"
SOURCE_DIR="/var/www/html"
DATE=$(date +%Y-%m-%d)
ARCHIVE="$BACKUP_DIR/website-backup-$DATE.tar.gz"
mkdir -p "$BACKUP_DIR"
tar -czf "$ARCHIVE" --exclude='*.tmp' "$SOURCE_DIR"
echo "Backup created: $ARCHIVE"Agende isto com uma tarefa cron para cópias de segurança diárias totalmente automatizadas:
0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1Usar Gestores de Arquivo GUI (Opcional)
Se está a trabalhar num ambiente de desktop Linux, as ferramentas gráficas fornecem uma alternativa de arrastar e soltar:
| Ambiente de Desktop | Gestor de Arquivo |
|---|---|
| GNOME | File Roller |
| KDE Plasma | Ark |
| Xfce | Thunar Archive Plugin |
Estas ferramentas suportam .tar.gz nativamente e são adequadas para uso ocasional. No entanto, para administração de servidor, a linha de comando permanece a abordagem mais confiável e scriptável.
Referência Rápida: Comandos tar Essenciais
| Tarefa | Comando |
|---|---|
| Extrair arquivo | tar -xvzf file.tar.gz |
| Extrair para diretório | tar -xvzf file.tar.gz -C /target/ |
| Listar conteúdo | tar -tvzf file.tar.gz |
| Extrair ficheiro único | tar -xvzf file.tar.gz path/to/file |
| Criar arquivo |
