Viimeksi päivitetty: 20 elokuu, 2026

GZIP vs BZIP2 vs XZ: Mikä Linux-pakkausmuoto on paras?
Olipa kyseessä päivittäisten tietokantavarmuuksien pakkaaminen, monigigatavuisen web-palvelimen lokien kierrättäminen tai käännettyjen binäärien jakelu tuhansille solmuille, pakkaus on jokapäiväinen todellisuus Linux-hallinnassa.
Kun kutsut tar-komentoa tai käsittelet suoratoistodataa vakiosyötteen kautta, kohtaat tyypillisesti kolme vakiotyökalua: GZIP (.gz), BZIP2 (.bz2), ja XZ (.xz).
Vaikka kaikki kolme työkalua pyrkivät pakkaamaan raakabittejä tiiviisiin arkistoihin, ne tekevät perustavanlaatuisesti erilaisia insinööri‑kompromisseja pakkaussuhteen, CPU‑suorituksen ja muistin käytön välillä. Väärän formaatin valitseminen voi hiljaisesti muodostaa pullonkaulan automatisoiduille käyttöönottoillesi, viivästyttää aikataulutettuja varmuuskopiointiaikoja tai tuhlata arvokasta tallennustilaa ajan myötä.
Tämä opas purkaa, miten kukin formaatti toimii sisäisesti, miten ne suoriutuvat realistisissa työkuormissa ja miten valita oikea vaihtoehto infrastruktuurillesi.
1. Nopeat tekniset profiilit: Kolme kilpailijaa
GZIP (GNU Zip)
- Taustalla oleva algoritmi: DEFLATE (yhdistelmä LZ77- ja Huffman-koodauksesta)
- Oletuslaajennus:
.tar.gz,.tgz,.gz - Julkaisuaika: 1992 (luotu Jean-loup Gaillyn ja Mark Adlerin toimesta patenttivapaana vaihtoehtona
compress-ohjelmalle) - Keskeinen etu: Ylivoimaton suoritusteho ja lähes universaali ekosysteemituki.
- Keskeinen haitta: Alhaisempi pakkaussuhde verrattuna nykyaikaisiin tilastollisiin ja sanakirjapohjaisiin koodereihin.
GZIP on toiminut Unix-ympäristöjen oletusvoimanlähteenä yli kolmen vuosikymmenen ajan. Koska sen DEFLATE-algoritmi toimii pienillä liukuvilla ikkunoilla (32 KB), GZIP vaatii vähäistä muistinkulutusta sekä pakkaamisen että purkamisen aikana.
BZIP2
- Alustava algoritmi: Burrows-Wheeler Transform (BWT) combined with Move-to-Front (MTF) transform and Huffman coding
- Oletuslaajennus:
.tar.bz2,.tbz2,.bz2 - Julkaisuaika: 1996 (created by Julian Seward)
- Keskeinen etu: Paremmat pakkaussuhteet toistuvissa ASCII- ja rakenteellisissa lokitiedostoissa kuin GZIP.
- Keskeinen haitta: Hitaampi kaikilla tasoilla, erityisesti purkamisen aikana, ja suurelta osin vanhentunut uusien algoritmien vuoksi.
BZIP2 käsittelee dataa erillisinä lohkoina (yleensä 900 KB) käyttäen käänteisiä permutaatioita, jotka ryhmittelevät samankaltaiset merkit yhteen ennen koodausta. Vaikka sitä juhlittiin laajasti 1990‑luvun lopulla ja 2000‑luvun alussa GZIP:n tiedostokokojen alittamisesta, sen laskentakustannus on melko korkea.
XZ (LZMA2)
- Alustava algoritmi: LZMA2 (Lempel-Ziv-Markov chain Algorithm, parannettu)
- Oletuslaajennus:
.tar.xz,.txz,.xz - Julkaisuaika: 2009 (esitelty korvaamaan vanhan
lzma-formaatin) - Keskeinen etu: Poikkeuksellisen korkeat pakkaussuhteet ja nopea, kevyt purku.
- Keskeinen haitta: Raskas RAM-muistin käyttö ja pitkä CPU-aika alkuperäisen pakkaamisen aikana.
XZ hyödyntää muuttuvia sanakirjakokoja (usein jopa 32 Mt tai 64 Mt oletuksena) löytääkseen toistuvia tavupatterniä paljon laajemmista data-ikkunoista kuin GZIP. Tämä tekee siitä häikäisevän tehokkaan suurten, redundanttien tiedostojen, kuten käyttöjärjestelmän asennusmedian, ytimen lähdekoodipuun ja laiteohjelmakuvausten, pienentämisessä.
2. Suorituskyvyn vertailumatriisi
Alla oleva taulukko tiivistää kunkin työkalun käytännön suorituskykydynamiikan, kun ajetaan oletusasetuksilla tavallisella palvelinlaitteistolla:
| Mitta / Ulottuvuus | GZIP (-6) | BZIP2 (-9) | XZ (-6) |
|---|---|---|---|
| Pakkaussuhde | Kohtalainen (~65-75% vähennys) | Hyvä (~75-80% vähennys) | Erinomainen (~80-88% vähennys) |
| Pakkausnopeus | Erittäin nopea | Hidas | Erittäin hidas |
| Purkusnopeus | Erittäin nopea | Hidas–kohtalainen | Nopea |
| Pakattu RAM-muistin käyttö | Merkityksetön (~1–2 Mt) | Alhainen (~8–10 Mt) | Korkea (~100–700 Mt+) |
| Purkauksen RAM-muistin käyttö | Merkityksetön (< 1 Mt) | Alhainen (~4 Mt) | Kohtalainen (~10–65 MB) |
| Ensisijainen optimaalinen kohta | Lokit, CI/CD-putket, reaaliaikaiset virrat | Vanhojen arkistojen yhteensopivuus | Pakettivarastot, OS ISO:t, kylmä varastointi |
3. Todellisten benchmarktien havainnot
Ymmärtääksesi, miten nämä työkalut käyttäytyvät realistisessa kuormituksessa, tarkastele edustavaa 1 Gt:n raakaa palvelimen pääsylokia ja pakkaamatonta 500 Mt:n ohjelmiston lähdekoodihakemistoa.
Skenaario A: Suurten lokitiedostojen pakkaaminen (1 Gt teksti)
- GZIP: Valmistuu alle 12 sekunnissa, tuoden arkiston noin 180 Mt:n kokoisena.
- BZIP2: Valmistuu noin 45–50 sekunnissa, pienentäen tiedoston noin 130 Mt:n kokoiseksi.
- XZ: Kestää 80–90 sekuntia oletusasetuksilla, tuottaen arkiston, jonka koko on noin 95 MB.
Skenaario B: Purkutyökuormat
Kriittinen mittari, jota usein ohitetaan, on asymmetria.
- GZIP puretaan 2–3 sekunnissa mikroskooppisella muistinkulutuksella.
- XZ puretaan 4–6 sekunnissa. Vaikka alkuperäinen pakkaus oli hidas,
.xz‑tiedoston purkaminen on lähes yhtä nopeaa kuin.gz‑tiedoston purkaminen. - BZIP2 vaatii noin 25–30 sekuntia pelkästään purkamiseen, koska Burrows‑Wheeler‑muunnoksen kääntäminen on laskennallisesti symmetrinen sen koodaamisen kanssa.
4. Miksi BZIP2 menettää suosiotaan
Nykyisessä infrastruktuurissa BZIP2 on juuttunut kömpelöön keskivaiheeseen:
- GZIP on nopeudessa parempi: Jos prosessoinnin viive tai alhainen CPU‑käyttö on tärkeää, GZIP on merkittävästi nopeampi.
- XZ on tiheydessä parempi: Jos kaistanleveyden säästäminen ja tallennustehokkuus ovat tärkeitä, XZ tuottaa huomattavasti pienempiä arkistoja.
- Häviää puretunopeudessa molemmille: Ohjelmistojen jakelujärjestelmissä asiakkaat kokevat mitattavan CPU-rasituksen purettaessa
.tar.bz2-tiedostoja verrattuna.tar.gz- tai.tar.xz-tiedostoihin.
Tämän seurauksena suurimmat Linux-jakelut (kuten Debian, Arch ja Fedora) ovat siirtäneet viralliset pakettijakelunsa ja kernelin tar-paketit pois BZIP2:sta kohti XZ:ää (ja viime aikoina Zstandardia ajonaikaisiin operaatioihin).
5. Käytännön komentorivin käyttö
Tar-integraatio (Yleisin työnkulku)
GNU tar-ohjelman nykyaikaiset toteutukset tunnistavat automaattisesti pakkausmuodon tiedostopäätteen perusteella, mutta eksplisiittisten lippujen käyttö on edelleen vakiintunutta käytäntöä:
# 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.*
Itsenäinen tiedostopakkaus
Pakata yksittäisiä tiedostoja ilman paketoimista:
# 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
Moniytimijärjestelmien hyödyntäminen
Oletuksena näiden työkalujen yksisäikeiset toteutukset käyttävät vain yhtä CPU-ydintä. Jos pakkaat monigigatavuisia arkistoja nykyaikaisilla moniytimisillä palvelimilla, yksisäikeinen käsittely voi kestää tunteja.
- XZ:n monisäikeisyys: Natiivi tuki
-T- tai--threads-valitsimilla:xz -T0 -k database_dump.sql # Uses all available CPU cores - Rinnakkaistettu GZIP (
pigz): Suora korvike, joka käyttää kaikkia CPU-ytimiä GZIP-toiminnoissa:pigz -k database_dump.sql - Rinnakkaistettu BZIP2 (
pbzip2): Monisäikeinen toteutus BZIP2:lle:pbzip2 -k database_dump.sql
6. Kuinka valita: Käytännön päätösmalli
Valitse työkalusi työnkulun ensisijaisen rajoituksen perusteella:
Käytä GZIPia, jos:
- Olet asettamassa reaaliaikaista virtauspakkausta tai verkkosiirtoa, jossa läpimeno on rajoittava tekijä.
- Hallinnoit automatisoitua lokien kierrätystä (
logrotate) tuotantopalvelimilla, joissa CPU-resurssit on varattava sovellusten kuormitukselle. - Tarvitaan maksimaalinen siirrettävyys perinteisten sulautettujen järjestelmien ja standardi‑peruskuvien välillä.
Käytä XZ:ää, jos:
- Julkaiset julkaisun artefakteja, ytimen koontiversioita, konttien peruskuvia tai staattisia pakettivarastoja, joita kolmannet osapuolet lataavat usein.
- Valmistat pitkäaikaisia kylmiä arkistoja (paikallaan ulkopuolisia viikoittaisia/kuukausittaisia varmuuskopioita), joissa tallennuskustannukset ylittävät kertaluonteisen pakkausajan.
- Tarvitset pieniä tiedostokokoja, mutta käyttäjäsi vaativat silti nopeaa latausta ja nopeaa purkua.
Pidä BZIP2 vain, jos:
- Pidät yllä taaksepäin yhteensopivuutta perinteisten skriptien, olemassa olevien varmuuskunnan palautusrutiinien tai ohjelmistolaitteiden kanssa, jotka eivät tarjoa XZ-purkajaa.
7. Usein kysytyt kysymykset (FAQ)
Q1. Mikä pakkausmuoto tuottaa pienimmän arkistokoon? XZ tuottaa johdonmukaisesti pienimmän arkistokoon kolmesta sen suurempien LZMA2-sanakirjaikkunoiden vuoksi.
Q2. Onko XZ hitaampi kuin GZIP tiedostojen purkamisessa? XZ on vain hieman hitaampi kuin GZIP purkamisessa, mutta se on merkittävästi nopeampi kuin BZIP2.
Q3. Voivatko GZIP ja XZ hyödyntää useita CPU-ytimiä? XZ tukee natiivista monisäikeisyyttä -T0-lipun avulla, kun taas GZIP voidaan rinnakkaistaa ytimiin käyttämällä pigz-työkalua.
Q4. Miksi Linux-jakelut poistavat BZIP2:n? Jakelut ovat pitkälti poistaneet BZIP2:n, koska XZ pakkaa pienemmiksi ja purkaa nopeammin, kun taas GZIP on nopeampi nopeissa toiminnoissa.
Q5. Tekevätkö korkeamman pakkaustason, kuten -9, merkittävän eron? Tason -9 asettaminen tuottaa keskimäärin vain marginaalisen 1 %–3 % koon pienenemisen, samalla kun se lisää merkittävästi CPU-syklien kulutusta ja muistinkulutusta.