Senast uppdaterad: 20 Aug, 2026

GZIP vs BZIP2 vs XZ: Which Linux Compression Format Is Best?

GZIP vs BZIP2 vs XZ: Vilket Linux-komprimeringsformat är bäst?

Oavsett om du packar dagliga databassdumpningar, roterar flera gigabyte stora webbserverloggar eller distribuerar kompilerade binärer till tusentals noder, är komprimering en vardaglig realitet i Linux-administration.

När du anropar tar eller bearbetar strömmande data via standardinmatning stöter du vanligtvis på tre standardverktyg: GZIP (.gz), BZIP2 (.bz2), och XZ (.xz).

Även om alla tre verktygen syftar till att pressa råa byte till kompakta arkiv, gör de fundamentalt olika ingenjörsmässiga avvägningar mellan komprimeringsgrad, CPU-körtid och minnesanvändning. Att välja fel format kan tyst skapa flaskhalsar i dina automatiserade distributioner, fördröja schemalagda backup-fönster eller slösa värdefull lagring över tid.

Denna guide går igenom hur varje format fungerar under huven, hur de presterar under realistiska arbetsbelastningar och hur du väljer rätt för din infrastruktur.

1. Snabba tekniska profiler: De tre konkurrenterna

GZIP (GNU Zip)

  • Underliggande algoritm: DEFLATE (kombination av LZ77 och Huffman-kodning)
  • Standardfiländelse: .tar.gz, .tgz, .gz
  • Utgivningsår: 1992 (skapad av Jean-loup Gailly och Mark Adler som ett patentfritt alternativ till compress)
  • Kärnfördel: Oslaglig exekveringshastighet och nästan universellt ekosystemstöd.
  • Kärnnackdel: Lägre komprimeringsgrad jämfört med moderna statistiska och ordboksbaserade kodare.

GZIP har tjänat som standardarbetskraft i Unix-miljöer i över tre decennier. Eftersom dess DEFLATE-algoritm arbetar med små glidande fönster (32 KB) kräver GZIP försumbar minnesanvändning både vid komprimering och dekomprimering.

BZIP2

  • Underliggande algoritm: Burrows-Wheeler-transform (BWT) kombinerad med Move-to-Front (MTF)-transform och Huffman-kodning
  • Standardfiländelse: .tar.bz2, .tbz2, .bz2
  • Utgivningsår: 1996 (skapad av Julian Seward)
  • Kärnfördel: Bättre komprimeringsförhållanden på repetitiva ASCII- och strukturerade loggfiler än GZIP.
  • Kärnnackdel: Långsammare överlag, särskilt under dekomprimering, och i stor utsträckning föråldrad av nyare algoritmer.

BZIP2 bearbetar data i diskreta block (vanligtvis 900 KB) med hjälp av reversibla permutationer som grupperar liknande tecken tillsammans innan kodning. Även om den var mycket hyllad i slutet av 1990‑talet och 2000‑talet för att överträffa GZIP:s filstorlekar, är dess beräkningskostnad relativt hög.

XZ (LZMA2)

  • Underliggande algoritm: LZMA2 (Lempel-Ziv-Markov-kedjealgoritm, förbättrad)
  • Standardfiländelse: .tar.xz, .txz, .xz
  • Utgivningsperiod: 2009 (introducerad för att ersätta det äldre lzma-formatet)
  • Kärnfördel: Exceptionellt höga komprimeringsförhållanden och snabb, lättviktig dekomprimering.
  • Kärnnackdel: Hög RAM-användning och förlängd CPU-körtid under initial komprimering.

XZ utnyttjar variabla ordboksstorlekar (ofta upp till 32 MB eller 64 MB som standard) för att hitta duplicerade byte-mönster över mycket bredare datavinduer än GZIP. Detta gör det förödande effektivt för att krympa stora, redundanta filer som OS‑installationsmedia, kernel‑källkodsträd och firmware‑bilder.

2. Prestandajämförelsematris

Tabellen nedan sammanfattar de praktiska prestandadynamikerna för varje verktyg när de körs med standardkonfigurationer på vanlig serverhårdvara:

Mått / DimensionGZIP (-6)BZIP2 (-9)XZ (-6)
KomprimeringsförhållandeMåttlig (~65-75% reduktion)Bra (~75-80% reduktion)Överlägsen (~80-88% reduktion)
KomprimeringshastighetMycket snabbLångsamMycket långsam
AvkomprimeringshastighetExtremt snabbLångsam till måttligSnabb
Komprimerings RAM-användningObetydlig (~1–2 MB)Låg (~8–10 MB)Hög (~100–700 MB+)
Dekomprimerings RAM-användningObetydlig (< 1 MB)Låg (~4 MB)Måttlig (~10–65 MB)
Primära optimala lägeLoggar, CI/CD-pipelines, realtidsströmmarKompatibilitet med äldre arkivPaketförråd, OS-ISO-filer, kall lagring

3. Verkliga benchmarkinsikter

För att förstå hur dessa verktyg beter sig under realistisk belastning, överväg en representativ 1 GB rå serveråtkomstlogg och en okomprimerad 500 MB mjukvarukällkodskatalog.

Scenario A: Komprimering av stora loggfiler (1 GB text)

  • GZIP: Slutförs på under 12 sekunder och levererar ett arkiv på cirka 180 MB.
  • BZIP2: Slutförs på ungefär 45–50 sekunder och minskar filen till cirka 130 MB.
  • XZ: Tar 80–90 sekunder med standardinställningar, vilket ger ett arkiv på cirka 95 MB.

Scenario B: Avkomprimeringsarbetsbelastningar

En kritisk metrisk som ofta förbises är asymmetri.

  • GZIP dekomprimeras på 2–3 sekunder med mikroskopisk minnesanvändning.
  • XZ dekomprimeras på 4–6 sekunder. Även om den initiala komprimeringen var långsam, är extrahering av .xz nästan lika snabb som att extrahera .gz.
  • BZIP2 kräver ungefär 25–30 sekunder bara för att packa upp, eftersom omvändning av Burrows-Wheeler-transformen är beräkningsmässigt symmetrisk mot kodningen.

4. Varför BZIP2 tappar popularitet

I modern infrastruktur befinner sig BZIP2 i ett obekvämt mellanting:

  1. Slår GZIP i hastighet: Om bearbetningslatens eller låg CPU-användning är viktigt, är GZIP betydligt snabbare.
  2. Slår XZ i täthet: Om bandbreddsbesparing och lagringseffektivitet är viktigt, genererar XZ avsevärt mindre arkiv.
  3. Slås i avkomprimeringshastighet av båda: I programvaruleveranssystem betalar klienter en mätbar CPU-penalty när de extraherar .tar.bz2-filer jämfört med .tar.gz eller .tar.xz.

Som ett resultat har stora Linux-distributioner (inklusive Debian, Arch och Fedora) flyttat sina officiella paketdistributioner och kärn‑tarballar från BZIP2 till XZ (och mer nyligen, Zstandard för körningsoperationer).

5. Praktisk kommandoradsanvändning

Tar-integration (det vanligaste arbetsflödet)

Moderna implementationer av GNU tar känner automatiskt igen komprimeringsformatet baserat på filändelsen, men att använda explicita flaggor är fortfarande standardpraxis:

# 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.*

Fristående filkomprimering

För att komprimera enskilda filer utan att paketera 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

Utnyttja flerkärnssystem

Som standard använder enklatrådade implementationer av dessa verktyg bara en CPU-kärna. Om du komprimerar flera gigabyte stora arkiv på moderna flertrådade servrar kan enklatrådad bearbetning ta timmar.

  • XZ flerkärnig: Inbyggt stöd via -T eller --threads:
    xz -T0 -k database_dump.sql   # Uses all available CPU cores
    
  • Parallell GZIP (pigz): Ett direkt ersättningsalternativ som använder alla CPU-kärnor för GZIP‑operationer:
    pigz -k database_dump.sql
    
  • Parallell BZIP2 (pbzip2): Flertrådad implementation för BZIP2:
    pbzip2 -k database_dump.sql
    

6. Hur man väljer: Praktiskt beslutsramverk

Välj ditt verktyg baserat på den primära begränsningen i ditt arbetsflöde:

Använd GZIP om:

  • Du sätter upp realtidsströmkomprimering eller nätverkstransmission där genomströmning är den begränsande faktorn.
  • Du hanterar automatiserad loggrotation (logrotate) på produktionsservrar där CPU-resurser måste reserveras för applikationsarbetsbelastningar.
  • Maximal portabilitet över äldre inbäddade system och standardbasbilder krävs.

Använd XZ om:

  • Du publicerar release‑artefakter, kernel‑byggen, containerbasbilder eller statiska paketarkiv som ofta laddas ner av tredje part.
  • Du förbereder långsiktiga kalla arkiv (off‑site veckovisa/månatliga säkerhetskopior) där lagringskostnaderna överväger den engångskomprimeringstid.
  • Du behöver små filstorlekar, men dina användare kräver fortfarande snabb nedladdning och snabb extraktionstid.

Behåll BZIP2 endast om:

  • Du upprätthåller bakåtkompatibilitet med äldre skript, befintliga återställningsrutiner för säkerhetskopior eller mjukvaruapparater som inte tillhandahåller en XZ‑dekompressor.

7. Vanliga frågor (FAQ)

Q1. Vilket format ger den minsta arkivstorleken? XZ producerar konsekvent den minsta arkivstorleken av de tre på grund av sina större LZMA2-ordlistfönster.

Q2. Är XZ långsammare än GZIP när filer dekomprimeras? XZ är bara något långsammare än GZIP vid dekomprimering, men det är avsevärt snabbare än BZIP2.

Q3. Kan GZIP och XZ utnyttja flera CPU-kärnor? XZ stödjer inbyggd flertrådad bearbetning med flaggan -T0, medan GZIP kan parallelliseras över kärnor med hjälp av verktyget pigz.

Q4. Varför tar Linux-distributioner bort BZIP2? Distributionerna har i stor utsträckning fasat ut BZIP2 eftersom XZ komprimerar till mindre storlek och dekomprimerar snabbare, medan GZIP fortfarande är snabbare för snabba operationer.

Q5. Ger en högre komprimeringsnivå som -9 en märkbar skillnad? Att sätta nivå -9 ger endast en marginell minskning på 1 % till 3 % i storlek i genomsnitt, samtidigt som den dramatiskt ökar CPU‑cykelförbrukning och minnesåtgång.

Se även