BZIP2 archyvas (.bz2)

Bzip2 Standartinis

Bzip2 (BZ2) yra klasikinė, patentų neturinti „Unix" suspaudimo programa ir failo formatas, kurį sukūrė Julianas Sewardas ir kuri naudoja Burrows-Wheeler transformaciją, kad pasiektų žymiai geresnį suspaudimą nei klasikinis Gzip.

Tikrinti ir metaduomenys

Operacinės sistemos ir failų analizatoriai atpažįsta BZ2 failus tikrindami pradinę dvejetainę baitų seką:

Pasirinkite arba nuvilkite failus čia

100% privatus konvertavimas naršyklėje - failai niekada nepalieka jūsų įrenginio

arba įklijuokite Ctrl+V
Nulinio tinklo perdavimo privatumo garantija: 0 baitų įkelta į išorinius serverius. Visas apdorojimas vyko vietoje, jūsų naršyklės smėlio dėžėje (sandbox).

Baitų lygio antraštės parašas (magiškieji baitai)

Operacinės sistemos ir failų analizatoriai atpažįsta BZ2 failus tikrindami pradinę dvejetainę baitų seką:

ŠEŠIOLIKTAINIS PARAŠAS (POSLINKIS 0):

42 5A 68

ASCII ATVAIZDAVIMAS: BZh

Standartizacija: Bzip2 Open Source Standard

Techninės specifikacijos

Konteinerio architektūraStream header ('BZh' + block size digit 1-9) followed by compressed data blocks and 32-bit CRC
GlaudinimasBurrows-Wheeler Transform (BWT), Move-to-Front (MTF) transform, and Huffman coding
Baitų seka (Endianness)Big-Endian bitstream framing
Spalvų erdvėsN/A (Byte Compression Stream)
Kanalai ir struktūraSingle-file compressed byte stream
Maksimalūs matmenysUnbounded stream length (supports arbitrary file sizes)
Skaidrumas100% bit-exact lossless data preservation
Srautas ir progresyvusis įkėlimasSequential block-by-block streaming with independent per-block CRC checksums

Techninė palyginimo matrica: BZ2 vs konkurentai

Techninis atributasBZ2 (Dabartinis)GZXZZSTD
Pagrindinis algoritmasBurrows-Wheeler transformacija (BWT)Išpūsti (LZ77 + Huffman)LZMA / LZMA2Baigtinės būsenos entropija + LZ77
Suspaudimas palyginti su Gzip10% - 20% mažesnis nei GzipBazinė standarto vertė20% - 30% mažesnis nei Gzip10% - 20% mažesnis nei Gzip
Išskleidimo greitisLėtas (~30 - 50 MB/s)Greitas (~300 MB/s)Vidutinis (~100 MB/s)Žaibiškas (>1,5 GB/s)
Blokų kontrolinės sumos32 bitų CRC kiekvienam blokuiVieno srauto CRC32Srauto CRC64Srauto xxHash64

Dažni sugadinimo režimai ir šešioliktainio atkūrimo vadovas

Išskleidimas nutrūksta su pranešimu „bzip2: Data integrity error when decompressing".

Pirminė priežastis: Apverstas bitas suspaustame bloke, dėl kurio BWT atvirkštinė permutacijos matrica nesėkmingai praeina CRC32 patvirtinimą.

Atkūrimas: Naudokite „bzip2recover" įrankį, kad išgelbėtumėte nepažeistus blokus, esančius aplink sugadintą sektorių.

Saugumo analizė ir analizatoriaus atakos vektoriai

Bzip2 diegimai apima sudėtingą bitų srauto rūšiavimą ir Huffman lentelių analizę, kurioje praeityje pasitaikė sveikųjų skaičių perpildymo klaidų.

Žinomi atakos vektoriai

  • Sveikųjų skaičių perpildymas BWT rūšiavimo masyvo paskirstyme (pvz., CVE-2016-3189).
  • Atminties ribų pažeidimo (out-of-bounds) rašymas renkant Huffman dekodavimo lentelę.
  • Paslaugos trikdžiai (DoS) per patologinius įvesties šablonus, sukeliančius blogiausio atvejo kvadratinį BWT rūšiavimo laiką.

Geriausia apsaugos praktika:

Istorinė kilmė ir svarbiausi etapai

2019Federico Mena Quintero modernizuoja bzip2 kodo bazės priežiūrą pagal bzip3 ir šiuolaikines atvirojo kodo iniciatyvas.
2000Išleidžiama 1.0 versija, stabilizuojanti bzip2 formatą visose „Linux" distribucijose ir paketų tvarkyklėse.
1996Julianas Sewardas išleidžia bzip2 0.15, kad pakeistų ankstesnį bzip formatą, kuriam kilo problemų dėl patentų.

Pagrindiniai privalumai

  • Nuolat pranoksta klasikinį Gzip 10 - 20 % pirminio kodo archyvuose, sistemos žurnaluose ir tekstinėse duomenų bazėse.
  • Nepriklausoma blokų architektūra (nuo 100k iki 900k) apima 32 bitų CRC kontrolines sumas kiekvienam blokui, užtikrinančias patikimą vientisumo tikrinimą.
  • Visuotinis vietinis pasiekiamumas visose „Linux", BSD ir „macOS" komandinės eilutės distribucijose.

Techniniai apribojimai ir trūkumai

  • Žymiai lėtesnis suspaudimo ir išskleidimo greitis, palyginti su šiuolaikiniais algoritmais, tokiais kaip Zstandard.
  • Tik vieno failo suspaudimas: norint supakuoti kelis failus ar katalogus, reikia derinti su TAR (.tar.bz2).
  • Didesnis procesoriaus naudojimas išskleidžiant nei Gzip arba Zstd.

Įdomūs techniniai faktai

  • Magiškieji baitai „BZh" reiškia „Burrows-Wheeler Zip Huffman", po kurių eina skaitmuo (nuo „1" iki „9"), nurodantis bloko dydį šimtais kilobaitų (pvz., „BZh9" = 900 KB).
  • „Linux" branduolio pirminis kodas daugiau nei dešimtmetį buvo platinamas išimtinai .tar.bz2 formatu, kol buvo pereita prie .xz.
  • Burrows-Wheeler transformacija tiesiogiai nesuspaudžia duomenų; ji perstato simbolių tvarką taip, kad vienodos raidės susigrupuotų, todėl jas galima lengvai suspausti naudojant Huffman kodavimą.

Dažniausiai užduodami techniniai klausimai

Kuo skiriasi .gz ir .bz2?

.bz2 naudoja Burrows-Wheeler transformaciją, leidžiančią pasiekti mažesnį failo dydį nei .gz, tačiau suspaudimas ir išskleidimas užtrunka ilgiau.

Kodėl bzip2 turi „bzip2recover“ komandą?

Kadangi bzip2 suspaudžia duomenis nepriklausomais 900 KB blokais, iš kurių kiekvienas turi savo CRC, „bzip2recover“ gali išgauti nepažeistus blokus net ir sugadinus dalį failo.

Kaip galiu išskleisti .tar.bz2 failą?

Failus .tar.bz2 galite išskleisti tiesiogiai interneto naršyklėje naudodami File2File.app, nenaudodami komandų eilutės įrankių.