gzip
を複製したり共有できるのか。
gzip
からの出力の見本。
gzip
の走らせ方。
GZIP
環境変数
gzip
をテープで使う。
Version 2, June 1991
Copyright © 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave, Cambridge, MA 02139, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.
Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and modification follow.
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.
one line to give the program's name and an idea of what it does. Copyright (C) 19yy name of author This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details.
The hypothetical commands show w
and show c
should show
the appropriate parts of the General Public License. Of course, the
commands you use may be called something other than show w
and
show c
; they could even be mouse-clicks or menu items--whatever
suits your program.
You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. signature of Ty Coon, 1 April 1989 Ty Coon, President of Vice
This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License.
gzip
は Lempel-Ziv コーディング (LZ77) を使って指名されたファイル
の大きさを減らします。可能であれば、各ファイルは、所有モードやアクセス時
刻、修正時刻を同じに保ったまま、.gz
という拡張子を付けたもので置
き換えられます。(デフォルトの拡張子は VMS では -gz
で、MSDOS や
OS/2 FAT、Atari では z
です。) もし何もファイルが指定されなかった
り、ファイル名が "-" だったりすると、標準入力が圧縮されて標準出力に出さ
れます。gzip
は通常のファイルを圧縮しようとするだけでしょう。とり
わけ、シンボリック・リンクは無視するでしょう。
もし新しいファイル名がそのファイルシステムには長過ぎるなら、gzip
はそれを切り捨てます。gzip
はファイル名のうち3文字よりも長い部分
だけを切り捨てようとします。(部分はドットで区切られています。) もしその
名前が小さい部分だけから成り立っていたら、一番長い部分が切り捨てられます。
例えば、ファイル名が14文字に限定されていたら、gzip.msdos.exe は
gzi.msd.exe.gz に圧縮されます。名前はファイル名の長さに限界のないシステ
ムでは切り捨てられません。
デフォルトで、gzip
は元のファイル名やタイムスタンプを圧縮されたファ
イルに保存します。これらは -N
オプションを付けて、そのファイルを
解凍するときに使われます。これは圧縮されたファイルの名前が切り捨てられい
たり、そのタイムスタンプがファイルの転送後に保存されなかったときに有効で
す。
圧縮されたファイルは、gzip -d
や gunzip
か zcat
を
使って、元の姿に戻すことができます。もし圧縮されたファイルに収められてい
た元の名前が、そのファイルシステムには適していなかった場合、適合させるた
めに、その元の名前から新しい名前が組み立てられます。
gunzip
はそのコマンド行でファイルのリストを受け取り、.gz
や .z
、.Z
、-gz
、-z
、_z
で終わる名前を
持ち、正しいマジックナンバーで始まる各ファイルを、その元の拡張子を持たな
い、解凍されたファイルで置き換えます。gunzip
はまた、特別な拡張子、
.tgz
や .taz
をそれぞれ .tar.gz
と .tar.Z
の
略記であると認識します。圧縮するとき、gzip
は .tar
拡張子
を持つファイルを切り捨てる代わりに、もし必要であれば、 .tgz
拡張
子を使用します。
gunzip
は現在 gzip
、zip
、compress
、
あるいは、pack
で作られたファイルを解凍することができます。入力形
式の検出は自動的です。最初の二つの形式を使っているとき、gunzip
は
32ビット CRC (cyclic redundancy check) を確認します。pack
に対し
ては、gunzip
は圧縮されていないときの長さを確認します。
compress
形式は一貫性を確認できるようには設計されませんでした。し
かし、gunzip
はときどき悪い .Z
ファイルを検出することがで
きます。もし .Z
ファイルを解凍しているときにエラーを受け取ったな
ら、標準的な uncompress
が文句を言わないからといって、その
.Z
ファイルが正しいと思ってはいけません。このことは一般的に、標準
的な uncompress
はその入力を確認せず、幸福そうにゴミの出力を生成
してくれることを意味しています。SCO の compress-H
形式
(lzh
圧縮手法) は CRC を含んでいませんが、いくつかの一貫性の確認
をできるようにしています。
zip
で作成されたファイルは gzip
で解凍できますが、'
deflation' 手法で圧縮された、単一の要素しかない場合だけです。この特徴は
tar.zip
ファイルを tar.gz
形式に変換するのを助けることだけ
を目的にします。いくつかの要素を持つ zip
ファイルを抜き出すには、
gunzip
ではなく unzip
を使ってください。
zcat
は gunzip -c
と同じです。zcat
はコマンド行のファ
イルのリストか標準入力を解凍して、解凍されたデータを標準出力に書き出しま
す。zcat
は .gz
接尾辞とは無関係に、正しいマジックナンバー
を持つファイルを解凍するでしょう。
gzip
は zip
や PKZIP で使われている Lempel-Ziv アルゴリズ
ムを利用します。得られる圧縮量は入力の大きさやありふれた部分文字列の分布
に依存しています。典型的には、ソース・コードや英語のようなテキストは 60
から 70% 減少します。一般的に、LZW (compress
で使われている) や、
Huffman コーディング (pack
で使われている)、adaptive Huffman コー
ディング (compact
) で達成されるよりも、ずっと良い圧縮です。
たとえ圧縮されたファイルが若干元よりも大きくなっても、圧縮は常に行われま
す。最悪の場合の膨張は、gzip
のファイル・ヘッダに対して数バイトと、
各 32K ブロック毎に 5 バイト、あるいは、大きなファイルでは 0.015% の膨張
率です。実際に使われるディスク・ブロックの数はほとんど絶対に増えないこと
に注意してください。gzip
は圧縮したり解凍したりするとき、ファイル
のモードや所有権、タイムスタンプを保存します。
さて、これが gzip
を実行する現実的な例です。
これは gzip -h
というコマンドの出力です:
gzip 1.2.4 (18 Aug 93) usage: gzip [-cdfhlLnNrtvV19] [-S suffix] [file ...] -c --stdout write on standard output, keep original files unchanged -d --decompress decompress -f --force force overwrite of output file and compress links -h --help give this help -l --list list compressed file contents -L --license display software license -n --no-name do not save or restore the original name and time stamp -N --name save or restore the original name and time stamp -q --quiet suppress all warnings -r --recursive operate recursively on directories -S .suf --suffix .suf use suffix .suf on compressed files -t --test test compressed file integrity -v --verbose verbose mode -V --version display version number -1 --fast compress faster -9 --best compress better file... files to (de)compress. If none given, use standard input.
これは gzip -v texinfo.tex
というコマンドの出力です:
texinfo.tex: 71.6% -- replaced with texinfo.tex.gz
次のコマンドは現在のディレクトリやサブディレクトリにおいて、あらゆる
gzip
ファイルを検索し、元のファイルを壊さずに適切に展開します:
find . -name '*.gz' -print | sed 's/^\(.*\)[.]gz$/gunzip < "&" > "\1"/' | sh
gzip
の起動gzip
プログラムを実行するための形式はこうです。
gzip オプション ...
gzip
は以下のオプションをサポートしています:
--stdout
--to-stdout
-c
--decompress
--uncompress
-d
--force
-f
gzip
で認識さ
れる形式でなくて、オプション -stdout も与えられていたなら、その入力デー
タを変更せずに標準出力に写します。zcat
は cat
のように振る
舞います。もし -f
が与えられなくて、バックグラウンドで実行されて
いないときなら、gzip
は存在するファイルを上書きして良いかどうかを
確認するために、プロンプトを出します。
--help
-h
--list
-l
compressed size: 圧縮されたファイルの大きさ uncompressed size: 解凍されたファイルの大きさ ratio: 圧縮率 (もし分からなかったら、0.0%) uncompressed_name: 解凍されたファイルの名前
解凍された大きさは、圧縮された .Z
ファイルのような、gzip
形式以外のファイルでは -1
となります。そのようなファイルに対して
解凍された大きさを得るのには、こうします:
zcat file.Z | wc -c
-verbose オプションと組み合わせると、以下のフィールドもまた表示されます:
method: 圧縮の手法 (deflate、compress、lzh、pack) crc: 解凍されたデータの 32ビット CRC date と time: 解凍されたファイルのタイムスタンプ
その crc は gzip 形式でないファイルでは ffffffff となります。
-verbose を付けると、いくかの大きさが不明でなければ、大きさの合計やあら
ゆるファイルに対する圧縮率も表示されます。-quiet を付けると、タイトルや
合計の行は表示されません。
--license
-L
gzip
のライセンスを表示して終了。
--no-name
-n
gzip
の接尾辞だけを圧縮された
ファイル名から取り除きます)、元のタイムスタンプを復元しません (圧縮され
たファイルからそれを写し取ります)。このオプションは解凍のときはデフォル
トです。
--name
-N
--quiet
-q
--recursive
-r
gzip
はそのディレクトリに
降りて、そこで見付けるファイルを全て圧縮します (あるいは、gunzip
の場合には解凍します)。
--suffix suf
-S suf
.gz
ではなく、接尾辞 suf
を使います。どんな接尾辞で
も与えられますが、ファイルが他のシステムに転送されるときの混乱を避けるた
めに、.z
と .gz
以外の接尾辞は敬遠するべきです。空の接尾辞
は強制的に gunzip に接尾辞にかかわりなく、あらゆる与えられたファイルに解
凍を試みさせます、このように:
gunzip -S "" * (MSDOS には *.*)
gzip の以前のバージョンは .z
接尾辞を使用しました。pack
と
の衝突を避けるため、これは変更されました。
--test
-t
--verbose
-v
--version
-V
--fast
--best
-n
-1
や
--fast
は最速の圧縮手法 (あまり圧縮されない) を示し、
--best
や -9
は最も遅い圧縮手法 (最適な圧縮) を示します。
デフォルトの圧縮レベルは -6
です (すなわち、速度の犠牲により高度
に圧縮される傾向があります)。
複数の圧縮されたファイルは連結することができます。この場合、
gunzip
は一度に全ての要素を抽出するでしょう。もし一つの要素が損傷
を受けたなら、損傷した要素を削除した後に他の要素をなお取り戻すことができ
るかもしれません。通常全ての要素が解凍されてから一気に再圧縮すると、より
良い圧縮に達成できます。
これは gzip
ファイルを連結する例です:
gzip -c file1 > foo.gz gzip -c file2 >> foo.gz
そして
gunzip -c foo
は次に等しくなります。
cat file1 file2
.gz
ファイルの一つの要素が損傷した場合、他の要素はなお取り戻すこ
とができます (もし損傷を受けた要素が取り除かれれば)。しかしながら、一度
に全ての要素を圧縮することによって、より良い圧縮を得ることができます:
cat file1 file2 | gzip > foo.gz
はこれよりも良く圧縮します。
gzip -c file1 file2 > foo.gz
もしより良い圧縮を得るために、連結されたファイルを再圧縮したいなら、こう します:
zcat old.gz | gzip > new.gz
もし圧縮されたファイルがいくつもの要素から成り立っているなら、
--list
オプションによって報告される、解凍された大きさと CRC は最
後の要素だけに適用されます。もしあらゆる要素に対して解凍された大きさが必
要なら、こうできます:
zcat file.gz | wc -c
もし要素を後で独立に抽出できるよう、複数の要素を持つ単一のアーカイブ・ファ
イルを作成したいなら、tar
や zip
のようなアーカイバを使っ
てください。GNU tar
は gzip
を透過的に起動するための、
-z
オプションをサポートします。gzip
は tar
を補完を
するように設計されたのであって、代用品ではありません。
環境変数 GZIP
は gzip
のためのデフォルトのオプションの組を
保持できます。これらのオプションは最初に解釈され、明示的なコマンド行パラ
メータによって上書きできます。例えば:
shに対して: GZIP="-8v --name"; export GZIP cshに対して: setenv GZIP "-8v --name" MSDOSに対して: set GZIP=-8v --name
Vax/VMS 上では、プログラムの起動のためのシンボル・セットとの衝突を避ける
ために、環境変数の名前は GZIP_OPT
です。
gzip
をテープで使う圧縮されたデータをテープに書き込むとき、大体ブロック境界までゼロで出力に
詰め物をする必要があります。データが読まれて、ブロック全体が解凍のために
gunzip
の渡されるとき、gunzip
は圧縮されたデータの後に余計
なゴミがあることを検出し、デフォルトで警告を発します。その警告を抑制する
には --quiet
オプションを使わなければなりません。このオプションは
GZIP
環境変数で設定できて、このようになります:
shに対して: GZIP="-q" tar -xfz --block-compress /dev/rst0 cshに対して: (setenv GZIP "-q"; tar -xfz --block-compress /dev/rst0)
上記の例において、gzip
は GNU tar
の -z
オプション
によって暗黙のうちに起動されています。同じブロックの大きさ (tar
の -b
オプション) がテープ上で圧縮されたデータを読み書きするため
に使われるよう確認してください。(この例は tar
の GNU 版を使ってい
ることを仮定しています。)
もし gzip
のバグを見付けたら、どうか電子メールを
jloup@chorus.fr
か、もし失敗したら、
bug-gnu-utils@prep.ai.mit.edu
へ送ってください。そのバージョ
ン番号を含めてください、それは gzip -V
を走らせれば分かります。
また、あなたのメッセージにハードウェアやオペレーティング・システム、
gzip
をコンパイルするのに使ったコンパイラ、バグの挙動の説明、そし
て、そのバグの引き金となる gzip
への入力を含めてください。