Pēdējoreiz atjaunināts: 20 Aug, 2026

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

GZIP vs BZIP2 vs XZ: Kurš Linux kompresijas formāts ir labākais?

Neatkarīgi no tā, vai jūs pakāpsiet ikdienas datu bāzes izmetumus, rotējat vairāku gigabaitu tīmekļa servera žurnālus vai izplatāt kompilētus bināros failus tūkstošiem mezgliem, kompresija ir ikdienas realitāte Linux administrēšanā.

Izsaucot tar vai apstrādājot plūstošus datus caur standarta ievadi, parasti sastopaties ar trim standarta utilītām: GZIP (.gz), BZIP2 (.bz2) un XZ (.xz).

Lai gan visi trīs rīki cenšas saspiest neapstrādātas baitus kompaktos arhīvos, tie veic būtiski atšķirīgus inženiertehniskus kompromisus starp saspiešanas attiecību, CPU izpildlaiku un atmiņas patēriņu. Nepareiza formāta izvēle var klusi izraisīt jūsu automatizēto izvietošanas ierobežojumus, kavēt plānotos rezerves kopiju logus vai laika gaitā izšķērdēt vērtīgu glabāšanas vietu.

Šis ceļvedis izskaidro, kā katrs formāts darbojas iekšpusē, kā tas darbojas reālistiskos darba slodzēs un kā izvēlēties pareizo jūsu infrastruktūrai.

1. Ātri tehniskie profili: Trīs pretinieki

GZIP (GNU Zip)

  • Pamatalgoritms: DEFLATE (LZ77 un Hufmana kodēšanas kombinācija)
  • Noklusējuma paplašinājums: .tar.gz, .tgz, .gz
  • Izdošanas periods: 1992 (izveidoja Jean-loup Gailly un Mark Adler kā patentneatkarīgu alternatīvu compress)
  • Galvenā priekšrocība: Neuzvarama izpildes ātruma un gandrīz universāla ekosistēmas atbalsta.
  • Galvenā trūkums: Zemāks saspiešanas koeficients salīdzinājumā ar mūsdienīgiem statistiskajiem un vārdnīcu balstītajiem kodētājiem.

GZIP ir kalpojis kā noklusējuma darba zirgs Unix vidēs vairāk nekā trīs desmitgades. Tā DEFLATE algoritms darbojas ar maziem slīdējošiem logiem (32 KB), tāpēc GZIP pieprasa nepamanāmu atmiņas patēriņu gan saspiešanas, gan atspiešanas laikā.

BZIP2

  • Pamatalgoritms: Burrows-Wheeler Transform (BWT) kombinēta ar Move-to-Front (MTF) transformāciju un Hufmana kodēšanu
  • Noklusējuma paplašinājums: .tar.bz2, .tbz2, .bz2
  • Izdošanas periods: 1996 (izveidoja Julian Seward)
  • Galvenais priekšrocība: Labākas saspiešanas attiecības atkārtotajos ASCII un strukturētos žurnālu failos nekā GZIP.
  • Galvenais trūkums: Lēnāks vispār, īpaši atspiešanas laikā, un lielākoties padarīts novecojuši ar jaunākiem algoritmiem.

BZIP2 apstrādā datus atsevišķos blokos (parasti 900 KB), izmantojot apgriežamas permutācijas, kas pirms kodēšanas grupē līdzīgus rakstzīmes kopā. Lai gan tas bija plaši slavēts 1990. gadu beigās un 2000. gadu sākumā par GZIP failu izmēru pārspēlēšanu, tā skaitļošanas izmaksas ir salīdzinoši augstas.

XZ (LZMA2)

  • Pamatalgoritms: LZMA2 (Lempel-Ziv-Markov ķēdes algoritms, uzlabots)
  • Noklusējuma paplašinājums: .tar.xz, .txz, .xz
  • Izdošanas periods: 2009 (ievadīts, lai aizstātu vecāku lzma formātu)
  • Galvenais priekšrocība: Īpaši augstas saspiešanas attiecības un ātra, viegla atspiešana.
  • Pamattrūkums: Liela RAM patēriņa un pagarināta CPU darbības laika sākotnējā saspiešanā.

XZ izmanto mainīgus vārdnīcas izmērus (bieži līdz pat 32 MB vai 64 MB pēc noklusējuma), lai atrastu dublētas baitu paraugi plašākos datu logos nekā GZIP. Tas padara to ārkārtīgi efektīvu lielu, lieku failu, piemēram, operētājsistēmas instalācijas mediju, kodola avota koku un programmaparatūras attēlu, samazināšanā.

2. Veiktspējas salīdzināšanas matrica

Zemāk esošā tabula apkopo katras utilītes praktiskās veiktspējas dinamiku, darbojoties ar noklusējuma konfigurācijām uz standarta servera aparatūras:

Metrika / DimensijaGZIP (-6)BZIP2 (-9)XZ (-6)
Saspiešanas attiecībaMērens (~65‑75 % samazinājums)Labi (~75-80% samazinājums)Izcils (~80-88% samazinājums)
Saspiešanas ātrumsĻoti ātrsLēnsĻoti lēns
Atspiešanas ātrumsĻoti ātrsLēns līdz mērenamĀtrs
Saspiešanas RAM patēriņšNeliels (~1–2 MB)Zems (~8–10 MB)Augsts (~100–700 MB+)
Atspiešanas RAM lietojumsNeliels (< 1 MB)Zems (~4 MB)Mērens (~10–65 MB)
Primārais optimālais punktsŽurnāli, CI/CD cauruļvadi, reāllaika plūsmasMantojuma arhīvu saderībaPakotņu repozitoriji, OS ISO, aukstā glabāšana

3. Reālo pasaules benchmarka ieskati

Lai izprastu, kā šie rīki darbojas reālistiskā slodzē, aplūkojiet tipisku 1 GB neapstrādātu servera piekļuves žurnālu un nesaspiestu 500 MB programmatūras pirmkoda direktoriju.

Scenārijs A: Lielo žurnālu failu saspiešana (1 GB teksta)

  • GZIP: Pabeidz mazāk nekā 12 sekunžu laikā, radot arhīvu aptuveni 180 MB.
  • BZIP2: Pabeidz aptuveni 45–50 sekunžu laikā, samazinot failu līdz apmēram 130 MB.
  • XZ: Aizņem 80–90 sekunžu pēc noklusējuma iestatījumiem, radot arhīvu apmēram 95 MB.

Scenārijs B: Atspiešanas slodzes

Bieži ignorēts kritisks rādītājs ir asimetriskums.

  • GZIP dekompresē 2–3 sekundēs ar mikroskopisku atmiņas patēriņu.
  • XZ dekompresē 4–6 sekundēs. Lai gan sākotnējā saspiešana bija lēna, .xz izvilkšana ir gandrīz tikpat ātra kā .gz izvilkšana.
  • BZIP2 prasa aptuveni 25–30 sekundes tikai izpakot, jo Burrows‑Wheeler transformācijas apgriešana ir skaitļošanas ziņā simetriska tās kodēšanai.

4. Kāpēc BZIP2 zaudē popularitāti

Mūsdienu infrastruktūrā BZIP2 nonāk neērti vidusposmā:

  1. Ātruma ziņā pārspēj GZIP: Ja svarīgi ir apstrādes latentums vai zems CPU patēriņš, GZIP ir ievērojami ātrāks.
  2. Blīvuma ziņā pārspēj XZ: Ja svarīgi ir joslas platuma taupīšana un glabāšanas efektivitāte, XZ rada ievērojami mazākus arhīvus.
  3. Abu pārspēj dekompresijas ātruma ziņā: Programmatūras piegādes sistēmās klienti maksā izmērāmu CPU sodu, izvelkot .tar.bz2 failus, salīdzinot ar .tar.gz vai .tar.xz.

Tādējādi galvenās Linux izplatīšanas (tostarp Debian, Arch un Fedora) ir pārgājušas no BZIP2 uz XZ oficiālajām pakotņu izplatīšanas un kodola tarballiem (un nesen arī uz Zstandard darbības laikā).

5. Praktiska komandrindas lietošana

Tar integrācija (visbiežāk izmantotā darba plūsma)

Mūsdienīgi GNU tar īstenojumi automātiski atpazīst saspiešanas formātu, pamatojoties uz faila paplašinājumu, taču skaidru karogu lietošana joprojām ir standarta prakse:

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

Neatkarīga failu saspiešana

Lai saspiestu atsevišķus failus, neapvienojot tos:

# 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

Daudzkodolu sistēmu izmantošana

Pēc noklusējuma šo rīku vienpavediena īstenojumi izmanto tikai vienu CPU kodolu. Ja jūs saspiedat vairāk nekā gigabaita arhīvus uz mūsdienīgiem daudzkodolu serveriem, vienpavediena apstrāde var aizņemt stundas.

  • XZ daudzpavediena: Iebūvēta atbalsts, izmantojot -T vai --threads:
    xz -T0 -k database_dump.sql   # Uses all available CPU cores
    
  • Paralēlais GZIP (pigz): Tieši aizvietojošs rīks, kas izmanto visus CPU kodolus GZIP operācijām:
    pigz -k database_dump.sql
    
  • Paralēlais BZIP2 (pbzip2): Daudzpavediena īstenojums BZIP2:
    pbzip2 -k database_dump.sql
    

6. Kā izvēlēties: Praktisks lēmumu ietvars

Izvēlieties rīku, pamatojoties uz galveno ierobežojumu jūsu darba plūsmā:

Izmantojiet GZIP, ja:

  • Jūs iestatāt reāllaika plūsmas saspiešanu vai tīkla pārraidi, kur caurplūdība ir ierobežojošais faktors.
  • Jūs pārvaldāt automatizētu žurnālu rotāciju (logrotate) ražošanas serveros, kur CPU resursi jārezervē lietojumprogrammu slodzei.
  • Ir nepieciešama maksimāla pārnēsājamība starp mantotajām iegultajām sistēmām un standarta pamata attēliem.

Izmantojiet XZ, ja:

  • Jūs publicējat izlaiduma artefaktus, kodola būvējumus, konteineru pamata attēlus vai statiskus pakotņu krātuvus, kurus bieži lejupielādē trešās puses.
  • Jūs gatavojat ilgtermiņa aukstās arhīvus (ārpus vietas iknedēļas/mēneša rezerves kopijas), kur glabāšanas izmaksas pārsniedz vienreizējo saspiešanas laiku.
  • Jums ir vajadzīgi mazi failu izmēri, bet jūsu lietotāji joprojām pieprasa ātru lejupielādi un strauju izpakotšanas laiku.

Saglabājiet BZIP2 tikai, ja:

  • Jūs uzturat atpakaļejošu saderību ar mantotajām skriptām, esošām rezerves kopiju atjaunošanas rutīnām vai programmatūras ierīcēm, kas nepiedāvā XZ dekompresoru.

7. Biežāk uzdotie jautājumi (BUJ)

Q1. Kurš formāts nodrošina mazāko arhīva izmēru? XZ konsekventi rada mazāko arhīva izmēru no trīs, pateicoties tā lielākajiem LZMA2 vārdnīcas logiem.

Q2. Vai XZ ir lēnāks nekā GZIP, atspiežot failus? XZ ir tikai nedaudz lēnāks nekā GZIP atspiežot, bet tas ir būtiski ātrāks nekā BZIP2.

Q3. Vai GZIP un XZ var izmantot vairākus CPU kodolus? XZ atbalsta iebūvētu daudzpavedienību, izmantojot -T0 karogu, kamēr GZIP var paralelizēt starp kodoliem, izmantojot pigz aizvietojuma utilītu.

Q4. Kāpēc Linux izplatījumi pārstāj izmantot BZIP2? Izplatījumi lielākoties ir izslēguši BZIP2, jo XZ saspiest mazāk un atspied ātrāk, kamēr GZIP joprojām ir ātrāks īsām operācijām.

Q5. Vai augstāks saspiešanas līmenis, piemēram, -9, rada pamanāmu atšķirību? Iestatot līmeni -9, vidēji tiek sasniegta tikai marginala 1% līdz 3% izmēra samazināšana, vienlaikus būtiski palielinot CPU ciklu patēriņu un atmiņas patēriņu.

Skatīt arī