Sidst opdateret: 20 Aug, 2026

GZIP vs BZIP2 vs XZ: Hvilket Linux-komprimeringsformat er bedst?
Uanset om du pakker daglige database-dumps, roterer multi-gigabyte webserverlogfiler eller distribuerer kompilerede binære filer til tusindvis af noder, er komprimering en daglig realitet i Linux-administration.
Når du kalder tar eller behandler streamende data via standard input, støder du typisk på tre standardværktøjer: GZIP (.gz), BZIP2 (.bz2), og XZ (.xz).
Mens alle tre værktøjer har til formål at presse rå bytes ind i kompakte arkiver, foretager de grundlæggende forskellige ingeniørmæssige afvejninger mellem komprimeringsgrad, CPU‑kørselstid og hukommelsesforbrug. At vælge det forkerte format kan stille din automatiserede implementering i en stille flaskehals, forsinke planlagte backup‑vinduer eller spilde værdifuld lagerplads over tid.
Denne vejledning gennemgår, hvordan hvert format fungerer under motorhjelmen, hvordan de præsterer under realistiske arbejdsbelastninger, og hvordan du vælger det rette for din infrastruktur.
1. Hurtige tekniske profiler: De tre konkurrenter
GZIP (GNU Zip)
- Underliggende algoritme: DEFLATE (kombination af LZ77 og Huffman‑kodning)
- Standardudvidelse:
.tar.gz,.tgz,.gz - Udgivelsesperiode: 1992 (oprettet af Jean-loup Gailly og Mark Adler som et patentfrit alternativ til
compress) - Kernefordel: Uovertruffen udførelseshastighed og næsten universel økosystemunderstøttelse.
- Kerneulempe: Lavere komprimeringsgrad sammenlignet med moderne statistiske og ordbogsbaserede kodere.
GZIP har tjent som standardarbejdsdyr i Unix‑miljøer i over tre årtier. Da dets DEFLATE‑algoritme opererer med små glidende vinduer (32 KB), kræver GZIP kun en ubetydelig hukommelsesforbrug både under komprimering og dekomprimering.
BZIP2
- Underliggende algoritme: Burrows-Wheeler Transform (BWT) kombineret med Move-to-Front (MTF) transformation og Huffman‑kodning
- Standardudvidelse:
.tar.bz2,.tbz2,.bz2 - Udgivelsesår: 1996 (oprettet af Julian Seward)
- Kernefordel: Bedre komprimeringsforhold på gentagne ASCII‑ og strukturerede logfiler end GZIP.
- Kerneulempe: Langsommere generelt, især under dekomprimering, og stort set gjort forældet af nyere algoritmer.
BZIP2 behandler data i separate blokke (typisk 900 KB) ved hjælp af reversible permutationer, der grupperer lignende tegn sammen før kodning. Selvom den i slutningen af 1990’erne og 2000’erne blev bredt fejret for at overgå GZIPs filstørrelser, er dens beregningsomkostning relativt høj.
XZ (LZMA2)
- Underliggende algoritme: LZMA2 (Lempel-Ziv-Markov kæde‑algoritme, forbedret)
- Standardudvidelse:
.tar.xz,.txz,.xz - Udgivelsesperiode: 2009 (introduceret for at erstatte det ældre
lzmaformat) - Kernefordel: Ekstremt høje komprimeringsforhold og hurtig, letvægtsdekomprimering.
- Kerneulempe: Stor RAM-brug og forlænget CPU-kørselstid under den første komprimering.
XZ udnytter variable ordbogs‑størrelser (ofte op til 32 MB eller 64 MB som standard) for at finde duplikerede byte‑mønstre på meget bredere datavinduer end GZIP. Dette gør den yderst effektiv til at formindske store, redundante filer som OS‑installationsmedier, kernelkilde‑træer og firmware‑billeder.
2. Ydeevne-sammenligningsmatrix
Tabellen nedenfor opsummerer de praktiske præstationsdynamikker for hvert værktøj, når de kører med standardkonfigurationer på almindelig serverhardware:
| Metrik / Dimension | GZIP (-6) | BZIP2 (-9) | XZ (-6) |
|---|---|---|---|
| Komprimeringsforhold | Moderat (~65-75% reduction) | God (~75-80% reduction) | Overlegen (~80-88% reduction) |
| Komprimeringshastighed | Meget hurtig | Langsom | Meget langsom |
| Dekomprimeringshastighed | Ekstremt hurtig | Langsom til moderat | Hurtig |
| Komprimerings RAM-forbrug | Ubetydelig (~1–2 MB) | Lav (~8–10 MB) | Høj (~100–700 MB+) |
| Dekomprimerings RAM-forbrug | Ubetydelig (< 1 MB) | Lav (~4 MB) | Moderat (~10–65 MB) |
| Primære Sweet Spot | Logfiler, CI/CD-pipelines, realtidsstrømme | Kompatibilitet med ældre arkiver | Pakke-repositorier, OS-ISO’er, kold lagring |
3. Indsigter fra virkelige benchmarks
For at forstå, hvordan disse værktøjer opfører sig under realistisk belastning, skal du overveje en repræsentativ 1 GB rå serveradgangslog og en ukomprimeret 500 MB softwarekildekode-mappe.
Scenario A: Komprimering af store logfiler (1 GB tekst)
- GZIP: Færdiggøres på under 12 sekunder og leverer et arkiv på omkring 180 MB.
- BZIP2: Færdiggøres på cirka 45–50 sekunder og reducerer filen til omkring 130 MB.
- XZ: Tager 80–90 sekunder ved standardindstillinger, hvilket giver et arkiv på omkring 95 MB.
Scenario B: Dekomprimeringsarbejdsbelastninger
Et kritisk mål, der ofte overses, er asymmetri.
- GZIP dekomprimeres på 2–3 sekunder med mikroskopisk hukommelsesforbrug.
- XZ dekomprimeres på 4–6 sekunder. Selvom den indledende komprimering var langsom, er udpakning af
.xznæsten lige så hurtig som udpakning af.gz. - BZIP2 kræver cirka 25–30 sekunder blot for at pakke ud, fordi omvendelse af Burrows-Wheeler Transform er beregningsmæssigt symmetrisk med at kode den.
4. Hvorfor BZIP2 mister popularitet
I moderne infrastruktur befinder BZIP2 sig i en akavet mellemposition:
- Overhalet i hastighed af GZIP: Hvis behandlingslatens eller lav CPU-brug er vigtigt, er GZIP betydeligt hurtigere.
- Overhalet i tæthed af XZ: Hvis båndbreddebesparelse og lager‑effektivitet er vigtige, genererer XZ betydeligt mindre arkiver.
- Overhalet i dekomprimeringshastighed af begge: I softwareleveringssystemer betaler klienter en målbar CPU-penalty, når de udtrækker
.tar.bz2-filer sammenlignet med.tar.gzeller.tar.xz.
Som følge heraf har de store Linux-distributioner (inklusive Debian, Arch og Fedora) flyttet deres officielle pakkeuddeling og kernel-tarballs væk fra BZIP2 mod XZ (og for nylig, Zstandard til runtime‑operationer).
5. Praktisk brug af kommandolinjen
Tar-integration (Den mest almindelige arbejdsgang)
Moderne implementeringer af GNU tar genkender automatisk komprimeringsformatet baseret på filendelsen, men brug af eksplicitte flag er stadig standardpraksis:
# 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.*
Selvstændig filkomprimering
For at komprimere individuelle filer uden at samle dem:
# 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
Udnyttelse af multi-core systemer
Som standard bruger enkelttrådede implementeringer af disse værktøjer kun én CPU-kerne. Hvis du komprimerer multi‑gigabyte‑arkiver på moderne multi‑core‑servere, kan enkelttrådet behandling tage timer.
- XZ Multi-trådning: Indbygget support via
-Teller--threads:xz -T0 -k database_dump.sql # Uses all available CPU cores - Parallel GZIP (
pigz): En erstatning, der kan indsættes direkte og bruger alle CPU-kerner til GZIP‑operationer:pigz -k database_dump.sql - Parallel BZIP2 (
pbzip2): Multi-trådet implementering for BZIP2:pbzip2 -k database_dump.sql
6. Sådan vælger du: Praktisk beslutningsramme
Vælg dit værktøj baseret på den primære begrænsning i din arbejdsproces:
Brug GZIP hvis:
- Du opsætter realtidsstrømkryptering eller netværksoverførsel, hvor gennemløbet er den begrænsende faktor.
- Du administrerer automatiseret logrotation (
logrotate) på produktionsservere, hvor CPU-ressourcer skal reserveres til applikationsarbejdsbelastninger. - Maksimal portabilitet på tværs af ældre indlejrede systemer og standard basis‑images er påkrævet.
Brug XZ hvis:
- Du udgiver udgivelsesartefakter, kernel‑bygninger, container‑basis‑images eller statiske pakke‑repositories, som hyppigt downloades af tredjeparter.
- Du forbereder langsigtede kolde arkiver (off-site ugentlige/månedlige sikkerhedskopier), hvor lageromkostningerne opvejer den engangs komprimeringstid.
- Du har brug for små filstørrelser, men dine brugere kræver stadig hurtig download og hurtig udpakning.
Behold BZIP2 kun hvis:
- Du opretholder bagudkompatibilitet med ældre scripts, eksisterende gendannelsesrutiner for sikkerhedskopier eller software‑apparater, der ikke leverer en XZ-dekompressor.
7. Ofte stillede spørgsmål (FAQ)
Q1. Hvilket format giver den mindste arkivstørrelse? XZ producerer konsekvent den mindste arkivstørrelse blandt de tre på grund af sine større LZMA2-ordbogsvinduer.
Q2. Er XZ langsommere end GZIP ved dekomprimering af filer? XZ er kun lidt langsommere end GZIP ved dekomprimering, men det er væsentligt hurtigere end BZIP2.
Q3. Kan GZIP og XZ udnytte flere CPU-kerner? XZ understøtter indbygget multitrådning ved brug af flaget -T0, mens GZIP kan paralleliseres på tværs af kerner ved hjælp af pigz-værktøjet.
Q4. Hvorfor dropper Linux-distributioner BZIP2? Distributionerne har i vid udstrækning udfaset BZIP2, fordi XZ komprimerer mindre og dekomprimerer hurtigere, mens GZIP forbliver hurtigere for hurtige operationer.
Q5. Giver et højere komprimeringsniveau som -9 en mærkbar forskel? Indstilling af niveauet -9 giver kun en marginal størrelse-reduktion på 1 % til 3 % i gennemsnit, mens det dramatisk øger CPU-cyklusforbruget og hukommelsesbelastningen.