bzip2 | |
---|---|
Tip de | Comprimarea datelor |
Dezvoltator | Seward, Julian |
Scris in | Xi |
Sistem de operare | Software multiplatformă |
Prima editie | 18 iulie 1996 |
ultima versiune | |
Formate de fișiere care pot fi citite | bzip2 |
Formate de fișiere generate | bzip2 |
Licență | Licență BSD [1] |
Site-ul web | sourceware.org/bzip2/ |
bzip2 este un utilitar de linie de comandă gratuit și open source pentru comprimarea datelor , o implementare a algoritmului Burrows-Wheeler .
Dezvoltat și publicat pentru prima dată de Julian Seward în iulie 1996 ( versiunea 0.15). Stabilitatea și popularitatea compresorului au crescut de-a lungul anilor, iar versiunea 1.0 a fost publicată la sfârșitul anului 2000 .
În conformitate cu tradiția UNIX , bzip2poate efectua o singură operație la un moment dat: fie comprimare, fie decomprimare și pentru un singur fișier. Când este comprimat bzip2, adaugă extensia „ .bz2” la numele fișierului. Pentru a împacheta mai multe fișiere, acestea sunt mai întâi arhivate într-un singur fișier cu un utilitar tarși apoi comprimate cu bzip2. Astfel de arhive au de obicei extensia " .tar.bz2".
bzip2comprimă majoritatea fișierelor mai eficient, dar mai lent decât utilitățile tradiționale gzipsau zip. În acest sens, este similar cu alți algoritmi moderni de compresie.
bzip2efectuează compresia datelor cu o încărcare semnificativă pe CPU (datorită aparatului său matematic). bzip2sunt utilizate dacă nu există restricții privind timpul de compresie și încărcarea procesorului , de exemplu, pentru ambalarea unică a unei cantități mari de date.
În unele cazuri, este bzip2inferior în ceea ce privește eficiența compresiei față de arhivatorii ( 7-Zipmetoda de compresie LZMA ) și rar. Potrivit autorului programului din 2005, metoda de compresie este bzip2inferioară ca eficiență a compresiei cu 10-15% [3] față de cele mai bune metode cunoscute la acea vreme ( PPM ) [4] , dar în același timp de 2 ori mai rapidă în compresie și de 6 ori mai rapidă la despachetare.
Metoda de compresie bzip2funcționează astfel:
Dimensiunea aproximativă a blocului poate fi selectată folosind argumente de linie de comandă (" -1" pentru 100 kiloocteți, " -2" pentru 200 KB, ..., " -9" pentru 900 KB). Fiecare bloc este comprimat independent, blocurile comprimate sunt scrise secvențial unul după altul, la începutul fiecăruia se folosește o secvență de 48 de biți - numărul magic 0x314159265359 (în codificarea ASCII, când este aliniat la granița unui octet, este afișat ca " 1AY & SY"), adică scrierea primelor cifre zecimale ale numărului π în format BCD [5] . Sfârșitul fișierului este marcat cu constanta de 48 de biți 0x177245385090, care este rădăcina pătrată a lui pi. La începutul fișierelor bzip2, se folosește următorul antet: semnătura pe doi octeți „BZ”, apoi o indicație a metodei de compresie a entropiei - „h” (Huffman) și dimensiunea blocului (număr zecimal de la 0 la 9).
Prin utilizarea compresiei independente a blocurilor individuale, sunt posibile implementări de format de compresie paralelă sau decompresie (decompresia poate necesita un index de offset pentru fiecare bloc) [6] .
Exemple de utilizare bzip2.
# Comanda pentru comprimarea fișierului „fișier” fișier bzip2 # sau bzip2 --comprimați fișierul # Comanda pentru despachetarea fișierului „file.bz2” bzip2 -d fișier.bz2 # sau bzip2 --decompress file.bz2 # sau bunzip2 fișier.bz2 # bunzip2 - copie a bzip2 sau link la bzip2Argumentele liniei de comandă sunt bzip2practic aceleași ca pentru gzip.
# Comandă pentru a despacheta o arhivă tar comprimată cu bzip2 bzip2 -cd file.tar.bz2 | tar -xvf - # sau bzip2 --stdout --decompress file.tar.bz2 \ | tar --extract --verbose --file- # Comanda pentru a crea o arhivă tar comprimată cu bzip2 tar -cvf - fișiere | bzip2 -9 > file.tar.bz2 # sau tar --create --verbose --file - files \ | bzip2 -9 > fișier.tar.bz2Versiunea GNU tar acceptă marcajul " -j" (" --bzip2"), care permite crearea și despachetarea fișierelor " tar.bz2 " fără utilizarea redirecționărilor I/O ( pipeline ) . Exemplu:
# Ambalarea datelor într-o arhivă tar și compresia bzip2 cu tar GNU tar -cvjf file.tar.bz2 list_of_files # sau tar --create --verbose --bzip2 --file file.tar.bz2 list_of_files # Despachetați o arhivă tar comprimată cu bzip2 folosind GNU tar tar -xvjf fișier.tar.bz2 # sau tar --extract --verbose --bzip2 --file file.tar.bz2Versiunile moderne de GNU tarpot determina automat metoda de comprimare a datelor și, prin urmare, indicatorul -j„ „ --bzip2„ poate fi omis. Exemplu:
tar -xvf file.tar.bz2 # sau tar --extract --verbose --file file.tar.bz2În plus, există un set de utilitare pentru căutarea, afișarea, restaurarea și compararea datelor în formatul bzip2:
bzip2 | |
---|---|
Extensie | .bz2 |
Semnătură | BZh |
Dezvoltator | Seward, Julian |
Ultima lansare | |
Tip de format | Comprimarea datelor |
format deschis ? | Da: licență BSD |
Site-ul web | sourceware.org/bz… ( engleză) |
Arhiva „ .bz2” conține un flux ( stream în engleză ) de date comprimate. Cuvântul „flux” este folosit deoarece datele nu pot fi separate logic și blocurile de date sunt comprimate independent unul de celălalt. Datele comprimate constau din următoarele câmpuri:
Numele domeniului | Dimensiunea câmpului în biți | Descriere |
---|---|---|
.magie | 16 | BZ — constantă , semnătură , număr magic . |
.versiune | opt | Un octet care codifică numărul versiunii. 0 Versiunea 1 (bzip1). Depreciat, nefolosit. h Versiunea 2 (bzip2). „h” din engleză. codificare huffman . |
.sute_k_dimensiuni | opt | Dimensiunea blocului de date necomprimat în sute de kiloocteți . 1 O sută de KB (100 KB). 2 Două sute KB (200 KB). … Si asa mai departe 9 Nouă sute KB (900 KB). |
.magie_comprimată | 48 | 0x314159265359 - constantă , numărul π , scris în cod zecimal binar (BCD). |
.crc | 32 | Suma de control calculată pentru blocul curent. |
.randomizat | unu | 0 normal 1 cu caracter aleatoriu adăugat (depreciat) |
.origPtr | 24 | indicatorul de pornire către matricea BWT după conversie |
.huffman_used_map | 16 | intervale de masca de biți de 16 octeți, „disponibil” / „lipsă” |
.huffman_used_bitmaps | 0..256 | masca de biți a caracterelor utilizate, „disponibil”/„lipsă” (multiplu din 16) |
.huffman_groups | 3 | Un număr între 2 și 6, numărul de mese Huffman utilizate . |
.selectoare_utilizate | cincisprezece | Un număr care indică de câte ori a fost schimbat tabelul Huffman (la fiecare 50 de octeți). |
*.listă_selector | 1..6 | secvențe de biți umplute cu zero biți (0..62) pentru tabelele Huffman după MTF (*selectors_used) |
.start_huffman_length | 5 | 0..20 lungimi inițiale de biți pentru deltele Huffman |
*.delta_bit_length | 1..40 |
0
următorul personaj
1
schimba lungimea
{ 1 => micșora lungimea cu 1; 0 => crește lungimea cu 1} (*(simboluri+2)*grupuri) |
.conținut | 2..∞ | Flux de date codificat cu tabele Huffman. Continuă până la sfârșitul blocului. Lungimea maximă este de 7.372.800 de biți . |
.eos_magic | 48 | 0x177245385090 este o constantă , rădăcina pătrată a lui π (sqrt(pi)) în zecimală codificată binar (BCD). |
.crc | 32 | Sumă de control calculată pentru întregul flux. |
.captuseala | 0..7 | Biți neutilizați (de la 0 la 7). Scop: creșterea dimensiunii arhivei la un multiplu de un octet (8 biți ) ( alinierea datelor ). |
Dimensiunea maximă a blocului necomprimat pentru formatul clasic este de 900 kiloocteți . Dacă blocul constă dintr-un caracter repetat, după codificarea RLE blocul va lua aproximativ 46 de mega octeți (45 899 236 de octeți ), iar după toate operațiunile dimensiunea fișierului .bz2va fi de 46 de octeți . Dacă codul de caractere repetat este 251, dimensiunea fișierului .bz2va fi de 40 de octeți , iar raportul de compresie va fi de 1.147.480,9:1.
Arhivatoare și compresoare | |
---|---|
deschis si liber | |
Gratuit | |
Comercial | |
Linie de comanda |
Formate de arhivare | |
---|---|
Doar arhivare | |
Doar compresie | |
Arhivare și compresie | |
Ambalare și distribuție software |