BZIP2書庫 (.bz2)

Bzip2オープンソース標準 標準

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

調査とメタデータ

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

ファイルを選択するか、ここにドロップしてください

プライベート - ファイルがデバイスの外に出ることはありません

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

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

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

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

42 5A 68

ASCII表現: BZh

標準化: Bzip2オープンソース標準

技術仕様

コンテナアーキテクチャストリームヘッダー('BZh'とブロックサイズの数字1~9)に続き、圧縮データブロックと32ビットCRCを格納
圧縮Burrows-Wheeler変換(BWT)、Move-to-Front変換(MTF)、Huffman符号化
バイトエンディアンビッグエンディアンのビットストリーム形式
色空間該当なし(バイト圧縮ストリーム)
チャンネルと構造単一ファイルの圧縮バイトストリーム
最大寸法ストリーム長に上限なし(任意のファイルサイズに対応)
透過性データをビット単位で完全に保持する可逆圧縮
ストリーミングとプログレッシブブロックごとに順次ストリーミングし、各ブロックを個別のCRCチェックサムで検証

技術比較表:BZ2と競合製品

技術属性BZ2 (現在)GZXZZSTD
コアアルゴリズムBurrows-Wheeler 変換 (BWT)Deflate (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)。

防御的ベストプラクティス: 強制的なメモリ境界を持つメモリ安全なWASMデコーダーを使用してBZ2ファイルをデコードします。

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

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ファイルを展開できます。