gzipとは、ファイルをGZIP形式で圧縮するUnix/Linuxコマンドであり、GNUプロジェクトによって開発されている。
gzipとzipはどちらも圧縮形式であるが、用途や特徴が異なり、互換性がない。
| gzip | zip | |
|---|---|---|
| 拡張子 | .gz |
.zip |
| 複数ファイル格納 | 不可(基本的に1ファイルのみ) | 可能 |
| ディレクトリ圧縮 | 単独では不可 | 可能 |
| 圧縮方式 | DEFLATE | 主にDEFLATE |
| Linux/Unixでの利用 | 非常に一般的 | 一般的 |
| Windows標準対応 | 近年は対応あり | 標準対応 |
| 圧縮率 | 高い(一般的にzipより小さくなる) | 普通 |
gzipは「1つのファイルを小さくする」ことしかできない。そのため、複数のファイルやフォルダを圧縮したいときは、まずtarというツールで1つのファイルにまとめてから、gzipで圧縮する。これがよく見かける .tar.gz というファイルである。
zipは複数のファイルやフォルダを、その階層構造(フォルダのなかのフォルダなど)を保ったまま1つの.zipファイルにまとめることができる。
gzip [-acdfhklLnNrtvV19] [-S suffix] [name]...
以下に示す引数を gzip コマンドに指定できる。
$ gzip file1
file1 というファイルを圧縮して、 file1.gz というファイルを作成する。元の file1 というファイルは削除される。
以下に示すオプションを gzip コマンドに指定できる。
| OS | 改行コード | 表記 |
|---|---|---|
| Linux / Unix | LF | \n |
| macOS | LF | \n |
| Microsoft Windows | CR + LF | \r\n |
$ gzip -c file1 > foo.gz
$ gzip --stdout file1 > foo.gz
$ gzip -d example.tar.gz
$ gzip --decompress example.tar.gz
$ gzip -f example.tar.gz
$ gzip --force example.tar.gz
$ gzip -k example.tar.gz
$ gzip --keep example.tar.gz
$ gzip -q example.tar.gz
$ gzip --quiet example.tar.gz
$ gzip -r /home/tsuka/example
ディレクトリの中にある .gz ファイルを再帰的にすべて展開(解凍)する。
$ gzip -d -r /home/tsuka/example
$ gzip --recursive /home/tsuka/example
ディレクトリの中にある .gz ファイルを再帰的にすべて展開(解凍)する。
$ gzip --decompress --recursive /home/tsuka/example
$ gzip -S .gzip file1
$ gzip --suffix .gzip file1
$ gzip -1 example.tar.gz
$ gzip --fast example.tar.gz
$ gzip -6 example.tar.gz
本サイトのすべてを tar コマンドでまとめたファイルを例に、圧縮率の違いを以下に示す。
| 圧縮方法 | ファイルサイズ |
|---|---|
segakuin.com.tar (非圧縮) |
74127360 |
gzip -6 segakuin.com.tar |
54639263 |
gzip -1 segakuin.com.tar |
55798062 |
gzip -9 segakuin.com.tar |
54582925 |
bzip2 egakuin.com.tar |
54224356 |
gzip -9 より bzip2 コマンドで圧縮した方が圧縮率が良い。
$ gzip -9 example.tar.gz
$ gzip --best example.tar.gz
$ gzip -h
$ gzip --help
$ gzip -v example.tar
$ gzip --verbose example.tar
$ gzip -V
$ gzip --version
gzipコマンドは、以下に示す終了ステータスを返す。
| 終了ステータス | 意味 |
|---|---|
| 0 | 正常に終了 |
| 1 | エラーが発生した |
| 2 | 警告が発生した |
エラーまたは警告が発生した場合、errno にエラー番号が格納される。
Microsoft Windows には gzip コマンドが存在しない。ただし、PowerShell の tar コマンドを使えば、GZIP形式の圧縮ファイルを作成することができる。
C:> tar -czf archive.tar.gz folder_name/
C:> tar -czf - data.txt > data.txt.gz
Internet Engineering Task Force, "RFC 1952 (GZIP file format specification version 4.3)", 1996.