Provided by: manpages-ja_0.5.0.0.20221215+dfsg-1_all
名前
gzip, gunzip, zcat - ファイルの圧縮、伸長を行う
書式
gzip [ -acdfhklLnNrtvV19 ] [-S suffix] [ name ... ] gunzip [ -acfhklLnNrtvV ] [-S suffix] [ name ... ] zcat [ -fhLV ] [ name ... ]
説明
gzip コマンドは Lempel-Ziv コーディング (LZ77) を利用して、 指定されたファイルのサイズを削 減します。 各ファイルは拡張子 .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 は、 コマンドラインからファイルのリストを受け取り、 ファイル名の末尾が .gz, -gz, .z, -z, _z (大文字小文字は区別しない) でファイルが正しいマジックナンバーで始まっている各 ファイルを伸長したファイルに置き換えます。 このとき圧縮ファイルの拡張子は取り除かれます。 gunzip は .tgz と .taz という特別な拡張子も認識します。 これらはそれぞれ .tar.gz と .tar.Z の省略形です。 gzip は、 圧縮する際に、 必要であれば、 拡張子が .tar のファイルの名前を切 り詰める代わりに .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 によって作られたファイルは、 元ファイルが 1 つだけ含まれ、 かつ、 そのファイルが 'deflation' 法で圧縮されている場合にのみ、 gzip で伸長できます。 この機能は、 tar.zip ファ イルを tar.gz 形式へ変換する際の補助となることだけを意図したものです。 元ファイルが 1 つだ けの zip ファイルを伸長するには、 gunzip <foo.zip や gunzip -S .zip foo.zip といったコマン ドを使用します。 複数の元ファイルを含んでいる 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 ファイルヘッダーのための数バイトと 32 K バイトブロックごとに 5 バイトの増 加となり、 大きなファイルでは 0.015% の増加率となります。 ただし、 実際の使用ディスクブ ロック数が増加することは、 ほぼ絶対にありません。 gzip は、 通常、 圧縮、伸長時にファイルのアクセス権、所有者、タイムスタンプを維持します。 適切な権限を有していれば、 ファイル所有者やグループについても維持されます。
オプション
-a --ascii アスキーテキストモード: 局所変換を使って行末の変換を行います。 このオプションは、 いくつかの非 Unix システムでサポートされています。 MSDOS では、 圧縮時に CR LF が LF に変換され、 伸長時に LF が CR LF に変換されます。 -c --stdout --to-stdout 出力を標準出力に書き出し、 元ファイルを変更しません。 入力ファイルが複数ある場合、 出力はファイル毎に圧縮された内容が連結されたものとなります。 圧縮率を上げるには、 圧縮する前にすべての入力ファイルを (tar などで) まとめてください。 -d --decompress --uncompress 伸長します。 -f --force ファイルが複数のリンクを張られていたり、 対応するファイルが既に存在していたり、 圧 縮されたデータが端末に対して読み書きされてしているような場合でも、 強制的に圧縮、 伸長を行います。 入力データが gzip で認識できない形式のときに --stdout オプションが 指定されていると、 入力データは変更なしに標準出力にコピーされます。 つまり、 zcat を cat として動作させます。 -f が指定されず、 かつバックグラウンドで動作していない 場合、 gzip は既に存在するファイルを上書きするかを問い合わせるプロンプトを出力しま す。 -h --help ヘルプ画面を表示して終了します。 -k --keep 圧縮中または伸長中に、 入力ファイルを保持します (削除しません)。 -l --list 圧縮された個々のファイルについて、 以下のフィールドを列挙します。 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 が同時に指定されると、 タイトルと合 計の行は表示されません。 -L --license gzip のライセンスを表示して終了します。 -n --no-name デフォルトで圧縮時に元ファイルの名前とタイムスタンプを保存しません (元の名前を切り 詰める必要がある場合は元の名前は必ず保存されます)。 伸長時に、 元のファイル名が存在 しても復元せず (圧縮ファイル名から gzip 拡張子を取り除くだけとし)、 元ファイルのタ イムスタンプが存在しても復元しません (圧縮ファイルから他インプスタンプをコピーしま す)。 このオプションは伸長時のデフォルトです。 -N --name 圧縮時には元のファイル名を必ず保存します。 また元のファイルが通常ファイルであって、 そのタイムスタンプが最低でも 1 (1970-01-01 00:00:01 UTC)、 さらに 2**32 (2106-02-07 06:28:16 UTC, うるう秒を考慮しない場合) 未満である場合に、 元のファイルの修正タイム スタンプの秒部分を保存します。 これがデフォルトの動作です。 伸長時には、ファイル名 とタイムスタンプが保存されていれば復元します。 このオプションは、 ファイル名の長さ に制限があるシステムや、 ファイル転送の後にタイムスタンプが失われた場合に役立ちま す。 -q --quiet すべての警告を抑制します。 -r --recursive ディレクトリ構造を再帰的に辿ります。 コマンドラインで指定されたファイル名がディレク トリであった場合、 gzip は、 ディレクトリ内に入り、 見つかったすべてのファイルを圧 縮します (gunzip の場合は、 すべてのファイルを伸長します)。 -S .suf --suffix .suf 圧縮時には、 拡張子 .gz のかわりに .suf を使う。 空でない任意の拡張子を指定できます が、 .z と .gz 以外の拡張子は使うべきでありません。 他のシステムにファイルが転送さ れたときの混乱を避けるためです。 伸長時には、 入力ファイル名から出力ファイル名を抜き出す際に確認する拡張子のリストの 先頭に .suf を追加します。 --synchronous 同期出力を行います。 このオプションを用いると、 システムクラッシュの際にデータを失 う可能性が低くなりますが、 処理速度はかなり低下します。 -t --test 検査を行います。 圧縮ファイルの整合性をチェックして終了します。 -v --verbose 詳細出力。 圧縮、 伸長される各ファイルについて名前と圧縮率を表示します。 -V --version バージョン。 バージョン番号とコンパイルオプションを表示して終了します。 -# --fast --best 指定した数字 # を用いて圧縮のスピードを調整します。 -1 と --fast は最も速い圧縮法を 表します (圧縮率は低い)。 -9 と --best は最も遅い圧縮法を表します (圧縮率は最も高 い)。 デフォルトの圧縮レベルは -6 です (つまり、 速さを犠牲にして圧縮率の良い方にし てあります)。 --rsyncable 2 つのコンピューター間で圧縮ファイルの同期を行う場合、 このオプションを用いると、 rsync はアーカイブ全体ではなく変更があったファイルのみを転送できるようになります。 通常、 アーカイブ内のファイルに変更が行われた場合、 圧縮アルゴリズムは新たなバー ジョンのアーカイブを生成し、 このバージョンは以前のバージョンのアーカイブとは一致し ません。 その場合 rsync は、 リモートコンピューターに対して新たなバージョンのアーカ イブ全体を転送します。 このオプションを用いると、 rsync は、 変更がかかったファイ ル、 およびアーカイブ内の変更が行われた領域を更新するために必要な最小限のメタデータ のみを転送できます。
高度な使用法
複数の圧縮ファイルは連結できます。 この場合、 gunzip はすべての圧縮ファイルを一度に伸長し ます。 たとえば、 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 の代用としてではなく、 tar を補完するものとして設計されています。
環境変数
あまり使われなくなった機能ですが、 環境変数 GZIP で gzip のデフォルトのオプションセットを 指定できます。 これらのオプションは最初に解釈され、 明示的にコマンドラインパラメーターを指 定することでこれらを上書きできます。 ただし、 スクリプトを用いる際にはこの機能が問題になる 場合があります。 したがって、 この機能は、 あまり支障がないと考えられるオプションに対して のみサポートされており、 仮に使用された場合 gzip は警告を表示します。 この機能は gzip の将 来のバージョンにおいて削除される予定です。 この代わりとして、 エイリアスやスクリプトを利用できます。 たとえば、 gzip がディレクトリ /usr/bin にある場合、 PATH 変数の先頭に $HOME/bin を追加し、 以下のような内容を含んだ実行 スクリプト $HOME/bin/gzip を作成します。 #! /bin/sh export PATH=/usr/bin exec gzip -9 "$@"
関連項目
znew(1), zcmp(1), zmore(1), zforce(1), gzexe(1), zip(1), unzip(1), compress(1) gzip ファイル形式は P. Deutsch, GZIP file format specification version 4.3, <https://www.ietf.org/rfc/rfc1952.txt>, Internet RFC 1952 (May 1996) で規定されています。 zip deflation 形式は P. Deutsch, DEFLATE Compressed Data Format Specification version 1.3, <https://www.ietf.org/rfc/rfc1951.txt>, Internet RFC 1951 (May 1996) で規定されています。
診断メッセージ
通常、 終了ステータスは 0 です。 エラーが起きた場合、 終了ステータスは 1 です。 警告が起き た場合、 終了ステータスは 2 です。 Usage: gzip [-cdfhklLnNrtvV19] [-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 が、 このマシン上での伸長コードより多くのビットを扱うことができるプログラムで (LZW を使って) 圧縮されています。 より高い圧縮ができ、 メモリ使用量の少ない、 gzip を使って ファイルを再圧縮してください。 file: already has .gz suffix -- unchanged ファイルが既に圧縮されていると考えられます。 ファイル名を変更し、 再度試みてくださ い。 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 フラグを 使用してください。
重要な注意
圧縮されたデータをテープに書き込むときは、 一般的に、 出力のブロック境界をゼロで埋める必要 があります。 伸長のためにデータを読み込んですべてのブロックを gunzip に渡すと、 gunzip は 通常、 圧縮されたデータの後ろに余分なゴミが続いていると検知して、 警告を発します。 この警 告を抑制するには --quiet オプションを使用してください。
バグ
まれに --best オプションによって、 デフォルトの圧縮レベル (-6) より 圧縮が悪くなることがあ ります。 非常に冗長なファイルでは、 compress による圧縮が gzip より良くなることがありま す。
バグ報告
バグ報告: bug-gzip@gnu.org GNU gzip ホームページ: <https://www.gnu.org/software/gzip/> GNU ソフトウェアを使用する際の一般的なヘルプ: <https://www.gnu.org/gethelp/>
著作権表示
Copyright © 1998-1999, 2001-2002, 2012, 2015-2022 Free Software Foundation, Inc. Copyright © 1992, 1993 Jean-loup Gailly Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Foundation. local GZIP(1)