BZIP2書庫 (.bz2)

Bzip2 標準

Bzip2 (BZ2) は、Julian Seward によって作成された、特許フリーの古典的な Unix 圧縮ユーティリティおよびファイル形式であり、Burrows-Wheeler 変換を利用して従来の Gzip よりも大幅に高密度の圧縮を実現しています。

調査とメタデータ

オペレーティングシステムやファイル解析ツールは、先頭のバイナリバイトシーケンスを検査することで BZ2 ファイルを識別します:

ここにファイルを選択またはドロップ

100%プライベートなブラウザ内変換 - ファイルがデバイスから外部に出ることはありません

または貼り付け Ctrl+V
ネットワーク送信ゼロのプライバシー保証: 外部サーバーへのデータ送信は0バイトです。すべての処理はお使いのブラウザのサンドボックス内でローカルに実行されます。

バイトレベルのヘッダーシグネチャ (マジックバイト)

オペレーティングシステムやファイル解析ツールは、先頭のバイナリバイトシーケンスを検査することで BZ2 ファイルを識別します:

16進数シグネチャ (オフセット 0):

42 5A 68

ASCII表現: BZh

標準化: Bzip2 Open Source Standard

技術仕様

コンテナアーキテクチャStream header ('BZh' + block size digit 1-9) followed by compressed data blocks and 32-bit CRC
圧縮Burrows-Wheeler Transform (BWT), Move-to-Front (MTF) transform, and Huffman coding
バイトエンディアンBig-Endian bitstream framing
色空間N/A (Byte Compression Stream)
チャンネルと構造Single-file compressed byte stream
最大寸法Unbounded stream length (supports arbitrary file sizes)
透過性100% bit-exact lossless data preservation
ストリーミングとプログレッシブSequential block-by-block streaming with independent per-block CRC checksums

技術比較マトリックス: BZ2 対 競合製品

技術属性BZ2 (現在)GZXZZSTD
コアアルゴリズムBurrows-Wheeler 変換 (BWT)縮小 (LZ77 + ハフマン)LZMA / LZMA2有限状態エントロピー + LZ77
Gzip との圧縮率比較Gzip より 10% 〜 20% 小さいベースライン標準Gzip より 20% 〜 30% 小さいGzip より 10% 〜 20% 小さい
解凍速度遅い(約 30〜50 MB/s)速い(約 300 MB/s)中程度(約 100 MB/s)非常に高速(>1.5 GB/s)
ブロックチェックサムブロックごとの 32 ビット CRC単一ストリーム CRC32ストリーム CRC64ストリーム xxHash64

一般的な破損モードと16進数リカバリガイド

抽出が「bzip2: Data integrity error when decompressing」で中断される。

根本原因: 圧縮ブロック内のビット反転により、BWT 逆置換行列が CRC32 検証に失敗する。

復旧: 「bzip2recover」ユーティリティを使用して、破損したセクターの周囲の損傷していないブロックを救出します。

セキュリティ分析とパーサー攻撃ベクトル

Bzip2 の実装には、複雑なビットストリームのソートと Huffman テーブルの解析が含まれており、歴史的に整数オーバーフローの欠陥を経験しています。

既知の攻撃ベクター

  • BWT ソート配列割り当てにおける整数オーバーフロー(例:CVE-2016-3189)。
  • Huffman デコードテーブルの構築中の範囲外書き込み。
  • 最悪の場合の二次的な BWT ソート時間を引き起こす、異常な入力パターンによるサービス拒否 (DoS)。

防御的ベストプラクティス:

歴史的背景とマイルストーン

2019Federico Mena Quintero が、bzip3 および現代のオープンソースの取り組みの一環として、bzip2 コードベースの保守を近代化しました。
2000バージョン 1.0 がリリースされ、Linux ディストリビューションやパッケージマネージャー全体で bzip2 形式が安定化しました。
1996Julian Seward が、特許に関する懸念があった従来の bzip 形式を置き換えるために bzip2 0.15 をリリースしました。

主な利点とメリット

  • ソースコードの tarball、システムログ、テキストデータベースにおいて、従来の Gzip を一貫して 10% から 20% 上回る圧縮率を誇ります。
  • 独立したブロックアーキテクチャ(100k 〜 900k)には、ブロックごとの 32 ビット CRC チェックサムが含まれており、堅牢な整合性チェックが可能です。
  • すべての Linux、BSD、および macOS のコマンドラインディストリビューションで普遍的にネイティブ利用できます。

技術的な制限とデメリット

  • Zstandard などの現代のアルゴリズムと比較して、圧縮および解凍の速度が大幅に遅いです。
  • 単一ファイルの圧縮のみ:複数のファイルやディレクトリをパッケージ化するには、TAR(.tar.bz2)との組み合わせが必要です。
  • Gzip や Zstd と比較して、解凍時の CPU 使用率が高くなります。

興味深い技術トリビア

  • 「BZh」というマジックバイトは「Burrows-Wheeler Zip Huffman」の略であり、それに続く数字('1' から '9')は数百キロバイト単位のブロックサイズを表しています(例:「BZh9」 = 900 KB)。
  • Linux カーネルのソースコードは、.xz に移行する前の10年以上にわたり、.tar.bz2 形式でのみ配布されていました。
  • Burrows-Wheeler 変換はデータを直接圧縮するのではなく、文字の順序を並べ替えて同一の文字をまとめ、Huffman 符号化によって簡単に圧縮できるようにします。

よくある技術的な質問

.gzと.bz2の違いは何ですか?

.bz2はバローズ・ホイーラー変換を使用して.gzよりも小さなファイルサイズを実現しますが、圧縮と解凍に時間がかかります。

bzip2に「bzip2recover」というコマンドがあるのはなぜですか?

bzip2はデータをそれぞれ独自のCRCを持つ独立した900 KBのブロックに分割して圧縮するため、ファイルの一部が破損していてもbzip2recoverを使用すれば無傷のブロックを抽出できるからです。

.tar.bz2ファイルを展開するにはどうすればよいですか?

コマンドラインツールを実行することなく、File2File.appを使ってウェブブラウザ上で直接.tar.bz2ファイルを展開できます。