quinta-feira, 30 de julho de 2026

Compactação / Descompactação

Trabalhar com o terminal Linux exige dominar a manipulação de arquivos compactados. Se você já se deparou com extensões como .tar.gz, .tar.xz, .7z ou .bz2 e ficou em dúvida sobre qual comando utilizar para compactar ou extrair os dados, este guia completo vai resolver seu problema de vez.

💡 Entendendo a diferença: Arquivar vs. Compactar
No Linux, ferramentas como o tar apenas juntam múltiplos arquivos em um único pacote (arquivamento). Já algoritmos como gzip, bzip2 e xz fazem a compressão (redução de tamanho). Por isso é tão comum ver extensões combinadas como .tar.gz!

Guia Rápido de Referência

Para quem busca agilidade, confira a tabela com os comandos mais comuns do dia a dia:

Extensão Comando para Compactar Comando para Descompactar
.tar.gz / .tgz tar -czvf arq.tar.gz pasta/ tar -xzvf arq.tar.gz
.tar.bz2 / .tbz2 tar -cjvf arq.tar.bz2 pasta/ tar -xjvf arq.tar.bz2
.tar.xz tar -cJvf arq.tar.xz pasta/ tar -xJvf arq.tar.xz
.zip zip -r arq.zip pasta/ unzip arq.zip
.7z 7z a arq.7z pasta/ 7z x arq.7z
.rar rar a arq.rar pasta/ unrar x arq.rar

Detalhamento de cada formato

1. O utilitário TAR (Sem compressão)

Cria um único pacote sem reduzir o tamanho dos arquivos.

# Compactar (Arquivar):
tar -cvf arquivo.tar /caminho/da/pasta

# Descompactar:
tar -xvf arquivo.tar

2. Formatos GZIP (.gz, .tar.gz, .tgz)

É o formato mais tradicional no ecossistema Unix. Rápido e com boa taxa de compressão.

# Arquivo simples (.gz)
gzip arquivo.txt             # Compacta (gera arquivo.txt.gz)
gunzip arquivo.txt.gz        # Descompacta

# Tarball comprimido (.tar.gz ou .tgz)
tar -czvf arquivo.tar.gz pasta/    # Compactar
tar -xzvf arquivo.tar.gz          # Descompactar

3. Formatos BZIP2 (.bz2, .tar.bz2, .tbz2)

Oferece uma taxa de compressão maior que o GZIP, porém consome um pouco mais de processamento.

# Arquivo simples (.bz2)
bzip2 arquivo.txt            # Compacta (gera arquivo.txt.bz2)
bunzip2 arquivo.txt.bz2      # Descompacta

# Tarball comprimido (.tar.bz2 ou .tbz2)
tar -cjvf arquivo.tar.bz2 pasta/   # Compactar
tar -xjvf arquivo.tar.bz2         # Descompactar

4. Formatos XZ e LZMA (.xz, .lzma, .tar.xz)

Ideal para distribuição de código e arquivos grandes. Garante taxas de compressão altíssimas (usado no código-fonte do Kernel Linux).

# Arquivo simples (.xz e .lzma)
xz arquivo.txt               # Compacta .xz
unxz arquivo.txt.xz          # Descompacta .xz

lzma arquivo.txt             # Compacta .lzma
unlzma arquivo.txt.lzma      # Descompacta .lzma

# Tarball comprimido (.tar.xz)
tar -cJvf arquivo.tar.xz pasta/    # Compactar
tar -xJvf arquivo.tar.xz          # Descompactar

5. Formato ZIP (.zip)

Muito utilizado para manter compatibilidade com o Windows.

# Compactar (o parâmetro -r compacta pastas recursivamente):
zip -r arquivo.zip pasta/

# Descompactar:
unzip arquivo.zip

6. Formato 7-Zip (.7z)

Excelente taxa de compressão e suporte a criptografia forte.

# Compactar:
7z a arquivo.7z pasta/

# Descompactar (mantendo a estrutura de pastas original):
7z x arquivo.7z

7. Formatos RAR e Unix Z (.rar e .Z)

Formatos menos comuns nativamente no Linux, mas frequentemente encontrados para download.

# Formato .rar
rar a arquivo.rar pasta/     # Compactar
unrar x arquivo.rar          # Descompactar

# Formato antigo Unix (.Z)
compress arquivo.txt         # Compacta
uncompress arquivo.Z         # Descompacta
# Ou para arquivos .tar.Z:
tar -xZvf arquivo.tar.Z

Download e Extração Direta (Sem salvar em disco)

É possível realizar o download e a extração imediata de arquivos nos formatos tar, tar.gz e tar.bz2 diretamente via terminal, sem a necessidade de salvar o arquivo compactado no disco local. Isso economiza espaço em disco e acelera o processo.

Exemplos com `wget`:

wget http://example.com/archive.tar -O - | tar -x
wget http://example.com/archive.tar.gz -O - | tar -xz
wget http://example.com/archive.tar.bz2 -O - | tar -xj

A diretiva -O - indica que o comando wget deve enviar o conteúdo baixado para a saída padrão (stdout), que por sua vez é redirecionada através de um pipe (|) para o comando tar. Desta forma, em vez de ser gravado em disco, o arquivo é automaticamente expandido em tempo real.

Exemplos com `curl`:

Podemos obter o mesmo resultado utilizando o utilitário curl:

curl http://example.com/archive.tar | tar -x
curl http://example.com/archive.tar.gz | tar -xz
curl http://example.com/archive.tar.bz2 | tar -xj

A diretiva -x do comando tar, em ambos os casos, realiza a extração dos arquivos. As opções complementares (-z para arquivos .gz/gzip e -j para arquivos .bz2/bzip2) realizam a descompactação do fluxo de dados antes de expandir a estrutura do tar.

⚠️ Pré-requisitos de Instalação:
Alguns utilitários como unzip, p7zip e unrar podem não vir instalados por padrão na sua distribuição. Caso algum comando falhe, instale os pacotes via terminal:
sudo apt install zip unzip p7zip-full unrar xz-utils (Debian/Ubuntu) ou
sudo dnf install zip unzip p7zip p7zip-plugins unrar xz (Fedora/RHEL)

Dica Bônus: O truque definitivo com `tar`

Nas versões modernas do utilitário tar, você não precisa memorizar a letra do tipo de compressão (z, j, J) para extrair arquivos! O tar consegue identificar o algoritmo de compressão automaticamente.

Você pode descompactar qualquer pacote .tar.gz, .tar.bz2 ou .tar.xz usando simplesmente:

tar -xvf nome-do-arquivo.tar.*

Conclusão

Guardar essa referência vai te poupar bastante tempo no terminal. Para a maioria das rotinas de servidores e desenvolvimento no Linux, focar nos comandos tar e zip — somado às técnicas de transmissão direta via pipe — cobrirá praticamente todas as suas necessidades diárias.

Nenhum comentário:

Postar um comentário