Linuxコマンド「gzip」の使い方を紹介します。
ネットで色々調べた中では、オプション解説のバリエーションはこの記事が一番多いと思います(笑)。各オプション動作については、サーバで実行して確認しています。
1.gzipコマンドの機能
指定したファイルを圧縮・解凍します。圧縮後の拡張子は「.gz」になります。
オプションは次の通りです(「-h」そのままです。手抜きですいません)。Linuxのディストリビューションによっては異なるかもしれません。サーバはFreeBSD 7.1で確認しています。
オプション | 代替オプション | 意味 |
---|---|---|
-1 | --fast | 圧縮時間が最も早い(圧縮率が最も低い) fastest (worst) compression |
-2 .. -8 | 圧縮レベルを指定 set compression level | |
-9 | --best | 圧縮率が最も高い(圧縮時間が最も遅い) best (slowest) compression |
-c | --stdout --to-stdout | 標準出力し元ファイルを維持 write to stdout, keep original files |
-d | --decompress --uncompress | ファイルを解凍 uncompress files |
-f | --force | 強制上書き force overwriting & compress links |
-h | --help | ヘルプ表示 display this help |
-k | --keep | 実行中にインプットファイルを削除しない don't delete input files during operation |
-l | --list | ファイル情報を表示 list compressed file contents |
-N | --name | 元ファイル名とタイムスタンプを保持または復元 save or restore original file name and time stamp |
-n | --no-name | 元ファイル名とタイムスタンプを保持または復元しない don't save original file name or time stamp |
-q | --quiet | 警告を出力しない output no warnings |
-r | --recursive | ディレクトリ内のファイルを再帰的に処理 recursively compress files in directories |
-S .suf | --suffix .suf | 「.gz」の代わりの拡張子を利用 use suffix .suf instead of .gz |
-t | --test | 圧縮ファイルをテスト test compressed file |
-V | --version | バージョン表示 display program version |
-v | --verbose | 詳細を表示 print extra statistics |
オプションの具体的な使い方は2項以降をご覧ください。
2.ファイルを圧縮する
ファイルfoo.txtを圧縮するには、次のようにします。
%gzip foo.txt
なお、gzipでファイルを圧縮すると、圧縮後に元ファイルが削除されます。削除されないようにするには4項を参照してください。
3.ファイルを解凍する
ファイルfoo.txt.gzを解凍するには、「-d」オプションをつけます。
%gzip -d foo.txt.gz
なお、ファイルを解凍すると、解凍後に圧縮ファイルが削除されます。削除されないようにするには4項を参照してください。
また、解凍ファイル名の末尾に「.gz」をつけなかった場合、「.gz」がついたファイルを探して解凍するようです。
4.元ファイルを消さずに圧縮・解凍する
次のように、gzipコマンドに「-c」オプションをつけ、リダイレクトで圧縮(または解凍)ファイル名を指定します。
圧縮の場合
%gzip -c foo.txt > foo.txt.gz
解凍の場合
%gzip -cd foo.txt.gz > foo.txt
「-c」は圧縮(または解凍)結果を標準出力するオプションで、標準出力の内容をリダイレクトすることで、元ファイルを残したままgzファイルを作成できます。
5.再帰的に圧縮・解凍する
あるディレクトリ配下にあるファイルすべてを圧縮(または解凍)したい場合は、「-r」オプションをつけ、ディレクトリ名を指定します。
%gzip -r hoge
6.圧縮率を上げる
圧縮率を上げるには「-数字」で指定します。値の範囲は「1」から「9」で、「9」にすると圧縮率が最大になります。ただし圧縮時間がかかります(=CPU使用率に影響します)。
%gzip -9 foo.txt
仕事では常に「-9」をつけてます。
7.圧縮したままファイルの内容を見る
圧縮したままファイルの内容を見るには、「-cd」オプションをつけます。これで解凍内容を標準出力します。
%gzip -cd foo.txt.gz
パイプでlessを連結すれば、スクロールができて便利です。
%gzip -cd foo.txt.gz | less
または「zcat」コマンドを利用します。
%zcat foo.txt.gz
8.強制上書きする
すでに圧縮ファイルが存在する場合に上書きしたい場合は、「-f」オプションをつけます。
%gzip -f foo.txt
このオプションをつけないでgzipを実行すると、次のように上書き確認のメッセージが表示されます。
foo.txt.gz already exists -- do you wish to overwrite (y or n)?
9.圧縮ファイルの圧縮率・サイズを表示する
圧縮ファイルの圧縮率・サイズを表示するには「-l」をつけます。
%gzip -l foo.txt.gz
compressed uncompressed ratio uncompressed_name
1083 3296 67.1% foo.txt
10.詳細を表示する
圧縮・解凍の詳細を表示するには、「-v」オプションをつけます。
圧縮の場合
%gzip -v foo.txt
foo.txt: 67.1% -- replaced with foo.txt.gz
解凍の場合
%gzip -dv foo.txt.gz
foo.txt.gz: 67.1% -- replaced with foo.txt
11.圧縮ファイルをテストする
圧縮ファイルをテストするには「-t」オプションをつけます。「-v」オプションをつければ「OK」などが表示されます。
%gzip -tv foo.txt.gz
foo.txt.gz: OK
12.拡張子を変更する
拡張子を「.gz」以外のものにしたい場合は「-S 拡張子」をつけます。例えば「.gzip」という拡張子にしたい場合は次のようにします。
%gzip -S .gzip foo.txt
独自の拡張子にした場合、を解凍する場合も「-S 拡張子」をつける必要があります。
%gzip -d -S .gzip foo.txt.gzip
または
%gzip -d -S .gzip foo.txt