はじめに

こんにちは!今回はgzipコマンドについて解説します。

gzipはファイルを圧縮するコマンドです。tarとの組み合わせでバックアップを作ったり、ログファイルを圧縮したり、ダウンロードファイルを小さくしたり、毎日使う超基本的なコマンドですね。

「ファイルを小さくする」って感じです。ホントよく使います。

gzipコマンドとは

gzipは、ファイルを高圧縮率で圧縮する外部コマンドです。“GNU zip"の略ですね。

Linuxで最も一般的な圧縮形式の一つで、.gzファイルを作ります。tarと組み合わせて.tar.gzファイルも作られています。元のファイルは削除され、圧縮ファイルに置き換わります。

基本構文

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

ファイルを圧縮します。デフォルトでは元のファイルは削除されて、.gz拡張子の圧縮ファイルだけが残ります。

主なオプション

オプション 説明
-c 圧縮結果を標準出力に出力(元ファイルを保持)
-d 解凍(gunzipと同じ)
-k 圧縮後も元ファイルを保持(keep)
-v 詳細表示(verbose)
-1-9 圧縮レベル(1=低, 9=高)
-r ディレクトリを再帰的に圧縮
-f 確認なしで上書き
-t 圧縮ファイルをテスト(チェック)

使用例

例1: 基本的なファイル圧縮

1
gzip file.txt

実行結果:

1
(コマンド成功時は何も表示されない)

file.txtを圧縮してfile.txt.gzを作ります。元のファイルは削除されます。

例2: 元ファイルを保持して圧縮

1
gzip -c file.txt > file.txt.gz

実行結果:

1
(何も表示されない)

-cオプションで標準出力に出力して、リダイレクトで保存します。元のfile.txtは残ります。

例3: -kオプションで元ファイルを保持(簡単)

1
gzip -k file.txt

実行結果:

1
(何も表示されない)

-k(keep)オプションで元ファイルを残したまま圧縮できます。便利!

例4: 詳細表示で圧縮

1
gzip -v file.txt

実行結果:

1
file.txt:  51.2% -- replaced with file.txt.gz

-vオプションで圧縮率と処理結果が表示されます。

例5: ディレクトリを再帰的に圧縮

1
gzip -r mydir/

実行結果:

1
(ディレクトリ内のすべてのファイルが圧縮される)

mydir/以下のすべてのファイルを圧縮します。各ファイルが個別に.gzになります。

例6: 複数ファイルを一度に圧縮

1
gzip file1.txt file2.txt file3.txt

実行結果:

1
(何も表示されない)

複数ファイルを一度に圧縮できます。それぞれ.gzファイルになります。

例7: 圧縮レベルを指定

1
gzip -9 file.txt

実行結果:

1
(何も表示されない)

-9で最高圧縮率(時間がかかる)。-1なら高速ですが圧縮率は低め。デフォルトは-6

例8: 圧縮ファイルをテスト

1
gzip -t file.txt.gz

実行結果:

1
(チェックOKなら何も表示されない。エラーなら表示)

圧縮ファイルが壊れていないかチェックします。

例9: ファイルを解凍

1
gzip -d file.txt.gz

実行結果:

1
(何も表示されない)

-dオプション(またはgunzipコマンド)で解凍。元のfile.txtに戻ります。

例10: 解凍後も圧縮ファイルを保持

1
gzip -dc file.txt.gz > file.txt

実行結果:

1
(何も表示されない)

-d-cを組み合わせると、圧縮ファイルを残したまま内容を取り出せます。

例11: tarと組み合わせてアーカイブ圧縮

1
tar czf backup.tar.gz /home/user/documents/

実行結果:

1
(何も表示されない)

tarzオプションでgzip圧縮。.tar.gz形式でアーカイブと圧縮が同時に行われます。

例12: 圧縮率を確認

1
ls -lh file.txt file.txt.gz

実行結果:

1
2
-rw-r--r-- 1 user user 12K Jan 3 10:00 file.txt
-rw-r--r-- 1 user user 2.5K Jan 3 10:01 file.txt.gz

ファイルサイズを比較して圧縮効果を確認できます。

Tips・注意点

元ファイルが削除されるので注意

1
gzip file.txt

デフォルトではgzipコマンド後、元のfile.txtは削除されてfile.txt.gzだけになります。心配な場合は-kオプションを使いましょう。

1
gzip -k file.txt

gunzipコマンドと-dオプション

1
2
3
# どちらでも同じ
gzip -d file.txt.gz
gunzip file.txt.gz

解凍はgunzipコマンドかgzip -dで。

複数ファイルを一括圧縮するならtar

1
2
3
4
5
# ❌ ファイルが個別に圧縮される
gzip -r documents/

# ✅ 1つのアーカイブに圧縮される
tar czf documents.tar.gz documents/

ファイルをまとめて1つの圧縮ファイルにしたい場合は、tarを使いましょう。

圧縮レベルの使い分け

1
2
3
4
5
6
7
8
# 高速(-1)
gzip -1 largefile.log

# バランス(デフォルト -6)
gzip largefile.log

# 最高圧縮(-9)
gzip -9 largefile.log

ログファイルなど頻繁に圧縮する場合は-1で高速化。バックアップなら-9でしっかり圧縮。

実践的な使い方

ログファイルのローテーション圧縮

1
gzip -v /var/log/app.log

毎日のログローテーション処理で古いログを圧縮。容量を大幅に節約できます。

バックアップファイルの圧縮

1
tar czf backup_$(date +\%Y\%m\%d).tar.gz /home/user/important/

日付付きで重要なディレクトリをバックアップ。gzipでコンパクトにします。

圧縮ファイルを別のサーバーに転送

1
gzip -ck file.txt | ssh user@server "cat > /tmp/file.txt.gz"

-ckで元ファイルを保持したまま、パイプでリモートサーバーに転送。

ダウンロードサイズを削減

1
gzip -c document.pdf > document.pdf.gz

Webサーバーで配布するファイルを圧縮。ユーザーのダウンロード時間を短縮できます。

まとめ

gzipコマンドのポイント:

  • ファイルを高圧縮率で圧縮する基本コマンド
  • -k: 元ファイルを保持(重要!)
  • -c: 標準出力に出力(パイプと組み合わせ可)
  • -d: 解凍(gunzipと同じ)
  • -9: 最高圧縮率(時間がかかる)
  • tar + gzip: .tar.gzでアーカイブ圧縮
  • よく使う組み合わせ: gzip -k, tar czf, gzip -d

ログやバックアップの圧縮は日々の運用の基本。-kオプションを使えば、元ファイルの誤削除も防げますよ!