Laatst bijgewerkt: 20 aug. 2026

GZIP vs BZIP2 vs XZ: Welk Linux-compressieformaat is het beste?
Of je nu dagelijkse database-dumps verpakt, multi-gigabyte webserverlogboeken roteert, of gecompileerde binaries naar duizenden knooppunten distribueert, compressie is een alledaagse realiteit in Linux-beheer.
Bij het aanroepen van tar of het verwerken van streamingdata via standaardinvoer, kom je doorgaans drie standaardhulpmiddelen tegen: GZIP (.gz), BZIP2 (.bz2), en XZ (.xz).
Hoewel alle drie de tools ernaar streven ruwe bytes in compacte archieven te persen, maken ze fundamenteel verschillende technische afwegingen tussen compressieverhouding, CPU-runtime en geheugenoverhead. Het kiezen van het verkeerde formaat kan stilletjes een knelpunt vormen voor je geautomatiseerde implementaties, geplande back-upvensters vertragen, of na verloop van tijd kostbare opslag verspillen.
Deze gids legt uit hoe elk formaat onder de motorkap werkt, hoe ze presteren onder realistische workloads, en hoe je de juiste kiest voor je infrastructuur.
1. Snelle technische profielen: De drie concurrenten
GZIP (GNU Zip)
- Onderliggend Algoritme: DEFLATE (combinatie van LZ77 en Huffman-codering)
- Standaardextensie:
.tar.gz,.tgz,.gz - Release-periode: 1992 (gemaakt door Jean-loup Gailly en Mark Adler als een patentrechtvrij alternatief voor
compress) - Kernvoordeel: Onovertroffen uitvoeringssnelheid en bijna universele ecosysteemondersteuning.
- Kernnadeel: Lagere compressieverhouding vergeleken met moderne statistische en woordenboekgebaseerde encoders.
GZIP heeft meer dan drie decennia lang gediend als de standaard werkpaard van Unix-omgevingen. Omdat het DEFLATE-algoritme werkt met kleine schuifvensters (32 KB), vereist GZIP een verwaarloosbare geheugenoverhead tijdens zowel compressie als decompressie.
BZIP2
- Onderliggend Algoritme: Burrows-Wheeler Transform (BWT) gecombineerd met Move-to-Front (MTF) transformatie en Huffman-codering
- Standaard Extensie:
.tar.bz2,.tbz2,.bz2 - Release Tijdperk: 1996 (gemaakt door Julian Seward)
- Kernvoordeel: Betere compressieverhoudingen bij repetitieve ASCII- en gestructureerde logbestanden dan GZIP.
- Kernnadeel: Langzamer overal, vooral tijdens decompressie, en grotendeels verouderd door nieuwere algoritmen.
BZIP2 verwerkt gegevens in discrete blokken (meestal 900 KB) met behulp van omkeerbare permutaties die soortgelijke tekens groeperen vóór codering. Hoewel het eind jaren 90 en in de jaren 2000 breed werd geprezen omdat het de bestandsgroottes van GZIP overtrof, is de rekencost relatief hoog.
XZ (LZMA2)
- Onderliggend Algoritme: LZMA2 (Lempel-Ziv-Markov keten Algoritme, verbeterd)
- Standaard Extensie:
.tar.xz,.txz,.xz - Release-periode: 2009 (geïntroduceerd om het oudere
lzma-formaat te vervangen) - Kernvoordeel: Uitzonderlijk hoge compressieverhoudingen en snelle, lichtgewicht decompressie.
- Kernnadeel: Zwaar RAM-gebruik en langdurige CPU-runtime tijdens de eerste compressie.
XZ maakt gebruik van variabele woordenboekgroottes (vaak tot 32 MB of 64 MB standaard) om dubbele bytepatronen te vinden over veel bredere datavensters dan GZIP. Dit maakt het buitengewoon effectief bij het verkleinen van grote, redundante bestanden zoals OS‑installatiemedia, kernel‑bronbomen en firmware‑images.
2. Prestatievergelijkingsmatrix
De onderstaande tabel vat de praktische prestatie‑dynamiek van elk hulpprogramma samen wanneer deze met standaardconfiguraties op reguliere serverhardware wordt uitgevoerd:
| Metriek / Dimensie | GZIP (-6) | BZIP2 (-9) | XZ (-6) |
|---|---|---|---|
| Compressieverhouding | Gemiddeld (~65-75% reductie) | Goed (~75-80% reductie) | Superieur (~80-88% reductie) |
| Compressiesnelheid | Zeer snel | Langzaam | Zeer langzaam |
| Decompressiesnelheid | Extreem snel | Langzaam tot gemiddeld | Snel |
| Compressie RAM-gebruik | Verwaarloosbaar (~1–2 MB) | Laag (~8–10 MB) | Hoog (~100–700 MB+) |
| Decompressie RAM-gebruik | Verwaarloosbaar (< 1 MB) | Laag (~4 MB) | Gemiddeld (~10–65 MB) |
| Primaire Sweet Spot | Logbestanden, CI/CD-pijplijnen, realtime streams | Compatibiliteit met legacy-archieven | Pakket‑repositories, OS‑ISO’s, koude opslag |
3. Inzichten uit benchmarks uit de praktijk
Om te begrijpen hoe deze tools zich gedragen onder realistische belasting, overweeg een representatieve 1 GB ruwe servertoegangslog en een ongecomprimeerde 500 MB softwarebroncode‑map.
Scenario A: Het comprimeren van grote logbestanden (1 GB tekst)
- GZIP: Voltooit in minder dan 12 seconden, en levert een archief van ongeveer 180 MB.
- BZIP2: Voltooit in ongeveer 45–50 seconden, en verkleint het bestand tot ongeveer 130 MB.
- XZ: Duurt 80–90 seconden bij standaardinstellingen, waardoor een archief van ongeveer 95 MB ontstaat.
Scenario B: Decompressiewerkbelastingen
Een kritieke metriek die vaak over het hoofd wordt gezien is asymmetrie.
- GZIP decompresseert in 2–3 seconden met microscopisch geheugenverbruik.
- XZ decompresseert in 4–6 seconden. Hoewel de initiële compressie traag was, is het uitpakken van
.xzbijna net zo snel als het uitpakken van.gz. - BZIP2 heeft ongeveer 25–30 seconden nodig alleen om uit te pakken, omdat het omkeren van de Burrows-Wheeler-transformatie computationeel symmetrisch is aan het coderen ervan.
4. Waarom BZIP2 uit de gratie raakt
In moderne infrastructuur bevindt BZIP2 zich in een ongemakkelijke middenpositie:
- Verslagen in snelheid door GZIP: Als verwerkingslatentie of laag CPU-gebruik belangrijk is, is GZIP aanzienlijk sneller.
- Verslagen in dichtheid door XZ: Als bandbreedtebesparing en opslag efficiëntie belangrijk zijn, genereert XZ aanzienlijk kleinere archieven.
- Langzamer in decompressiesnelheid dan beide: In softwareleveringsystemen betalen cliënten een meetbare CPU-penalty bij het uitpakken van
.tar.bz2-bestanden vergeleken met.tar.gzof.tar.xz.
Daarom hebben de belangrijkste Linux-distributies (inclusief Debian, Arch en Fedora) hun officiële pakketdistributie en kernel-tarballs verplaatst van BZIP2 naar XZ (en meer recentelijk naar Zstandard voor runtime‑operaties).
5. Praktisch gebruik van de opdrachtregel
Tar-integratie (de meest voorkomende workflow)
Moderne implementaties van GNU tar herkennen automatisch het compressieformaat op basis van de bestandsextensie, maar het gebruik van expliciete vlaggen blijft standaardpraktijk:
# GZIP: Fast archive creation
tar -czvf project-backup.tar.gz /var/www/project/
# BZIP2: Legacy high-ratio archive
tar -cjvf project-backup.tar.bz2 /var/www/project/
# XZ: Maximum space savings
tar -cJvf project-backup.tar.xz /var/www/project/
# Generic extraction (tar auto-detects the format)
tar -xvf archive-name.tar.*
Losstaande bestandscompressie
Om individuele bestanden te comprimeren zonder ze te bundelen:
# Compress keeping the original file intact (-k)
gzip -k access.log # Output: access.log.gz
bzip2 -k access.log # Output: access.log.bz2
xz -k access.log # Output: access.log.xz
# Decompress individual files
gzip -d access.log.gz
bzip2 -d access.log.bz2
xz -d access.log.xz
Gebruik van multi-core systemen
Standaard gebruiken eentalige implementaties van deze tools slechts één CPU-kern. Als je multi‑gigabyte archieven comprimeert op moderne multi‑core servers, kan eentalige verwerking uren duren.
- XZ Multi-threading: Native ondersteuning via
-Tof--threads:xz -T0 -k database_dump.sql # Uses all available CPU cores - Parallel GZIP (
pigz): Een drop‑in vervanging die alle CPU-kernen gebruikt voor GZIP‑bewerkingen:pigz -k database_dump.sql - Parallel BZIP2 (
pbzip2): Multi‑threaded implementatie voor BZIP2:pbzip2 -k database_dump.sql
6. Hoe te kiezen: Praktisch beslissingskader
Kies uw tool op basis van de primaire beperking van uw workflow:
Gebruik GZIP als:
- U stelt realtime streamcompressie of netwerktransmissie in waarbij doorvoersnelheid de beperkende factor is.
- U beheert geautomatiseerde logrotatie (
logrotate) op productieservers waarbij CPU-resources gereserveerd moeten worden voor toepassingsbelastingen. - Maximale draagbaarheid over legacy embedded systemen en standaard basis‑images is vereist.
Gebruik XZ als:
- U publiceert release‑artefacten, kernel‑builds, container‑basis‑images of statische pakket‑repositories die vaak door derden worden gedownload.
- U bereidt langdurige koude archieven (off‑site wekelijkse/maandelijkse back-ups) voor waarbij opslagkosten zwaarder wegen dan de eenmalige compressietijd.
- U heeft kleine bestandsgroottes nodig, maar uw gebruikers eisen nog steeds snelle downloads en snelle extractietijden.
Behoud BZIP2 alleen als:
- U behoudt achterwaartse compatibiliteit met legacy‑scripts, bestaande backup‑herstelroutines of software‑apparaten die geen
XZdecompressor leveren.
7. Veelgestelde vragen (FAQ)
Q1. Welk formaat levert de kleinste archiefgrootte op? XZ levert consequent de kleinste archiefgrootte van de drie, dankzij zijn grotere LZMA2-woordenboekvensters.
Q2. Is XZ langzamer dan GZIP bij het decomprimeren van bestanden? XZ is slechts iets langzamer dan GZIP bij het decomprimeren, maar het is aanzienlijk sneller dan BZIP2.
Q3. Kunnen GZIP en XZ profiteren van meerdere CPU-kernen? XZ ondersteunt native multithreading met de -T0-vlag, terwijl GZIP geparalleliseerd kan worden over kernen met behulp van de pigz drop-in hulpprogramma.
Q4. Waarom laten Linux-distributies BZIP2 achterwege? Distributies hebben BZIP2 grotendeels uitgefaseerd omdat XZ kleiner comprimeert en sneller decompresseert, terwijl GZIP sneller blijft voor snelle bewerkingen.
Q5. Maakt een hoger compressieniveau zoals -9 een merkbaar verschil? Het instellen van niveau -9 levert gemiddeld slechts een marginale verkleining van 1% tot 3% op, terwijl het het CPU-cyclusverbruik en het geheugenoverhead aanzienlijk verhoogt.