TAR.GZをオンラインでTAR.XZに変換
GZIPからXZに切り替えるとアーカイブが小さくなります。XZ(LZMA2)は一般的なTAR形式の中で最も強く圧縮でき、当社のテストではTAR.XZがTAR.GZより混在セットで7%、ソースコードで28%小さくなりました。展開はGZIPより遅いものの十分速く、TAR.XZは現在のLinuxソフトウェア配布の標準です。
TAR.XZ形式は、ソースコード、Linuxカーネルのリリース、ソフトウェアパッケージの配布において好んで使われる形式になっています。Debian、Fedora、Arch Linuxなどの主要ディストリビューションは、今ではパッケージアーカイブにTAR.XZを使用しています。TAR.GZから変換すれば、ダウンロードサイズの縮小とストレージコストの削減という恩恵を受けられます。
なぜTAR.XZにアップグレードするのか?
- 最高の圧縮率 — XZは一般的なアーカイブ形式の中で最も小さいファイルを生成
- 高速な展開 — より小さいファイルサイズを実現しながらBZIP2より速く展開
- 最新の標準 — Linuxカーネル、GNUプロジェクト、主要ディストリビューションで採用
- 並列処理対応 — XZはpixzやpxzツールを使えば複数のCPUコアを活用可能
- 整合性チェック — XZはデータ検証用のCRC64チェックサムを内蔵
変換の仕組み
TAR.GZからTAR.XZへの変換は2段階の処理です。まずGZIP圧縮層を取り除いて元のTARアーカイブを取り出し、次にLZMA2符号化を使うXZアルゴリズムで再圧縮します。ファイルの中身、パーミッション、タイムスタンプ、所有者情報、シンボリックリンクはすべてそのまま維持されます。
変換は当社サーバー上で自動的に行われます。TAR.GZ ファイルをアップロードすると、最適化された TAR.XZ アーカイブをダウンロードできます。gzip から xz への再圧縮は CPU 負荷の高い処理で、特に数ギガバイト規模のアーカイブではサーバー側のハードウェアが大きく効きます。
圧縮方式の比較: GZIPとXZ
GZIPはLZ77とハフマン符号化を組み合わせたDEFLATEアルゴリズムを使います。XZはLZMA2を使い、はるかに大きな辞書とより高度なパターン検索を行います。当社のテストでは、その結果TAR.XZがTAR.GZよりソースコードで28%、プログラムのバイナリで24%小さくなりました。その代わり圧縮は遅く、ある計測ではGZIPの方がXZより約2.5倍速く展開しました。
XZの辞書はGZIPの32KBウィンドウに対し、最大1.5GBまで拡大できます。これによりXZはより広範囲のデータからパターンを見つけ出せるため、似た内容が大きなファイル全体に繰り返し現れるソースコード、ログファイル、データベースダンプで特に効果を発揮します。
最新のLinuxディストリビューションは、公式リリースにXZを好んで使用します。Linuxカーネルや主要プロジェクトがTAR.XZで配布するのは、ファイルサイズの削減がダウンロード時間とミラーサーバーのストレージコストを大きく減らせるためです。
リソース要件
デフォルト設定のXZ圧縮は約100~200MBのメモリを使用し、GZIPの控えめな要件よりはるかに多くなります。最大圧縮(-9e)では数ギガバイトのメモリが必要になることもあります。ただし、展開時に必要なメモリは、作成時の圧縮レベルに関わらず20~50MB程度です。
XZは圧縮速度が明らかに遅く、GZIPの5~10倍かかることもよくあります。一度圧縮すれば何度も配布されるファイル(ソフトウェアリリースやカーネル配布物)では、この代償には十分な意味があります。頻繁に更新されるアーカイブでは、GZIPの速度の利点がXZのサイズの利点を上回ることがあります。
互換性に関する注意点
XZ対応は2010年頃にほとんどのLinuxディストリビューションに追加されました。最新のシステムにはxz-utilsが標準搭載されています。非常に古いシステムや組み込みLinuxディストリビューションではXZに対応していない場合があります。旧式環境との互換性が必要な場合、ファイルサイズは大きくなりますがTAR.GZの方が無難な選択肢です。重要な配布物にXZを採用する前に、対象システムでのテストをおすすめします。