このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Linuxコマンドの基本:ファイルを圧縮する:gzipコマンド

ファイルを圧縮する:gzipコマンド

 ファイルの圧縮と展開は、システム管理やデータのバックアップにおいて重要な操作です。gzipコマンドは、ファイルを効率的に圧縮・展開するためのLinux系システムで広く使われているツールです。ここでは、gzipコマンドの基本的な使い方やオプションについて、具体的な例とともに解説します。

gzipコマンドとは

  • 目的:ファイルを圧縮・展開する。
  • 拡張子:圧縮されたファイルには慣習的に.gzが付けられる。
  • 特徴
    ・歴史が古く、互換性が高い。
    ・高速に動作する。
    ・現在でも幅広く使用されている。

gzipコマンドの基本的な使い方

ファイルを圧縮する

【書式】ファイルを圧縮する
gzip <圧縮元ファイル>

ステップ1:ダミーファイルの作成

:100MBのダミーファイルを作成し、それをgzipで圧縮します。

user01@ubuntu:~$ dd if=/dev/zero of=dummyfile bs=1M count=100

説明

  • ddコマンドを使用して、/dev/zeroから100MBのゼロフィルされたファイルを作成。
  • if=/dev/zero:入力ファイルを/dev/zeroに指定。
  • of=dummyfile:出力ファイルをdummyfileに指定。
  • bs=1M:ブロックサイズを1MBに設定。
  • count=100:100個のブロックを作成。

実行結果

100+0 records in
100+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 0.0557598 s, 1.9 GB/s

ステップ2:ファイルの確認

dummyfileが100MBのサイズで作成されていることを確認。

user01@ubuntu:~$ ls -l

出力例

合計 102444
drwxrwxr-x 2 user01 user01      4096 11月 24 15:59 bin
-rw-rw-r-- 1 user01 user01 104857600 12月  1 22:29 dummyfile
...(以下省略)...

ステップ3:gzipでファイルを圧縮

user01@ubuntu:~$ gzip dummyfile

実行後のファイル一覧

user01@ubuntu:~$ ls -l

出力例

合計 144
drwxrwxr-x 2 user01 user01   4096 11月 24 15:59 bin
-rw-rw-r-- 1 user01 user01 101801 12月  1 22:29 dummyfile.gz
...(以下省略)...

結果

  • dummyfiledummyfile.gzに圧縮された。
  • ファイルサイズが約100MBから約100KBに大幅に縮小。

注意点

  • gzipコマンドを実行すると、元のファイルは削除され、圧縮ファイルのみが残ります。
  • 圧縮ファイル名は、元のファイル名に.gzを付加したものになります。

ファイルを展開する

【書式】
gzip -d <圧縮ファイル>
または
gunzip <圧縮ファイル>

ステップ1:gzipコマンドで展開

user01@ubuntu:~$ gzip -d dummyfile.gz

実行後のファイル一覧

user01@ubuntu:~$ ls -l

出力例

合計 102444
drwxrwxr-x 2 user01 user01      4096 11月 24 15:59 bin
-rw-rw-r-- 1 user01 user01 104857600 12月  1 22:29 dummyfile
...(以下省略)...

結果

  • dummyfile.gzが展開され、dummyfileが復元された。
  • 圧縮ファイル(.gzファイル)は削除されます。

ステップ2:gunzipコマンドで展開

gunzipコマンドは、gzip -dと同等の動作をします。

user01@ubuntu:~$ gzip dummyfile
user01@ubuntu:~$ gunzip dummyfile.gz

gunzipコマンドの内部構造

gunzipは実はシェルスクリプトであり、内部でgzip -dを実行しています。

確認方法

user01@ubuntu:~$ less $(which gunzip)

出力例(抜粋)

#!/bin/sh
# Uncompress files.  This is the inverse of gzip.
...
version="gunzip (gzip) 1.12
/usr/bin/gunzip

説明

  • lessコマンドでgunzipのソースコードを閲覧できます。
  • which gunzipgunzipコマンドのパスを取得。

標準出力にgzipファイルを出力する

-cオプションを使用すると、圧縮データを標準出力に出力できます。

【書式】
gzip -c <圧縮元ファイル> > <出力ファイル名>

:任意のファイル名で圧縮ファイルを作成

user01@ubuntu:~$ gzip -c dummyfile > gzip_test.gz

結果

dummyfileを圧縮し、gzip_test.gzという名前で保存。

実行後のファイル一覧

user01@ubuntu:~$ ls -l

出力例

合計 102544
drwxrwxr-x 2 user01 user01      4096 11月 24 15:59 bin
-rw-rw-r-- 1 user01 user01 104857600 12月  1 22:29 dummyfile
-rw-rw-r-- 1 user01 user01    101801 12月  1 23:04 gzip_test.gz
...(以下省略)...

注意点

  • gzip -cの出力はバイナリデータであり、ターミナルに直接表示すると文字化けします。
  • 必ずリダイレクトやパイプを使用して出力を処理してください。

gzipコマンドの主なオプション一覧

オプション説明
-dファイルを展開する(--decompressと同等)
-c標準出力に出力する
-k圧縮後も元のファイルを保持する
-l圧縮ファイルの情報を表示
-v詳細な情報を表示する
-1-9圧縮レベルを指定する(-1が高速、-9が高圧縮)

ここで作成したファイルの削除

テストで作成したファイルを削除して、ディスクスペースを解放します。

user01@ubuntu:~$ rm dummyfile gzip_test.gz

まとめ

  • gzipコマンドは、簡単にファイルを圧縮・展開できる便利なツールです。
  • 基本操作
    ・圧縮:gzip <ファイル名>
    ・展開:gzip -d <圧縮ファイル> または gunzip <圧縮ファイル>
  • ポイント
    ・圧縮・展開時には元のファイルが削除されるため、必要に応じてバックアップを取るか、-kオプションを使用して元のファイルを保持してください。
    -cオプションを使用すると、標準出力に圧縮データを出力でき、リダイレクトで任意のファイル名で保存可能です。
  • 応用
    ・スクリプト内での圧縮処理や、パイプライン処理での活用など、さまざまな場面で利用できます。

 gzipコマンドをマスターすることで、効率的なファイル管理が可能になります。ぜひ活用してみてください。