このページで解説している内容は、以下の 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 | 圧縮または解凍後も元のファイルを残します。 |