SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

UNIXコマンド辞典

bzip2

bzip2形式でファイルを圧縮する

対応OS: linux , freebsd, solaris

2015/05/20 08:00

bzip2 [-c] [-d [-t]] [-f] [-k] [-v] [FILE...]

 bzip2コマンドは、FILE...で指定したファイルをbzip2形式で圧縮します。bzip2コマンドを実行すると、FILE...に指定した元のファイルは削除され、元ファイル名の末尾の「.bz2」を付与した名前で圧縮後のファイルが作成されます。

オプション
① -c
圧縮した結果を標準出力に出力します。
② -d
圧縮ではなく伸張(解凍)を行います。bunzip2コマンドを実行した場合と同じ結果を得ることができます。
③ -t
オプション「-d」とともに指定し、圧縮ファイルの形式が妥当かどうか(正しく解凍できるかどうか)を確認するために、一時的に解凍を行いますが、すぐに解凍後のファイルを削除します。この時、元のファイルは削除されません。圧縮ファイルの形式がbzip2形式でない場合には、エラーが発生するので、それによって妥当かどうかがわかります。
④ -f
圧縮後のファイル名と同一名のファイルが既に存在する場合に、エラーとせず無条件で上書きします。
⑤ -k
圧縮する元のファイルを削除しません。
⑥ -v
処理内容を表示します。
引数
① FILE...
圧縮するファイルのパスを指定します。複数指定する場合は、圧縮するファイルのパスをスペースで区切って指定します。省略した場合は標準入力からの入力となります。
ファイルをbzip2形式で圧縮する
[takeda]$ ls -l 
合計728
-rw-r--r-- 1 takeda takeda 738418 4月 19 12:56 file1
圧縮前のファイル
[takeda]$ bzip2 file1
[takeda]$ ls -l
合計188
-rw-r--r-- 1 takeda takeda 187762 4月 19 13:15 file1.bz2
圧縮後のファイル
圧縮前のファイルは削除されている
[takeda]$
圧縮前のファイルを残して圧縮する
[takeda]$ ls -l 
合計728
-rw-r--r-- 1 takeda takeda 738418 4月 19 12:56 file1
[takeda]$ bzip2 -k file1
オプション「-k」を指定すると、元のファイルを削除しない
[takeda]$ ls -l
合計916
-rw-r--r-- 1 takeda takeda 738418 4月 19 12:56 file1
-rw-r--r-- 1 takeda takeda 187762 4月 19 14:20 file1.bz2
[takeda]$
圧縮後ファイルの同一名ファイルを上書きする
[takeda]$ ls -l 
合計396
-rw-r--r-- 1 takeda takeda 20108 4月 19 12:56 file1
-rw-r--r-- 1 takeda takeda 187762 4月 19 14:20 file1.bz2
[takeda]$ bzip2 file1
bzip2: Output file file1.bz2 already exists.
オプション「-f」を付けないとエラーが発生
[takeda]$ bzip2 -f file1
[takeda]$ ls -l
合計8
-rw-r--r-- 1 takeda takeda 6931 4月 19 14:54 file1.bz2
ファイル「file1」を圧縮してできたファイルサイズや更新日時が異なることから、元々あったファイル「file1.bz2」とは違うファイルであることがわかる
[takeda]$
処理内容を表示する
[takeda]$ ls -l 
合計20
-rw-r--r-- 1 takeda takeda 20108 4月 19 13:54 file1
[takeda]$ bzip2 -v file1
file1: 2.901:1, 2.758 bits/byte, 65.53% saved, 20108 in, 6931 out.
[takeda]$
bzip2形式圧縮ファイルが妥当かどうかを確認する
[takeda]$ ls -l 
合計8
-rw-r--r-- 1 takedak takedak 6931 4月 19 13:54 file1.bz2
[takeda]$ bzip2 -d -t file1.bz2
オプション「-d」と「-t」を指定して、圧縮ファイルが妥当かどうかを調べる
ここではエラーが発生しないので妥当
[takeda]$ ls -l
合計8
-rw-r--r-- 1 takedak takedak 6931 4月 19 13:54 file1.bz2
元のファイルはそのまま
[takeda]$
HINT!

 lsコマンド

圧縮形式

 一ロに圧縮ファイルといっても実にさまざまな圧縮形式があり、どの圧縮形式が一番良いのか今もって混沌としている状態です。一般のファイルという意味ではWindowsがLZH形式とzip形式でUNIX環境がcompress形式(もう古いか?)とgzip形式でしょうか。そもそもなぜそんなに多くの形式があるのでしょうか?圧縮というのは、実に複雑で例えばファイルの中身が“0000111”である時、これを「連続する文字の数と文字一個」と定義した場合、“4031”となり3文字分圧縮できることになります。一方、元のデータが“0101”の場合はどうでしょう。同じ圧縮論理で圧縮するなら、“10111011”となり4文字も増えてしまいます。これは圧縮論理は必ずしもすべてのケースにおいて圧縮されるわけではないことを示唆しています。試しに一文字で定義したファイルを圧縮コマンドに通してみてください。やるまでもありませんね。一文字のテキストファイルはこれ以上小さくできないのですから。でもやってみて下さい。そしてファイルがどれくらい大きくなったかを見てみて下さい。きっと驚かれると思います。何でも圧縮すればよいというものでもないようです。

関連タグ

UNIXコマンド辞典トップページに戻る

本コンテンツは「UNIXコマンド辞典 ビギナー編」(2003年)を元にWeb用に再編集したものです
All Contents copyright © 2003-2009 Odyssey Communications Inc., Shoeisha Co., Ltd.

開発者必携!VBAスキルを証明する資格「VBAエキスパート」

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング