連載
» 2018年10月12日 05時00分 公開

Linux基本コマンドTips(249):【 xz 】コマンド/【 unxz 】コマンド――ファイルを圧縮/伸張する

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、ファイルを圧縮する「xz」コマンドと伸張する「unxz」コマンドです。

[西村めぐみ,@IT]
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回はファイルを圧縮する「xz」コマンドと、伸張する「unxz」コマンドです。

xzコマンド/unxzコマンドとは?

 「xz」はファイルを圧縮するコマンド、「unxz」は圧縮されたファイルを元に戻す(伸張する)コマンドです。gzipコマンド、gunzipコマンド同様、1つ1つのファイルに対して機能します。複数のファイルをまとめたい場合は、tarコマンドと組み合わせる手法が一般的です(※1)。

※1 tarコマンドの「-J」オプション(「--xz」オプション)を指定することで、xz形式の圧縮や伸張をtarの実行と同時に処理できる(tarのバージョンが1.22以降の場合)。





xzコマンドの書式

xz [オプション] [ファイル名]

bunzip2コマンドの書式

unxz [オプション] [ファイル名]

※[ ]は省略可能な引数を示しています。ファイルを指定しなかった場合は標準入出力を使用(標準入力を明示する場合はファイル名として「-」1文字を指定)。





xz/unxzの主なオプション

短いオプション 長いオプション 意味
-d --decompress 伸張を行う(unxzコマンドのデフォルト動作)
-z --compress 圧縮を行う(xzコマンドのデフォルト動作)
-t --test 圧縮ファイルを伸張せず、整合性をテストする
-l --list 圧縮ファイルを伸張せず、圧縮ファイルの情報を表示する

xzコマンド/unxzコマンドの主なオプション(圧縮/伸張時の動作指定)

短いオプション 長いオプション 意味
-0〜-9 圧縮レベル。0は高速だが圧縮率が低く、9は低速だが圧縮率が高い(デフォルトは6、※2)
-F 形式 --format=形式 圧縮/伸張時の形式として「auto」「xz」「lzma」「raw」のうち1つを指定(デフォルトは「auto」で圧縮時はxz形式、伸張時はファイルから判定)
-C 形式 --check=形式 整合性チェックに使用する形式を「none」「crc32」「crc64」(デフォルト)、「sha256」から1つ指定
-k --keep 圧縮前/伸張前のファイルを残す
-f --force ファイルを上書きする
-c --stdout 結果をファイルではなく標準出力へ出力する(主にパイプで別コマンドに渡す際に使用)
--no-sparse 伸張時にスパースファイル(ヌルデータのブロックについてディスクを消費しないために作成されたファイル)を作成しない
-S .拡張子 --suffix=.拡張子 圧縮ファイルの拡張子を指定する(伸張時にも指定する必要がある)
--files=ファイル 処理対象のファイルを指定したファイルから読み込む(ファイルを指定しなかった場合は標準入力から読み込む)
--files0=ファイル 「--file」と同じだが、ファイル名の終端文字として改行ではなくヌル文字を用いる

※2 レベルを上げると圧縮伸張時に使用するメモリ量が増える。使用メモリサイズは、「-6」までは100MB未満。「-7」では195MB、「-8」では388MB、「-9」では約707MB使用する。伸張時は圧縮時の約10分の1程度のメモリを使用する。



xzコマンド/unxzコマンドの主なオプション(その他)

短いオプション 長いオプション 意味
-q --quiet 警告を表示しない(2回指定するとエラーメッセージも表示しない)
-v --verbose 処理中の圧縮率などを表示する(2回指定するとより詳しい表示になる)
-Q --no-warn 警告を検出しても、終了ステータスを「2」にしない
--robot 「-l」オプション使用時、マシン可読性が高いメッセージを使用する(スクリプトで処理する際に使用)
--info-memory 現在使用可能なメモリの量を表示して終了する(圧縮や伸張は実行しない)


ファイルを圧縮する

 「xz ファイル名」でファイルを圧縮します(画面1)。ファイルを複数指定でき、個別に圧縮します。

 圧縮後のファイル名は「元のファイル名.xz」となり、元のファイルを自動的に削除します。元のファイルを残したい場合は「-k」オプションを使用します。

コマンド実行例

xz ファイル名

(ファイルを圧縮し、元のファイルを削除する)

xz -k ファイル名

(ファイルを圧縮し、元のファイルも残す)

xz mydata

(mydataを圧縮し、mydata.xzが生成し、mydataを削除する)


画面1 画面1 2つのファイルを圧縮したところ


ファイルを伸張する

 「unxz ファイル名」でファイルを伸張します(画面2)。

 ファイルを伸張すると、元の圧縮ファイルを削除します。圧縮ファイルを残したい場合は、「-k」オプションを使用します。

コマンド実行例

unxz ファイル名

(ファイルを伸張し、元のファイルを削除する)

unxz -k ファイル

(ファイルを伸張し、元のファイルも残す)

unxz mydata.xz

(mydata.xzを伸張し、mydataを生成し、mydata.xzを削除する)


画面2 画面2 2つのファイルを伸張したところ


圧縮率を指定する

 xzコマンドで圧縮を実行する際、圧縮率を「-0」〜「-9」から指定できます(画面3)。「-0」は圧縮率が低いものの、高速に処理でき、「-9」では時間がかかる一方、圧縮率は高くなります。

 なお、圧縮率を上げると、処理に必要なメモリ量も増加します。xzコマンドのマニュアルによれば「-7〜-9を使用する際には要注意」とあります。詳細はマニュアル(「man xz」)をご確認ください。

 画面3では、「-0」と「-9」をそれぞれ指定した際のファイルサイズの他、実行にかかった時間を簡易計測しています。計測にはtimeコマンドを使いました。実際の処理時間には圧縮動作以外にもディスクからのファイル読み出しなどが影響するため、参考程度になさってください。使用したファイルは、画面1、画面2と共通です。

画面3 画面3 圧縮率を変えた場合のファイルサイズと処理時間の違い ファイルサイズ、処理時間のどちらもかなり結果が変わる


筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801NからのDOSユーザー。PC-486DX時代にDOS版UNIX-like toolsを経てLinuxへ。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『Accessではじめるデータベース超入門[改訂2版]』『macOSコマンド入門』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。