Paskutinį kartą atnaujinta: 2026 m. rugpjūčio 20 d.

GZIP vs BZIP2 vs XZ: Kuris Linux suspaudimo formatas yra geriausias?
Nesvarbu, ar supakuojate kasdienius duomenų bazės išklotinės failus, sukuriate daugiagigabaitų žiniatinklio serverio žurnalų rotaciją, ar platinate sukompiliuotas binarines programas tūkstančiams mazgų, suspaudimas yra kasdienė realybė Linux administravime.
Kviesti tar arba apdorojant srautinį duomenų srautą per standartinę įvestį, paprastai susiduriate su trimis standartinėmis priemonėmis: GZIP (.gz), BZIP2 (.bz2), ir XZ (.xz).
Nors visi trys įrankiai siekia suspausti neapdorotus baitus į kompaktiškas archyvas, jie daro esminius skirtingus inžinerinius kompromisus tarp suspaudimo santykio, procesoriaus vykdymo laiko ir atminties sąnaudų. Pasirinkus netinkamą formatą, tyliai gali susidaryti spūstys jūsų automatizuotose diegimo procesuose, sustabdyti suplanuotus atsarginių kopijų langus arba laikui bėgant švaistytą vertingą saugyklą.
Šiame vadove išsamiai paaiškinama, kaip veikia kiekvienas formatas, kaip jie veikia realiomis apkrovomis ir kaip pasirinkti tinkamiausią jūsų infrastruktūrai.
1. Greiti techniniai profiliai: Trys kandidatai
GZIP (GNU Zip)
- Pagrindinis algoritmas: DEFLATE (combination of LZ77 and Huffman coding)
- Numatytasis plėtinys:
.tar.gz,.tgz,.gz - Išleidimo era: 1992 (created by Jean-loup Gailly and Mark Adler as a patent-free alternative to
compress) - Pagrindinis privalumas: Neprilygstamas vykdymo greitis ir beveik universali ekosistemos parama.
- Pagrindinis trūkumas: Žemesnis suspaudimo santykis, palyginti su šiuolaikiniais statistiniais ir žodynų pagrindu veikiantiais koduotojais.
GZIP jau daugiau nei tris dešimtmečius buvo numatytasis darbo arklys Unix aplinkoje. Kadangi jo DEFLATE algoritmas veikia su mažais slankiais langais (32 KB), GZIP reikalauja nepastebimo atminties sąnaudų tiek suspaudimo, tiek išskleidimo metu.
BZIP2
- Pagrindinis algoritmas: Burrouso-Veilero transformacija (BWT) sujungta su Move-to-Front (MTF) transformacija ir Huffmano kodavimu
- Numatytasis plėtinys:
.tar.bz2,.tbz2,.bz2 - Išleidimo metai: 1996 (sukūrė Julianas Seward)
- Pagrindinis privalumas: Geresnis suspaudimo santykis pasikartojančiuose ASCII ir struktūruotuose žurnalo failuose nei GZIP.
- Pagrindinis trūkumas: Lėtesnis visur, ypač išskaitant išskaidymą, ir daugiausia pasenęs dėl naujesnių algoritmų.
BZIP2 apdoroja duomenis atskiruose blokeliuose (dažniausiai 900 KB), naudodamas atvirkštines permutacijas, kurios sujungia panašius simbolius prieš kodavimą. Nors jis buvo plačiai šlovinamas vėlų 1990‑ųjų ir 2000‑ųjų pradžioje už geresnius nei GZIP failų dydžius, jo skaičiavimo kaina yra gana didelė.
XZ (LZMA2)
- Pagrindinis algoritmas: LZMA2 (Lempel‑Ziv‑Markovo grandinės algoritmas, patobulintas)
- Numatytasis plėtinys:
.tar.xz,.txz,.xz - Leidimo era: 2009 (pristatytas, kad pakeistų senesnį
lzmaformatą) - Pagrindinis privalumas: Išskirtinai dideliai suspaudimo santykiai ir greitas, lengvas išskleidimas.
- Pagrindinis trūkumas: Didelis RAM naudojimas ir ilgas CPU darbo laikas pradinio suspaudimo metu.
XZ naudoja kintamus žodynų dydžius (dažnai iki 32 MB arba 64 MB pagal numatytuosius nustatymus), kad rastų pasikartojančius baitų modelius daug platesniuose duomenų langeliuose nei GZIP. Tai daro jį nepaprastai veiksmingu sumažinant didelius, perteklinius failus, tokius kaip OS diegimo laikmenos, branduolio šaltinio medžiai ir programinės įrangos atvaizdai.
2. Veikimo palyginimo matrica
Žemiau pateikta lentelė apibendrina praktinę kiekvienos priemonės našumo dinamiką, kai ji veikia su numatytaisiais nustatymais įprastoje serverio įrangoje:
| Metrika / Matmuo | GZIP (-6) | BZIP2 (-9) | XZ (-6) |
|---|---|---|---|
| Suspaudimo santykis | Vidutinis (~65-75% sumažėjimas) | Geras (~75-80% sumažėjimas) | Puikus (~80-88% sumažėjimas) |
| Suspaudimo greitis | Labai greita | Lėtas | Labai lėtas |
| Išskleidimo greitis | Labai greitas | Lėtas iki vidutinio | Greita |
| Kompresijos RAM naudojimas | Nereikšmingas (~1–2 MB) | Žemas (~8–10 MB) | Aukštas (~100–700 MB+) |
| Dekompresijos RAM naudojimas | Nereikšmingas (< 1 MB) | Žemas (~4 MB) | Vidutinis (~10–65 MB) |
| Pagrindinis optimalus taškas | Žurnalai, CI/CD konvejeriai, realaus laiko srautai | Suderinamumas su senais archyvais | Paketo saugyklos, OS ISO, šaltas saugojimas |
3. Realios pasaulio našumo įžvalgos
Norint suprasti, kaip šie įrankiai veikia realiomis apkrovomis, apsvarstykite reprezentatyvų 1 GB neapdorotą serverio prieigos žurnalą ir nespaustą 500 MB programinės įrangos šaltinio kodo katalogą.
Scenarijus A: Didelių žurnalo failų suspaudimas (1 GB tekstas)
- GZIP: Baigia per mažiau nei 12 sekundžių, sukuriant archyvą apie 180 MB.
- BZIP2: Baigia per maždaug 45–50 sekundžių, sumažindamas failą iki maždaug 130 MB.
- XZ: Užtrunka 80–90 sekundžių pagal numatytus nustatymus, sukuriant archyvą apie 95 MB.
Scenarijus B: Išskaidymo darbo krūviai
Svarbus matas, dažnai nepastebimas, yra asimetrija.
- GZIP išskleidžia per 2–3 sekundes, naudojant mikroskopišką atminties kiekį.
- XZ išskleidžia per 4–6 sekundes. Nors pradinė suspaudimo sparta buvo lėta,
.xzišpakavimas yra beveik toks pat greitas kaip.gzišpakavimas. - BZIP2 reikalauja maždaug 25–30 sekundžių tik išpakavimui, nes Burrows‑Wheeler Transform atvirkštinis procesas yra skaičiavimais simetriškas kodavimui.
4. Kodėl BZIP2 praranda populiarumą
Šiuolaikinėje infrastruktūroje BZIP2 patenka į nepatogų vidurį:
- GZIP pralenkia greičiu: Jei svarbus apdorojimo vėlavimas arba mažas CPU naudojimas, GZIP yra žymiai greitesnis.
- XZ pralenkia tankumu: Jei svarbus pralaidumo taupymas ir saugojimo efektyvumas, XZ sukuria žymiai mažesnius archyvus.
- Pralaimėtas išskaidymo greičiu abiejų: Programinės įrangos tiekimo sistemose klientai patiria matomą CPU bausmę išskaitant
.tar.bz2failus, palyginti su.tar.gzarba.tar.xz.
Todėl pagrindinės Linux distribucijos (įskaitant Debian, Arch ir Fedora) perėjo nuo BZIP2 prie XZ oficialioje paketų platinimo ir branduolio tarballų sistemoje (ir neseniai – Zstandard vykdymo operacijoms).
5. Praktinis komandinės eilutės naudojimas
Tar integracija (dažniausiai naudojamas darbo procesas)
Šiuolaikinės GNU tar įgyvendinimo versijos automatiškai atpažįsta suspaudimo formatą pagal failo plėtinį, tačiau aiškių vėliavėlių naudojimas vis dar yra įprasta praktika:
# 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.*
Savarankiškas failų suspaudimas
Suspausti atskirus failus be sujungimo:
# 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
Naudojant daugiabrandžius sistemas
Numatytuoju atveju šių įrankių viengijės įgyvendinimo versijos naudoja tik vieną CPU branduolį. Jei suspaudžiate kelių gigabaitų archyvus šiuolaikiniuose daugiagijų serveriuose, viengijė apdorojimo trukmė gali trukti valandas.
- XZ daugiagijė: Įgimta parama per
-Tarba--threads:xz -T0 -k database_dump.sql # Uses all available CPU cores - Lygiagretus GZIP (
pigz): Tiesioginis pakaitalas, kuris naudoja visus CPU branduolius GZIP operacijoms:pigz -k database_dump.sql - Lygiagretus BZIP2 (
pbzip2): Daugiagijė įgyvendinimo versija BZIP2:pbzip2 -k database_dump.sql
6. Kaip pasirinkti: praktinis sprendimų rėmas
Pasirinkite įrankį, atsižvelgdami į pagrindinį jūsų darbo srauto apribojimą:
Naudokite GZIP, jei:
- Jūs konfigūruojate realaus laiko srauto suspaudimą arba tinklo perdavimą, kur ribojantis veiksnys yra pralaidumas.
- Jūs valdote automatizuotą žurnalo sukūrimą (
logrotate) gamybinėse serveriuose, kur CPU ištekliai turi būti rezervuoti programų apkrovoms. - Reikalingas maksimalus perkeliamumas tarp senų įterptų sistemų ir standartinių bazinių atvaizdų.
Naudokite XZ, jei:
- Jūs publikuojate leidimo artefaktus, branduolio versijas, konteinerių bazinius atvaizdus arba statines paketų saugyklas, kurias dažnai atsisiunčia trečiosios šalys.
- Jūs ruošiate ilgalaikius šaltus archyvus (atsarginės kopijos išorėje kas savaitę/mėnesį), kur saugojimo išlaidos viršija vienkartinio suspaudimo laiką.
- Jums reikia mažų failų dydžių, tačiau jūsų vartotojai vis tiek reikalauja greito atsisiuntimo ir greito išpakavimo.
Laikykite BZIP2 tik jei:
- Jūs išlaikote atgalinę suderinamumą su senais skriptais, esamomis atsarginių kopijų atkūrimo procedūromis arba programinės įrangos įrenginiais, kurie nepateikia XZ išskleidimo įrankio.
7. Dažnai užduodami klausimai (DUK)
Q1. Kuris formatas suteikia mažiausią archyvo dydį? XZ nuosekliai sukuria mažiausią archyvo dydį iš trijų dėl didesnių LZMA2 žodynų langų.
Q2. Ar XZ lėtesnis nei GZIP išskleidžiant failus? XZ yra tik šiek tiek lėtesnis nei GZIP išskleidžiant, tačiau jis yra žymiai greitesnis nei BZIP2.
Q3. Ar GZIP ir XZ gali pasinaudoti kelių CPU branduolių? XZ palaiko natūralų daugiagijį veikimą naudojant -T0 vėliavą, o GZIP gali būti paralelizuotas per branduolius naudojant pigz įrankį.
Q4. Kodėl Linux distribucijos atsisako BZIP2? Distribucijos daugiausia atsisakė BZIP2, nes XZ suspaudžia mažesnius archyvus ir išskleidžia greičiau, o GZIP išlieka greitesnis greitiems veiksmams.
Q5. Ar aukštesnis suspaudimo lygis, pvz., -9, daro pastebimą skirtumą? Nustatant lygį -9 vidutiniškai gaunamas tik nedidelis 1% iki 3% dydžio sumažėjimas, tuo tarpu žymiai padidėja CPU ciklų naudojimas ir atminties sąnaudos.