総合手引 | セクション 1 | English | オプション |
もし、圧縮されたファイル名がファイルシステムにとって長ければ、 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 は、 amp;.tar.gz や amp;.tar.Z を省略した amp;.tgz や amp;.taz も認識します。 圧縮する時、 gzip は、 amp;.tar ファイルのファイル名を縮めるかわりに amp;.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 は、 amp;.gz 拡張子であろうとなかろうと、マジックナンバが正しければファイルを伸長 します。
gzip は、 zip や PKZIP で使われている Lempel-Ziv アルゴリズムを使っています。 圧縮率は入力の大きさや共通の文字列の分布によります。 一般に、ソースコードや英語のようなテキストは 60-70% 縮小されます。 また、 LZW ( compress で使われている)、 Huffman coding ( pack で使われている)、 適応性 Huffman coding (compact) よりも圧縮率が良いです。
圧縮されたファイルがオリジナルのファイルよりわずかでも大きいとしても、 圧縮は常に行われます。最悪の伸長は gzip ファイルヘッダの数バイト、 32K ブロック毎に 5 バイトの増加、すなわち伸長率 0.015% です。 使用しているディスクブロックの実際の数はほとんどの場合決して増加しない事に 注意してください。 gzip は、圧縮や伸長を行う時ファイルのモード、所有者、タイムスタンプを保存します。
-a --ascii | |
行末の変換を行います。このオプションは非 Unix 環境でのみ サポートされています。例えばMSDOSでは、圧縮時に CR LF が LF に変換され、 伸長時に LF が CR LF に変換されます。 | |
-c --stdout --to-stdout | |
オリジナルファイルはそのままで、結果を標準出力へ書き出します。 もし、複数のファイルが入力されれば、結果は一続きの独立したものに なります。よりよく圧縮をするためには、圧縮をする前にすべての入力 ファイルを結合するとよいです。 | |
-d --decompress --uncompress | |
伸長を行います。 | |
-f --force | |
ファイルが複数のリンクを持っていたり、すでにファイルが存在していたとしても、 また圧縮されたデータを端末から読み書きしようとしたときでも圧縮や伸長を 強行します。もし入力されたデータが gzip で認識出来ない形式でありオプション --stdout が指定された場合、 変更されることなく入力されたデータは標準出力へコピーされます: zcat は cat として振舞います。もし -f が指定されておらず バックグラウンドで実行されていない場合には、 gzip はファイルを上書きしてよいか確認を求めます。 | |
-h --help | |
ヘルプを表示し、終了します。 | |
-l --list | |
圧縮されたファイルそれぞれに以下のフィールドを表示する。
compressed size: 圧縮されたファイルの大きさ
uncompressed size が -1 ならば、ファイルは gzip 形式ではなく .Z ファイル等です。 そのようなファイルの伸長されたファイルの大きさを 知るには、以下のようにして下さい。 zcat file.Z | wc -c --verbose オプションを共に指定すると、以下のフィールドが追加されます。
method: 圧縮技法
圧縮技法は今のところ deflate, compress, lzh (SCO compress -H), pack を サポートしています。crc が ffffffff ならば、gzip 形式ではありません。 --name オプションを共に指定すると、表示する伸長されたファイルの名前、日付、時間 は圧縮されたファイルに保存されたものになります。 --verbose オプションを共に指定すると、 全てのファイルのサイズのトータルや圧縮率が 表示されます (ファイルサイズが分からないものがある場合を除きます)。 --quiet オプションを共に指定すると、タイトルやトータルラインは表示されません。 | |
-L --license | |
gzip ライセンスを表示し、終了します。 | |
-n --no-name | |
圧縮する時、デフォルトでオリジナルのファイル名やタイムスタンプを保存しません。 (もしファイル名が縮められるならば、オリジナルのファイル名は常に 保存されます。) 伸長する時、もしオリジナルのファイル名が存在しても 復元しません (圧縮されたファイルの名前から gzip サフィックスのみを取り除きます)、もしオリジナルのタイムスタンプが 存在しても復元しません (圧縮されたファイルからコピーします)。この オプションは伸長する時のデフォルトです。 | |
-N --name | |
圧縮する時、常にオリジナルのファイル名とタイムスタンプを保存します。 これはデフォルトです。伸長する時、もしオリジナルのファイル名やタイム スタンプが存在すれば復元します。これはファイル名の長さに制限のある システムやタイムスタンプがファイル転送後に失われた時に役に立ちます。 | |
-q --quiet | |
すべての警告を抑制します。 | |
-r --recursive | |
ディレクトリ構造を再帰的に進みます。もし、コマンドラインで指定された ファイル名のディレクトリがあれば、 gzip はそのディレクトリへ進み、 そのディレクトリで発見した全てのファイルを圧縮します ( gunzip の場合はそれらを伸長します)。 | |
-S .suf --suffix .suf | |
amp;.gz の代わりに .suf というサフィックスを使います。どのようなサフィックス
でも使う事が出来ますが、ファイルを他のシステムに転送する時の混乱を避ける
ために、.z や .gz 以外のサフィックスは避けるべきです。サフィックスに
ヌルを指定すると、
以下のように gunzip はサフィックスにかかわらずすべてのファイルを
伸長しようとします。
gunzip -S "" * (MSDOS では *.*) gzip の以前のバージョンでは .z サフィックスを使っていました。 これは、 pack(1) との衝突を避けるために変更されました。 | |
-t --test | |
テスト。圧縮されたファイルが完全なものかチェックします。 | |
-v --verbose | |
冗長メッセージを表示します。圧縮/伸長される各ファイル名と圧縮率を 表示します。 | |
-V --version | |
バージョンナンバやオプションを表示した後、終了します。 | |
-# --fast --best | |
圧縮の速度を数値 # で調節します。例えば、 -1 や --fast は圧縮速度を最も速くし (圧縮率は最低)、 -9 や --best は圧縮速度を最も遅くします (圧縮率は最高)。 デフォルトの圧縮レベルは -6 (つまり 速度より高い圧縮率を重視している)。 | |
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 より圧縮率がよいです。
GZIP (1) |
総合手引 | セクション 1 | English | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | Never write it in C if you can do it in `awk'; Never do it in `awk' if `sed' can handle it; Never use `sed' when `tr' can do the job; Never invoke `tr' when `cat' is sufficient; Avoid using `cat' whenever possible. |
” |
— Taylor's Laws of Programming |