XZ圧縮されたファイルの扱いについて(前半)
以前「LZMA圧縮されたファイルの扱いについて」でLZMA圧縮されたファイルの操作に関してを扱ったが、LZMA圧縮されたファイルを扱うためのパッケージが「LZMA Utils」から「XZ Utils」という名前になっていて、これまでのLZMA形式向けのコマンド群に加えて新しいXZ形式向けのコマンド群が追加されており、LZMA形式を扱うコマンドはXZ Utils内のコマンドxzへのシンボリックリンクになっている(過去の互換性のためだが、ディストリによっては以前のLZMA Utilsがそのまま用いられている場合がある)。
LZMA Utilsの後継としてXZ Utilsが、LZMA形式を置き換えるものとしてXZ形式がそれぞれ存在するため、今後はLZMA形式よりもXZ形式を用いることが推奨される。実際、GNUの一部ソフトウェアの配布にはLZMA形式が用いられたことがある*1が、その後(LZMA形式が用いられなかったもの*2も含め)XZ形式が用いられるようになっている。
LZMA形式とXZ形式
いずれも(bzipやbzip2と同様)1つのファイルを圧縮/伸長するもので、複数のファイルやディレクトリをまとめるにはtarボールを併用する。その場合、出力ファイルには「.tar.xz」もしくは「.txz」の拡張子を付ける。
「.lzma」の拡張子が付くLZMA形式と「.xz」の拡張子が付くXZ形式は別物で、形式に互換性はない。ただし、XZ UtilsからLZMA形式のファイルは読み込める。
XZ形式はLZMA形式と同様、gzipやbzip2といった形式に近い扱いができるようになっているが、tarとの連携など、より扱いやすいものとなっている。
圧縮/伸長に関する特徴はLZMAアルゴリズムを用いたLZMA形式や7z形式と同様で、以下はMandriva LinuxのRPMパッケージの説明より。実際にどうかは試して調べてみるしかないので、参考程度。
- 平均的な圧縮率はgzipと比べて30%、bzip2と比べて15%改善される*3
- 伸長速度はgzipより遅くなるがbzip2よりは2-5倍高速
- 圧縮率を最高にしたときの圧縮は遅く、bzip2の4-12倍の時間がかかるが、伸長時間には影響せず、高速な圧縮モードではbzip2より高速
圧縮率の高さを示す例としては、サーバ上の一覧で確認したものだが
- coreutils-8.2.tar.gzが「10M」なのに対しcoreutils-8.2.tar.xzが「4.2M」
- glibc-2.11.tar.gzが「20M」でglibc-2.11.tar.bz2が「15M」なのに対し、glibc-2.11.tar.xzは「9.7M」
といったものがある(いずれも対象はプログラムのソースコード)。
XZ形式の詳細は
http://tukaani.org/xz/format.html
に載っている。
圧縮と伸長の操作例
適当なデータを用意して圧縮と伸長を行う作業の例。
(データのサンプルとしてカーネルのビルド設定をテキストに出力) $ zcat /proc/config.gz > config.txt (ファイルサイズを確認・サイズは使用するカーネルによって異なる) $ stat -c "%s" config.txt 102289 (圧縮・元ファイルは削除される) $ xz config.txt (種類確認) $ file config.txt.xz config.txt.xz: xz compressed data (サイズ確認) $ stat -c "%s" config.txt.xz 23424 (伸長・圧縮ファイルは削除される) $ unxz config.txt.xz
(「XZ圧縮されたファイルの扱いについて(後半)」に続く)
関連記事:
関連URL:
使用したバージョン:
- XZ Utils 4.999.9beta
- file 5.03