ファイルの圧縮・伸長を行う
name ...
]
-8
gunzip
[ -acfhlLnNrtvV ]
[ -S suffix ]
[
name ...
]
zcat
[ -fhLV ]
[
name ...
]
gzip
は Lempel-Ziv コーディング (LZ77) を利用して、
指定されたファイルのサイズを小さくする。
各ファイルは所有権・アクセス時刻・修正時刻を保存したまま、
拡張子
.gz
をつけたファイルに置き換えられる。
(デフォルトの拡張子は、VMSでは
-gz,
MSDOS, OS/2 FAT, Windows NT FAT, Atari では
z
である。)
ファイルが指定されない場合、またはファイル名が - の場合、
標準入力を圧縮して標準出力に書き出す。
gzip
は通常のファイルしか圧縮しようとしない。
特に、シンボリックリンクは無視される。
圧縮されたファイル名が、そのファイルシステム上では長すぎる場合、
gzip
はファイル名を切り詰める。
gzip
はファイル名のうちの 4 文字以上のパートを切り詰めようとする。
(各パートはドットで区切られている。)
小さなパートだけからファイル名ができている場合、
もっとも長いパートが切り詰められる。
例えば、ファイル名が 14 文字までに制限されている場合、
gzip.msdos.exe は gzi.msd.exe.gz という名前で圧縮される。
ファイル名の長さに制限がないシステムでは、
ファイル名が切り詰められることはない。
デフォルトでは、
gzip
は圧縮ファイルの中に元ファイルの名前とタイムスタンプを保存する。
これらの情報はファイルを
-N
オプションで伸長するときに使われる。
これは、圧縮されたファイルの名前が切り詰められた場合や、
ファイル転送の後でタイムスタンプが保存されなかった場合に役立つ。
圧縮されたファイルは
gzip -d ,
gunzip ,
zcat
を使うと元の形に復元することができる。
圧縮ファイルに保存された元ファイルの名前がファイルシステムに適合しない場合、
そのファイルシステムに適合するように元の名前から新しい名前が作られる。
gunzip
正しいマジックナンバーで始まっているファイルのリストを
コマンドラインから受け取り、
伸長したファイルに置き換える。
このとき圧縮ファイルの拡張子は取り除かれる。
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
伸長しているときにエラーが出たときには、
単に標準の
uncompress
一般的にいうと、標準的な
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
は圧縮・伸長時にファイルのアクセス権・所有者・タイムスタンプを保存する。
-a --ascii
-c --stdout --to-stdout
-d --decompress --uncompress
-f --force
gzip
で認識できない形式のときに --stdout オプションが指定されていると、
入力データは変更なしに標準出力にコピーされる。
つまり、
zcat
を
cat
として動作させる。
-f
が指定されず、かつバックグラウンドで動作していない場合、
gzip
は既に存在するファイルを上書きするかを問い合わせるプロンプトを出す。
-h --help
-l --list
-L --license
gzip
のライセンスを表示して終了する。
-n --no-name
gzip
拡張子を取り除くだけとし)、
元ファイルのタイムスタンプが存在しても復元しない
(圧縮ファイルからコピーする)。
このオプションは伸長時のデフォルトである。
-N --name
-q --quiet
-r --recursive
gzip
はディレクトリに降りて、見つかったすべてのファイルを圧縮する
(gunzip
の場合は、すべてのファイルを伸長する)。
-S .suf --suffix .suf
-t --test
-v --verbose
-V --version
-# --fast --best
#
を用いて圧縮のスピードを調整する。
-1
と
--fast
は最も速い圧縮法を示す (圧縮率は低い)。
-9
と
--best
は最も遅い圧縮法を示す (圧縮率は最も高い)。
デフォルトの圧縮レベルは
-6
である (つまり、速さを犠牲にして圧縮率の良い方にしてある)。
gunzip
はすべての圧縮ファイルを一度に伸長する。たとえば、
gzip
のデフォルトのオプションセットを入れることができる。
これらのオプションは最初に解釈されるので、
明示的なコマンドラインパラメータで上書きすることができる。
例を示す。
sh の場合: GZIP=-8v --name; export GZIP
csh の場合: setenv GZIP -8v --name
MSDOS の場合: set GZIP=-8v --name
gunzip
に指示されたファイルが圧縮されたものではない。
-8
file:
Corrupt input. Use zcat to recover some data.
+8
圧縮されたファイルが壊れている。
破損した位置までのデータは、次のコマンドを使って修復できる。
+8
zcat file > recover
-16
file :
compressed with
xx
bits, can only handle
yy
bits
+8
ファイル
が、このマシン上での伸長コードより多くの
ビット
を扱うことができるプログラムで (LZW を使って) 圧縮されている。
より高い圧縮ができ、メモリ使用量の少ない、gzip を使って
ファイルを再圧縮すること。
-8
file :
already has .gz suffix -- no change
+8
ファイルが既に圧縮されていると考えられる。
ファイル名を変更し、再度試みること。
-8
file
already exists; do you wish to overwrite (y or n)?
+8
出力ファイルで置き換えたいなら y と答えること。
さもなければ、n と答えること。
-8
gunzip: corrupt input
+8
SIGSEGV 違反が検知された。通常は、入力ファイルが壊れていることを意味している。
-8
xx.x%
+8
圧縮により減った入力のパーセント表示。
(-v と
-l
のみに関連する。)
-8
-- not a regular file or directory: ignored
+8
入力ファイルが通常ファイルでもディレクトリでもない場合
(たとえば、シンボリックリンク・ソケット・FIFO・デバイスファイルの場合)、
変更せずにそのままにされる。
-8
-- has
xx
other links: unchanged
+8
入力ファイルにリンクが張られているので、変更しない。
詳しい情報は
ln (1)
を参照すること。
複数にリンクが張られているファイルを強制的に圧縮するには
-f
フラグを使うこと。
-8
gunzip
に渡すと、
gunzip
は通常、圧縮されたデータの後ろに余分なゴミが続いていると検知して、
警告を発する。
この警告を抑制するには --quiet オプションを使う必要がある。
このオプションは環境変数
GZIP
に次のようにして設定できる。
sh の場合: GZIP=-q tar -xfz --block-compress /dev/rst0
csh の場合: (setenv GZIP -q; tar -xfz --block-compress /dev/rst0
compress
による圧縮が
gzip
より良くなることがある。