【Linuxコマンド】gzip コマンドの使い方とよく使うオプション

概要

 
gzip コマンドは、ファイルを圧縮・解凍するためのコマンドです。
指定したファイルを圧縮し、通常は元のファイル名の末尾に .gz を付けたファイルとして出力します。
 

gzip 単体ではディレクトリを直接圧縮することはできません
ディレクトリごとまとめて圧縮したい場合は、いったん tar でアーカイブ(.tar)を作成し、
その .tar ファイルに対して gzip をかけて .tar.gz(または .tgz) とするのが一般的です。
 

こちらに関連する記事があります。

フォーマット

 

gzip [オプション]... ファイル名...
gzip -d [オプション]... ファイル名.gz...

 

デフォルトでは、指定したファイルを圧縮し、元ファイルを削除した上で ファイル名.gz を作成します。
元ファイルを残したまま圧縮したい場合は -k オプションを使います。

 

よく使うコマンド例

 

・ファイルを圧縮する

gzip hoge.log

hoge.log を圧縮し、hoge.log.gz を作成します。
このとき、デフォルトでは hoge.log は削除される点に注意してください。

 

・ファイルを解凍する

gzip -d hoge.gz

-d(–decompress)を指定すると、hoge.gz を展開して hoge を復元します。
gunzip hoge.gz と同じ動作です。

 

・元ファイルを残したまま圧縮する

gzip -k hoge.log

-k(–keep)を付けると、hoge.log を削除せずに hoge.log.gz を作成します。
ログを解析しながら、圧縮版も用意しておきたい場合などに便利です。

 

・圧縮した結果を標準出力に出力する

cat hoge.log | gzip -c > hoge.log.gz

-c(–stdout)は、圧縮結果をファイルではなく標準出力に出力するオプションです。
この例では hoge.log を残したまま、圧縮データだけを hoge.log.gz にリダイレクトしています。

 

・圧縮レベルを指定して圧縮する

gzip -9 backup.tar

gzip は -1-9 で圧縮レベルを指定できます(数字が大きいほど圧縮率重視)。
-9 は最高圧縮、-1 は高速優先、指定なしはデフォルト(通常は中間の圧縮率)です。
バックアップをできるだけ小さくしたい場合に -9 を使うケースがあります。

 

・圧縮ファイルの情報を確認する

gzip -l hoge.log.gz

-l(–list)は、.gz ファイルの元サイズ・圧縮サイズ・圧縮率などを一覧表示します。
どれくらいサイズ削減できているか、ざっくり確認したいときに便利です。

 

・ディレクトリ配下のファイルを再帰的に圧縮する

gzip -r logs/

-r(–recursive)は、指定したディレクトリ配下のファイルを再帰的に圧縮します。
ただしディレクトリ構造自体は tar のように 1 ファイルにまとまらないため、
バックアップ用途では tar czf backup.tar.gz logs/ のように tar と組み合わせるのが一般的です。

 




実務でのよくある使いどころ

 

・ログローテーション後のログ圧縮
access.log.1 のようにローテーションされたログを access.log.1.gz に圧縮し、ディスク使用量を抑えるケースが一般的です。
多くのディストリビューションでは、logrotate が内部で gzip を呼び出して自動圧縮しています。
 

・バックアップファイルの容量削減
tar で固めたアーカイブ(backup.tar)を gzip で圧縮し、backup.tar.gz として保存することで、
バックアップストレージの消費を抑えることができます。
 

・ネットワーク転送の効率化
大きなログやバックアップファイルを事前に gzip で圧縮してから転送することで、
ネットワーク帯域が限られている環境でも転送時間を短縮できる場合があります(CPU とのトレードオフ)。
 

・一時的なログの持ち出し・共有
特定期間のログだけを tar + gzip でまとめて圧縮し、
開発チームやベンダーに共有する、といった用途でもよく使われます。
 

gzip は単一ファイルの圧縮・解凍を担当するコマンドです。
複数ファイルやディレクトリ構造全体を扱う場合は、tar と組み合わせて .tar.gz として運用するのが定番です。

 

オプション(よく使うオプションのみ)

 

short optionlong optiondescription
-c--stdout圧縮結果をファイルではなく標準出力に書き出す(元ファイルはそのまま)
-d--decompress圧縮ファイルを展開する(gunzip と同等の動作)
-k--keep圧縮後も元ファイルを削除せずに残す
-f--force既に存在する圧縮ファイルの上書きや端末への出力などを強制的に実行する
-l--list圧縮ファイルの情報(元サイズ・圧縮サイズ・圧縮率・名前)を一覧表示する
-r--recursiveディレクトリを再帰的にたどって配下のファイルを圧縮する
-t--test圧縮ファイルを展開せずに整合性チェック(テスト)を行う
-1圧縮率より速度優先で圧縮する(高速・低圧縮)
-9速度より圧縮率優先で圧縮する(低速・高圧縮)
-n圧縮ファイルに元ファイルのタイムスタンプや名前などのメタ情報を保存しない
-N圧縮ファイルに元ファイルのタイムスタンプや名前などのメタ情報を保存する(デフォルト動作)
-q--quiet警告メッセージを表示しない(静かなモードで動作させる)
-v--verbose圧縮率や処理内容など詳細な情報を表示する
-S--suffix生成する圧縮ファイルの拡張子(サフィックス)を指定する(デフォルトは .gz)
-h--helpgzip コマンドの使い方(ヘルプ)を表示して終了する
-V--versiongzip コマンドのバージョン情報を表示して終了する
 

ここでは、gzip コマンドでよく使う主なオプションを TablePress の表で一覧化している想定です。
圧縮レベル・元ファイルの扱い・標準出力への出力・再帰圧縮などを組み合わせることで、ログ運用やバックアップの効率化に役立ちます。
詳細なオプションやバージョンによる違いは、実行環境の man gzip もあわせて確認してください。

ブログランキングに参加しています。クリックして応援していただけると嬉しいです。

人気ブログランキング
ブログランキング・にほんブログ村へ
にほんブログ村