15%

Poupe 15% em todos os serviços

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código:

Skills
Começar a trabalhar
31.07.2025

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.

FormatoExtensãoFerramenta de Compressão
Sem compressão.tar
Gzip.tar.gz / .tgzgzip
Bzip2.tar.bz2bzip2
XZ.tar.xzxz
Zstandard.tar.zstzstd

Comandos de Extração Básica

1. Extrair um arquivo .tar (Sem Compressão)

tar -xf archive.tar

2. Extrair um arquivo .tar.gz ou .tgz

tar -xzf archive.tar.gz

3. Extrair um arquivo .tar.bz2

tar -xjf archive.tar.bz2

4. Extrair um arquivo .tar.xz

tar -xJf archive.tar.xz

5. 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:

SinalizadorFunção
-xExtrair arquivos de um arquivo
-fEspecificar o arquivo a ser usado
-vSaída detalhada — lista arquivos conforme são extraídos
-zFiltrar através da compressão gzip
-jFiltrar através da compressão bzip2
-JFiltrar através da compressão xz
-C <dir>Mudar para o diretório especificado antes de extrair
--strip-components=NRemover os primeiros N componentes de caminho dos nomes de arquivo
--wildcardsAtivar correspondência de padrão curinga durante a extração
--no-same-ownerNão restaurar propriedade de arquivo (útil para usuários não-root)
--overwriteSobrescrever arquivos existentes sem solicitar confirmação
--exclude=PATTERNExcluir arquivos que correspondem ao padrão especificado
--ignore-zerosPular blocos preenchidos com zeros (útil para arquivos corrompidos)
-tListar 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=1

Isto é 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/file2

Extrair 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.gz

Tratamento 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-zeros

Este 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.gz

Isto 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=1

Passe 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 /destination

Isto é 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
15%

Poupe 15% em todos os serviços

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código:

Skills
Começar a trabalhar