Arquivo BZIP2 (.bz2)
Padrão PadrãoBzip2 (BZ2) é um utilitário de compressão Unix clássico e isento de patentes, criado por Julian Seward. Ele utiliza a transformada de Burrows-Wheeler para alcançar uma compressão significativamente mais densa do que o Gzip clássico.
Inspecionar e metadados
Sistemas operacionais e analisadores de arquivos identificam arquivos BZ2 inspecionando a sequência de bytes binários inicial:
Assinatura de Cabeçalho em Nível de Byte (Magic Bytes)
Sistemas operacionais e analisadores de arquivos identificam arquivos BZ2 inspecionando a sequência de bytes binários inicial:
ASSINATURA HEX (OFFSET 0):
42 5A 68REPRESENTAÇÃO ASCII: BZh
Padronização: Padrão de Código Aberto Bzip2
Especificações Técnicas
| Arquitetura do Contêiner | Cabeçalho de fluxo ('BZh' + dígito de tamanho de bloco 1-9) seguido por blocos de dados comprimidos e CRC de 32 bits |
| Compressão | Transformada de Burrows-Wheeler (BWT), transformada Move-to-Front (MTF) e codificação de Huffman |
| Ordem de Bytes (Endianness) | Enquadramento de fluxo de bits Big-Endian |
| Espaços de Cores | N/A (Fluxo de Compressão de Bytes) |
| Canais e Estrutura | Fluxo de bytes comprimido de arquivo único |
| Dimensões Máximas | Comprimento de fluxo ilimitado (suporta tamanhos de arquivos arbitrários) |
| Transparência | Preservação de dados sem perdas 100% idêntica ao original |
| Streaming e Progressivo | Streaming sequencial bloco a bloco com somas de verificação CRC independentes por bloco |
Matriz de Comparação Técnica: BZ2 vs Concorrentes
| Atributo Técnico | BZ2 (Atual) | GZ | XZ | ZSTD |
|---|---|---|---|---|
| Algoritmo Principal | Transformada de Burrows-Wheeler (BWT) | Esvaziar (LZ77 + Huffman) | LZMA / LZMA2 | Entropia de Estado Finito + LZ77 |
| Compressão vs Gzip | 10% - 20% menor que o Gzip | Padrão de referência | 20% - 30% menor que o Gzip | 10% - 20% menor que o Gzip |
| Velocidade de Descompressão | Lenta (~30-50 MB/s) | Rápida (~300 MB/s) | Moderada (~100 MB/s) | Extremamente rápida (>1,5 GB/s) |
| Somas de Verificação de Blocos | CRC de 32 bits por bloco | CRC32 de fluxo único | CRC64 de fluxo | xxHash64 de fluxo |
Modos Comuns de Corrupção e Guia de Recuperação Hex
A extração é abortada com 'bzip2: Data integrity error when decompressing'.
Causa Raiz: Bit invertido no bloco comprimido fazendo com que a matriz de permutação inversa BWT falhe na validação do CRC32.
Recuperação: Use o utilitário 'bzip2recover' para recuperar blocos não danificados ao redor do setor corrompido.
Análise de Segurança e Vetores de Ataque ao Analisador
As implementações do Bzip2 envolvem ordenação complexa de fluxos de bits e análise de tabelas de Huffman que historicamente sofreram falhas de estouro de inteiro.
Vetores de Ataque Conhecidos
- Estouro de inteiro na alocação da matriz de ordenação BWT (ex.: CVE-2016-3189).
- Escrita fora dos limites durante a montagem da tabela de decodificação de Huffman.
- Negação de serviço através de padrões de entrada patológicos que causam tempos de ordenação BWT quadráticos no pior caso.
Melhores Práticas Defensivas: Decodifique arquivos BZ2 usando decodificadores WASM seguros contra falhas de memória com limites de memória impostos.
Origens Históricas e Marcos
Principais Vantagens e Prós
- Supera consistentemente o Gzip clássico em 10% a 20% em arquivos tarballs de código-fonte, logs do sistema e bancos de dados de texto.
- A arquitetura de blocos independentes (100k a 900k) inclui somas de verificação CRC de 32 bits por bloco para verificação de integridade robusta.
- Disponibilidade nativa universal em todas as distribuições de linha de comando Linux, BSD e macOS.
Limitações Técnicas e Contras
- Velocidades de compressão e descompressão significativamente mais lentas em comparação com algoritmos modernos como o Zstandard.
- Compressão apenas de arquivo único: requer associação com TAR (.tar.bz2) para empacotar múltiplos arquivos ou diretórios.
- Maior uso de CPU durante a descompressão em comparação com o Gzip ou Zstd.
Curiosidades Técnicas
- Os bytes mágicos 'BZh' significam 'Burrows-Wheeler Zip Huffman', seguidos por um dígito ('1' a '9') que indica o tamanho do bloco em centenas de quilobytes (ex.: 'BZh9' = 900 KB).
- O código-fonte do Kernel do Linux foi distribuído exclusivamente no formato .tar.bz2 por mais de uma década antes de migrar para .xz.
- A transformada de Burrows-Wheeler não comprime os dados diretamente; ela permuta a ordem dos caracteres para que letras idênticas fiquem agrupadas, tornando-as trivialmentecompressíveis por codificação de Huffman.
Perguntas Técnicas Frequentes
Qual é a diferença entre .gz e .bz2?
O .bz2 usa a transformada de Burrows-Wheeler para alcançar tamanhos de arquivo menores que o .gz, mas leva mais tempo para comprimir e descompressão.
Por que o bzip2 possui o comando 'bzip2recover'?
Como o bzip2 comprime dados em blocos independentes de 900 KB, cada um com seu próprio CRC, o bzip2recover pode extrair blocos não danificados mesmo se parte do arquivo estiver corrompida.
Como posso extrair um arquivo .tar.bz2?
Você pode descompactar arquivos .tar.bz2 diretamente no seu navegador web com o File2File.app sem precisar executar ferramentas de linha de comando.