Poslední aktualizace: 20 Aug, 2026

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

GZIP vs BZIP2 vs XZ: Který kompresní formát Linuxu je nejlepší?

Ať už balíte denní výpisy databází, rotujete multi‑gigabajtové logy webových serverů, nebo distribuujete zkompilované binární soubory tisícům uzlů, komprese je každodenní realitou v Linux administraci.

Při volání tar nebo zpracování streamovacích dat přes standardní vstup obvykle narazíte na tři standardní nástroje: GZIP (.gz), BZIP2 (.bz2) a XZ (.xz).

Zatímco všechny tři nástroje usilují o stlačení surových bajtů do kompaktních archivů, provádějí zásadně odlišné inženýrské kompromisy mezi kompresním poměrem, dobou běhu CPU a paměťovou zátěží. Výběr nesprávného formátu může tiše omezit vaše automatizované nasazení, zdržet naplánovaná okna zálohování nebo v průběhu času plýtvat cenným úložištěm.

Tento průvodce rozebírá, jak každý formát funguje pod kapotou, jak si vede při reálných pracovních zátěžích a jak vybrat ten správný pro vaši infrastrukturu.

1. Rychlé technické profily: Tři soutěžící

GZIP (GNU Zip)

  • Základní algoritmus: DEFLATE (kombinace LZ77 a Huffmanova kódování)
  • Výchozí přípona: .tar.gz, .tgz, .gz
  • Období vydání: 1992 (vytvořeno Jean-loup Gailly a Markem Adlerem jako patentově volná alternativa k compress)
  • Hlavní výhoda: Nezpochybnitelná rychlost provádění a téměř univerzální podpora ekosystému.
  • Hlavní nevýhoda: Nižší kompresní poměr ve srovnání s moderními statistickými a slovníkovými enkodéry.

GZIP slouží jako výchozí pracovní kůň unixových prostředí již více než tři desetiletí. Protože jeho algoritmus DEFLATE pracuje s malými posuvnými okny (32 KB), GZIP vyžaduje zanedbatelnou paměťovou zátěž jak při kompresi, tak při dekompresi.

BZIP2

  • Základní algoritmus: Burrows-Wheeler Transform (BWT) combined with Move-to-Front (MTF) transform and Huffman coding
  • Výchozí přípona: .tar.bz2, .tbz2, .bz2
  • Období vydání: 1996 (created by Julian Seward)
  • Hlavní výhoda: Lepší kompresní poměry u opakujících se ASCII a strukturovaných souborů protokolu než GZIP.
  • Hlavní nevýhoda: Pomalejší ve všech ohledech, zejména při dekompresi, a do značné míry zastaralý novějšími algoritmy.

BZIP2 zpracovává data v diskrétních blocích (obvykle 900 KB) pomocí reverzibilních permutací, které seskupují podobné znaky před kódováním. Ačkoliv byl koncem 90. let a v 2000. letech široce oslavován za překonání velikostí souborů GZIP, jeho výpočetní náročnost je relativně vysoká.

XZ (LZMA2)

  • Základní algoritmus: LZMA2 (Lempel-Ziv-Markov chain Algorithm, improved)
  • Výchozí přípona: .tar.xz, .txz, .xz
  • Období vydání: 2009 (představeno jako náhrada staršího formátu lzma)
  • Hlavní výhoda: Výjimečně vysoké kompresní poměry a rychlá, nenáročná dekomprese.
  • Hlavní nevýhoda: Vysoká spotřeba RAM a dlouhý čas běhu CPU během počáteční komprese.

XZ využívá proměnné velikosti slovníku (často až 32 MB nebo 64 MB ve výchozím nastavení) k vyhledávání duplicitních bajtových vzorů v mnohem širších datových oknech než GZIP. To ho činí mimořádně účinným při zmenšování velkých, redundantních souborů, jako jsou instalační média OS, stromové zdroje jádra a firmware obrazy.

2. Matice srovnání výkonu

Tabulka níže shrnuje praktickou dynamiku výkonu každého nástroje při spuštění výchozích konfigurací na standardním serverovém hardwaru:

Metrika / RozměrGZIP (-6)BZIP2 (-9)XZ (-6)
Komprimační poměrStřední (~65-75% snížení)Dobré (~75-80% snížení)Vynikající (~80-88% snížení)
Rychlost kompreseVelmi rychlýPomalýVelmi pomalý
Rychlost dekompreseExtrémně rychléPomalejší až středníRychlý
Využití RAM při kompresiNevýznamné (~1–2 MB)Nízké (~8–10 MB)Vysoké (~100–700 MB+)
Využití RAM při dekompresiNevýznamné (< 1 MB)Nízké (~4 MB)Střední (~10–65 MB)
Primární ideální bodLogy, CI/CD pipeline, streamy v reálném časeKompatibilita se staršími archivyRepozitáře balíčků, OS ISO, chladné úložiště

3. Postřehy z reálných benchmarků

Abychom pochopili, jak se tyto nástroje chovají při realistickém zatížení, vezměte v úvahu reprezentativní 1 GB surový serverový přístupový log a nekomprimovaný 500 MB adresář se zdrojovým kódem softwaru.

Scénář A: Komprese velkých souborů protokolu (1 GB textu)

  • GZIP: Dokončí za méně než 12 sekund a vytvoří archiv o velikosti přibližně 180 MB.
  • BZIP2: Dokončí za přibližně 45–50 sekund a zmenší soubor na přibližně 130 MB.
  • XZ: Trvá 80–90 sekund při výchozím nastavení, což vede k archivu přibližně 95 MB.

Scénář B: Zátěže dekomprese

Kritický ukazatel, který se často přehlíží, je asymetrie.

  • GZIP dekomprimuje za 2–3 sekundy s mikroskopickou spotřebou paměti.
  • XZ dekomprimuje za 4–6 sekund. Zatímco počáteční komprese byla pomalá, rozbalování .xz je téměř tak rychlé jako rozbalování .gz.
  • BZIP2 vyžaduje přibližně 25–30 sekund jen na rozbalení, protože obrácení Burrows-Wheelerova transformace je výpočetně symetrické k jejímu kódování.

4. Proč BZIP2 ztrácí popularitu

V moderní infrastruktuře se BZIP2 nachází v nepříjemném středním bodě:

  1. Převýšen rychlostí GZIP: Pokud záleží na latenci zpracování nebo nízké spotřebě CPU, je GZIP výrazně rychlejší.
  2. Převýšen hustotou XZ: Pokud záleží na úspoře šířky pásma a efektivitě úložiště, XZ vytváří podstatně menší archivy.
  3. Překonáno v rychlosti dekomprese oběma: V systémech doručování softwaru klienti platí měřitelnou penalizaci procesoru při rozbalování souborů .tar.bz2 ve srovnání s .tar.gz nebo .tar.xz.

V důsledku toho hlavní linuxové distribuce (včetně Debianu, Arch a Fedory) přesunuly své oficiální balíčky a tarbally jádra od BZIP2 směrem k XZ (a nedávno i k Zstandard pro runtime operace).

5. Praktické použití příkazové řádky

Integrace Tar (Nejčastější pracovní postup)

Moderní implementace GNU tar automaticky rozpoznají formát komprese na základě přípony souboru, ale používání explicitních příznaků je stále standardní praxí:

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

Samostatná komprese souborů

Pro kompresi jednotlivých souborů bez balení:

# 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

Využití vícejádrových systémů

Ve výchozím nastavení jednovláknové implementace těchto nástrojů používají pouze jedno jádro procesoru. Pokud komprimujete archiv o velikosti několika gigabajtů na moderních vícejádrových serverech, jednovláknové zpracování může trvat hodiny.

  • Vícevláknové XZ: Nativní podpora pomocí -T nebo --threads:
    xz -T0 -k database_dump.sql   # Uses all available CPU cores
    
  • Paralelní GZIP (pigz): Náhrada, která využívá všechna jádra procesoru pro operace GZIP:
    pigz -k database_dump.sql
    
  • Paralelní BZIP2 (pbzip2): Vícevláknová implementace pro BZIP2:
    pbzip2 -k database_dump.sql
    

6. Jak vybrat: Praktický rozhodovací rámec

Vyberte si nástroj na základě hlavního omezení vašeho pracovního postupu:

Použijte GZIP, pokud:

  • Nastavujete kompresi streamu v reálném čase nebo přenos přes síť, kde je omezením propustnost.
  • Spravujete automatizovanou rotaci logů (logrotate) na produkčních serverech, kde je třeba rezervovat CPU zdroje pro zatížení aplikací.
  • Je vyžadována maximální přenositelnost napříč staršími vestavěnými systémy a standardními základními obrazy.

Použijte XZ, pokud:

  • Publikujete vydané artefakty, sestavení jádra, základní obrazy kontejnerů nebo statické repozitáře balíčků, které jsou často stahovány třetími stranami.
  • Připravujete dlouhodobé studené archivy (off-site týdenní/měsíční zálohy), kde náklady na úložiště převyšují jednorázový čas komprese.
  • Potřebujete malé velikosti souborů, ale vaši uživatelé stále požadují rychlé stažení a rychlé rozbalení.

Zachovejte BZIP2 pouze pokud:

  • Udržujete zpětnou kompatibilitu se staršími skripty, existujícími procedurami obnovy záloh nebo softwarovými zařízeními, která neposkytují XZ dekompresor.

7. Často kladené otázky (FAQ)

Q1. Který formát poskytuje nejmenší velikost archivu? XZ konzistentně produkuje nejmenší velikost archivu mezi těmito třemi díky větším oknům slovníku LZMA2.

Q2. Je XZ pomalejší než GZIP při dekompresi souborů? XZ je jen mírně pomalejší než GZIP při dekompresi, ale je podstatně rychlejší než BZIP2.

Q3. Mohou GZIP a XZ využívat více jader CPU? XZ podporuje nativní vícevláknové zpracování pomocí příznaku -T0, zatímco GZIP lze paralelizovat napříč jádry pomocí utility pigz, která funguje jako drop-in náhrada.

Q4. Proč linuxové distribuce odstraňují BZIP2? Distribuce v podstatě vyřadily BZIP2, protože XZ komprimuje menší a dekomprimuje rychleji, zatímco GZIP zůstává rychlejší pro rychlé operace.

Q5. Dělá vyšší úroveň komprese, jako -9, znatelný rozdíl? Nastavení úrovně -9 přináší pouze marginální snížení velikosti o 1 % až 3 % v průměru, zatímco dramaticky zvyšuje spotřebu CPU cyklů a paměťové nároky.

Viz také