もし、圧縮されたファイル名がファイルシステムにとって長ければ、 gzip は、その名前を縮めます。 gzip は、ファイル名の 3 文字以上の部分にのみ名前の縮小を試みます。 (部分とは、ドットによって分けられた所です。) もし、ファイル名が短かい部分のみで 構成されていた時は、最も長い部分を縮小します。例えば、ファイル名が 14 文字 という制限がある時、 gzip.msdos.exe は gzi.msd.exe.gz となります。 ファイル名の文字数が制限を持たないシステムでは、 ファイル名の縮小は行われません。
デフォルトで gzip は、オリジナルのファイル名とタイムスタンプを圧縮されたファイル中に保存します。 これらは、 -N オプション付きで伸長された時に、使われます。これは、圧縮されたファイル名が 縮小されていたり、ファイル転送後にタイムスタンプが保存されなかった時に 便利です。
圧縮されたファイルは、 gzip -d か gunzip か zcat を用い、オリジナルに戻すことが出来ます。 もし、圧縮されたファイルに保存されたオリジナルのファイル名がファイルシステムに 合わなければ、オリジナルのファイル名から新しいファイル名が作られます。
gunzip は、コマンドライン上のファイルのリストを 受け取り、.gz, -gz, .z, -z, _z, .Z で終っていて、正しいマジックナンバで 始まっているファイルを、 元の拡張子を取り除いた圧縮されていないファイルにします。 gunzip は、 .tar.gz や .tar.Z を省略した .tgz や .taz も認識します。 圧縮する時、 gzip は、 .tar ファイルのファイル名を縮めるかわりに .tgz を使います。
gunzip は、 gzip, zip, compress, compress -H, pack で作られたファイルを伸長できます。 入力されたファイルがどの方式で圧縮されているかは自動的に判別されます。 最初の二つの方式を使うと、 gunzip は 32ビット CRC をチェックします。 pack の場合、 gunzip は伸長された大きさをチェックします。標準の compress は一貫性のチェックをするように設計されていませんでしたが、 gunzip は .Z ファイルが正しくないことを検出できることもあります。 もし .Z ファイルを伸長する時にエラーに会う場合には、 標準の uncompress がエラーを出さないという理由で .Z ファイルは正しい と思わないで下さい。 これは一般的に、標準の uncompress が入力をチェックせず、ゴミである出力をしてしまうという事を意味しています。 SCO compress -H 方式 (lzh 圧縮技法) は CRC を含みませんが、 ある程度の一貫性のチェックの余地があります。
zip で作られたファイルは、 'deflation' 技法で圧縮された一つのメンバを もつ時のみ gzip で伸長できます。この特徴は tar.zip ファイルを tar.gz ファイルに するのを助けることのみを意図しています。複数のメンバを持った zip ファイルを 取り出す時には gunzip ではなく unzip を使って下さい。
zcat は、 gunzip -c と同一です。 (いくつかのシステムでは、 zcat は compress へのオリジナルのリンクを保存しておくために gzcat としてインストールされているかもしれません。) zcat は、コマンドラインで指定されたファイルか標準入力からの入力を伸長し、 標準出力へ伸長したデータを出力します。 zcat は、 .gz 拡張子であろうとなかろうと、マジックナンバが正しければファイルを伸長 します。
gzip は、 zip や PKZIP で使われている Lempel-Ziv アルゴリズムを使っています。 圧縮率は入力の大きさや共通の文字列の分布によります。 一般に、ソースコードや英語のようなテキストは 60-70% 縮小されます。 また、 LZW ( compress で使われている)、 Huffman coding ( pack で使われている)、 適応性 Huffman coding (compact) よりも圧縮率が良いです。
圧縮されたファイルがオリジナルのファイルよりわずかでも大きいとしても、 圧縮は常に行われます。最悪の伸長は gzip ファイルヘッダの数バイト、 32K ブロック毎に 5 バイトの増加、すなわち伸長率 0.015% です。 使用しているディスクブロックの実際の数はほとんどの場合決して増加しない事に 注意してください。 gzip は、圧縮や伸長を行う時ファイルのモード、所有者、タイムスタンプを保存します。
compressed size: 圧縮されたファイルの大きさ
uncompressed size: 伸長されたファイルの大きさ
ratio: 圧縮率 (分からなければ 0.0%)
uncompressed_name: 伸長されたファイルの名前
uncompressed size が -1 ならば、ファイルは gzip 形式ではなく .Z ファイル等です。 そのようなファイルの伸長されたファイルの大きさを 知るには、以下のようにして下さい。
zcat file.Z | wc -c
--verbose オプションを共に指定すると、以下のフィールドが追加されます。
method: 圧縮技法
crc: 伸長されたファイルの 32-bit CRC
date & time: 伸長されたファイルのタイムスタンプ
圧縮技法は今のところ deflate, compress, lzh (SCO compress -H), pack を サポートしています。crc が ffffffff ならば、gzip 形式ではありません。
--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 ファイルの一つのメンバが壊れた場合、他のメンバは 復元できます (壊れたメンバを取り除けば)。しかし、 同時にすべてのメンバを圧縮する時、
gzip -c file1 file2 > foo.gz
と実行するより、以下のように実行するとより圧縮率を上げる事が出来ます。
cat file1 file2 | gzip > foo.gz
もし結合されたファイルをより圧縮率を上げるために再圧縮したければ、 以下のように実行して下さい。
gzip -cd old.gz | gzip > new.gz
もし圧縮されたファイルがいくつかのメンバを持つのなら、 --list オプションで報告される伸長後の大きさや CRC は最後のメンバのみを 示しています。すべてのメンバの伸長後の大きさが必要なら、以下のように 実行して下さい。
gzip -cd file.gz | wc -c
複数のメンバを持ち、後からあるメンバを抜き取る事ができるような 単一のアーカイブファイルを作りたければ、 tar や zip のようなアーカイバを使って下さい。 GNU tar は gzip を呼び出す -z オプションをサポートしています。 gzip は tar の代替ではなく 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 file が、このマシンの伸長プログラムよりも多くの bit を処理できるプログラムにより (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 オプション) が使われて いるか確認して下さい。(この例では tar は GNU Version を使っていると 仮定しています。)
まれに、オプション --best を付加して圧縮した場合よりも、デフォルトの圧縮 時 (-6) の方が圧縮率が良いことがあります。ファイルに高い冗長性があれば、 compress の方が gzip より圧縮率がよいです。