このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Linux】ファイルの圧縮:bzip2コマンド
bzip2コマンドの概要
bzip2
(ビージップツー)は、高い圧縮率を持つ圧縮ツールであり、Burrows-Wheeler変換とHuffman符号化を使用しています。gzip
と比較して圧縮率が高いですが、圧縮および解凍の速度はやや遅くなります。圧縮されたファイルは、拡張子.bz2
が付与されます。
コマンドの主なオプション
オプション | 説明 |
---|---|
-c | 圧縮した内容を標準出力に出力します。元のファイルはそのまま残ります。 |
-d | ファイルを解凍します。bunzip2 コマンドと同等です。 |
-k | 圧縮後も元のファイルを残します。 |
コマンドの使用例と解説
基本的な使用例
ダミーファイルの作成
まず、「bzip2」コマンドで圧縮するダミーファイルを作成しておきます。
「dd」コマンドを使ってダミーファイルを作成します。
「dd
」コマンドは、指定したサイズのファイルを作成するために使用できます。以下のコマンドを実行して、1GBのダミーファイルを作成します。
・「dd if=/dev/zero of=dummyfile bs=1M count=1024
」コマンドを実行します。
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.48019 s, 725 MB/s
「dd if=/dev/zero of=dummyfile1 bs=1M count=1024
」コマンドの解説
以下は、「dd if=/dev/zero of=dummyfile1 bs=1M count=1024
」コマンドの各部分の意味を表にまとめたものです。
パラメータ | 意味 |
---|---|
dd | データのコピーおよび変換を行うコマンド。 |
if=/dev/zero | 入力ファイル(input file)として /dev/zero を指定。/dev/zero は無限のゼロバイトストリームを生成する特殊ファイル。 |
of=dummyfile | 出力ファイル(output file)として dummyfile を指定。このファイルが新たに作成される。 |
bs=1M | ブロックサイズ(block size)を1メガバイト(1M)に設定。各読み取りおよび書き込み操作のサイズを指定。 |
count=1024 | 指定したブロックサイズ(1M)のブロックを1024個処理する。総計で1024メガバイト(1ギガバイト)のファイルを作成する。 |
このコマンドは、「/dev/zero
」から 1メガバイト単位で 1,024ブロック(計1ギガバイト)のゼロバイトデータを読み取り、それを「dummyfile
」という名前のファイルに書き込むことで、1ギガバイトのダミーファイルを作成しています。
ダミーファイルの確認
作成したダミーファイルを確認します。
・「ls -l
」コマンドを実行します。
user01@ubuntu-vm:~$ ls -l
合計 1048616
-rw-rw-r-- 1 user01 user01 1073741824 5月 29 22: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.ファイルの圧縮
・「bzip2 dummyfile
」コマンドを実行し、「ls -l
」コマンドで確認します。
このコマンドは、「dummyfile
」を圧縮して「dummyfile.bz2
」というファイルを作成します。元の「dummyfile
」は削除され、「dummyfile.bz2
」が生成されます。
user01@ubuntu-vm:~$ bzip2 dummyfile
user01@ubuntu-vm:~$ ls -l
合計 40
-rw-rw-r-- 1 user01 user01 785 5月 29 22:58 dummyfile.bz2
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 公開
ファイルサイズサイズは、「785/1073741824」の約0.00007%までに圧縮されていることが分ります。この異様に高い圧縮率は、元のファイルがダミーファイルであるため、このように高い圧縮率となっています。
2.ファイルの解凍
・「bzip2 -d dummyfile.bz2
」コマンドを実行し、「ls -l
」コマンドで確認します。
このコマンドは、「dummyfile.bz2
」を解凍して元の「dummyfile
」を再現します。元の圧縮ファイル「dummyfile.bz2
」は削除され、「dummyfile
」が生成されます。
user01@ubuntu-vm:~$ bzip2 -d dummyfile.bz2
user01@ubuntu-vm:~$ ls -l
合計 1048616
-rw-rw-r-- 1 user01 user01 1073741824 5月 29 22: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.標準出力に圧縮結果を出力
・「bzip2 -c dummyfile > dummyfile.bz2
」コマンドを実行し、「ls -l
」コマンドで確認します。
このコマンドは、dummyfile
を圧縮し、その結果を標準出力に出力します。元の「dummyfile
」はそのまま残り、圧縮結果が「dummyfile.bz2
」として保存されます。
user01@ubuntu-vm:~$ bzip2 -c dummyfile > dummyfile.bz2
user01@ubuntu-vm:~$ ls -l
合計 1048620
-rw-rw-r-- 1 user01 user01 1073741824 5月 29 22:58 dummyfile
-rw-rw-r-- 1 user01 user01 785 5月 29 23:04 dummyfile.bz2
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.bz2
」を作成するため、「dummyfile.bz2
」を削除しておきます。
・「rm dummyfile.bz2
」コマンドを実行し、「ls -l
」コマンドで確認します。
user01@ubuntu-vm:~$ rm dummyfile.bz2
user01@ubuntu-vm:~$ ls -l
合計 1048616
-rw-rw-r-- 1 user01 user01 1073741824 5月 29 22: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 公開
圧縮後も元のファイルを残したまま、ファイルを圧縮します。
・「bzip2 -k dummyfile
」コマンドを実行し、「ls -l
」コマンドで確認します。
このコマンドは、「dummyfile
」を圧縮して「dummyfile.bz2
」というファイルを作成しますが、元の「dummyfile
」もそのまま残ります。
user01@ubuntu-vm:~$ bzip2 -k dummyfile
user01@ubuntu-vm:~$ ls -l
合計 1048620
-rw-rw-r-- 1 user01 user01 1073741824 5月 29 22:58 dummyfile
-rw-rw-r-- 1 user01 user01 785 5月 29 22:58 dummyfile.bz2
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
」を用意します。以下のコマンドを実行します。
- 「
rm dummyfile.bz2
」コマンドの実行 - 「
cp dummyfile.bz2 dummyfile1.bz2
」コマンドの実行 - 「
ls -l
」コマンドの実行
user01@ubuntu-vm:~$ rm dummyfile.bz2
user01@ubuntu-vm:~$ cp dummyfile dummyfile1
user01@ubuntu-vm:~$ ls -l
合計 2097196
-rw-rw-r-- 1 user01 user01 1073741824 5月 29 22:58 dummyfile
-rw-rw-r-- 1 user01 user01 1073741824 5月 29 23:22 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 公開
・「bzip2 dummyfile dummyfile1
」コマンドを実行します。
このコマンドは、複数のファイルを一括で圧縮します。
user01@ubuntu-vm:~$ bzip2 dummyfile dummyfile1
user01@ubuntu-vm:~$ ls -l
合計 44
-rw-rw-r-- 1 user01 user01 785 5月 29 22:58 dummyfile.bz2
-rw-rw-r-- 1 user01 user01 785 5月 29 23:22 dummyfile1.bz2
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 公開
作成したファイルの削除
この演習で作成したファイルを削除します。
・「rm dummyfile.bz2 dummyfile1.bz2
」コマンドを実行して、「ls
」コマンドで削除されたかを確認します。
user01@ubuntu-vm:~$ rm dummyfile.bz2 dummyfile1.bz2
user01@ubuntu-vm:~$ ls
snap テンプレート ドキュメント ピクチャ 公開
ダウンロード デスクトップ ビデオ ミュージック
まとめ
「bzip2
」コマンドは、高い圧縮率を提供する強力な圧縮ツールです。以下の表を参考に、具体的な使用例に合わせて適切なオプションを使用してください。
これらのオプションを駆使することで、効率的にファイルの圧縮と解凍を行うことができます。
オプション | 説明 |
---|---|
-c | 圧縮した内容を標準出力に出力します。元のファイルはそのまま残ります。 |
-d | ファイルを解凍します。bunzip2 コマンドと同等です。 |
-k | 圧縮後も元のファイルを残します。 |