Arhivă BZIP2 (.bz2)

Standardul Standard

Bzip2 (BZ2) este un utilitar clasic de compresie Unix fără brevete și un format de fișier creat de Julian Seward, care utilizează transformata Burrows-Wheeler pentru a obține o compresie semnificativ mai eficientă decât cea oferită de clasicul Gzip.

Inspectare și metadate

Sistemele de operare și analizatoarele de fișiere identifică fișierele BZ2 prin inspectarea secvenței binare inițiale:

Selectează sau plasează fișierele aici

Privat - fișierele nu părăsesc niciodată dispozitivul tău

sau lipește Ctrl+V
Garanție de confidențialitate: nicio transmisie prin rețea: 0 octeți încărcați pe servere externe. Toată procesarea a avut loc local în sandbox-ul browserului tău.

Semnătura antetului la nivel de octet (octeți magici)

Sistemele de operare și analizatoarele de fișiere identifică fișierele BZ2 prin inspectarea secvenței binare inițiale:

SEMNĂTURĂ HEXAZECIMALĂ (DECALAJ 0):

42 5A 68

REPREZENTARE ASCII: BZh

Standardizare: Standardul open source Bzip2

Specificații tehnice

Arhitectură containerAntet de flux („BZh” + o cifră pentru dimensiunea blocului, între 1 și 9), urmat de blocuri de date comprimate și CRC pe 32 de biți
CompresieTransformata Burrows-Wheeler (BWT), transformarea Move-to-Front (MTF) și codarea Huffman
Ordinea octețilorÎncadrare Big-Endian a fluxului de biți
Spații de culoareNu se aplică (flux de compresie a octeților)
Canale și structurăFlux comprimat de octeți într-un singur fișier
Dimensiuni maximeLungime nelimitată a fluxului (acceptă fișiere de orice dimensiune)
TransparențăPăstrarea datelor fără pierderi, identic la nivel de biți
Streaming și progresivTransmitere secvențială, bloc cu bloc, cu sume de control CRC independente pentru fiecare bloc

Matrice de comparație tehnică: BZ2 vs. concurenți

Atribut tehnicBZ2 (Curent)GZXZZSTD
Algoritm de bazăTransformarea Burrows-Wheeler (BWT)Deflate (LZ77 + Huffman)LZMA / LZMA2Finite State Entropy + LZ77
Compresie vs GzipCu 10% - 20% mai mică decât GzipStandard de bazăCu 20% - 30% mai mică decât GzipCu 10% - 20% mai mică decât Gzip
Viteză de decompresieLentă (~30-50 MB/s)Rapidă (~300 MB/s)Moderată (~100 MB/s)Foarte rapidă (>1,5 GB/s)
Sume de control pe blocCRC pe 32 de biți per blocCRC32 pentru flux unicCRC64 pentru fluxxxHash64 pentru flux

Moduri comune de corupție și ghid de recuperare hexazecimală

Extragerea se oprește cu mesajul „bzip2: Eroare de integritate a datelor la decomprimare".

Cauză principală: Bit inversat în blocul comprimat, cauzând eșecul validării CRC32 pentru matricea de permutare inversă BWT.

Recuperare: Folosește utilitarul „bzip2recover” pentru a salva blocurile nedeteriorate din jurul sectorului corupt.

Analiză de securitate și vectori de atac asupra parserului

Implementările Bzip2 implică sortare complexă a fluxului de biți și analiză a tabelelor Huffman care, de-a lungul timpului, au avut erori de depășire a valorii întregi.

Vectori de atac cunoscuți

  • Depășire a valorii întregi în alocarea matricei de sortare BWT (de exemplu, CVE-2016-3189).
  • Scriere în afara limitelor în timpul asamblării tabelului de decodare Huffman.
  • Refuz al serviciului prin tipare de intrare extreme care cauzează timpi de sortare BWT pătratici în cel mai rău caz.

Cele mai bune practici de securitate: Decodează fișierele BZ2 cu decodoare WASM sigure pentru memorie, care impun limite de memorie.

Origini istorice și repere

2019Federico Mena Quintero modernizează mentenanța bazei de cod bzip2 în cadrul bzip3 și a inițiativelor moderne open-source.
2000Este lansată versiunea 1.0, stabilizând formatul bzip2 în distribuțiile Linux și gestionarele de pachete.
1996Julian Seward lansează bzip2 0.15 pentru a înlocui formatul bzip anterior, care prezenta probleme legate de brevete.

Avantaje cheie și beneficii

  • Depășește în mod constant clasicul Gzip cu 10% până la 20% pentru arhivele tar cu cod sursă, jurnalele de sistem și bazele de date text.
  • Arhitectura de blocuri independente (de la 100 kB la 900 kB) include sume de control CRC pe 32 de biți per bloc pentru o verificare robustă a integrității.
  • Disponibil nativ în multe distribuții Linux, BSD și macOS; includerea diferă de la o distribuție la alta.

Limitări tehnice și dezavantaje

  • Viteze de compresie și decompresie semnificativ mai lente în comparație cu algoritmii moderni precum Zstandard.
  • Compresie doar pentru fișiere individuale: necesită asocierea cu TAR (.tar.bz2) pentru a împacheta mai multe fișiere sau directoare.
  • Consum mai mare de procesor în timpul decompresiei decât Gzip sau Zstd.

Curiozități tehnice interesante

  • Octeții magici „BZh” înseamnă „Burrows-Wheeler Zip Huffman”, urmați de o cifră („1” până la „9”) care indică dimensiunea blocului în sute de kiloocteți (de exemplu, „BZh9” = 900 KB).
  • Codul sursă al nucleului Linux a fost distribuit exclusiv în format .tar.bz2 timp de peste un deceniu înainte de a migra la .xz.
  • Transformata Burrows-Wheeler nu comprimă datele în mod direct; ea reordonează caracterele astfel încât literele identice să se grupeze.

Întrebări tehnice frecvente

Care este diferența dintre .gz și .bz2?

.bz2 folosește transformarea Burrows-Wheeler pentru a obține dimensiuni de fișiere mai mici decât .gz, însă comprimarea și decomprimarea durează mai mult.

De ce are bzip2 o comandă numită „bzip2recover”?

Deoarece bzip2 comprimă datele în blocuri independente de 900 KB, fiecare având propriul cod CRC, bzip2recover poate extrage blocurile nedeteriorate chiar și atunci când o parte a fișierului este coruptă.

Cum pot extrage un fișier .tar.bz2?

Poți despacheta fișiere .tar.bz2 direct în browserul web cu File2File.app, fără a rula instrumente în linia de comandă.