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 コマンドは、ファイル名の 3 文字を超える部分のみを切り捨てようとします。(区切り文字はドットです。)ファイル名が小さな部分だけで構成されている場合、最も長い部分が切り捨てられます。たとえば、ファイル名が 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 は必要に応じて .tgz 拡張子を使用し、.tar 拡張子を持つファイルを切り捨てません。
gunzip は、gzip、zip、compress、compress -H、または pack で作成されたファイルを現在解凍できます。入力形式の検出は自動的に行われます。最初の 2 つの形式を使用する場合、gunzip は 32 ビットの CRC をチェックします。pack の場合は、解凍された長さをチェックします。標準の compress 形式は、一貫性のチェックを可能にするように設計されていません。ただし、gunzip は、不良な .Z ファイルを検出できる場合があります。 .Z ファイルを解凍するときにエラーが発生した場合は、.Z ファイルが正しいかどうかを、標準の uncompress が苦情を言わないからといって想定しないでください。これは通常、標準の uncompress が入力のチェックを行わず、ゴミのような出力を生成することを意味します。SCO compress -H 形式(lzh 圧縮方法)には CRC が含まれていませんが、いくつかの整合性チェックが許可されています。
zip で作成されたファイルは、単一のメンバーが 'deflation' メソッドで圧縮されている場合にのみ、gzip で解凍できます。 この機能は、tar.zip ファイルを tar.gz 形式に変換するのに役立つように設計されています。 単一のメンバーを持つ zip ファイルを解凍するには、gunzip <foo.zip または gunzip -S .zip foo.zip のようなコマンドを使用します。 複数のメンバーを持つ zip ファイルを解凍するには、gunzip ではなく unzip を使用します。
zcat コマンドは、gunzip -c と同じです。 (一部のシステムでは、zcat は gzcat としてインストールされている場合があります。これは、元のリンクを compress として保持するためです。) zcat は、コマンドラインのファイルリストまたは標準入力からファイルを解凍し、解凍されたデータを標準出力に書き込みます。 zcat は、.gz 拡張子が付いているかどうかにかかわらず、正しいマジックナンバーを持つファイルを解凍します。
gzip コマンドは、zip および PKZIP で使用される Lempel-Ziv アルゴリズムを使用します。 圧縮率はその入力サイズと共通のサブストリングの分布によって異なります。 通常、ソースコードや英語などのテキストは、60〜70% 削減されます。 圧縮率は、LZW (compress で使用)、ハフマン符号化 (pack で使用)、またはアダプティブハフマン符号化 (compact) よりも一般的に優れています。
圧縮は常に実行され、圧縮されたファイルが元のファイルよりもわずかに大きくなる場合でも同様です。 最悪の場合のサイズの増加は、gzip ファイルヘッダーの数バイトと、32 KiB ごとのブロックごとの 5 バイトです。これは、大きなファイルの場合の 0.015% の拡張率になります。 実際に使用されるディスクブロックの数は、ほとんどの場合増加しません。
gzip は、ファイルを圧縮または解凍するときに、通常、ファイルのモードと最終更新タイムスタンプを保持します。 適切な権限がある場合、ファイルの所有者とグループも保持します。
オプション
-a --ascii
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
ヘルプ画面を表示して終了します。
-k --keep
圧縮または解凍中に、入力ファイルを削除しません。
-l --list
各圧縮ファイルについて、次のフィールドを一覧表示します。
圧縮サイズ:圧縮ファイルのサイズ
解凍サイズ:解凍ファイルのサイズ
比率:圧縮比(不明の場合は0.0%)
解凍ファイル名:解凍ファイルのファイル名
解凍サイズは、gzip形式でないファイル(.Zで圧縮されたファイルなど)については-1と表示されます。そのようなファイルの解凍サイズを取得するには、次を使用できます。
zcat file.Z | wc -c
--verboseオプションと組み合わせて使用すると、次のフィールドも表示されます。
メソッド:圧縮メソッド
crc:解凍されたデータの32ビットCRC
日付と時刻:解凍ファイルのタイムスタンプ
現在サポートされている圧縮メソッドは、deflate、compress、lzh(SCO compress -H)、packです。crcは、gzip形式でないファイルについてはfffffffffと表示されます。
--nameを使用すると、解凍ファイル名、日付、時刻は、圧縮ファイルに存在する場合は、その中に保存されているものを使用します。
--verboseを使用すると、すべてのファイルのサイズ合計と圧縮比も表示されます(ただし、一部のサイズが不明な場合は表示されません)。--quietを使用すると、タイトルと合計行は表示されません。
-L --license
gzipライセンスを表示して終了します。
-n --no-name
圧縮時に、元のファイル名とタイムスタンプをデフォルトで保存しません。(ファイル名が切り捨てられた場合は、元の名前は常に保存されます。)解凍時に、保存されている場合は元のファイル名を復元しません(gzipサフィックスのみを削除します)。また、保存されている場合は元のタイムスタンプを復元しません(圧縮ファイルからコピーします)。このオプションは、解凍時にデフォルトです。
-N --name
圧縮時に、常に元のファイル名を保存し、元のファイルが通常のファイルであり、タイムスタンプが少なくとも1(1970年1月1日00:00:01 UTC)であり、2**32(2106年2月7日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
複数のメンバーを含む単一のアーカイブファイルを作成し、後でメンバーを個別に抽出できるようにする場合は、tarやzipなどのアーカイブツールを使用します。GNU tarは、-zオプションをサポートして、gzipを透過的に呼び出します。gzipは、tarの補完として設計されており、tarの代替となるものではありません。
環境
時代遅れの環境変数 GZIP には、gzip のデフォルトオプションのセットを含めることができます。 これらのオプションは最初に解釈され、明示的なコマンドラインパラメータで上書きできます。 これはスクリプトを使用する場合に問題を引き起こす可能性があるため、この機能は、それほど多くの問題を引き起こす可能性がないオプションでのみサポートされ、gzip は使用された場合に警告を発します。 この機能は、gzip の将来のリリースで削除されます。
代わりにエイリアスまたはスクリプトを使用できます。 たとえば、gzip が /usr/bin ディレクトリにある場合、次の操作を行うことができます。 $HOME/bin を PATH に追加し、次の内容を含む実行可能スクリプト $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 ファイル形式仕様バージョン 4.3、[https://www.ietf.org/rfc/rfc1952.txt]、インターネット RFC 1952 (1996 年 5 月) で指定されています。 zip 圧縮形式は、P. Deutsch、DEFLATE 圧縮データ形式仕様バージョン 1.3、[https://www.ietf.org/rfc/rfc1951.txt]、インターネット RFC 1951 (1996 年 5 月) で指定されています。
診断
終了ステータスは通常 0 です。 エラーが発生した場合は、終了ステータスは 1 です。 警告が発生した場合は、終了ステータスは 2 です。
Usage: gzip [-cdfhklLnNrtvV19] [-S suffix] [file ...]
コマンドラインに無効なオプションが指定されました。
file: gzip 形式ではありません
指定されたファイルは圧縮されていません。
file: 破損した入力です。
zcat を使用して、ある程度のデータを復元します。 圧縮ファイルが破損しています。 障害点までのデータは、次を使用して復元できます。
zcat file > recover
file: xx ビットで圧縮され、yy ビットのみを処理できます
ファイルは、より多くのビットを処理できるプログラム (LZW を使用) によって圧縮されました。 gzip でファイルを再圧縮します。これにより、より優れた圧縮が可能になり、メモリ使用量が削減されます。
file: 既に .gz サフィックスが付いています。変更はありません
ファイルはすでに圧縮されていると想定されます。 ファイルの名前を変更して、もう一度試してください。
file が既に存在します。上書きしますか (y または n)?
出力ファイルを置き換える場合は「y」、置き換えない場合は「n」と入力します。
gunzip: 破損した入力
SIGSEGV 違反が検出されました。これは通常、入力ファイルが破損していることを意味します。
xx.x% 入力によって圧縮によって保存された割合。
(のみ -v および -l に関連します。)
-- 通常のファイルまたはディレクトリではありません。無視されます
入力ファイルが通常のファイルまたはディレクトリでない場合 (たとえば、シンボリックリンク、ソケット、FIFO、デバイスファイルの場合)、変更されません。
-- 他に xx 個のリンクがあります。変更はありません
入力ファイルにはリンクがあります。変更されません。 ln(1) を参照してください。 -f フラグを使用して、複数のリンクを持つファイルの圧縮を強制します。
注意点
圧縮データをテープに書き込む場合は、通常、出力をゼロで埋めてブロック境界まで埋める必要があります。 データが読み取られ、ブロック全体が gunzip に渡されて解凍されると、gunzip は圧縮データの後に追加の不要なデータがあることを検出し、デフォルトで警告を発行します。 --quiet オプションを使用して、警告を抑制できます。
バグ
まれに、--best オプションを使用すると、デフォルトの圧縮レベル (-6) よりも圧縮率が低下する場合があります。 非常に冗長なファイルの場合、compress は gzip よりも優れた圧縮を行う場合があります。
バグの報告
バグは次の宛先に報告してください:_ GNU gzip のホームページ:[https://www.gnu.org/software/gzip/] GNU ソフトウェアの使用に関する一般的なヘルプ:[https://www.gnu.org/gethelp/]
著作権表示
Copyright © 1998–1999, 2001–2002, 2012, 2015–2023 Free Software Foundation, Inc. Copyright © 1992, 1993 Jean-loup Gailly
このマニュアルの逐語的なコピーを作成および配布することは許可され、すべてのコピーに著作権表示とこの許可表示を保持する必要があります。
このマニュアルの修正版を、逐語的なコピーの条件の下でコピーおよび配布することは許可されます。ただし、結果として得られる派生物全体が、このものと同一の許可表示の条件の下で配布される必要があります。 このマニュアルの翻訳を別の言語にコピーおよび配布することは許可されます。ただし、上記の修正版の条件の下で、この許可表示は、財団によって承認された翻訳で表示することができます。