Cookies voor statistiek en advertenties
We gebruiken cookies voor statistiek en voor advertenties, allebei naar Google. Weigeren verandert niets aan wat je te zien krijgt.Lees de privacypagina
BZ2
Comprimeert beter dan GZ en doet er flink langer over.
BZ2
BZ2 is een stroomformaat dat van voor naar achter wordt geschreven en gelezen. Het wordt gebruikt voor archivering.
De extensie is .bz2 en de volledige naam Bzip2 Archive. Allebei zeggen ze minder dan wat het bestand kan bevatten, en daar gaat de rest van deze pagina over.
Het gaat terug tot 1996.
Aan een formaat dat zo lang leesbaar is gebleven kun je iets toevertrouwen dat je over tien jaar terug wilt hebben.
Ze is volledig gepubliceerd, dus wie het formaat wil uitvoeren kan dat uit het document doen in plaats van door te kijken hoe anderen het doen. Daarom duikt het in zo veel programma’s op, en daarom gaan bestanden van twintig jaar geleden nog steeds open. Openbaar is niet hetzelfde als royaltyvrij: waar een formaat een codec omhult, is de octrooilicentie een aparte vraag waarop de standaard geen antwoord geeft.
Het gaat overal nog open en oudere programma’s schrijven het nog, maar er wordt niets nieuws meer omheen gebouwd. Converteer wat je wilt bewaren en kies het niet voor iets dat vandaag begint.
BZ2 bewaart zijn inhoud precies. Opnieuw opslaan verandert niets, dus je kunt het zo vaak openen, bewerken en wegschrijven als je wilt zonder dat er schade opstapelt — en dat is wat er een werkformaat van maakt in plaats van een afleverformaat.
BZ2 comprimeert één enkele stroom en kent geen bestandsnamen of mappen. Daarom zie je het zo vaak naast TAR staan, dat de ontbrekende structuur aanlevert.
Het werkt met 900 KB tegelijk: binnen dat stuk moet een herhaling vallen voordat ze weggerekend kan worden.
Dat ene getal verklaart het grootste deel van het verschil tussen het ene archiefformaat en het andere. Een groter stuk vindt meer herhaling en heeft daar meer tijd en meer geheugen voor nodig — dat is de hele ruil.
BZ2 brengt een controlegetal, zodat een beschadigd bestand opvalt in plaats van stilzwijgend verkeerd gelezen te worden mee.
Repareren doet een controlegetal niets. Het vertelt je dat het bestand stuk is — dat is het verschil tussen het nu ontdekken en het horen van degene aan wie je het gestuurd hebt.
bzip2, 7-Zip en Keka lezen het, en de meeste programma’s van dezelfde soort ook.
Als een bestand niet opengaat ligt het zelden aan het formaat — vaker is het programma ouder dan het formaat. Converteren naar iets ouders is de betrouwbare weg eromheen, en daarvoor is de rest van deze site bedoeld.
Geen enkele browser leest het.
Dat is veruit de meest voorkomende reden om het te converteren: niet dat het formaat slecht is, maar dat de plek waar je het bestand wilt tonen het niet kan lezen.
BZ2 is bedoeld om door te geven, niet om in te werken. Er een bewerken kan en is zelden prettig; de verstandige weg loopt via de bron en een nieuwe export.
De terugkerende klachten: het houdt één stroom vast en kan geen map beschrijven.
Niets daarvan is een reden om het formaat te mijden. Het zijn de dingen die je beter kent voordat een ervan je verrast, en dat is een andere en een nuttigere bewering.
Bzip2 verscheen in 1996 en comprimeerde merkbaar beter dan gzip, en zo’n tien jaar lang was `.tar.bz2` de verstandige middenkeuze voor broncode-releases en archieven. Die periode is voorbij. xz comprimeert harder, zstd is sneller bij vergelijkbare ratio, en beide pakken sneller uit dan bzip2.
Een `.bz2`-bestand dat je vandaag tegenkomt is dus vrijwel altijd oud — een gearchiveerde release, een dataset gepubliceerd jaren geleden, een back-up van een systeem waarvan de standaardinstellingen in 2008 zijn gezet. Er is geen levend argument om nieuwe te maken, en de nuttige vraag is hoe je de bestaande opent.
Elke andere compressor hier — gzip, xz, 7z, zip — zoekt terugwaarts naar herhaalde reeksen. Bzip2 doet iets anders: de Burrows-Wheeler-transformatie herschikt een blok data zodat vergelijkbare tekens naast elkaar komen te staan, waarna een eenvoudige encoder de reeksen benut die dat oplevert.
De transformatie is omkeerbaar, wat het verrassende deel is — de herschikking kan exact ongedaan worden gemaakt. Het is een elegante aanpak en verklaart de eigenschappen van het formaat: goede ratio’s op tekst, trage decompressie omdat de transformatie moet worden teruggedraaid, en een geheugenkosten evenredig met de blokgrootte in plaats van met het bestand.
Bzip2 werkt op onafhankelijke blokken, standaard 900 KB elk. Elk blok comprimeert en decomprimeert op zichzelf, zonder naar buren te verwijzen.
Dat geeft het een eigenschap die niets anders hier heeft: raakt een deel van een archief beschadigd, dan blijven de onbeschadigde blokken leesbaar, en een herstelgereedschap kan ze eruit halen. Bij gzip of xz kost schade vroeg in de stroom meestal alles erna. Voor een oud archief op falende media is dat een echt voordeel en soms een doorslaggevend.
Omdat blokken onafhankelijk zijn, kunnen ze tegelijk op verschillende processorkernen worden gecomprimeerd en gedecomprimeerd. Tools als pbzip2 en lbzip2 benutten dit en produceren bestanden die gewone bzip2 nog steeds leest.
Op een machine met acht kernen verandert dat bzip2’s slechtste eigenschap in iets draaglijks. Het is de hoofdreden dat het formaat zo lang standhield in wetenschappelijke rekenpraktijk en datapijplijnen, waar bestanden groot zijn en kernen ruim voorhanden.
Bzip2 comprimeert precies één stroom. Het heeft geen map, geen bestandsnamen, geen begrip van meerdere bestanden — dezelfde vorm als gzip en xz. Daarom is `.tar.bz2` de normale vorm: tar bundelt de boom tot één stroom en bzip2 comprimeert die.
Een kale `.bz2` uitpakken geeft precies één bestand terug. Verwachtte je een map, dan is het archief dat je wilde de `.tar` erbinnen, en de meeste tools presenteren de twee stappen als één.
Op gewone tekst en broncode landt bzip2 ongeveer een kwart kleiner dan gzip — 25 en 27 procent op twee brontekstcorpora gemeten voor deze pagina — en binnen een paar procent van xz op dat soort invoer. Compressie is meerdere keren trager dan gzip; decompressie is nog trager, wat het kenmerk is dat het formaat de das omdeed.
Dat laatste maakt het formaat onaantrekkelijk in plaats van slechts achterhaald. Een bestand wordt eenmalig gecomprimeerd en vaak gedecomprimeerd, dus een formaat dat traag is om te lezen betaalt zijn kosten telkens opnieuw. xz is traag om te schrijven en snel om te lezen, wat de juiste kant op is.
Het oorspronkelijke bzip2 kende jaren zonder release, en in 2019 werd een schrijffout buiten grenzen gevonden in de decompressor die al lang aanwezig was. Onderhoud is sindsdien opgepakt en het probleem is overal opgelost in de actuele versie.
De moeite waard om te weten als context, niet als waarschuwing over je bestanden: een `.bz2` is data, geen code, en eentje openen met actuele software is niets bijzonders. De episode is deel van waarom distributies verder trokken, naast de snelheid.
Oudere Linux-broncodereleases en gearchiveerde distributiepakketten. Wetenschappelijke en genomische datasets, waar de blokparallelle tools het praktisch maakten en waar gepubliceerde archieven niet opnieuw gecodeerd worden. Back-upsystemen ingesteld tien jaar geleden. Wikipedia’s databasedumps, historisch en lange tijd.
Het patroon is publicatie in plaats van uitwisseling: bestanden eenmalig geschreven, door velen gedownload, en nooit herzien. Niemand stuurt een collega vandaag een `.bz2`.
Elk Linux- en macOS-systeem verwerkt bzip2 vanaf de commandoregel, en 7-Zip leest het zonder problemen op Windows. Een `.tar.bz2` decomprimeren is twee stappen die de meeste tools als één presenteren.
Gaat de inhoud verder naar een persoon, verpak dan opnieuw als ZIP — dat is wat hun computer opent zonder hulp. Gaat het terug naar een Unix-systeem, verpak dan opnieuw als `.tar.gz` of `.tar.xz`, die de rechten en symbolische koppelingen bewaren die tar droeg en die ZIP weggooit. Een `.bz2` opnieuw maken is de enige optie met niets om voor te pleiten.
| Extensie | .bz2 |
|---|---|
| Mediatype | application/x-bzip2 |
| Voor het eerst gepubliceerd | 1996 |