bzip2 | |
---|---|
Tyyppi | Tietojen pakkaus |
Kehittäjä | Seward, Julian |
Sisään kirjoitettu | Xi |
Käyttöjärjestelmä | Monialustainen ohjelmisto |
Ensimmäinen painos | 18. heinäkuuta 1996 |
uusin versio |
|
Luettavat tiedostomuodot | bzip2 |
Luodut tiedostomuodot | bzip2 |
Lisenssi | BSD-lisenssi [1] |
Verkkosivusto | sourceware.org/bzip2/ |
bzip2 on ilmainen ja avoimen lähdekoodin komentorivityökalu tietojen pakkaamiseen , Burrows -Wheeler- algoritmin toteutus .
Julian Seward on kehittänyt ja julkaissut ensimmäisen kerran heinäkuussa 1996 ( versio 0.15). Kompressorin vakaus ja suosio kasvoivat vuosien varrella, ja versio 1.0 julkaistiin vuoden 2000 lopulla .
UNIX-perinteen mukaisesti se bzip2voi suorittaa vain yhden toiminnon kerrallaan: joko pakata tai purkaa ja vain yhdelle tiedostolle. bzip2Pakattuna lisää tiedostonimeen laajennuksen " .bz2". Jos haluat pakata useita tiedostoja, ne arkistoidaan ensin yhdeksi tiedostoksi apuohjelmalla tarja pakataan sitten bzip2. Tällaisilla arkistoilla on yleensä tunniste " .tar.bz2".
bzip2pakkaa useimmat tiedostot tehokkaammin, mutta hitaammin kuin perinteiset apuohjelmat gziptai zip. Tässä suhteessa se on samanlainen kuin muut nykyaikaiset pakkausalgoritmit.
bzip2suorittaa tietojen pakkaamisen kuormittamalla prosessoria merkittävästi (matemaattisen laitteensa vuoksi). bzip2käytetään, jos pakkausajalla ja prosessorin kuormituksella ei ole rajoituksia, esimerkiksi suuren tietomäärän kertakäyttöön .
Joissakin tapauksissa se on bzip2pakkausteholtaan huonompi kuin arkistointilaitteet ( LZMA7-Zip -pakkausmenetelmä ) ja . Vuoden 2005 ohjelman kirjoittajan mukaan pakkausmenetelmä on kompressioteholtaan 10-15 % huonompi [3] verrattuna parhaisiin tuolloin tunnetuihin menetelmiin ( PPM ) [4] , mutta samalla 2 kertaa nopeampi puristus ja 6 kertaa nopeampi pakkauksesta purettaessa. rarbzip2
Pakkausmenetelmä bzip2toimii näin:
Likimääräinen lohkokoko voidaan valita komentoriviargumenteilla (" -1" 100 kilotavulle, " -2" 200 kt:lle, ..., " -9" 900 kt:lle). Jokainen lohko pakataan itsenäisesti, pakatut lohkot kirjoitetaan peräkkäin peräkkäin, jokaisen alussa käytetään 48-bittistä sekvenssiä - maaginen numero 0x314159265359 (ASCII-koodauksessa, kun se on kohdistettu tavurajaan, se näytetään muodossa " 1AY & SY"), eli luvun π ensimmäisten desimaalilukujen kirjoittaminen BCD -muodossa [5] . Tiedoston loppu on merkitty 48-bittisellä vakiolla 0x177245385090, joka on pi:n neliöjuuri. Bzip2-tiedostojen alussa käytetään seuraavaa otsikkoa: kaksitavuinen allekirjoitus "BZ", sitten osoitus entropian pakkausmenetelmästä - "h" (Huffman) ja lohkon koko (desimaaliluku 0-9).
Käyttämällä yksittäisten lohkojen itsenäistä pakkausta, rinnakkaispakkaus- tai purkumuotototeutukset ovat mahdollisia (pakkauksen purkaminen voi vaatia kullekin lohkolle offset-indeksin) [6] .
Käyttöesimerkkejä bzip2.
# Komento pakata tiedosto "tiedosto" bzip2-tiedosto # tai bzip2 -- pakkaa tiedosto # Komento purkaa tiedosto "file.bz2" bzip2 -d tiedosto.bz2 # tai bzip2 -- pura tiedosto.bz2 # tai bunzip2 tiedosto.bz2 # bunzip2 - kopio bzip2:sta tai linkki bzip2:eenKomentoriviargumentit ovat bzip2periaatteessa samat kuin gzip.
# Komento purkaa bzip2:lla pakatun tar-arkiston bzip2 -cd file.tar.bz2 | tar -xvf - # tai bzip2 --stdout --decompress file.tar.bz2 \ | tar --extract --verbose --file- # Komento luoda tar-arkisto, joka on pakattu bzip2 tar -cvf -tiedostoilla | bzip2 -9 > file.tar.bz2 # tai tar --create --verbose --file - files \ | bzip2 -9 > tiedosto.tar.bz2GNU - versio tartukee " -j" ( " " ) - lippua , joka mahdollistaa " tar.bz2--bzip2 " - tiedostojen luomisen ja purkamisen ilman I / O - uudelleenohjauksia ( liukuhihna ) . Esimerkki:
# Tietojen pakkaaminen tar-arkistoon ja bzip2-pakkaus GNU tar:lla tar -cvjf tiedosto.tar.bz2 tiedostojen_luettelo # tai tar --create --verbose --bzip2 --file file.tar.bz2 list_of_fies # Pura bzip2:lla pakattu tar-arkisto GNU tar:lla tar -xvjf tiedosto.tar.bz2 # tai tar --extract --verbose --bzip2 --file file.tar.bz2GNU:n nykyaikaiset versiot tarvoivat automaattisesti määrittää tietojen pakkausmenetelmän, joten " -j" (" --bzip2") -lippu voidaan jättää pois. Esimerkki:
tar -xvf file.tar.bz2 # tai tar --extract --verbose --file file.tar.bz2Lisäksi on joukko apuohjelmia tietojen etsimiseen, näyttämiseen, palauttamiseen ja vertailuun muodossa bzip2:
bzip2 | |
---|---|
Laajennus | .bz2 |
Allekirjoitus | BZh |
Kehittäjä | Seward, Julian |
Viimeisin julkaisu |
|
Muototyyppi | Tietojen pakkaus |
avoin muoto ? | Kyllä: BSD-lisenssi |
Verkkosivusto | sourceware.org/bz… ( englanti) |
Arkisto " .bz2" sisältää virran ( englanninkielinen stream ) pakattua dataa. Sanaa "virta" käytetään, koska dataa ei voida erottaa loogisesti ja tietolohkot pakataan toisistaan riippumatta. Pakatut tiedot koostuvat seuraavista kentistä:
Kenttä nimi | Kentän koko bitteinä | Kuvaus |
---|---|---|
.taika | 16 | BZ — vakio , allekirjoitus , maaginen numero . |
.versio | kahdeksan | Tavu, joka koodaa versionumeron. 0 Versio 1 (bzip1). Vanhentunut, ei käytetty. h Versio 2 (bzip2). "h" englannista. huffman koodaus . |
.hundred_k_blocksize | kahdeksan | Pakkaamattoman datalohkon koko sadoissa kilotavuissa . 1 Sata kilotavua (100 kt). 2 Kaksisataa kilotavua (200 kt). … Ja niin edelleen 9 900 kt (900 kt). |
.compressed_magic | 48 | 0x314159265359 - vakio , luku π kirjoitettuna binäärikoodatulla desimaalikoodilla (BCD). |
.crc | 32 | Nykyiselle lohkolle laskettu tarkistussumma . |
.satunnaistettu | yksi | 0 normaali 1 lisätty satunnaisuus (poistettu käytöstä) |
.origPtr | 24 | aloita osoitin BWT -taulukkoon muuntamisen jälkeen |
.huffman_used_map | 16 | bittimaskialueet 16 tavua, "käytettävissä" / "puuttuu" |
.huffman_used_bitmaps | 0...256 | käytettyjen merkkien bittimaski, "saatavilla"/"puuttuu" (useita 16:sta) |
.huffman_groups | 3 | Numero väliltä 2–6, käytössä olevien Huffman - taulukoiden määrä . |
.selectors_used | viisitoista | Numero, joka ilmaisee kuinka monta kertaa Huffman - taulukkoa on muutettu (50 tavun välein). |
*.selector_list | 1...6 | Nollabitillä (0..62) täytetyt bittisekvenssit Huffman-taulukoille MTF :n jälkeen (*selectors_used) |
.start_huffman_length | 5 | 0...20 alkubitin pituutta Huffman-deltoilla |
*.delta_bit_length | 1...40 |
0
seuraava hahmo
1
muuta pituutta
{ 1=> pienennä pituutta yhdellä; 0=> lisää pituutta 1} (*(symbolit+2)*ryhmät) |
.sisällys | 2...∞ | Huffman-taulukoilla koodattu tietovirta. Jatkuu lohkon loppuun asti. Enimmäispituus on 7 372 800 bittiä . |
.eos_magic | 48 | 0x177245385090 on vakio , π :n neliöjuuri (sqrt(pi)) binäärikoodatussa desimaaliluvussa (BCD). |
.crc | 32 | Koko streamille laskettu tarkistussumma. |
.täyte | 0...7 | Käyttämättömät bitit (0 - 7). Tarkoitus: arkiston koon kasvattaminen yhden tavun (8 bittiä ) kerrannaiseksi ( tietojen kohdistus ). |
Klassisen muodon pakkaamattoman lohkon enimmäiskoko on 900 kilotavua . Jos lohko koostuu yhdestä toistuvasta merkistä, lohko vie RLE -koodauksen jälkeen noin 46 megatavua (45 899 236 tavua ), ja kaikkien toimintojen jälkeen tiedostokoko on 46 tavua . Jos toistuva merkkikoodi on 251, tiedoston koko on 40 tavua ja pakkaussuhde 1 147 480,9:1. .bz2.bz2
Arkistaattorit ja kompressorit | |
---|---|
avoin ja ilmainen |
|
Vapaa | |
kaupallinen | |
Komentorivi |
Arkiston muodot | |
---|---|
Vain arkistointi | |
Vain pakkaus | |
Arkistointi ja pakkaus | |
Ohjelmistojen pakkaus ja jakelu |