Arquivo BZIP2 (.bz2)

Padrão Padrão

Bzip2 (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 eficiente do que o Gzip clássico.

Inspeção e metadados

Sistemas operacionais e analisadores de arquivos identificam arquivos BZ2 pela sequência inicial de bytes:

Selecione ou solte os arquivos aqui

Privado - os arquivos nunca saem do seu dispositivo

ou colar Ctrl+V
Garantia de privacidade sem transmissão pela rede 0 bytes enviados a servidores externos. Todo o processamento ocorreu localmente no ambiente isolado do navegador.

Assinatura do arquivo em bytes (magic bytes)

Sistemas operacionais e analisadores de arquivos identificam arquivos BZ2 pela sequência inicial de bytes:

ASSINATURA HEXADECIMAL (DESLOCAMENTO 0):

42 5A 68

REPRESENTAÇÃO ASCII: BZh

Padronização: Padrão de Código Aberto Bzip2

Especificações técnicas

Estrutura do contêinerCabeçalho de fluxo (BZh seguido do dígito de tamanho do bloco, de 1 a 9), seguido por blocos de dados compactados e CRC de 32 bits
CompressãoTransformada de Burrows-Wheeler (BWT), transformada Move-to-Front (MTF) e codificação de Huffman
Ordem dos bytes (endianness)Enquadramento de fluxo de bits em big-endian
Espaços de corNão se aplica (fluxo de compactação de bytes)
Canais e EstruturaFluxo de bytes compactado de um único arquivo
Dimensões MáximasComprimento de fluxo ilimitado (compatível com arquivos de qualquer tamanho)
TransparênciaPreservação de dados sem perdas, idênticos ao original bit a bit
Streaming e ProgressivoProcessamento sequencial em fluxo, bloco a bloco, com uma soma de verificação CRC independente para cada bloco

Matriz de comparação técnica: BZ2 e formatos concorrentes

Atributo técnicoBZ2 (Atual)GZXZZSTD
Algoritmo principalTransformada de Burrows-Wheeler (BWT)Deflate (LZ77 + Huffman)LZMA / LZMA2Entropia de estado finito e LZ77
Compactação em comparação com Gzip10% - 20% menor que o GzipPadrão de referência20% - 30% menor que o Gzip10% - 20% menor que o Gzip
Velocidade de descompactaçãoLenta (cerca de 30 a 50 MB/s)Rápida (cerca de 300 MB/s)Moderada (cerca de 100 MB/s)Muito rápida (mais de 1,5 GB/s)
Somas de verificação dos blocosCRC de 32 bits por blocoCRC32 de um único fluxoCRC64 de fluxoxxHash64 de fluxo

Modos comuns de corrupção e guia de recuperação com editor hexadecimal

A extração é interrompida com a mensagem "bzip2: Data integrity error when decompressing".

Causa principal: Um bit invertido no bloco compactado faz com que a matriz de permutação inversa BWT falhe na validação CRC32.

Recuperação: Use o utilitário bzip2recover para recuperar blocos intactos próximos ao setor corrompido.

Análise de segurança e vetores de ataque a analisadores

As implementações do Bzip2 ordenam fluxos de bits complexos e analisam tabelas de Huffman, operações que já causaram falhas de estouro de inteiro.

Vetores de ataque conhecidos

  • Estouro de inteiro ao alocar a matriz de ordenação BWT (por exemplo, CVE-2016-3189).
  • Gravação fora dos limites durante a montagem da tabela de decodificação Huffman.
  • Negação de serviço causada por padrões de entrada patológicos que levam a tempos quadráticos de ordenação BWT no pior caso.

Melhores práticas defensivas: Decodifique arquivos BZ2 com decodificadores WASM seguros para a memória e com limites de memória definidos.

Origens históricas e marcos

2019Federico Mena Quintero moderniza a manutenção do código do bzip2 com iniciativas como o bzip3 e outros projetos de código aberto.
2000A versão 1.0 é lançada, estabilizando o formato bzip2 nas distribuições Linux e nos gerenciadores de pacotes.
1996Julian Seward lança o bzip2 0.15 para substituir o formato bzip anterior, que tinha problemas relacionados a patentes.

Principais vantagens

  • Em arquivos tar de código-fonte, registros do sistema e bancos de dados de texto, costuma compactar de 10% a 20% mais que o Gzip clássico.
  • A arquitetura de blocos independentes (de 100 KB a 900 KB) inclui somas de verificação CRC de 32 bits para cada bloco, garantindo uma verificação de integridade robusta.
  • Disponível nativamente em muitas distribuições de linha de comando de Linux, BSD e macOS; a inclusão varia conforme a distribuição.

Limitações técnicas e desvantagens

  • A compactação e a descompactação são bem mais lentas que em algoritmos modernos, como o Zstandard.
  • Compacta apenas um arquivo por vez. Para reunir vários arquivos ou diretórios, é preciso combiná-lo com TAR (tar.bz2).
  • Usa mais CPU durante a descompactação do que Gzip ou Zstandard.

Curiosidades técnicas

  • Os bytes mágicos BZh vêm de Burrows-Wheeler Zip Huffman. O dígito seguinte (de 1 a 9) indica o tamanho do bloco em centenas de quilobytes; por exemplo, BZh9 indica 900 KB.
  • Por mais de uma década, o código-fonte do kernel Linux foi distribuído exclusivamente em arquivos .tar.bz2, antes de migrar para .xz.
  • A transformada de Burrows-Wheeler não compacta os dados diretamente. Ela reorganiza os caracteres para agrupar letras iguais.

Perguntas técnicas frequentes

Qual é a diferença entre .gz e .bz2?

O .bz2 usa a transformada de Burrows-Wheeler para gerar arquivos menores que o .gz, mas leva mais tempo para compactar e descompactar.

Por que o bzip2 possui o comando 'bzip2recover'?

O bzip2 compacta os dados em blocos independentes de 900 KB, cada um com seu próprio CRC. Assim, o bzip2recover consegue extrair blocos intactos mesmo que parte do arquivo esteja corrompida.

Como posso extrair um arquivo .tar.bz2?

Você pode extrair arquivos .tar.bz2 diretamente no navegador com o File2File.app, sem usar ferramentas de linha de comando.