新Linux入門|ファイルサイズを小さく!Linuxのgzipコマンドで圧縮・展開する方法

Linuxで作業をしていると、ログファイルが大きくなりすぎて保存できない!
バックアップを小さくしたい! といった場面に出くわすことがありますよね。

そんなときに役立つのが、gzip(ジー・ジップ)コマンド です。
 このコマンドを使えば、ファイルを簡単に圧縮してサイズを小さくしたり、逆に展開して元に戻すことができます。

ここでは、AlmaLinux 9.6を使って、gzipコマンドの仕組みと使い方をやさしく解説します。

🗜️gzipコマンドとは?

gzip コマンドは、ファイルを圧縮・展開するためのLinux標準コマンドです。
圧縮アルゴリズムには LZ77(Lempel-Ziv 1977)ハフマン符号化 が使われており、
高い圧縮率を実現しながらも処理が軽いのが特徴です。

項目内容
コマンド名gzip
主な用途ファイルの圧縮・展開
圧縮アルゴリズムLZ77 + ハフマン符号化
圧縮後の拡張子.gz
対応OSLinux / Unix / macOS など

💡 ポイント
gzipはファイル単位で動作します。
複数ファイルをまとめたい場合は、tarコマンドと組み合わせて使う(tar.gz)のが一般的です。

⚙️ gzipコマンドの書式

gzip [オプション] ファイル名
パラメータ意味
ファイル名圧縮または展開する対象ファイルを指定

💬 基本動作

  • gzip filename.txt → filename.txt.gz が作成され、元ファイルは削除されます。
  • gzip -d filename.txt.gz → 展開して filename.txt に戻ります。

🛠️ 主なオプション

オプション説明
-d, --decompress圧縮ファイルを展開する。
-c, --stdout圧縮または展開結果を標準出力に表示(元ファイルを残す)
-f, --force同名の圧縮ファイルがあっても上書きする。
-r, --recursiveディレクトリ内のファイルを再帰的に処理する。
-t, --test圧縮ファイルが正常かどうかをテストする。
-1 ~ -9圧縮レベルを指定(1:高速、9:高圧縮)
-9, --best最高圧縮率で圧縮する(-9と同じ)
-v, --verbose詳細な処理内容を表示する。

💡 圧縮レベルについて
圧縮率を上げる(-9)と時間はかかりますが、ファイルサイズが小さくなります。
逆に(-1)は処理が早いですが圧縮率は低めです。

🧾 gzipコマンドの使用例と出力例

① ファイルを圧縮する

[suzuki@AlmaLinux ~]$ ls
report.txt
[suzuki@AlmaLinux ~]$ gzip report.txt
[suzuki@AlmaLinux ~]$ ls
report.txt.gz

📘 解説
report.txt を圧縮して report.txt.gz が作成されました。
元の report.txt は自動的に削除されます。

② ファイルを展開する

[suzuki@AlmaLinux ~]$ gzip -d report.txt.gz
[suzuki@AlmaLinux ~]$ ls
report.txt

📘 解説
-d(decompress)オプションでファイルを元に戻します。
展開後、拡張子 .gz は削除され、元のファイル名に戻ります。

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

[suzuki@AlmaLinux ~]$ gzip -c report.txt > report.txt.gz

📘 解説
-c(stdout)オプションを使うと、圧縮データを標準出力に送ることができます。
リダイレクト(>)を使えば、元ファイルを残したまま圧縮ファイルを作れます。

④ ディレクトリ内のファイルをまとめて圧縮

[suzuki@AlmaLinux ~]$ gzip -r logs/
[suzuki@AlmaLinux ~]$ ls logs/
syslog.gz  messages.gz  dmesg.gz

📘 解説
-r(recursive)でディレクトリ内の全ファイルを一括圧縮します。
大きなログディレクトリを整理するときに便利です。


⑤ 圧縮レベルを指定して圧縮

[suzuki@AlmaLinux ~]$ gzip -9 bigfile.log

📘 解説
-9 は最高圧縮率。サイズは小さくなりますが、処理時間は少し長くなります。

⑥ 圧縮ファイルが壊れていないか確認

[suzuki@AlmaLinux ~]$ gzip -t report.txt.gz
[suzuki@AlmaLinux ~]$ echo $?
0

📘 解説
-t は圧縮ファイルの整合性チェックです。
0 が返れば問題なし、エラーコードが返る場合は破損しています。

🧠 gzipとgunzipの関係

実は gzip -d は gunzip コマンドと同じ動作をします。
どちらを使っても結果は変わりません。

コマンド動作備考
gzip -d filename.gz展開gzip本体のオプション指定
gunzip filename.gz展開gzipの別名コマンド(同機能)

💡 豆知識
gunzip は gzip パッケージに含まれており、内部的には gzip -d を呼び出しています。

🧮 gzipコマンド使用前後のサイズ比較

ファイル名サイズ(圧縮前)サイズ(圧縮後)圧縮率
report.txt1.0 MB250 KB約75%削減
bigdata.log100 MB28 MB約72%削減
access.log50 MB13 MB約74%削減

📘 解説
テキストデータは繰り返しパターンが多く、gzipで非常に高い圧縮率が得られます。
一方で、JPEGやMP4など既に圧縮されているファイルはほとんどサイズが変わりません。

✅ まとめ:gzipでファイルサイズを賢く削減しよう!

gzip コマンドは、Linuxで最もよく使われる圧縮ツールのひとつです。
 簡単なコマンドでファイルサイズを小さくでき、サーバーのストレージ節約や転送速度向上に役立ちます。

💡 覚えておきたいポイント

  • gzip filename → ファイルを圧縮(.gzに変換)
  • gzip -d filename.gz → 展開して元に戻す
  • gzip -c file > file.gz → 元ファイルを残して圧縮
  • gzip -r dir/ → ディレクトリ内を再帰的に圧縮

Linuxエンジニアの基本スキルとして、ぜひ覚えておきましょう!