圧縮されたファイル名が、そのファイルシステム上では長すぎる場合、 gzip はファイル名を切り詰める。 gzip はファイル名のうちの 4 文字以上のパートを切り詰めようとする。 (各パートはドットで区切られている。) 小さなパートだけからファイル名ができている場合、 もっとも長いパートが切り詰められる。 例えば、ファイル名が 14 文字までに制限されている場合、 gzip.msdos.exe は gzi.msd.exe.gz という名前で圧縮される。 ファイル名の長さに制限がないシステムでは、 ファイル名が切り詰められることはない。
デフォルトでは、 gzip は圧縮ファイルの中に元ファイルの名前とタイムスタンプを保存する。 これらの情報はファイルを -N オプションで伸長するときに使われる。 これは、圧縮されたファイルの名前が切り詰められた場合や、 ファイル転送の後でタイムスタンプが保存されなかった場合に役立つ。
圧縮されたファイルは gzip -d, gunzip, zcat を使うと元の形に復元することができる。 圧縮ファイルに保存された元ファイルの名前がファイルシステムに適合しない場合、 そのファイルシステムに適合するように元の名前から新しい名前が作られる。
gunzip は、ファイル名が .gz, -gz, .z, -z, _z, .Z でおわっており、 正しいマジックナンバーで始まっているファイルのリストを コマンドラインから受け取り、 伸長したファイルに置き換える。 このとき圧縮ファイルの拡張子は取り除かれる。 gunzip は .tgz と .taz という特別な拡張子も認識する。 これらはそれぞれ、 .tar.gz と .tar.Z の省略形である。 圧縮するときに .tar という拡張子をもつファイルの名前を切り詰める必要があるなら、 gzip はかわりに .tgz という拡張子を使う。
gunzip は gzip, zip, compress, compress -H, pack で作られたファイルを正しく伸長できる。 入力形式の検知は自動的に行われる。 はじめの 2 つの形式を使った場合、 gunzip は 32 ビットの CRC をチェックする。 pack に対して、gunzip は伸長した長さをチェックする。 標準的な compress 形式は、整合性チェックをするようには設計されていない。 しかし、 gunzip は壊れた .Z ファイルを検知することができる場合もある。.Z ファイルを 伸長しているときにエラーが出たときには、 単に標準の uncompress がエラーを出さないという理由で .Z ファイルが正しいと考えてはならない。 一般的にいうと、標準的な uncompress は入力をチェックせず、脳天気にゴミを出力してしまうことがある。 SCO の compress -H 形式 (lzh 圧縮法) は CRC を含んでいないが、いくつかの整合性チェックができる。
zip によって作られたファイルは、'deflation' 法で圧縮された元ファイルを 1 つしか含まない場合にだけ、gzip で伸長することができる。 この特徴は、tar.zip ファイルを tar.gz 形式へ変換する際の 補助となることだけを意図している。 複数の元ファイルを含んでいる zip ファイルを伸長するためには、 gunzip ではなく unzip を使うこと。
zcat は gunzip -c と同一である。 (compress へのオリジナルのリンクを保存するために、 zcat が gzcat としてインストールされているシステムがあるかもしれない。) zcat はコマンドラインで指示されるファイルのリストまたは標準入力を伸長し、 伸長したデータを標準出力に書き出す。 zcat はファイルが .gz という拡張子であるかどうかわらず、 正しいマジックナンバーを持っているファイルであれば伸長しようとする。
gzip は zip と PKZIP で使われている Lempel-Ziv アルゴリズムを使う。 得られる圧縮量は、入力のサイズと共通の部分データ列の分布に依存する。 一般に、ソースコードや英文といったテキストでは 60-70% 小さくなる。 (compress に使われている) LZW・ (pack に使われている) Huffman コーディング・ (compact に使われている) 適応 Huffman コーディング、 これらによる圧縮に比べて、この圧縮率は一般にかなり良い。
たとえ圧縮されたファイルが元ファイルより少し大きくなるとしても、 圧縮は常に行われる。 最悪の場合、gzip ファイルヘッダのための数バイトと 32K バイトブロック毎に 5 バイトの増加となり、 大きなファイルでは 0.015% の増加率となる。 ただし実際の使用ディスクブロック数は、 ほとんど絶対に増加しない。 gzip は圧縮・伸長時にファイルのアクセス権・所有者・タイムスタンプを保存する。
compressed size: 圧縮されたファイルのサイズ
uncompressed size: 伸長されたファイルのサイズ
ratio: 圧縮率 (不明の場合は 0.0%)
uncompressed_name: 伸長されたファイルの名前
compress でつくられた .Z ファイルのように、 gzip 形式でないファイルの伸長時サイズは -1 にされる。 そのようなファイルについて伸長されたファイルのサイズを求める場合は、
zcat file.Z | wc -c
を使うこと。--verbose オプションと組み合わせると 以下のフィールドも表示される。
method: 圧縮法
crc: 伸長されたデータの 32 ビット CRC
date & time: 伸長されたファイルのタイムスタンプ
現在サポートされている圧縮法は、deflate, compress, lzh (SCO compress -H), pack である。 gzip 形式でないファイルについて、crc は ffffffff とされる。
--name が同時に指定されると、(もし記録されているなら) 伸長されたファイルの名前・日付・時刻は 圧縮ファイル内に記録されているものになる。
--verbose が同時に指定されると、どれかのファイルのサイズが不明でない限り、 サイズの合計とその圧縮率も表示される。 --quiet が同時に指定されると、タイトルと合計の行は表示されない。
gunzip -S "" * (MSDOS の場合は *.*)
前のバージョンの gzip は拡張子 .z を使った。 これは pack(1) との衝突を避けるために変更された。
gzip -c file1 > foo.gz
gzip -c file2 >> foo.gz
の後
gunzip -c foo
とするのは、以下と同じである。
cat file1 file2
.gz ファイルのうち 1 つのファイルが壊れても、 (壊れたファイルを削除すれば) 他のファイルはまだ回復できる。 しかし、次のようにすべてのファイルを一度に圧縮すれば、より高い圧縮が得られる。
cat file1 file2 | gzip > foo.gz
これは下の例より高く圧縮できる。
gzip -c file1 file2 > foo.gz
より高い圧縮を得るために、結合されたファイルをもう一度圧縮するには、 次のようにすること。
gzip -cd old.gz | gzip > new.gz
圧縮ファイルが複数の元ファイルで構成されている場合、 --list オプションで表示される伸長時のサイズと CRC は、 最後の元ファイルについてのみ適用されたものである。 すべての元ファイルについて伸長時のサイズが必要な場合は、 次のコマンドを使うこと。
gzip -cd file.gz | wc -c
複数の元ファイルからなる 1 つの書庫ファイルを作って、 後から元ファイルを別々に伸長できるようにしたいなら、 tar や zip といったアーカイバーを使うこと。 GNU tar は gzip を透過的に起動するために -z オプションをサポートしている。 gzip は tar の代用としてではなく、補助として設計されている。
Vax/VMS では、環境変数の名前は GZIP_OPT である。 これは、プログラムを呼び出すためのシンボルセットとの衝突を避けるためである。
Usage: gzip [-cdfhlLnNrtvV19] [-S suffix] [file ...] 無効なオプションがコマンドラインから指定された。 file: not in gzip format gunzip に指示されたファイルが圧縮されたものではない。 file: Corrupt input. Use zcat to recover some data. 圧縮されたファイルが壊れている。 破損した位置までのデータは、次のコマンドを使って修復できる。 zcat file > recover file: compressed with xx bits, can only handle yy bits ファイル が、このマシン上での伸長コードより多くの ビット を扱うことができるプログラムで (LZW を使って) 圧縮されている。 より高い圧縮ができ、メモリ使用量の少ない、gzip を使って ファイルを再圧縮すること。 file: already has .gz suffix -- no change ファイルが既に圧縮されていると考えられる。 ファイル名を変更し、再度試みること。 file already exists; do you wish to overwrite (y or n)? 出力ファイルで置き換えたいなら "y" と答えること。 さもなければ、"n" と答えること。 gunzip: corrupt input SIGSEGV 違反が検知された。通常は、入力ファイルが壊れていることを意味している。 xx.x% 圧縮により減った入力のパーセント表示。 (-v と -l のみに関連する。) -- not a regular file or directory: ignored 入力ファイルが通常ファイルでもディレクトリでもない場合 (たとえば、シンボリックリンク・ソケット・FIFO・デバイスファイルの場合)、 変更せずにそのままにされる。 -- has xx other links: unchanged 入力ファイルにリンクが張られているので、変更しない。 詳しい情報は ln(1) を参照すること。 複数にリンクが張られているファイルを強制的に圧縮するには -f フラグを使うこと。
上の例では、gzip は GNU tar の -z オプションによって暗に呼び出されている。 テープ上の圧縮されたデータの読み出しと書き込みに 同じブロックサイズ (tar の -b オプション) が使われていることに注意すること。 (この例は、GNU 版の tar を使うことを仮定している。)
稀に --best オプションによって、デフォルトの圧縮レベル (-6) より 圧縮が悪くなることがある。 非常に冗長なファイルでは、 compress による圧縮が gzip より良くなることがある。