BZ2

Che cos’è un file BZ2?

Comprime meglio del GZ e ci mette parecchio di più a farlo.

Che cos’è BZ2

BZ2 è un formato di flusso, scritto e letto dall’inizio alla fine. Si usa per l'archiviazione.

L’estensione è .bz2 e il nome per esteso è Bzip2 Archive. Contano entrambi meno di ciò che il file può contenere, ed è di questo che parla il resto della pagina.

Da dove viene BZ2

Risale al 1996.

A un formato rimasto leggibile così a lungo si può affidare qualcosa che vuoi ritrovare fra dieci anni.

La specifica è pubblica

È pubblicata per intero, quindi la si può implementare partendo dal documento invece che per osservazione: è per questo che il formato compare in così tanti programmi, ed è per questo che file scritti vent’anni fa si aprono ancora. Una specifica pubblicata però non è la stessa cosa di una esente da royalty: dove un formato incapsula un codec, le licenze sui brevetti restano una questione a parte che lo standard non risolve.

È un formato ereditato

Si apre ancora dappertutto e i programmi più vecchi lo scrivono ancora, ma attorno non si costruisce più niente di nuovo. Converti ciò che vuoi tenere e non sceglierlo per qualcosa che comincia oggi.

Non si butta via niente

BZ2 conserva il suo contenuto esattamente. Risalvarlo non cambia nulla, quindi puoi aprirlo, modificarlo e risalvarlo quante volte vuoi senza accumulare danni: è questo che ne fa un formato di lavoro e non di consegna.

Contiene esattamente un file

BZ2 comprime un solo flusso e non ha alcuna nozione di nome di file o di cartella. È per questo che lo si vede così spesso in coppia con TAR, che fornisce la struttura che gli manca.

Da dove viene il suo rapporto di compressione

Lavora su 900 KB alla volta: la ripetizione deve cadere tutta dentro questo spazio perché possa essere compressa via.

Quel solo numero spiega quasi tutta la differenza fra un formato di archivio e un altro. Uno spazio più grande trova più ripetizioni e ci mette più tempo e più memoria a farlo: tutto lo scambio è qui.

Che cosa fa per proteggersi

BZ2 porta con sé un codice di controllo, così un file danneggiato viene rilevato invece che letto male in silenzio.

Un codice di controllo non ripara nulla. Ti dice che il file è rovinato, ed è la differenza fra scoprirlo adesso e scoprirlo da chi te lo fa notare dopo averlo ricevuto.

Che cosa apre BZ2

bzip2, 7-Zip e Keka lo leggono, e così fanno quasi tutti i programmi dello stesso tipo.

Quando un file non si apre, il formato è raramente il problema: più spesso è il programma a essere più vecchio di lui. Convertire in qualcosa di più vecchio è la via d’uscita affidabile, ed è a questo che serve il resto di questo sito.

Aprirlo nel browser

Nessun browser lo legge.

È di gran lunga il motivo più comune per convertirlo: non che il formato sia scadente, ma che il posto in cui vuoi mostrare il file non sappia leggerlo.

È un formato di consegna

BZ2 è pensato per essere consegnato, non per lavorarci dentro. Modificarne uno è possibile e raramente piacevole; la strada sensata passa dall’originale e da una nuova esportazione.

Che cosa va storto con lui

Le lamentele ricorrenti: tiene un solo flusso e non sa descrivere una cartella.

Nessuna di queste è un motivo per evitare il formato. Sono le cose che conviene conoscere prima che una di loro ti sorprenda, che è un’affermazione diversa e più utile.

È stato superato da entrambi i lati, e va detto

Bzip2 è apparso nel 1996 comprimendo decisamente meglio di gzip, e per oltre un decennio .tar.bz2 è stato l’opzione intermedia sensata per pubblicare codice sorgente e archivi storici. Quella fase è finita. xz comprime di più, zstd va molto più veloce con rapporti simili, ed entrambi decomprimono più in fretta di bzip2.

Un .bz2 in cui vi imbattete oggi è quindi quasi sempre vecchio: una versione archiviata, un insieme di dati pubblicato anni fa, un backup di un sistema la cui configurazione risale al 2008. Non esiste più alcun argomento vivo per crearne uno nuovo, e la domanda utile riguarda come aprire quello che avete.

Ordina i dati invece di cercare ripetizioni

Gli altri compressori di questa famiglia — gzip, xz, 7z, zip — guardano all’indietro cercando sequenze già viste. Bzip2 fa altro: la trasformata di Burrows-Wheeler riordina un blocco di dati in modo che i caratteri simili finiscano vicini, e poi un codificatore semplice sfrutta le sequenze ripetute che quel riordino ha creato.

Sorprendente è che la trasformata sia reversibile: il riordino si annulla esattamente. È un approccio elegante e spiega il carattere del formato — buoni rapporti di compressione sul testo, decompressione lenta perché la trasformata va invertita, e un consumo di memoria che dipende dalla dimensione del blocco e non dalla dimensione del file.

Blocchi indipendenti, ed è per questo che si può recuperare

Bzip2 lavora su blocchi indipendenti, di 900 KB per default. Ogni blocco viene compresso e decompresso per conto proprio, senza guardare i vicini.

Questo gli dà una proprietà che nessun altro qui possiede: se una parte del file si corrompe, i blocchi intatti restano leggibili e uno strumento di recupero può estrarli. In gzip o xz, un danno all’inizio del flusso costa di solito tutto ciò che veniva dopo. Per un file vecchio su un supporto che si sta deteriorando, questo è un vantaggio reale e a volte decisivo.

Ed è per questo che si può anche distribuire fra più core

Poiché i blocchi sono indipendenti, si possono comprimere e decomprimere su più core contemporaneamente. Strumenti come pbzip2 e lbzip2 sfruttano questa proprietà e producono archivi che il bzip2 ordinario continua a leggere senza accorgersene.

Su una macchina con otto core questo trasforma il suo difetto peggiore in qualcosa di tollerabile. È il motivo principale per cui il formato ha resistito così a lungo nel calcolo scientifico e nelle pipeline di elaborazione dati, dove i file sono enormi e i core abbondano.

Di nuovo la doppia estensione

Bzip2 comprime esattamente un flusso. Non ha una struttura a directory, né nomi di file, né la nozione che possano essercene più di uno — la stessa forma di gzip e xz. Per questo la norma è .tar.bz2: tar riunisce l’albero di cartelle in un unico flusso e bzip2 lo comprime.

Decomprimere un .bz2 da solo restituisce esattamente un file. Se vi aspettavate una cartella, ciò che cercavate era il .tar contenuto dentro, e la maggior parte degli strumenti presenta i due passaggi come uno solo.

Dove cadono davvero i numeri

Su testo e codice sorgente, bzip2 resta circa un quarto sotto gzip, e a pochi punti percentuali da xz su quel tipo di contenuto. Comprimere è diverse volte più lento di gzip; decomprimere lo è ancora di più, ed è questa la caratteristica che lo ha messo fuori gioco.

Quest’ultimo punto è ciò che lo rende poco attraente più che semplicemente superato. Un file si comprime una volta e si decomprime molte volte, quindi un formato lento da leggere paga il suo costo ripetutamente. xz è lento da scrivere e veloce da leggere, il che è la ripartizione corretta.

È rimasto anni senza manutenzione, e questo ha lasciato il segno

Il bzip2 originale è rimasto a lungo senza nuove versioni, e nel 2019 nel decompressore è stato trovato un bug di scrittura fuori dai limiti presente da tempo. Da allora la manutenzione è ripresa e il problema è corretto in tutto ciò che è aggiornato.

Vale la pena saperlo come contesto, non come avvertimento sui vostri file: un .bz2 è dati, non codice, e aprirlo con software aggiornato non ha nulla di particolare. L’episodio fa parte del motivo per cui le distribuzioni sono passate ad altro, insieme alla lentezza.

Chi continua a produrre file di questo tipo

Vecchie versioni di codice sorgente Linux e pacchetti di distribuzione archiviati. Insiemi di dati scientifici e genomici, dove gli strumenti paralleli lo hanno reso praticabile e dove ciò che è già pubblicato non viene ricodificato. Sistemi di backup configurati un decennio fa. E i dump di database di grandi progetti, per molti anni.

Il modello è la pubblicazione, non la condivisione: file scritti una volta, scaricati da molti e mai più rivisti. Nessuno oggi manda un .bz2 a un collega.

Aprirlo, e cosa fare con il contenuto dopo

Qualsiasi sistema Linux e macOS gestisce bzip2 da riga di comando, e 7-Zip lo legge su Windows senza difficoltà. Decomprimere un .tar.bz2 sono due passaggi che quasi tutti gli strumenti presentano come uno solo.

Se il contenuto deve arrivare a una persona, reimpacchettatelo come ZIP, che il suo sistema apre senza aiuto. Se torna a un sistema Unix, usate .tar.gz o .tar.xz, che conservano i permessi e i collegamenti simbolici che tar porta con sé e che ZIP scarta. Ricreare un .bz2 è l’unica opzione senza alcun vantaggio.

Come funziona qui la conversione, e quali limiti ha

Gli archivi compressi sono l’eccezione alla regola di questo sito: invece di convertirsi nel vostro browser, vengono inviati a api.quinvert.com, dove 7-Zip fa il lavoro. Il file viene scritto in una cartella temporanea appena creata, con un nome fisso — il vostro nome di file non arriva sul disco — e quella cartella viene cancellata al termine, anche nei percorsi di errore. Il contenitore in cui avviene non ha accesso a internet e il risultato viene restituito senza cache.

I numeri contano qui più che in altre pagine. Il limite delle conversioni lato server è 25 MB per file e 100 conversioni per visitatore al giorno, contate per giorno UTC, più un tetto di raffica di cinque richieste al minuto. I file interni escono byte per byte; ciò che non sopravvive è quello che l’archivio sapeva sui file e non dentro di essi: una password, e secondo il formato i permessi e le date originali. Il RAR è l’eccezione dichiarata: viene letto e mai scritto, ed è la licenza di UnRAR, non una lacuna.

I dati, in un posto solo

Identificativi e provenienza del formato BZ2.
Estensione.bz2
Tipo di mediaapplication/x-bzip2
Prima pubblicazione1996