TAR.XZをオンラインでTAR.BZ2に変換
tarアーカイブの中身を維持したまま、XZとBZIP2の圧縮を切り替えます。BZIP2は旧式のシステムやツールで広くサポートされている定評のある形式です。この変換ではLZMA2の代わりにBurrows-Wheelerアルゴリズムでアーカイブを再圧縮し、圧縮効率の一部を犠牲にして幅広い互換性を得ます。
TAR.BZ2形式は、標準的なTARアーカイブ化とBZIP2圧縮を組み合わせたものです。XZの方が優れた圧縮率を持ちますが、XZツールが利用できない環境ではBZIP2が今も好まれる選択肢です。多くの旧式ビルドシステム、古いLinuxディストリビューション、組み込みシステムは、主要な圧縮形式としてBZIP2に依存しています。
TAR.BZ2を使うべきケース
- 互換性 — BZIP2は1990年代にさかのぼるUnixシステムで広くサポートされています
- ツールの入手性 — bzip2はほぼすべてのUnix系OSに標準搭載されています
- 良好な圧縮率 — GZIPより優れ、多くのデータ種別でXZに近い圧縮率を実現
- 定評のある形式 — ソフトウェア配布、特にソースコードのリリースで広く使われています
- ストリーミング対応 — BZIP2はバッファリングなしでストリーミング形式でのデータ展開が可能
変換の仕組み
TAR.XZからTAR.BZ2への変換は2段階の処理です。まずXZ圧縮層を取り除いて元のTARアーカイブを取り出し、次にBZIP2アルゴリズムで再圧縮します。この処理により、TAR層に保存されているファイルの中身、パーミッション、タイムスタンプ、シンボリックリンク、その他のメタデータはすべて維持されます。
変換は当社サーバー上で行われます。アーカイブは xz から展開され、bzip2 で再圧縮されます。元の TAR.XZ ファイルはそのまま残り、新しい TAR.BZ2 ファイルをダウンロードできます。
圧縮方式の比較: XZとBZIP2
XZ圧縮はLZMA2アルゴリズムを使用しており、通常BZIP2より10~20%高い圧縮率を実現します。ただし、BZIP2は1996年から利用可能であり、ソフトウェアサポートの面で大きな先行アドバンテージがあります。旧式システムやレガシーツールで動作させる必要があるアーカイブには、ファイルサイズがやや大きくなってもTAR.BZ2の方が無難な選択肢になることが多いです。
BZIP2はBurrows-Wheeler変換を使用しており、似たバイトをまとめることでデータを再構成し圧縮率を高めます。LZMA2ほど効率的ではありませんが、このアルゴリズムはよく理解されており、ほぼすべてのUnix系環境に実装されているため、クロスプラットフォームでの配布に信頼できる選択肢です。
BZIP2は長い歴史を持つため、並列処理版(pbzip2)や復旧ツールを含む充実したツールサポートがあります。信頼性と互換性が最新の圧縮効率より重要な環境では、BZIP2は今も実績のある選択肢です。
メモリとCPUに関する考慮事項
BZIP2は圧縮ブロックごとに約8MBのメモリを使用し、デフォルト設定で数百メガバイトを必要とすることもあるXZよりはるかに少なく済みます。そのため、BZIP2は組み込みシステム、旧式ハードウェア、XZの展開が失敗しかねないメモリ制約のある環境に適しています。
BZIP2の展開はGZIPより遅いですが、ほとんどの場合XZより速くなります。頻繁に展開するアーカイブ(ソフトウェアパッケージ、ビルドの依存関係)では、この速度の差が顕著になることがあります。ファイルサイズと展開速度のトレードオフは用途によって異なります。
破損からの復旧
BZIP2には、一部が破損したアーカイブからデータを救出できる復旧ツールがあります。bzip2recoverユーティリティを使えば、破損したファイルから無傷のブロックを取り出せます。XZアーカイブは破損への耐性が低く、一部でも破損すると通常は展開自体ができなくなります。長期にわたるデータ整合性が重要なアーカイブ用途では、BZIP2の復旧性は価値があります。