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

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

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

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

Linux基本コマンドTips一覧

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

bzip2コマンド/bunzip2コマンドとは?

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

 拡張子には「.bz2」を使用します。gzipより新しく、圧縮率も高い形式です(※2)。

※1 tarコマンドの「-j」オプション(「--bzip2」オプション)を指定することで、bzip2形式の圧縮や伸張をtarの実行と同時に処理できる。
※2 より新しい「.xz」では圧縮率がさらに改善されている(xzコマンドを使用、第249回)。





bzip2コマンドの書式

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

bunzip2コマンドの書式

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

※[ ]は省略可能な引数を示しています





bzip2/bunzip2の主なオプション

短いオプション 長いオプション 意味
-d --decompress 伸張を行う(bunzip2コマンドのデフォルト)
-z --compress 圧縮を行う(bzip2コマンドのデフォルト)
-1〜-9 圧縮時のブロックサイズを100K〜900KBに設定する(ブロックサイズが大きと圧縮率が高くなるものの、使用するメモリ量が大きくなる)
-s --small メモリ使用量を減らす(圧縮の際は「-2」相当となる)
-c --stdout 結果をファイルではなく標準出力へ出力する(主にパイプで別コマンドに渡す際に使用)
-k --keep 圧縮前/伸張前のファイルを残す
-f --force ファイルを上書きする
-t --test 圧縮ファイルを伸張せず、整合性をテストする
-q --quiet 致命的なエラー以外のメッセージを表示しない
-v --verbose 処理中の圧縮率などを表示する(-vの数を増やすとより詳細になる)
-- これ以降は全てファイル名として扱う(ダッシュで始まる名前のファイルを使用したい場合などに使用)


ファイルを圧縮する

 「bzip2 ファイル名」でファイルを圧縮します(画面1)。ファイルを複数指定することができ、その場合、ファイルを個別に圧縮します。

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

コマンド実行例

bzip2 ファイル名

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

bzip2 -k ファイル名

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

bzip2 mydata

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


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


ファイルを伸張する

 「bunzip2 ファイル名」でファイルを伸張します(画面2)。ファイル名の指定では拡張子bz2を指定する必要があります。画面2の例では「*」を指定してbz2を入力する手間を省いています。

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

コマンド実行例

bunzip2 ファイル名

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

bunzip2 -k ファイル名

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

bunzip2 mydata.bz2

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


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


ブロックサイズと圧縮率の関係を確かめる

 bzip2はファイルを一定サイズのブロック単位に分けて圧縮処理を進めていきます。「-1」〜「-9」オプションを指定することで、このブロックサイズを変更できます(画面3)。ブロックサイズを大きくすると動作時の使用メモリが多くなりますが、圧縮ファイルのサイズは小さくなります。ブロックサイズの指定は処理速度にはあまり影響しないとされています。

 画面3では、「-1」と「-9」を使用した際の圧縮率の違いを示しました。元のファイルの何%に圧縮されたのかを表示するために「-v」オプションを使用しています。

画面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のメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。