Linux gzipコマンド完全ガイド|基本から全オプション・実用例まで徹底解説

この記事は約9分で読めます。
スポンサーリンク

Linux環境で運用をしていると、ログの肥大化やバックアップ容量の増加など、「ファイルサイズ」に関する悩みは必ずと言っていいほど発生します。 そのときに最初に覚えておきたいのが、シンプルで扱いやすい圧縮コマンドである「gzip」です。

この記事では、gzipコマンドの基本構文から全オプションの意味、よくある実行例、tarとの連携方法までを一つの記事で俯瞰できるように整理しています。 単なるコマンドリファレンスではなく、「どの場面でどのオプションを組み合わせると便利か」という実務目線も交えつつ解説していきます。

gzipとは何か

gzipは、LinuxやUnix系OSで標準的に利用されるファイル圧縮コマンドで、拡張子「.gz」の圧縮ファイルを扱います。 主にテキストファイルの圧縮率が高く、ログや設定ファイルなどの圧縮に広く使われています。

gzipは可逆圧縮のため、圧縮前とまったく同じ内容のファイルに戻せる点が特徴です。 多くのLinuxディストリビューションでは標準インストールされており、追加パッケージなしで利用できるケースがほとんどです。

基本構文と関連コマンド

gzipの基本構文は次の通りです。

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

圧縮・解凍に関する主な関連コマンドは以下のとおりです。

  • gzip:ファイルを圧縮、あるいはオプション付きで解凍も可能な本体コマンド。
  • gunzip:実態はgzipの別名で、解凍専用として使われることが多い。
  • zcat / zless / zmore:圧縮ファイルを伸張せずに内容を表示するためのコマンド群。

代表的な基本操作

単一ファイルを圧縮する

  • gzip file
    指定ファイルを圧縮し、file.gzを生成、元のfileはデフォルトで削除されます。
  • gzip -k file
    fileは残したまま、file.gzを作成します。

gzファイルを解凍する

  • gunzip file.gz
  • gzip -d file.gz

どちらもfile.gzを解凍し、元のfileを復元しつつ.gzの方を削除します。 元の圧縮ファイルも残したい場合は、gzip -dk file.gzのように-kを併用します。

ディレクトリに対する利用と注意点

gzipは「ファイル単体」を対象とするコマンドであり、ディレクトリ自体を1つのアーカイブにまとめる機能はありません。 ディレクトリを丸ごと1ファイルにしたい場合は、tarと組み合わせて.tar.gzを作成します。

一方、gzip -r dir のように-rオプションを付けると、指定ディレクトリ配下の全ファイルを再帰的に個別圧縮します。 この場合、各ファイルがそれぞれ *.gz になり、元ファイルはデフォルトでは削除されるため、必要に応じて -k を併用します。

主なオプション一覧(概要)

オプション概要
-d, --decompress解凍モードで動作させる。
-k, --keep元ファイルを削除せずに残す。
-r, --recursiveディレクトリ配下を再帰的に処理する。
-c, --stdoutファイルに保存せず標準出力へ結果を出す。
-f, --force既存ファイルなどを警告なしで強制上書きする。
-q, --quiet警告やメッセージ出力を抑制する。
-v, --verbose圧縮率など詳細情報を表示する。
-1-9圧縮レベルを指定(-1高速/-9高圧縮)。
-t, --test圧縮ファイルの整合性テストのみ行う。
-l, --list圧縮前後サイズや圧縮率を一覧表示する。
-n, --no-name元ファイル名・タイムスタンプを保存/復元しない。
-N, --name保存された元ファイル名・タイムスタンプを利用する。
-S, --suffix生成する拡張子を指定する(デフォルト.gz)。
-h, --helpヘルプメッセージを表示する。
-V, --versionバージョン情報を表示する。
--rsyncablersync向けに差分転送しやすい圧縮形式にする。

圧縮・解凍系オプションの詳細

-d / –decompress(解凍)

gzip -d file.gz のように指定すると、gzipが解凍モードで動作し、.gzファイルを元のファイルに戻します。 gunzipコマンドとほぼ同じ挙動で、スクリプト内で明示的にgzipを使いたい場合に指定されます。

-d-k-cと組み合わせると強力で、gzip -dkなら元の.gzを残して解凍し、gzip -dcなら伸張結果を標準出力に流す形になります。

-k / –keep(元ファイル維持)

デフォルトでは、圧縮後に元のファイルは削除されますが、-kを付けると元ファイルも残ります。 検証中やバックアップ時に安全を重視する場合は、gzip -k file のように利用すると安心です。

解凍でも同様に-kが使え、gzip -dk file.gzのようにすると.gzと展開後ファイルを両方保持できます。

-r / –recursive(再帰)

gzip -r dir で、dir配下のすべての通常ファイルを再帰的に圧縮します。 ログディレクトリ全体などを一括で圧縮したいときに有効ですが、各ファイルが個別に.gzになる点に注意してください。

ディレクトリそのものをひとまとめにしたい場合は、tar czf backup.tar.gz dir のようにtarを利用します。

出力制御・パイプ連携系オプション

-c / –stdout(標準出力)

gzip -c file > file.gz とすると、圧縮結果が標準出力に書き出され、それをリダイレクトして保存する形になります。 この場合、元ファイルはそのまま残り、パイプで他コマンドへ渡す処理にも使えます。

例えば gzip -dc file.gz | less のようにすると、解凍結果を一時ファイルを作らずに閲覧できます。

-f / –force(強制)

-fは既存ファイルの上書きや、通常はスキップされる状況でも強制的に処理を続行させたいときに使います。 自動スクリプトで対話的な確認を避けたい場合に有効ですが、意図しない上書きによるデータ損失に注意が必要です。

-q / –quiet と -v / –verbose

  • -qはエラーや警告などのメッセージ表示を抑え、ログを静かにしたい場合に利用します。
  • -vは圧縮率や処理したファイル名などを詳細表示し、テストやチューニング時に役立ちます。

圧縮レベル指定(-1〜-9)

gzipでは-1-9まで圧縮レベルを指定でき、デフォルトは中庸な値です。

  • -1:処理速度重視(低圧縮率)。CPUが厳しい環境やリアルタイム処理向き。
  • -6:速度と圧縮率のバランスが良く、一般的な用途でよく使われるレベル。
  • -9:圧縮率最優先で、処理時間は長くなるもののディスクや帯域を節約したいときに有効です。

情報表示・整合性チェック系オプション

-t / –test(整合性テスト)

gzip -t file.gz はファイルを実際には展開せず、ヘッダやチェックサムを検証して破損の有無だけをチェックします。 バックアップの検証や、ネットワーク転送後のファイル確認などに便利です。

-l / –list(統計情報表示)

gzip -l file.gz で、圧縮前サイズ、圧縮後サイズ、圧縮率、元ファイル名といった統計情報を一覧できます。 複数ファイルを指定すると合計値も表示されるため、どのディレクトリがストレージを圧迫しているか判断する材料にもなります。

メタ情報・拡張子関連オプション

-n / -N / –name

gzipは元ファイル名やタイムスタンプをヘッダに記録し、解凍時に復元する機能を持ちます。

  • -n:元名やタイムスタンプを保存・復元しない挙動に変更。
  • -N:保存されている元名やタイムスタンプを優先的に利用。

ビルド成果物の再現性や、タイムスタンプ管理ポリシーが重要な環境で意味を持ちます。

-S / –suffix

gzip -S .gz2 file のように指定すると、生成される圧縮ファイルの拡張子を任意のものに変更できます。 既存運用との整合性や、ツール連携の都合で.gz以外の拡張子を使いたい場合に利用されます。

tarとの組み合わせ(.tar.gz)

複数ファイルやディレクトリを1つのアーカイブとしてまとめてからgzip圧縮するのが、典型的な.tar.gzの運用です。

  • 作成:tar czf archive.tar.gz dir
    • c:アーカイブ作成
    • z:gzip圧縮
    • f:ファイル名指定
  • 展開:tar xzf archive.tar.gz
    • x:展開
    • z:gzip解凍
    • f:ファイル名指定

このように、「ファイル単体はgzip」「ディレクトリ単位はtar+gzip」という住み分けを覚えておくと、用途ごとに選びやすくなります。

Webサーバ運用でのgzip活用

NginxやApacheなどのWebサーバでは、テキスト系コンテンツをgzip圧縮して配信することで、転送量削減と表示速度改善を狙うのが一般的です。 たとえばNginxではgzip on;gzip_comp_levelgzip_typesなどのディレクティブを用いてオンザフライ圧縮を設定します。

また、静的アセットを事前に*.gzとして生成し、Webサーバ側でクライアントのAccept-Encodingに応じて gz ファイルを直接返す「事前圧縮」運用もよく使われます。

典型的な活用パターン

  • ログローテーションと連携し、古いログを自動で.gz圧縮してディスク容量を節約する。
  • バックアップスクリプト内でtargzipを組み合わせ、ディレクトリ全体を.tar.gzとしてまとめて遠隔地に転送する。
  • 大きなテキストデータをgzip -cとパイプでつなぎ、ストリーム処理や一時ファイル削減を行う。

まとめ:gzipをマスターして運用効率を向上させる

gzipコマンドはシンプルながら、オプションを組み合わせることでログ管理、バックアップ、Web配信など多様な場面で活躍します。 特に-k(元ファイル保持)、-r(再帰)、-c(標準出力)、圧縮レベル(-1〜-9)の使い分けを押さえれば、実務レベルの活用が可能です。

tarとの連携で.tar.gzを扱えるようになれば、ディレクトリ単位の運用もカバーでき、Linuxサーバのディスク効率が大幅に向上します。 日常的にコマンドラインを触るエンジニアにとって、gzipは必須ツールとして定着させる価値があります。

Linuxについて学びたい人はこちらもチェック

コメント

タイトルとURLをコピーしました