Última atualização: 20 de ago de 2026

GZIP vs BZIP2 vs XZ: Qual formato de compressão Linux é o melhor?
Seja empacotando dumps diários de bancos de dados, rotacionando logs de servidores web de vários gigabytes ou distribuindo binários compilados para milhares de nós, a compressão é uma realidade cotidiana na administração Linux.
Ao invocar tar ou processar dados em streaming através da entrada padrão, você normalmente encontra três utilitários padrão: GZIP (.gz), BZIP2 (.bz2), e XZ (.xz).
Enquanto as três ferramentas visam comprimir bytes brutos em arquivos compactos, elas fazem concessões de engenharia fundamentalmente diferentes entre taxa de compressão, tempo de execução da CPU e uso de memória. Escolher o formato errado pode criar um gargalo silencioso nas suas implantações automatizadas, atrasar janelas de backup programadas ou desperdiçar armazenamento valioso ao longo do tempo.
Este guia detalha como cada formato funciona nos bastidores, como eles se comportam em cargas de trabalho realistas e como escolher o mais adequado para sua infraestrutura.
1. Perfis Técnicos Rápidos: Os Três Concorrentes
GZIP (GNU Zip)
- Algoritmo Subjacente: DEFLATE (combinação de LZ77 e codificação Huffman)
- Extensão Padrão:
.tar.gz,.tgz,.gz - Era de Lançamento: 1992 (created by Jean-loup Gailly and Mark Adler as a patent-free alternative to
compress) - Vantagem Principal: Velocidade de execução imbatível e suporte quase universal ao ecossistema.
- Desvantagem Principal: Taxa de compressão mais baixa em comparação com codificadores estatísticos modernos e baseados em dicionário.
GZIP tem sido o motor padrão dos ambientes Unix por mais de três décadas. Como seu algoritmo DEFLATE opera com pequenas janelas deslizantes (32 KB), o GZIP requer um uso de memória insignificante tanto na compressão quanto na descompressão.
BZIP2
- Algoritmo Subjacente: Transformada Burrows-Wheeler (BWT) combinada com a transformada Move-to-Front (MTF) e codificação Huffman
- Extensão Padrão:
.tar.bz2,.tbz2,.bz2 - Era de Lançamento: 1996 (criado por Julian Seward)
- Vantagem Principal: Razões de compressão melhores em arquivos ASCII repetitivos e logs estruturados do que o GZIP.
- Desvantagem Principal: Mais lento em geral, especialmente durante a descompressão, e em grande parte tornado obsoleto por algoritmos mais recentes.
O BZIP2 processa dados em blocos discretos (tipicamente 900 KB) usando permutações reversíveis que agrupam caracteres semelhantes antes da codificação. Embora tenha sido amplamente celebrado no final dos anos 1990 e 2000 por superar os tamanhos de arquivo do GZIP, seu custo computacional é relativamente alto.
XZ (LZMA2)
- Algoritmo Subjacente: LZMA2 (Algoritmo de Cadeia Lempel-Ziv-Markov, aprimorado)
- Extensão Padrão:
.tar.xz,.txz,.xz - Era de Lançamento: 2009 (introduzido para substituir o formato
lzmamais antigo) - Vantagem Principal: Taxas de compressão excepcionalmente altas e descompressão rápida e leve.
- Desvantagem Principal: Uso intensivo de RAM e tempo de CPU prolongado durante a compressão inicial.
XZ aproveita tamanhos de dicionário variáveis (geralmente até 32 MB ou 64 MB por padrão) para encontrar padrões de bytes duplicados em janelas de dados muito mais amplas que o GZIP. Isso o torna devastadoramente eficaz na redução de arquivos grandes e redundantes, como mídia de instalação de SO, árvores de código‑fonte do kernel e imagens de firmware.
2. Matriz de Comparação de Desempenho
A tabela abaixo resume a dinâmica prática de desempenho de cada utilitário ao executar configurações padrão em hardware de servidor padrão:
| Métrica / Dimensão | GZIP (-6) | BZIP2 (-9) | XZ (-6) |
|---|---|---|---|
| Taxa de Compressão | Moderado (~65-75% de redução) | Bom (~75-80% de redução) | Superior (~80-88% de redução) |
| Velocidade de Compressão | Muito rápido | Lento | Muito Lento |
| Velocidade de Descompressão | Extremamente Rápido | Lento a Moderado | Rápido |
| Uso de RAM de Compressão | Negligível (~1–2 MB) | Baixo (~8–10 MB) | Alto (~100–700 MB+) |
| Uso de RAM de Descompressão | Negligível (< 1 MB) | Baixo (~4 MB) | Moderado (~10–65 MB) |
| Ponto Ideal Principal | Logs, pipelines CI/CD, fluxos em tempo real | Compatibilidade com arquivos legados | Repositórios de pacotes, ISOs de SO, armazenamento frio |
3. Insights de Benchmark do Mundo Real
Para entender como essas ferramentas se comportam sob carga realista, considere um log de acesso ao servidor bruto de 1 GB representativo e um diretório de código-fonte de software descompactado de 500 MB.
Cenário A: Compactando Grandes Arquivos de Log (Texto de 1 GB)
- GZIP: Conclui em menos de 12 segundos, entregando um arquivo de cerca de 180 MB.
- BZIP2: Conclui em aproximadamente 45–50 segundos, reduzindo o arquivo para cerca de 130 MB.
- XZ: Leva 80–90 segundos nas configurações padrão, produzindo um arquivo próximo de 95 MB.
Cenário B: Cargas de Trabalho de Descompressão
Uma métrica crítica frequentemente negligenciada é assimetria.
- GZIP descompacta em 2–3 segundos com uso de memória microscópico.
- XZ descompacta em 4–6 segundos. Embora a compressão inicial fosse lenta, extrair
.xzé quase tão rápido quanto extrair.gz. - BZIP2 requer aproximadamente 25–30 segundos apenas para descompactar, porque reverter a Transformada Burrows-Wheeler é computacionalmente simétrica à sua codificação.
4. Por que o BZIP2 Está Perdendo Popularidade
Na infraestrutura moderna, o BZIP2 se encontra preso em um meio-termo desconfortável:
- Superado em velocidade pelo GZIP: Se a latência de processamento ou o baixo uso de CPU são importantes, o GZIP é significativamente mais rápido.
- Superado em densidade pelo XZ: Se a conservação de largura de banda e a eficiência de armazenamento são importantes, o XZ gera arquivos consideravelmente menores.
- Superado em velocidade de descompressão por ambos: Em sistemas de entrega de software, os clientes pagam uma penalidade mensurável de CPU ao extrair arquivos
.tar.bz2em comparação com.tar.gzou.tar.xz.
Consequentemente, as principais distribuições Linux (incluindo Debian, Arch e Fedora) mudaram sua distribuição oficial de pacotes e tarballs do kernel de BZIP2 para XZ (e mais recentemente, Zstandard para operações em tempo de execução).
5. Uso Prático da Linha de Comando
Integração com Tar (O Fluxo de Trabalho Mais Comum)
Implementações modernas do GNU tar reconhecem automaticamente o formato de compressão com base na extensão do arquivo, mas o uso de flags explícitas ainda é prática padrão:
# GZIP: Fast archive creation
tar -czvf project-backup.tar.gz /var/www/project/
# BZIP2: Legacy high-ratio archive
tar -cjvf project-backup.tar.bz2 /var/www/project/
# XZ: Maximum space savings
tar -cJvf project-backup.tar.xz /var/www/project/
# Generic extraction (tar auto-detects the format)
tar -xvf archive-name.tar.*
Compressão de Arquivo Autônoma
Para comprimir arquivos individuais sem empacotar:
# Compress keeping the original file intact (-k)
gzip -k access.log # Output: access.log.gz
bzip2 -k access.log # Output: access.log.bz2
xz -k access.log # Output: access.log.xz
# Decompress individual files
gzip -d access.log.gz
bzip2 -d access.log.bz2
xz -d access.log.xz
Utilizando Sistemas Multinúcleo
Por padrão, implementações de thread única dessas ferramentas utilizam apenas um núcleo de CPU. Se você estiver comprimindo arquivos de vários gigabytes em servidores modernos com múltiplos núcleos, o processamento de thread única pode levar horas.
- Multi-threading do XZ: Suporte nativo via
-Tou--threads:xz -T0 -k database_dump.sql # Uses all available CPU cores - GZIP paralelo (
pigz): Uma substituição direta que usa todos os núcleos de CPU para operações GZIP:pigz -k database_dump.sql - BZIP2 paralelo (
pbzip2): Implementação multi-thread para BZIP2:pbzip2 -k database_dump.sql
6. Como Escolher: Estrutura de Decisão Prática
Escolha sua ferramenta com base na restrição principal do seu fluxo de trabalho:
Use GZIP se:
- Você está configurando compressão de fluxo em tempo real ou transmissão de rede onde a taxa de transferência é o fator limitante.
- Você está gerenciando rotação automática de logs (
logrotate) em servidores de produção onde os recursos de CPU devem ser reservados para as cargas de trabalho das aplicações. - É necessária máxima portabilidade entre sistemas embarcados legados e imagens base padrão.
Use XZ se:
- Você está publicando artefatos de lançamento, compilações de kernel, imagens base de contêineres ou repositórios de pacotes estáticos baixados frequentemente por terceiros.
- Você está preparando arquivos frios de longo prazo (backups semanais/mensais off-site) onde os custos de armazenamento superam o tempo de compressão único.
- Você precisa de arquivos pequenos, mas seus consumidores ainda exigem download rápido e tempos de extração curtos.
Mantenha BZIP2 somente se:
- Você está mantendo compatibilidade retroativa com scripts legados, rotinas de restauração de backup existentes ou appliances de software que não fornecem um descompressor XZ.
7. Perguntas Frequentes (FAQ)
Q1. Qual formato fornece o menor tamanho de arquivo compactado? XZ produz consistentemente o menor tamanho de arquivo entre os três devido às suas janelas de dicionário LZMA2 maiores.
Q2. O XZ é mais lento que o GZIP ao descompactar arquivos? O XZ é apenas um pouco mais lento que o GZIP na descompressão, mas é substancialmente mais rápido que o BZIP2.
Q3. O GZIP e o XZ podem aproveitar múltiplos núcleos de CPU? O XZ suporta multithreading nativo usando a bandeira -T0, enquanto o GZIP pode ser paralelizado entre núcleos usando a ferramenta substituta pigz.
Q4. Por que as distribuições Linux estão abandonando o BZIP2? As distribuições praticamente eliminaram o BZIP2 porque o XZ compacta mais pequeno e descompacta mais rápido, enquanto o GZIP continua mais rápido para operações rápidas.
Q5. Um nível de compressão mais alto, como -9, faz uma diferença perceptível? Definir o nível -9 resulta apenas em uma redução marginal de 1% a 3% no tamanho, em média, enquanto aumenta drasticamente o consumo de ciclos de CPU e a sobrecarga de memória.