bzip2 | |
---|---|
Type | Datakomprimering |
Udvikler | Seward, Julian |
Skrevet i | Xi |
Operativ system | Cross-platform software |
Første udgave | 18. juli 1996 |
nyeste version | |
Læsbare filformater | bzip2 |
Genererede filformater | bzip2 |
Licens | BSD-licens [1] |
Internet side | sourceware.org/bzip2/ |
bzip2 er et gratis og open source kommandolinjeværktøj til datakomprimering , en implementering af Burrows-Wheeler- algoritmen .
Udviklet og første gang udgivet af Julian Seward i juli 1996 ( version 0.15). Kompressorens stabilitet og popularitet voksede gennem årene, og version 1.0 blev offentliggjort i slutningen af 2000 .
I overensstemmelse med UNIX-traditionen kan bzip2den kun udføre én handling ad gangen: enten komprimere eller dekomprimere, og kun for én fil. Når den er komprimeret bzip2, føjer filtypen " .bz2" til filnavnet. For at pakke flere filer arkiveres de først i en enkelt fil med et hjælpeprogram tarog komprimeres derefter med bzip2. Sådanne arkiver har normalt udvidelsen " .tar.bz2".
bzip2komprimerer de fleste filer mere effektivt, men langsommere end mere traditionelle hjælpeprogrammer gzipeller zip. I denne henseende ligner det andre moderne kompressionsalgoritmer.
bzip2udfører datakomprimering med en betydelig belastning på CPU'en (på grund af dets matematiske apparat). bzip2bruges, hvis der ikke er begrænsninger på komprimeringstid og CPU -belastning , for eksempel til engangspakning af en stor mængde data.
I nogle tilfælde er det bzip2ringere med hensyn til komprimeringseffektivitet end arkivere ( LZMA-7-Zip komprimeringsmetode ) og . Ifølge forfatteren til programmet fra 2005 er kompressionsmetoden ringere i kompressionseffektivitet med 10-15 % [3] i forhold til de bedst kendte metoder på det tidspunkt ( PPM ) [4] , men samtidig 2 gange hurtigere i kompression og 6 gange hurtigere ved udpakning. rarbzip2
Kompressionsmetoden bzip2fungerer således:
Den omtrentlige blokstørrelse kan vælges ved hjælp af kommandolinjeargumenter (" -1" for 100 kilobytes, " -2" for 200 KB, ..., " -9" for 900 KB). Hver blok komprimeres uafhængigt, de komprimerede blokke skrives sekventielt efter hinanden, i begyndelsen af hver bruges en 48-bit sekvens - det magiske tal 0x314159265359 (i ASCII-kodning, når det er justeret til en byte-grænse, vises det som " 1AY & SY"), det vil sige at skrive de første decimalcifre i tallet π i BCD [5] . Slutningen af filen er markeret med 48-bit konstanten 0x177245385090, som er kvadratroden af pi. I begyndelsen af bzip2-filer bruges følgende header: to-byte-signaturen "BZ", derefter en indikation af entropikomprimeringsmetoden - "h" (Huffman) og blokstørrelsen (decimaltal fra 0 til 9).
Ved at bruge uafhængig komprimering af individuelle blokke er implementeringer af parallelle komprimering eller dekompressionsformater mulige (dekomprimering kan kræve et offset-indeks for hver blok) [6] .
Eksempler på brug bzip2.
# Kommando til at komprimere filen "fil" bzip2 fil # eller bzip2 --komprimer filen # Kommando til at udpakke filen "file.bz2" bzip2 -d file.bz2 # eller bzip2 --dekomprimer fil.bz2 # eller bunzip2 file.bz2 # bunzip2 - kopi af bzip2 eller link til bzip2Kommandolinjeargumenterne er bzip2grundlæggende de samme som for gzip.
# Kommando til at udpakke et tar-arkiv komprimeret med bzip2 bzip2 -cd file.tar.bz2 | tar -xvf - # eller bzip2 --stdout --decompress file.tar.bz2 \ | tar --extract --verbose --file- # Kommando til at oprette et tar-arkiv komprimeret med bzip2 tar -cvf - filer | bzip2 -9 > file.tar.bz2 # eller tar --create --verbose --file - filer \ | bzip2 -9 > file.tar.bz2GNU- versionen tarunderstøtter flaget " -j" (" --bzip2"), som tillader oprettelse og udpakning af " tar.bz2 "-filer uden brug af I/O-omdirigeringer ( pipeline ) . Eksempel:
# Pakning af data i et tar-arkiv og bzip2-komprimering med GNU tar tar -cvjf file.tar.bz2 liste_over_filer # eller tar --create --verbose --bzip2 --fil fil.tar.bz2 liste_over_filer # Pak et tar-arkiv komprimeret med bzip2 ved hjælp af GNU tar tar -xvjf file.tar.bz2 # eller tar --extract --verbose --bzip2 --fil fil.tar.bz2Moderne versioner af GNU tarkan automatisk bestemme datakomprimeringsmetoden, og derfor kan flaget " -j" (" --bzip2") udelades. Eksempel:
tar -xvf file.tar.bz2 # eller tar --extract --verbose --fil fil.tar.bz2Derudover er der et sæt værktøjer til at søge, vise, gendanne og sammenligne data i formatet bzip2:
bzip2 | |
---|---|
Udvidelse | .bz2 |
Underskrift | BZh |
Udvikler | Seward, Julian |
Seneste udgivelse | |
Formattype | Datakomprimering |
åbent format ? | Ja: BSD-licens |
Internet side | sourceware.org/bz… ( engelsk) |
Arkivet " .bz2" indeholder en strøm ( engelsk strøm ) af komprimerede data. Ordet "stream" bruges, fordi dataene ikke kan adskilles logisk, og datablokkene komprimeres uafhængigt af hinanden. De komprimerede data består af følgende felter:
Feltnavn | Feltstørrelse i bits | Beskrivelse |
---|---|---|
.magi | 16 | BZ — konstant , signatur , magisk tal . |
.version | otte | En byte, der koder for versionsnummeret. 0 Version 1 (bzip1). Udgået, ikke brugt. h Version 2 (bzip2). "h" fra engelsk. huffman kodning . |
.hundred_k_blocksize | otte | Størrelsen af den ukomprimerede datablok i hundredvis af kilobytes . 1 Et hundrede KB (100 KB). 2 To hundrede KB (200 KB). … Og så videre 9 Ni hundrede KB (900 KB). |
.compressed_magic | 48 | 0x314159265359 - konstant , tallet π , skrevet i binært kodet decimalkode (BCD). |
.crc | 32 | Kontrolsummen beregnet for den aktuelle blok. |
.randomiseret | en | 0 normal 1 med tilføjet tilfældighed (forældet) |
.origPtr | 24 | start pointer til BWT -array efter konvertering |
.huffman_used_map | 16 | bitmaskeintervaller på 16 bytes, "tilgængelig" / "mangler" |
.huffman_used_bitmaps | 0..256 | bitmaske af anvendte tegn, "tilgængelig"/"mangler" (multiple af 16) |
.huffman_groups | 3 | Et tal mellem 2 og 6, antallet af Huffman- borde i brug . |
.selectors_used | femten | Et tal, der angiver, hvor mange gange Huffman- tabellen er blevet ændret (hver 50. byte). |
*.selector_list | 1..6 | bitsekvenser polstret med nul bit (0..62) for Huffman-tabeller efter MTF (*selectors_used) |
.start_huffman_length | 5 | 0..20 initial bitlængder for Huffman deltaer |
*.delta_bit_længde | 1..40 |
0
næste tegn
1
ændre længde
{ 1=> formindsk længden med 1; 0=> øge længden med 1} (*(symboler+2)*grupper) |
.indhold | 2...∞ | Datastrøm kodet med Huffman-tabeller. Fortsætter indtil slutningen af blokken. Den maksimale længde er 7.372.800 bits . |
.eos_magic | 48 | 0x177245385090 er en konstant , kvadratroden af π (sqrt(pi)) i binært kodet decimal (BCD). |
.crc | 32 | Kontrolsum beregnet for hele strømmen. |
.polstring | 0..7 | Ubrugte bits (0 til 7). Formål: at øge arkivstørrelsen til et multiplum af én byte (8 bit ) ( datajustering ). |
Den maksimale ukomprimerede blokstørrelse for det klassiske format er 900 kilobytes . Hvis blokken består af et gentaget tegn, vil blokken efter RLE -kodning tage omkring 46 megabytes ( 45 899 236 bytes ), og efter alle operationer vil filstørrelsen .bz2være 46 bytes . Hvis den gentagne tegnkode er 251, vil filstørrelsen .bz2være 40 bytes , og komprimeringsforholdet vil være 1.147.480,9:1.
Arkivere og kompressorer | |
---|---|
åben og fri | |
Ledig | |
Kommerciel | |
Kommandolinje |
Arkivformater _ | |
---|---|
Kun arkivering | |
Kun kompression | |
Arkivering og komprimering | |
Softwarepakning og distribution |