このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Linux】ファイルの圧縮:xzコマンド

xzコマンドの概要

 「xz」コマンドは、LZMA2(Lempel-Ziv-Markov chain algorithm)アルゴリズムを使用した高圧縮率のファイル圧縮ツールです。xzは、特に大容量のファイルを効果的に圧縮することができ、その圧縮率の高さから、バックアップや大規模データの転送などに広く利用されています。圧縮されたファイルは、拡張子「.xz」が付与されます。

コマンドの主なオプション

以下は、「xz」コマンドの主なオプションの一覧です。

オプション説明
-d圧縮されたファイルを解凍します。unxzコマンドと同等です。
-c圧縮または解凍した内容を標準出力に出力します。元のファイルはそのまま残ります。
-k圧縮または解凍後も元のファイルを残します。
コマンドの主なオプション

コマンドの使用例と解説

基本的な使用例

ダミーファイルの作成

まず、「xz」コマンドで圧縮するダミーファイルを「dd」コマンドを使って作成します。

 「dd」コマンドは、指定したサイズのファイルを作成するために使用できます。以下のコマンドを実行して、1GBのダミーファイルを作成します。

・「dd if=/dev/zero of=dummyfile bs=1M count=1024」コマンドを実行し、「ls -l」コマンドで確認します。

user01@ubuntu-vm:~$ dd if=/dev/zero of=dummyfile bs=1M count=1024
1024+0 レコード入力
1024+0 レコード出力
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 1.87334 s, 573 MB/s
user01@ubuntu-vm:~$ ls -l
合計 1048616
-rw-rw-r-- 1 user01 user01 1073741824  5月 30 23:58 dummyfile
drwx------ 4 user01 user01       4096  5月  5 14:52 snap
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 ダウンロード
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 テンプレート
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 デスクトップ
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 ドキュメント
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 ビデオ
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 ピクチャ
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 ミュージック
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 公開

1.ファイルの圧縮

・「xz dummyfile」コマンドを実行し、「ls -l」コマンドで確認します。

 このコマンドは、「dummyfile」を圧縮して「dummyfile.xz」というファイルを作成します。元の「dummyfile」は削除され、「dummyfile.xz」が生成されます。

user01@ubuntu-vm:~$ xz dummyfile
user01@ubuntu-vm:~$ ls -l
合計 192
-rw-rw-r-- 1 user01 user01 156316  5月 30 23:58 dummyfile.xz
drwx------ 4 user01 user01   4096  5月  5 14:52 snap
drwxr-xr-x 2 user01 user01   4096  1月  1 10:51 ダウンロード
drwxr-xr-x 2 user01 user01   4096  1月  1 10:51 テンプレート
drwxr-xr-x 2 user01 user01   4096  1月  1 10:51 デスクトップ
drwxr-xr-x 2 user01 user01   4096  1月  1 10:51 ドキュメント
drwxr-xr-x 2 user01 user01   4096  1月  1 10:51 ビデオ
drwxr-xr-x 2 user01 user01   4096  1月  1 10:51 ピクチャ
drwxr-xr-x 2 user01 user01   4096  1月  1 10:51 ミュージック
drwxr-xr-x 2 user01 user01   4096  1月  1 10:51 公開

2.ファイルの解凍

・「xz -d dummyfile.xz」コマンドを実行し、「ls -l」コマンドで確認します。

 このコマンドは、「dummyfile.xz」を解凍して元の「dummyfile」を再現します。元の圧縮ファイル「dummyfile.xz」は削除され、「dummyfile」が生成されます。

user01@ubuntu-vm:~$ xz -d dummyfile.xz
user01@ubuntu-vm:~$ ls -l
合計 40
-rw-rw-r-- 1 user01 user01 1073741824  5月 30 23:58 dummyfile
drwx------ 4 user01 user01       4096  5月  5 14:52 snap
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 ダウンロード
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 テンプレート
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 デスクトップ
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 ドキュメント
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 ビデオ
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 ピクチャ
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 ミュージック
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 公開

3.標準出力に圧縮結果を出力

・「xz -c dummyfile > dummyfile.xz」コマンドを実行し、「ls -l」コマンドで確認します。

 このコマンドは、「dummyfile」を圧縮し、その結果を標準出力に出力します。元の「dummyfile」はそのまま残り、圧縮結果が「dummyfile.xz」として保存されます。

user01@ubuntu-vm:~$ xz -c dummyfile > dummyfile.xz
user01@ubuntu-vm:~$ ls -l
合計 196
-rw-rw-r-- 1 user01 user01 1073741824  5月 30 23:58 dummyfile
-rw-rw-r-- 1 user01 user01     156316  5月 31 00:26 dummyfile.xz
drwx------ 4 user01 user01       4096  5月  5 14:52 snap
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 ダウンロード
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 テンプレート
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 デスクトップ
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 ドキュメント
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 ビデオ
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 ピクチャ
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 ミュージック
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 公開

4.圧縮後も元のファイルを残す

新しい「dummyfile.xz」を作成するため、「dummyfile.xz」を削除しておきます。

・「rm dummyfile.xz」コマンドを実行します。

user01@ubuntu-vm:~$ rm dummyfile.xz

・「xz -k dummyfile」コマンドを実行し、「ls -l」コマンドで確認します。

 このコマンドは、「dummyfile」を圧縮して「dummyfile.xz」というファイルを作成しますが、元の「dummyfile」もそのまま残ります。

user01@ubuntu-vm:~$ xz -k dummyfile
user01@ubuntu-vm:~$ ls -l
合計 196
-rw-rw-r-- 1 user01 user01 1073741824  5月 30 23:58 dummyfile
-rw-rw-r-- 1 user01 user01     156316  5月 30 23:58 dummyfile.xz
drwx------ 4 user01 user01       4096  5月  5 14:52 snap
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 ダウンロード
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 テンプレート
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 デスクトップ
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 ドキュメント
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 ビデオ
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 ピクチャ
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 ミュージック
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 公開

その他のオプション

1.圧縮レベルの指定

新しい「dummyfile.xz」を作成するため、「dummyfile.xz」を削除しておきます。

・「rm dummyfile.xz」コマンドを実行します。

user01@ubuntu-vm:~$ rm dummyfile.xz

・「xz -9 dummyfile」コマンドを実行し、「ls -l」コマンドで確認します。

圧縮レベルを指定することで、圧縮率を変更できます。「-9」は最も高い圧縮率を示します。

user01@ubuntu-vm:~$ xz -9 dummyfile
user01@ubuntu-vm:~$ ls -l
合計 192
-rw-rw-r-- 1 user01 user01 156316  5月 30 23:58 dummyfile.xz
drwx------ 4 user01 user01   4096  5月  5 14:52 snap
drwxr-xr-x 2 user01 user01   4096  1月  1 10:51 ダウンロード
drwxr-xr-x 2 user01 user01   4096  1月  1 10:51 テンプレート
drwxr-xr-x 2 user01 user01   4096  1月  1 10:51 デスクトップ
drwxr-xr-x 2 user01 user01   4096  1月  1 10:51 ドキュメント
drwxr-xr-x 2 user01 user01   4096  1月  1 10:51 ビデオ
drwxr-xr-x 2 user01 user01   4096  1月  1 10:51 ピクチャ
drwxr-xr-x 2 user01 user01   4096  1月  1 10:51 ミュージック
drwxr-xr-x 2 user01 user01   4096  1月  1 10:51 公開

2.複数ファイルの一括圧縮

圧縮するためのダミーファイルを2つ用意します。次のコマンドを実行します。

  • xz -d dummyfile.xz」コマンド
  • cp dummyfile dummyfile1」コマンド
  • ls -l」コマンド
user01@ubuntu-vm:~$ xz -d dummyfile.xz 
user01@ubuntu-vm:~$ cp dummyfile dummyfile1
user01@ubuntu-vm:~$ ls -l
合計 44
-rw-rw-r-- 1 user01 user01 1073741824  5月 30 23:58 dummyfile
-rw-rw-r-- 1 user01 user01 1073741824  5月 31 00:43 dummyfile1
drwx------ 4 user01 user01       4096  5月  5 14:52 snap
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 ダウンロード
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 テンプレート
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 デスクトップ
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 ドキュメント
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 ビデオ
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 ピクチャ
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 ミュージック
drwxr-xr-x 2 user01 user01       4096  1月  1 10:51 公開

dummyfile」と「dummyfile1」の2つのファイルを一括圧縮します。

・「xz dummyfile dummyfile1」コマンドを実行し、「ls -l」コマンドで確認します。

このコマンドは、複数のファイルを一括で圧縮します。

user01@ubuntu-vm:~$ xz dummyfile dummyfile1
user01@ubuntu-vm:~$ ls -l
合計 348
-rw-rw-r-- 1 user01 user01 156316  5月 30 23:58 dummyfile.xz
-rw-rw-r-- 1 user01 user01 156316  5月 31 00:43 dummyfile1.xz
drwx------ 4 user01 user01   4096  5月  5 14:52 snap
drwxr-xr-x 2 user01 user01   4096  1月  1 10:51 ダウンロード
drwxr-xr-x 2 user01 user01   4096  1月  1 10:51 テンプレート
drwxr-xr-x 2 user01 user01   4096  1月  1 10:51 デスクトップ
drwxr-xr-x 2 user01 user01   4096  1月  1 10:51 ドキュメント
drwxr-xr-x 2 user01 user01   4096  1月  1 10:51 ビデオ
drwxr-xr-x 2 user01 user01   4096  1月  1 10:51 ピクチャ
drwxr-xr-x 2 user01 user01   4096  1月  1 10:51 ミュージック
drwxr-xr-x 2 user01 user01   4096  1月  1 10:51 公開

3.作成したファイルの削除

この演習で作成したファイルを削除します。

・「rm dummyfile*」コマンドを実行して、「ls」コマンドで削除されたかを確認します。

user01@ubuntu-vm:~$ rm dummyfile*
user01@ubuntu-vm:~$ ls
snap          テンプレート  ドキュメント  ピクチャ      公開
ダウンロード  デスクトップ  ビデオ        ミュージック

まとめ

 「xz」コマンドは、高圧縮率を提供する強力な圧縮ツールです。以下の表を参考に、具体的な使用例に合わせて適切なオプションを使用してください。

これらのオプションを駆使することで、効率的にファイルの圧縮と解凍を行うことができます。

オプション説明
-d圧縮されたファイルを解凍します。unxzコマンドと同等です。
-c圧縮または解凍した内容を標準出力に出力します。元のファイルはそのまま残ります。
-k圧縮または解凍後も元のファイルを残します。
xzコマンドのオプション