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
Hier zet je XZ naar BZ2 om, gratis en zonder account: sleep het bestand hierboven erin en binnen een paar seconden staat het resultaat klaar om te downloaden. Het bestand reist versleuteld naar onze server, wordt daar omgezet en wordt gewist zodra het werk klaar is.
Tot 100 bestanden tegelijk. Verschillende formaten door elkaar is prima.
Ze worden een voor een omgezet en samen in één ZIP gedownload.
XZ naar BZ2
Deze omzetting heeft precies één eerlijke reden, en die zet ik voorop, want elke algemene vergelijking van de twee formaten adviseert het tegenovergestelde. Het uitpakken van een XZ reserveert een buffer ter grootte van het woordenboek waarmee hij is geschreven, en het register noemt tot 64 MB voor dit formaat. Op een laptop merk je daar niets van. Op een consumentenrouter die een firmwarebundel flasht, in een container met een limiet van 32 MB, in een initramfs of een reddingsschil, of op een oude commerciële Unix-machine met een behoudende limiet per proces, is het het verschil tussen een archief dat opent en een uitpakker die wordt afgeschoten.
De tweede versie van hetzelfde probleem is dat xz simpelweg niet geïnstalleerd is. Het dateert van 2009, recent genoeg dat menig langlevend systeem — apparatuur, meetinstrumenten, industriële regelaars, een buildimage die iemand ooit bevroor — alleen bzip2 en gzip heeft en niets nieuwers. Op zo’n machine een binary toevoegen is vaak onmogelijk om redenen die niets met techniek te maken hebben. Het archief omzetten is de wijziging die je wél mag doorvoeren.
XZ, uit 2009, is LZMA2: een compressor met een glijdend venster en een woordenboek dat het register tot 64 MB noteert. Bij het comprimeren van byte honderd miljoen ziet hij nog steeds byte zesendertig miljoen, wat verklaart waarom hij merkt dat een bestand aan het eind van een archief lijkt op een bestand aan het begin. Om uit te pakken moet de lezer datzelfde venster beschikbaar houden, want een terugverwijzing kan overal binnen dat venster wijzen.
BZ2, uit 1996, schuift helemaal niet. Het knipt de invoer in blokken van ten hoogste 900 KB, sorteert elk blok met een Burrows-Wheeler-transformatie en comprimeert het resultaat. Een blok staat op zichzelf, dus houdt de uitpakker precies één blok vast en niets anders. Dat ontwerp is waarom bzip2 verliest op ratio — het kijkt nooit verder dan 900 KB — en het is precies hetzelfde ontwerp dat het goedkoop maakt om uit te pakken. De twee eigenschappen zijn hetzelfde feit, bekeken vanaf de andere kant.
De groottestraf is echt en de omvang hangt volledig af van de inhoud. Bij een broncodeboom, een verzameling documenten, logbestanden of iets anders met structuur die over veel leden terugkeert, heeft XZ veel gevonden dat bzip2 niet kan zien, en de BZ2 zal merkbaar groter zijn. Dat is de prijs van de geheugenbesparing en er is geen manier om daaromheen te komen.
Bij andere archieven valt de straf weg tot bijna niets. Bevat de XZ foto’s, video, audio of een al gecomprimeerde databasedump, dan had de sterke compressor nooit iets om mee te werken; beide formaten wikkelen de data dan in feite alleen in, en de twee bestanden komen binnen een paar procent van elkaar uit. Bekijk de twee getallen voordat je iets verderop in de keten vastlegt — dit is een van de weinige omzettingen waarbij het antwoord een factor tien kan verschillen tussen het ene archief en het volgende.
Het is verleidelijk te denken dat het zwakkere formaat overal sneller in is, en dat klopt niet. XZ is traag met comprimeren, omdat een venster van 64 MB doorzoeken duur is, en relatief snel met uitpakken, omdat een terugverwijzing volgen dicht bij een geheugenkopie ligt. Bzip2 is op een manier die ertoe doet net andersom: een Burrows-Wheeler-transformatie ongedaan maken is echt rekenwerk, dus pakt bzip2 traag uit.
Dat is de moeite waard om mee te rekenen, want het ondermijnt deels de reden voor de omzetting. Een beperkt apparaat heeft nu minder geheugen nodig en meer tijd, en is het ook nog een trage processor — wat bij kleine apparaten meestal zo is — dan kan het uitpakken aanmerkelijk langer duren dan de XZ zou hebben gekost. Geheugen is de beperking die een taak onmogelijk maakt; tijd is de beperking die hem vervelend maakt. Zet om wanneer het eerste geldt, en meet het tweede voordat je iemand een getal belooft.
Beide zijn compressors voor precies één stroom en geen van beide weet wat een bestand is. Het register noemt het ontbreken van een mapstructuur als bekend probleem bij allebei, wat verklaart waarom je ze bijna altijd samen met een TAR erin aantreft. Deze omzetting pakt de tarball uit de XZ, en schrijft daarna een nieuwe voordat hij met bzip2 comprimeert.
Geen van beide formaten bewaart een oorspronkelijke bestandsnaam — gzip doet dat wel, deze twee niet — dus de extensie die je op de download zet is het enige label dat het bestand ooit zal dragen. Noem het `.tar.bz2`. Dezelfde naamloze eigenschap veroorzaakte hier ooit een echt defect, want de binnenste tarball kwam uit een XZ-uitpakker binnen onder welke naam die uitpakker toevallig koos in plaats van iets herkenbaars; de code dwingt nu het tar-type af in plaats van op de naam te gokken, wat waarom een xz-bron vandaag correct wordt uitgepakt.
Beperkt geheugen is de hoofdreden, en er is een tweede gevolg dat bij dezelfde lezer past. Omdat bzip2’s blokken onafhankelijk van elkaar gecomprimeerd worden, hoeft een beschadigd bestand niet alles na de schade te verliezen — herstelgereedschap kan de intacte blokgrenzen vinden en redden wat er is. Een afgebroken of beschadigde xz-stroom eindigt daar doorgaans gewoon.
Dat past bij de omgevingen waarvoor deze pagina is geschreven, die ook de omgevingen zijn waar opslag goedkope flash van onzekere kwaliteit is, stroom zonder waarschuwing wegvalt, en er zelden een tweede kopie in de buurt is. Het is geen back-upstrategie en moet niet als zodanig verkocht worden: de TAR erin is een aaneengesloten stroom, dus het redden van sommige blokken levert een tarball met gaten op, en wat je precies terugkrijgt hangt af van waar de schade viel. Het is simpelweg een beter faalgedrag dan het alternatief.
Is de reden om XZ te verlaten geheugen of een ontbrekende binary, dan lost gzip beide minstens even goed op en kost het minder tijd. Het heeft een venster van 32 KB nodig — vrijwel niets — het staat op praktisch elk systeem met welke compressor dan ook, en het pakt veel sneller uit dan bzip2 op de trage processors die dit soort apparaten meestal hebben. Het enige wat het inlevert is ratio, en het levert daarvan meer in dan bzip2 doet.
De reden om specifiek voor bzip2 te kiezen is dus smal: het groottevoordeel tussen gzip en bzip2 doet er echt toe voor je transfer of je flashbudget, en de extra uitpaktijd is te dragen. Maakt dat niet uit, dan is gzip het betere doel, en die omzetting bestaat op deze site net zo goed. Verteld worden welke van twee pagina’s je moet gebruiken is nuttiger dan verkocht worden aan de pagina waar je toevallig op landde.
Op onze server, niet in je browser. De meeste hulpmiddelen hier draaien op je eigen apparaat en zeggen dat ook duidelijk; archieven herverpakken is een van de uitzonderingen, want het heeft 7-Zip en bzip2 nodig als echte programma’s. Het bestand gaat over een versleutelde verbinding naar een container die ze draait, en die container heeft zelf geen uitgaande internettoegang.
Elke taak krijgt een werkmap op een in-memory bestandssysteem, die verwijderd wordt zodra de taak eindigt, ongeacht de uitkomst, en een taak die na zestig seconden nog loopt wordt beëindigd. Beide helften van dit paar zijn traag — xz om een groot woordenboek uit te pakken en bzip2 om te comprimeren — dus ligt de tijdslimiet dichterbij dan bij de meeste paren. De gratis laag accepteert 25 MB per geüpload bestand, en het archief wordt al vóór het uitpakken geweigerd als het aangeeft groter dan 2 GB uit te pakken.
De enige verificatie die hier iets betekent gebeurt op de bestemming zelf. Kopieer de BZ2 naar het apparaat, de appliance of de container die faalde op het xz-bestand en pak hem daar uit — niet op je werkstation, waar beide formaten toch al zouden werken en je niets zou leren. Ontbreekt bzip2 daar ook, dan heb je dat ontdekt voor de prijs van een bestandsoverdracht in plaats van midden in een implementatie.
Vergelijk daarna de inhoudsopgave: `tar tJf` op de XZ en `tar tjf` op de BZ2 moeten hetzelfde aantal en dezelfde paden tonen. Dit is een verliesvrije herverpakking, dus een verschil is nooit een beschadigd bestand — het is structureel, meestal een hoofdmap die in het ene wel en het andere niet aanwezig is. Komen de lijsten overeen en heeft de doelmachine het resultaat uitgepakt, dan kan de XZ weg.
| XZ | BZ2 | |
|---|---|---|
| Volledige naam | XZ-archief | Bzip2-archief |
| Bestandsextensie | .xz | .bz2 |
| Mediatype | application/x-xz | application/x-bzip2 |
| Compressie | Zonder verlies — er gaat niets weg | Zonder verlies — er gaat niets weg |
| Voor het eerst gepubliceerd | 2009 | 1996 |
| Licentie | Open standaard | Open standaard |
| Stand van zaken | Actueel | Oud, wordt overal nog gelezen |
| Opent in een browser | Geen browser | Geen browser |
| In plaats daarvan overwogen | GZ, 7Z | GZ |
Er gaat niets verloren. XZ en BZ2 bewaren hun inhoud verliesvrij: de omzetting wisselt de verpakking, niet de kwaliteit, en je kunt haar herhalen zonder dat schade zich opstapelt.
7-Zip en Keka lezen zowel XZ als BZ2, dus je kunt het resultaat naast het origineel leggen zonder een tweede programma.
BZ2 werkt met 900 KB tegelijk, XZ met 8 MB: binnen dat stuk moet een herhaling vallen voordat ze weggerekend kan worden. Daar komt het verschil in compressie vandaan, en daarom is het de snelste van de twee.
BZ2 stamt uit 1996. bzip2, 7-Zip en Keka lezen het formaat.
Ja: deze omzetting heeft software nodig die niet in een browser draait. Het bestand reist versleuteld naar onze server, wordt gewist zodra het werk klaar is en het resultaat na 60 minuten. Het werk wordt gedaan door 7-Zip, de archiveerder, in zijn opdrachtregelvorm.
Ja, tot 100 omzettingen per dag voor bestanden tot 25 MB. Die ene grens bestaat omdat deze omzetting op een server draait die wij betalen. Verder is er hier niets begrensd, en een watermerk komt er in geen geval op. De limiet bestaat omdat 7-Zip een machine van ons nodig heeft om te draaien.
Nee. BZ2 bewaart dezelfde inhoud zonder iets weg te gooien: het resultaat is in kwaliteit identiek aan het origineel. De bestanden komen er byte voor byte hetzelfde uit. Wat het niet overleeft is wat de houder *over* ze wist en niet wat hij *in* zich had: een wachtwoord, en bij sommige formaten de oorspronkelijke rechten en datums.
Er gaat niets verloren. XZ en BZ2 bewaren hun inhoud verliesvrij: de omzetting wisselt de verpakking, niet de kwaliteit, en je kunt haar herhalen zonder dat schade zich opstapelt.