Legutóbb frissítve: 2026. aug. 20.

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

GZIP vs BZIP2 vs XZ: Melyik Linux tömörítési formátum a legjobb?

Akár napi adatbázis-mentéseket csomagol, akár több gigabájtos webszerver naplókat forgat, vagy összeállított binárisokat oszt el több ezer csomópont között, a tömörítés a Linux adminisztráció mindennapi valósága.

A tar parancs meghívásakor vagy a szabványos bemeneten keresztül áramló adatok feldolgozásakor általában három szabványos segédprogrammal találkozik: GZIP (.gz), BZIP2 (.bz2), és XZ (.xz).

Miközben mindhárom eszköz célja, hogy a nyers bájtokat kompakt archívumokká tömörítse, alapvetően különböző mérnöki kompromisszumokat hoznak a tömörítési arány, a CPU futási idő és a memóriaigény között. A rossz formátum kiválasztása csendben szűkítheti az automatizált telepítéseket, késleltetheti az ütemezett mentési időablakokat, vagy idővel értékes tárhelyet pazarolhat.

Ez az útmutató részletezi, hogyan működik minden formátum a háttérben, hogyan teljesítenek a valós munkaterhelések során, és hogyan válasszuk ki a megfelelőet az infrastruktúrához.

1. Gyors technikai profilok: A három versenyző

GZIP (GNU Zip)

  • Underlying Algorithm: DEFLATE (LZ77 és Huffman kódolás kombinációja)
  • Alapértelmezett kiterjesztés: .tar.gz, .tgz, .gz
  • Kiadás éve: 1992 (Jean-loup Gailly és Mark Adler által létrehozott szabadalomtól mentes alternatíva a compress helyett)
  • Alapvető előny: Legyőzhetetlen végrehajtási sebesség és szinte mindenhol elérhető ökoszisztéma támogatás.
  • Alapvető hátrány: Alacsonyabb tömörítési arány a modern statisztikai és szótár-alapú kódolókkal összehasonlítva.

A GZIP több mint három évtizede a Unix környezetek alapértelmezett munkagépe. Mivel a DEFLATE algoritmusa kis csúszóablakokkal (32 KB) működik, a GZIP tömörítés és kitömörítés során elhanyagolható memóriaigényt igényel.

BZIP2

  • Alapvető algoritmus: Burrows-Wheeler transzformáció (BWT) kombinálva a Move-to-Front (MTF) transzformációval és Huffman kódolással
  • Alapértelmezett kiterjesztés: .tar.bz2, .tbz2, .bz2
  • Kiadási időszak: 1996 (készítette Julian Seward)
  • Fő előny: Jobb tömörítési arányok ismétlődő ASCII és strukturált naplófájlok esetén, mint a GZIP.
  • Fő hátrány: Általában lassabb, különösen a kitömörítés során, és nagyrészt elavulttá vált az újabb algoritmusok által.

A BZIP2 adatokat diszkrét blokkokban (általában 900 KB) dolgozza fel, visszafordítható permutációkat használva, amelyek a hasonló karaktereket kódolás előtt csoportosítják. Bár a 1990-es évek vége és a 2000-es évek elején széles körben elismerték, mivel kisebb fájlméreteket eredményezett, mint a GZIP, a számítási költsége viszonylag magas.

XZ (LZMA2)

  • Alapvető algoritmus: LZMA2 (Lempel-Ziv-Markov lánc algoritmus, továbbfejlesztett)
  • Alapértelmezett kiterjesztés: .tar.xz, .txz, .xz
  • Kiadási korszak: 2009 (bevezetve, hogy felvegye a helyét a régebbi lzma formátumnak)
  • Alapvető előny: Kivételesen magas tömörítési arányok és gyors, könnyű súlyú kitömörítés.
  • Alapvető hátrány: Nagy RAM használat és hosszú CPU futási idő az első tömörítés során.

Az XZ változó szótárméreteket (gyakran akár 32 MB vagy 64 MB alapértelmezés szerint) használ, hogy duplikált bájtmintákat találjon sokkal szélesebb adatablakokban, mint a GZIP. Ez rendkívül hatékonnyá teszi a nagy, redundáns fájlok, például operációs rendszer telepítő médiák, kernel forrásfák és firmware képek zsugorításában.

2. Teljesítmény-összehasonlítási mátrix

Az alábbi táblázat összefoglalja az egyes segédprogramok gyakorlati teljesítménydinamikáját, amikor alapértelmezett beállításokkal futnak standard szerver hardveren:

Metrika / DimenzióGZIP (-6)BZIP2 (-9)XZ (-6)
Tömörítési arányMérsékelt (~65-75% csökkenés)Jó (~75-80% csökkenés)Kiváló (~80-88% csökkenés)
Tömörítési sebességNagyon gyorsLassúNagyon lassú
Kitömörítési sebességRendkívül gyorsLassú‑közepesGyors
Tömörítés RAM használataElhanyagolható (~1–2 MB)Alacsony (~8–10 MB)Magas (~100–700 MB+)
Kicsomagolás RAM használataElhanyagolható (< 1 MB)Alacsony (~4 MB)Mérsékelt (~10–65 MB)
Elsődleges kedvező pontNaplók, CI/CD csővezetékek, valós idejű adatfolyamokÖrökölt archívum kompatibilitásCsomag tárolók, OS ISO-k, hideg tárolás

3. Valós világú benchmark-elemzések

Ahhoz, hogy megértsük, hogyan viselkednek ezek az eszközök valós terhelés alatt, vegyünk egy reprezentatív 1 GB nyers szerver hozzáférési naplót és egy tömörítetlen 500 MB szoftver forráskód könyvtárat.

Forgatókönyv A: Nagy naplófájlok tömörítése (1 GB szöveg)

  • GZIP: Kevesebb mint 12 másodperc alatt befejeződik, körülbelül 180 MB körüli archívumot eredményez.
  • BZIP2: Körülbelül 45–50 másodperc alatt fejeződik be, a fájlt körülbelül 130 MB-ra csökkentve.
  • XZ: Alapbeállításoknál 80–90 másodpercet vesz igénybe, és körülbelül 95 MB méretű archívumot eredményez.

Forgatókönyv B: Kicsomagolási terhelések

Egy gyakran figyelmen kívül hagyott kritikus mérőszám a aszimmetria.

  • GZIP 2–3 másodperc alatt tömörítést bontja ki, mikroszkopikus memóriahasználattal.
  • XZ 4–6 másodperc alatt bontja ki a tömörítést. Bár a kezdeti tömörítés lassú volt, a .xz kicsomagolása majdnem olyan gyors, mint a .gz kicsomagolása.
  • BZIP2 körülbelül 25–30 másodpercet igényel csak a kicsomagoláshoz, mivel a Burrows‑Wheeler transzformáció visszafordítása számítási szempontból szimmetrikus a kódolással.

4. Miért veszít a BZIP2 népszerűsége

A modern infrastruktúrában a BZIP2 egy kényelmetlen középúton találja magát:

  1. A GZIP gyorsabb: Ha a feldolgozási késleltetés vagy az alacsony CPU‑használat fontos, a GZIP jelentősen gyorsabb.
  2. Az XZ sűrűségben jobb: Ha a sávszélesség megtakarítása és a tárolási hatékonyság számít, az XZ lényegesen kisebb archívumokat hoz létre.
  3. Mindkettő gyorsabb kibontási sebességben: A szoftverszállítási rendszerekben az ügyfelek mérhető CPU-költséget fizetnek a .tar.bz2 fájlok kibontásáért a .tar.gz vagy .tar.xz fájlokhoz képest.

Ennek következtében a főbb Linux disztribúciók (köztük a Debian, az Arch és a Fedora) elmozdították hivatalos csomag- és kernel-tarballjaikat a BZIP2-ről az XZ felé (és a közelmúltban a Zstandard-re a futásidejű műveletekhez).

5. Gyakorlati parancssori használat

Tar integráció (a leggyakoribb munkafolyamat)

A GNU tar modern megvalósításai automatikusan felismerik a tömörítési formátumot a fájlkiterjesztés alapján, de az explicit kapcsolók használata továbbra is szabványos gyakorlat:

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

Önálló fájl tömörítés

Egyedi fájlok tömörítése csomagolás nélkül:

# 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

Többmagos rendszerek kihasználása

Alapértelmezés szerint ezeknek az eszközöknek az egymagos (single-threaded) megvalósításai csak egy CPU magot használnak. Ha több gigabájtos archívumokat tömörítesz modern többmagos szervereken, az egymagos feldolgozás órákat vehet igénybe.

  • XZ többmagos feldolgozás: Natív támogatás a -T vagy --threads kapcsolóval:
    xz -T0 -k database_dump.sql   # Uses all available CPU cores
    
  • Párhuzamos GZIP (pigz): Egy azonnal használható helyettesítő, amely a GZIP műveletekhez az összes CPU magot kihasználja:
    pigz -k database_dump.sql
    
  • Párhuzamos BZIP2 (pbzip2): Többmagos megvalósítás a BZIP2-hez:
    pbzip2 -k database_dump.sql
    

6. Hogyan válasszunk: Gyakorlati döntési keretrendszer

Válaszd ki az eszközt a munkafolyamatod legfontosabb korlátozása alapján:

Használja a GZIP-et, ha:

  • Valós idejű adatfolyam tömörítést vagy hálózati átvitel beállításán dolgozol, ahol a sávszélesség a korlátozó tényező.
  • Automatizált naplórotációt (logrotate) kezelsz a termelési szervereken, ahol a CPU-erőforrásokat az alkalmazás terhelésének kell fenntartani.
  • Maximális hordozhatóságra van szükség a régi beágyazott rendszerek és a szabványos alapképek között.

Használja az XZ-et, ha:

  • Kiadási artefaktusokat, kernel buildeket, konténer alapképeket vagy statikus csomagtárakat publikálsz, amelyeket gyakran töltenek le harmadik felek.
  • Hosszú távú hideg archívumokat (helyszíntől távoli heti/havi mentéseket) készítesz, ahol a tárolási költségek meghaladják az egyszeri tömörítési időt.
  • Kis fájlméretre van szükséged, de a felhasználók továbbra is gyors letöltést és gyors kibontási időt igényelnek.

Tartsa a BZIP2-t csak akkor, ha:

  • Fenntartod a visszafelé kompatibilitást régi szkriptekkel, meglévő visszaállítási rutinokkal vagy szoftvereszközökkel, amelyek nem biztosítanak XZ kitömörítőt.

7. Gyakran Ismételt Kérdések (GYIK)

Q1. Melyik formátum biztosítja a legkisebb archívumméretet? Az XZ következetesen a három közül a legkisebb archívumméretet állítja elő, nagyobb LZMA2 szótárablakok miatt.

Q2. Az XZ lassabb-e a GZIP-nél a fájlok kitömörítésekor? Az XZ csak kissé lassabb a GZIP-nél a kitömörítés során, de lényegesen gyorsabb a BZIP2-nél.

Q3. A GZIP és az XZ kihasználhatja a több CPU magot? Az XZ natív több szálas feldolgozást támogat a -T0 kapcsolóval, míg a GZIP párhuzamosítható a magok között a pigz helyettesítő segédprogram használatával.

Q4. Miért hagyják el a Linux disztribúciók a BZIP2-t? A disztribúciók nagyrészt elhagyták a BZIP2-t, mert az XZ kisebb méretű tömörítést és gyorsabb kitömörítést biztosít, míg a GZIP továbbra is gyorsabb a gyors műveletekhez.

Q5. Jelentős különbséget okoz-e a magasabb tömörítési szint, például a -9? A -9 szint beállítása átlagosan csak 1%‑tól 3%-ig terjedő, marginális méretcsökkenést eredményez, miközben drámaian növeli a CPU-ciklusok fogyasztását és a memóriaigényt.

Lásd még