Archivio BZIP2 (.bz2)

Standard Standard

Bzip2 (BZ2) è un classico formato di file e utilità di compressione Unix privo di brevetti, creato da Julian Seward, che utilizza la trasformata di Burrows-Wheeler per ottenere una compressione significativamente più densa rispetto al classico Gzip.

Ispeziona e metadati

I sistemi operativi e gli analizzatori di file identificano i file BZ2 ispezionando la sequenza di byte binari iniziale:

Seleziona o rilascia i file qui

Conversione 100% privata nel browser: i file non lasciano mai il tuo dispositivo

o incolla Ctrl+V
Garanzia di privacy con zero trasmissioni di rete: 0 byte caricati su server esterni. Tutta l'elaborazione è avvenuta localmente nella sandbox del tuo browser.

Firma dell'intestazione a livello di byte (Magic Bytes)

I sistemi operativi e gli analizzatori di file identificano i file BZ2 ispezionando la sequenza di byte binari iniziale:

FIRMA ESADECIMALE (OFFSET 0):

42 5A 68

RAPPRESENTAZIONE ASCII: BZh

Standardizzazione: Standard Open Source Bzip2

Specifiche tecniche

Architettura del containerIntestazione dello stream ('BZh' + cifra della dimensione del blocco 1-9) seguita da blocchi di dati compressi e CRC a 32-bit
CompressioneTrasformata di Burrows-Wheeler (BWT), trasformata Move-to-Front (MTF) e codifica di Huffman
Endianness dei byteFrammentazione del flusso di bit Big-Endian
Spazi coloreN/A (Flusso di Compressione Byte)
Canali e strutturaFlusso di byte compressi a file singolo
Dimensioni massimeLunghezza dello stream illimitata (supporta file di dimensioni arbitrarie)
TrasparenzaConservazione dei dati lossless al 100% bit-esatta
Streaming e progressivoStreaming sequenziale blocco per blocco con checksum CRC indipendenti per ciascun blocco

Matrice di confronto tecnico: BZ2 vs Concorrenti

Attributo tecnicoBZ2 (Corrente)GZXZZSTD
Algoritmo PrincipaleTrasformata di Burrows-Wheeler (BWT)Sgonfia (LZ77 + Huffman)LZMA / LZMA2Entropia a stati finiti + LZ77
Compressione rispetto a GzipDal 10% al 20% più piccolo di GzipStandard di riferimentoDal 20% al 30% più piccolo di GzipDal 10% al 20% più piccolo di Gzip
Velocità di DecompressioneLenta (~30-50 MB/s)Veloce (~300 MB/s)Moderata (~100 MB/s)Elevatissima (>1.5 GB/s)
Checksum dei BlocchiCRC a 32-bit per bloccoCRC32 a stream singoloFlusso CRC64Flusso xxHash64

Modalità di corruzione comuni e guida al recupero Hex

L'estrazione si interrompe con 'bzip2: Data integrity error when decompressing'.

Causa principale: Bit invertito nel blocco compresso che causa il fallimento della convalida CRC32 nella matrice di permutazione inversa BWT.

Ripristino: Utilizzare l'utilità 'bzip2recover' per recuperare i blocchi integri che circondano il settore danneggiato.

Analisi di sicurezza e vettori di attacco del parser

Le implementazioni di Bzip2 comportano una complessa ordinazione dei flussi di bit e l'analisi delle tabelle di Huffman che in passato hanno subito difetti di overflow di interi.

Vettori di attacco noti

  • Overflow di interi nell'allocazione dell'array di ordinamento BWT (es. CVE-2016-3189).
  • Scrittura oltre i limiti (out-of-bounds) durante l'assemblaggio della tabella di decodifica di Huffman.
  • Denial of service tramite pattern di input patologici che causano tempi di ordinamento BWT quadratici nel caso peggiore.

Migliori pratiche difensive: Decodificare i file BZ2 utilizzando decoder WASM sicuri per la memoria con confini di memoria rigorosamente applicati.

Origini storiche e tappe fondamentali

2019Federico Mena Quintero modernizza la manutenzione della base di codice di bzip2 nell'ambito di bzip3 e delle moderne iniziative open-source.
2000Viene rilasciata la versione 1.0, che stabilizza il formato bzip2 tra le distribuzioni Linux e i gestori di pacchetti.
1996Julian Seward rilascia bzip2 0.15 per sostituire il precedente formato bzip che presentava problemi di brevetti.

Vantaggi principali e pro

  • Supera costantemente il classico Gzip dal 10% al 20% su archivi di codice sorgente, log di sistema e database di testo.
  • L'architettura a blocchi indipendenti (da 100k a 900k) include checksum CRC a 32-bit per blocco per un controllo dell'integrità affidabile.
  • Disponibilità nativa universale su tutte le distribuzioni a riga di comando Linux, BSD e macOS.

Limiti tecnici e svantaggi

  • Velocità di compressione e decompressione notevolmente inferiori rispetto agli algoritmi moderni come Zstandard.
  • Compressione a file singolo: richiede l'abbinamento con TAR (.tar.bz2) per pacchettizzare più file o directory.
  • Maggiore utilizzo della CPU durante la decompressione rispetto a Gzip o Zstd.

Curiosità tecniche interessanti

  • I byte magici 'BZh' stanno per 'Burrows-Wheeler Zip Huffman', seguiti da una cifra (da '1' a '9') che indica la dimensione del blocco in centinaia di kilobyte (es. 'BZh9' = 900 KB).
  • Il codice sorgente del kernel Linux è stato distribuito esclusivamente in formato .tar.bz2 per oltre un decennio prima di migrare a .xz.
  • La trasformata di Burrows-Wheeler non comprime direttamente i dati; permuta l'ordine dei caratteri in modo che le lettere identiche si raggruppino, rendendole facilmente comprimibili tramite la codifica di Huffman.

Domande tecniche frequenti

Qual è la differenza tra .gz e .bz2?

.bz2 utilizza la trasformata di Burrows-Wheeler per ottenere dimensioni dei file inferiori rispetto a .gz, ma richiede più tempo per la compressione e la decompressione.

Perché bzip2 ha un comando 'bzip2recover'?

Poiché bzip2 comprime i dati in blocchi indipendenti da 900 KB, ciascuno dotato di un proprio CRC, bzip2recover è in grado di estrarre i blocchi integri anche se una parte del file è danneggiata.

Come posso estrarre un file .tar.bz2?

Puoi decomprimere i file .tar.bz2 direttamente nel tuo browser web con File2File.app senza dover eseguire strumenti a riga di comando.