BZIP2-arkiv (.bz2)

Bzip2 Standard

Bzip2 (BZ2) er et klassisk patentfrit Unix-komprimeringsværktøj og filformat skabt af Julian Seward, som benytter Burrows-Wheeler-transformationen til at opnå en væsentligt bedre komprimering end klassisk Gzip.

Undersøgelse og metadata

Operativsystemer og filanalysatorer identificerer BZ2-filer ved at inspicere den indledende binære bytesekvens:

Vælg eller træk filer hertil

Privat - filer forlader aldrig din enhed

eller indsæt Ctrl+V
Privatlivsgaranti uden netværksoverførsel: 0 byte overført til eksterne servere. Al behandling foregik lokalt i browserens sandkasse.

Byte-niveau Header-signatur (Magic Bytes)

Operativsystemer og filanalysatorer identificerer BZ2-filer ved at inspicere den indledende binære bytesekvens:

HEX-SIGNATUR (OFFSET 0):

42 5A 68

ASCII-REPRÆSENTATION: BZh

Standardisering: Bzip2 Open Source Standard

Tekniske specifikationer

ContainerarkitekturStrømheader ('BZh' + blokstørrelsesciffer fra 1 til 9) efterfulgt af komprimerede datablokke og 32-bit CRC
KomprimeringBurrows-Wheeler-transformering (BWT), Move-to-Front-transformering (MTF) og Huffman-kodning
Byte-rækkefølgeBig-Endian-bitstrømstruktur
FarverumIkke relevant (komprimeret bytestrøm)
Kanaler og strukturKomprimeret bytestrøm fra én fil
Maks. dimensionerUbegrænset strømlængde (understøtter vilkårlige filstørrelser)
Gennemsigtighed100 % bitnøjagtig tabsfri databevaring
Streaming og progressivSekventiel streaming blok for blok med uafhængige CRC-kontrolsummer for hver blok

Teknisk sammenligningsmatrix: BZ2 sammenlignet med konkurrenterne

Teknisk attributBZ2 (Aktuel)GZXZZSTD
KernealgoritmeBurrows-Wheeler-transformation (BWT)Deflate (LZ77 + Huffman)LZMA / LZMA2Finite State Entropy + LZ77
Komprimering sammenlignet med Gzip10 % til 20 % mindre end med GzipGrundlæggende standard20 % til 30 % mindre end med Gzip10 % til 20 % mindre end med Gzip
DekomprimeringshastighedLangsom (ca. 30-50 MB/s)Hurtig (~300 MB/s)Moderat (ca. 100 MB/s)Lynhurtig (>1.5 GB/s)
Blokkontrolsummer32-bit CRC-kontrolsum pr. blokEnkeltstrøms CRC32Strøms CRC64Strøms xxHash64

Almindelige korruptionstilstande og hex-gendannelsesvejledning

Udpakning afbrydes med 'bzip2: Data integrity error when decompressing'.

Grundlæggende årsag: En bit i en komprimeret blok er vendt, så BWT's inverse permutationsmatrix ikke består CRC32-kontrollen.

Gendannelse: Brug værktøjet 'bzip2recover' til at redde ubeskadigede blokke omkring den beskadigede del.

Sikkerhedsanalyse og parser-angrebsvektorer

Bzip2-implementeringer involverer kompleks bitstrømsortering og Huffman-tabelanalyse, som historisk set har haft heltalsoverløbsfejl.

Kendte angrebsvektorer

  • Heltalsoverløb i allokering af BWT-sorteringsarray (f.eks. CVE-2016-3189).
  • Skrivning uden for grænserne under samling af Huffman-afkodningstabel.
  • Nægtelse af tjeneste gennem patologiske inputmønstre, der medfører kvadratisk BWT-sorteringstid i værste fald.

Defensive bedste praksisser: Dekod BZ2-filer ved hjælp af hukommelsessikre WASM-dekodere med håndhævede hukommelsesgrænser.

Historisk oprindelse og milepæle

2019Federico Mena Quintero moderniserer vedligeholdelsen af bzip2-kodebasen under bzip3 og moderne open source-initiativer.
2000Version 1.0 udgives, hvilket stabiliserer bzip2-formatet på tværs af Linux-distributioner og pakkeforvaltere.
1996Julian Seward udgiver bzip2 0.15 som erstatning for det tidligere bzip-format, der havde patentproblemer.

Vigtige fordele og styrker

  • Overgår konsekvent klassisk Gzip med 10 % til 20 % på tar-arkiver med kildekode, systemlogfiler og tekstdatabaser.
  • Uafhængig blokarkitektur (100k til 900k) indeholder 32-bit CRC-kontrolsummer pr. blok for robust integritetskontrol.
  • Findes indbygget i mange Linux-, BSD- og macOS-distributioner; det varierer, om det er inkluderet.

Tekniske begrænsninger og ulemper

  • Betydeligt langsommere komprimerings- og dekomprimeringshastigheder sammenlignet med moderne algoritmer som Zstandard.
  • Kun enkeltfilskomprimering: kræver, at det kombineres med TAR (.tar.bz2) for at pakke flere filer eller mapper.
  • Højere CPU-forbrug under dekomprimering end Gzip eller Zstd.

Interessante tekniske fakta

  • De 'BZh'-magiske bytes står for 'Burrows-Wheeler Zip Huffman', efterfulgt af et ciffer ('1' til '9'), der angiver blokstørrelsen i hundreder af kilobyte (f.eks. 'BZh9' = 900 KB).
  • Linux-kernens kildekode blev distribueret udelukkende i .tar.bz2-formatet i over et årti, før den migrerede til .xz.
  • Burrows-Wheeler-transformationen komprimerer ikke data direkte; den permuterer rækkefølgen af tegn, så identiske bogstaver klumper sig sammen.

Ofte stillede tekniske spørgsmål

Hvad er forskellen mellem .gz og .bz2?

.bz2 bruger Burrows-Wheeler-transformationen til at opnå mindre filstørrelser end .gz, men det tager længere tid at komprimere og dekomprimere.

Hvorfor har bzip2 en 'bzip2recover'-kommando?

Da bzip2 komprimerer data i uafhængige blokke på 900 KB, hver med sin egen CRC, kan bzip2recover udpakke ubeskadigede blokke, selv hvis en del af filen er beskadiget.

Hvordan kan jeg udpakke en .tar.bz2-fil?

Du kan udpakke .tar.bz2-filer direkte i browseren med File2File.app uden at bruge kommandolinjeværktøjer.