bzip2 | |
---|---|
Sorts | Datakomprimering |
Utvecklaren | Seward, Julian |
Skrivet i | Xi |
Operativ system | Programvara för flera plattformar |
Första upplagan | 18 juli 1996 |
senaste versionen | |
Läsbara filformat | bzip2 |
Genererade filformat | bzip2 |
Licens | BSD-licens [1] |
Hemsida | sourceware.org/bzip2/ |
bzip2 är ett gratis kommandoradsverktyg med öppen källkod för datakomprimering , en implementering av Burrows-Wheeler- algoritmen .
Utvecklad och först publicerad av Julian Seward i juli 1996 ( version 0.15). Kompressorns stabilitet och popularitet växte under åren, och version 1.0 publicerades i slutet av 2000 .
I enlighet med UNIX-traditionen kan bzip2den bara utföra en operation åt gången: antingen komprimera eller dekomprimera, och endast för en fil. När den är komprimerad bzip2läggs tillägget " .bz2" till filnamnet. För att packa flera filer arkiveras de först till en enda fil med ett verktyg taroch komprimeras sedan med bzip2. Sådana arkiv har vanligtvis tillägget " .tar.bz2".
bzip2komprimerar de flesta filer mer effektivt, men långsammare än mer traditionella verktyg gzipeller zip. I detta avseende liknar den andra moderna komprimeringsalgoritmer.
bzip2utför datakomprimering med en betydande belastning på CPU :n (på grund av dess matematiska apparat). bzip2används om det inte finns några begränsningar för komprimeringstid och CPU- belastning , till exempel för engångspaketering av en stor mängd data.
I vissa fall är det bzip2sämre när det gäller komprimeringseffektivitet än arkiverare ( LZMA-7-Zip komprimeringsmetod ) och . Enligt författaren till programmet från 2005 är kompressionsmetoden sämre i kompressionseffektivitet med 10-15 % [3] jämfört med de bästa metoderna som var kända vid den tiden ( PPM ) [4] , men samtidigt 2 gånger snabbare i kompression och 6 gånger snabbare vid uppackning. rarbzip2
Kompressionsmetoden bzip2fungerar så här:
Den ungefärliga blockstorleken kan väljas med kommandoradsargument (" -1" för 100 kilobyte, " -2" för 200 KB, ..., " -9" för 900 KB). Varje block komprimeras oberoende, de komprimerade blocken skrivs sekventiellt efter varandra, i början av varje används en 48-bitars sekvens - det magiska numret 0x314159265359 (i ASCII-kodning, när det är justerat till en bytegräns, visas det som " 1AY & SY"), det vill säga att skriva de första decimalsiffrorna i talet π i BCD [5] . Slutet av filen är markerad med 48-bitars konstanten 0x177245385090, vilket är kvadratroten ur pi. I början av bzip2-filer används följande rubrik: tvåbytessignaturen "BZ", sedan en indikation på entropikomprimeringsmetoden - "h" (Huffman) och blockstorleken (decimaltal från 0 till 9).
Genom att använda oberoende komprimering av enskilda block är implementeringar av parallellkomprimering eller dekompressionsformat möjliga (dekomprimering kan kräva ett offsetindex för varje block) [6] .
Användningsexempel bzip2.
# Kommando för att komprimera filen "fil" bzip2-fil # eller bzip2 --komprimera filen # Kommando för att packa upp filen "file.bz2" bzip2 -d file.bz2 # eller bzip2 --dekomprimera file.bz2 # eller bunzip2 file.bz2 # bunzip2 - kopia av bzip2 eller länk till bzip2Kommandoradsargumenten är bzip2i princip desamma som för gzip.
# Kommando för att packa upp ett tar-arkiv komprimerat med bzip2 bzip2 -cd file.tar.bz2 | tar -xvf - # eller bzip2 --stdout --dekomprimera file.tar.bz2 \ | tar --extract --verbose --file- # Kommando för att skapa ett tar-arkiv komprimerat med bzip2 tar -cvf - filer | bzip2 -9 > file.tar.bz2 # eller tar --create --verbose --file - filer \ | bzip2 -9 > file.tar.bz2GNU -versionen stöder flaggan " " (" "), som tillåter skapande och uppackning av " tar.bz2 "-filer utan att använda I/O-omdirigeringar ( pipeline ) . Exempel: tar-j--bzip2
# Packa data i ett tar-arkiv och bzip2-komprimering med GNU tar tar -cvjf file.tar.bz2 list_of_files # eller tar --create --verbose --bzip2 --fil file.tar.bz2 list_of_files # Packa upp ett tar-arkiv komprimerat med bzip2 med GNU tar tar -xvjf file.tar.bz2 # eller tar --extract --verbose --bzip2 --fil file.tar.bz2Moderna versioner av GNU tarkan automatiskt bestämma datakomprimeringsmetoden, och därför kan flaggan " -j" (" ") utelämnas. --bzip2Exempel:
tar -xvf file.tar.bz2 # eller tar --extract --verbose --fil file.tar.bz2Dessutom finns det en uppsättning verktyg för att söka, visa, återställa och jämföra data i formatet bzip2:
bzip2 | |
---|---|
Förlängning | .bz2 |
Signatur | BZh |
Utvecklaren | Seward, Julian |
Senaste släppningen | |
Formattyp | Datakomprimering |
öppet format ? | Ja: BSD-licens |
Hemsida | sourceware.org/bz... ( engelska) |
Arkivet " .bz2" innehåller en ström ( engelsk ström ) av komprimerad data. Ordet "ström" används eftersom data inte kan separeras logiskt och datablocken komprimeras oberoende av varandra. Den komprimerade datan består av följande fält:
Fält namn | Fältstorlek i bitar | Beskrivning |
---|---|---|
.magi | 16 | BZ — konstant , signatur , magiskt tal . |
.version | åtta | En byte som kodar versionsnumret. 0 Version 1 (bzip1). Utfasad, ej använd. h Version 2 (bzip2). "h" från engelska. huffman kodning . |
.hundred_k_blocksize | åtta | Storleken på det okomprimerade datablocket i hundratals kilobyte . 1 Hundra KB (100 KB). 2 Tvåhundra KB (200 KB). … Och så vidare 9 Niohundra KB (900 KB). |
.compressed_magic | 48 | 0x314159265359 - konstant , talet π , skrivet i binärkodad decimalkod (BCD). |
.crc | 32 | Kontrollsumman beräknad för det aktuella blocket. |
.randomiserat | ett | 0 vanligt 1 med tillagd slumpmässighet (utfasad) |
.origPtr | 24 | startpekare till BWT- array efter konvertering |
.huffman_used_map | 16 | bitmaskintervall på 16 byte, "tillgänglig" / "saknad" |
.huffman_used_bitmaps | 0..256 | bitmask av tecken som används, "tillgänglig"/"saknas" (multipel av 16) |
.huffman_groups | 3 | Ett nummer mellan 2 och 6, antalet Huffman- bord som används . |
.selectors_used | femton | En siffra som anger hur många gånger Huffman- tabellen har ändrats (var 50:e byte). |
*.selector_list | 1..6 | bitsekvenser utfyllda med noll bitar (0..62) för Huffman-tabeller efter MTF (*selectors_used) |
.start_huffman_length | 5 | 0..20 initiala bitlängder för Huffman delta |
*.delta_bit_length | 1..40 |
0
nästa karaktär
1
ändra längd
{ 1=> minska längden med 1; 0=> öka längden med 1} (*(symboler+2)*grupper) |
.innehåll | 2...∞ | Dataström kodad med Huffman-tabeller. Fortsätter till slutet av blocket. Den maximala längden är 7 372 800 bitar . |
.eos_magic | 48 | 0x177245385090 är en konstant , kvadratroten ur π (sqrt(pi)) i binärt kodad decimal (BCD). |
.crc | 32 | Kontrollsumma beräknad för hela strömmen. |
.stoppning | 0...7 | Oanvända bitar (0 till 7). Syfte: öka arkivstorleken till en multipel av en byte (8 bitar ) ( datajustering ). |
Den maximala okomprimerade blockstorleken för det klassiska formatet är 900 kilobyte . Om blocket består av ett upprepat tecken, efter RLE -kodning kommer blocket att ta cirka 46 megabyte ( 45 899 236 byte ), och efter alla operationer kommer filstorleken att vara 46 byte . Om den upprepade teckenkoden är 251 kommer filstorleken att vara 40 byte och komprimeringsförhållandet blir 1 147 480,9:1. .bz2.bz2
Arkiveringsmaskiner och kompressorer | |
---|---|
öppet och gratis | |
Fri | |
Kommersiell | |
Kommandorad |
Arkivformat _ | |
---|---|
Endast arkivering | |
Endast kompression | |
Arkivering och komprimering | |
Programvarupaketering och distribution |