名称
compress, uncompress, zcat, compressdir, uncompressdir ― データの圧縮および展開
構文
ファイルの圧縮
compress [-d] [-f|-z]
[-z] [-v] [-c]
[-V] [-b maxbits] [file ...]
uncompress [-f] [-v]
[-c] [-V] [file ...]
zcat [-V] [file ...]
ディレクトリ
サブツリー全体の圧縮
compressdir [options] [directory ...]
uncompressdir [options] [directory ...]
説明
以下のコマンドは、 次に示すようにファイルおよびディレクトリ
サブツリーの圧縮および展開を 行います。
- compress
適切なLempel-Zivコーディングを使って指定 file のサイズを縮小します。 縮小が可能ならば、指定した各 file は同じ名前の新しいファイルに置き換えられ、ファイル名には接尾辞 .Z が追加されて圧縮ファイルであることを示します。
元の所有権、モード、アクセス、および修正時刻は保存されます。file が指定されなかったか、または - が指定された場合は、
標準入力が圧縮されて標準出力に出力されます。
- uncompress
圧縮された file を元の形式に復元します。 生成されるファイルには、元のファイル名、
所有権、およびパーミッションがあり、ファイル名の接尾辞 .Z は削除されます。file が指定されなかったか、または - が指定された場合は、
標準入力が展開されて標準出力に出力されます。
- zcat
圧縮された file を元の形式に復元して、その結果を標準出力に送ります。file が指定されなかったか、または - が指定された場合は、 標準入力が展開されて標準出力に出力されます。
- compressdir
フロントエンドプロセッサ。 指定した各 directory サブツリーを再帰的にたどり、compress を使用して directory にある各指定ファイルを圧縮します。 生成されるファイルが既存のファイルより小さくなれば、元のファイルは
圧縮ファイルに置き換えられ、ファイル名には接尾辞 .Z が付けられます。
ディレクトリを指定しなければ、圧縮は 現在のディレクトリから始まるすべてのファイルに適用されます。
options には、有効な compress コマンドオプションをどれでも指定できます(これらは compress にそのまま渡されます)。
すべてのファイルの圧縮を強行する場合は、結果が 元のファイルより大きくなるときでも、-f オプションを指定してください。
- uncompressdir
compressdir の逆の処理。 圧縮ファイルを元の形式に復元します。options には、有効な uncompress コマンドオプションをどれでも指定できます(これらは uncompress にそのまま渡されます)。
圧縮量は 入力のサイズ、コード当たりの最大ビット数 (maxbits) および共通の副文字列の分散状況によって異なります。
通常、ソースコードや英語文などのテキストは、50 〜 60 パーセント縮小されます。
圧縮は通常、ハフマン(Huffman)コーディング (pack で使用されている)
または最適ハフマン(Huffman)コーディング (compact)
によって達成される圧縮より良好で、 計算に必要な時間は少なくなります。
オプション
これらのコマンドは、上記の『構文』 で示された組合わせで、次のオプションを認識します。
- -d
file を展開します。compress -d は uncompress と同じです。
- -f
file の圧縮を強制的に行ないます。 圧縮できないファイルがある場合でも、
ディレクトリ全体を圧縮する場合に便利です。-f を指定せず、compress をフォアグラウンドで実行する場合には、ユーザーは 既存のファイルをオーバライトするかどうか入力を求められます。
- -z
これは -f オプションと同じですが、
ヌル圧縮がある場合は圧縮を強制しない点が異なります。
- -v
圧縮した各ファイルの縮小率を説明するメッセージを表示します。
- -c
compress と uncompress を強制的に標準出力に書き込みます。ファイルの変更はありません。zcat の非破壊的な動作は uncompress
-c の動作と同じです。
- -V
標準エラーに現在のバージョンとコンパイルオプションを出力します。
- -b maxbits
compress アルゴリズムが使用する最大ビット数を指定します。
デフォルトは 16 であり、 範囲は 9 〜 16 の任意の整数とすることができます。
compress は A Technique for High Performance Data Compression, Terry A. Welch, IEEE Computer, vol. 17, no. 6 (June 1984)、8-19 ページで 紹介された修正Lempel-Zivアルゴリズムを使用しています。
ファイルに共通の副文字列は最初に、 9ビットコード257以上に置き換えられます。
コード512に達すると、アルゴリズムは10ビットコードに切り換わり、-b フラグで指定された上限に達するまで
(デフォルトは 16)、 使用ビットを増やし続けます。
maxbits 上限に到達した後、compress は定期的に圧縮比をチェックします。
圧縮比が上がると、compress は既存のコード辞書を使用し続けます。
ただし、圧縮比が落ちると、compress は副文字列のテーブルを捨て、最初からそれを構築し直します。
これにより、アルゴリズムは、ファイルの次の「ブロック」に適応できます。
-b フラグは uncompress の場合には省略されることに注意してください。
これは、ランダムなデータを復元したり、 圧縮されたデータを再圧縮したりしないように、圧縮時に指定した maxbits パラメータが、マジックナンバーとともに出力時にコード化されるためです。
アクセス制御リスト
データの圧縮および展開を行う際、compress はファイルのアクセス制御リストを保持します。
多言語化対応
環境変数
LC_MESSAGES は、メッセージの表示に使われる言語を指定します。
LC_MESSAGES が環境内で指定されていないか空白文字列に設定されている場合、
未指定または空白の各変数に対して LANG の値がデフォルトとして使われます。 LANG が指定されていないか空白文字列に設定されている場合、 LANG の代わりに デフォルトの
"C" が使用されます (lang(5) を参照)。
国際化変数のいずれかが無効な設定を含む場合、compress、uncompress、
および zcat はすべての国際化変数が "C" に設定されているように振る舞います。environ(5) を参照してください。
サポートされるコードセット
シングルバイトおよびマルチバイトの文字コードセットがサポートされます。
戻り値
これらのコマンドは次の値を終了時に戻します。
- 0
正常終了。
- 2
最後のファイルの圧縮後のサイズが大きい。
- 1
エラーが発生。
診断
- Usage:
compress [-f|-z] [-dvcV] [-b maxbits] [file ...]
不正なオプションがコマンド行で指定されました。
- Missing maxbits
-b の後には maxbits を指定しなければなりません。
- file: not in compressed format
uncompress に指定したファイルは圧縮されていません。
- file: compressed with xxbits, can only handle yybits
file は、マシン上の圧縮コードより大きな maxbits 値を処理できるプログラムによって圧縮されました。
より小さな maxbits 値で、ファイルを再圧縮してください。
- file: already has .Z suffix -- no change
ファイルは、すでに圧縮済みであるとされています。
ファイルの名称を変更して、もう一度試してください。
- file: filename too long to tack on .Z
出力ファイル名は、.Z 接尾辞の付いたソースファイル名ですが、これは
ソースファイルが属すファイルシステムには長すぎます。 ソースファイル名を短くして再び試みてください。
- file already exists; do you wish to
overwrite (y or n)?
出力で既存のファイルを置き換えたい場合には、y と応答してください。さもなければ、n と応答してください。
- uncompress: corrupt input
入力ファイルが破壊されたことを意味する SIGSEGV 違反が検出されました。
- Compression: xx.xx%
圧縮によって節約される入力のパーセンテージ(-v の場合のみ)。
- -- not a regular file: unchanged
入力ファイルが通常のファイルでない場合(例えばディレクトリ)は、
変更されません。
- -- has xxother links: unchanged
入力ファイルは、シンボリックリンク以外のリンクを持っています。
変更されません。詳細は、ln(1) を参照してください。
- -- has symbolic links:
unchanged
入力ファイルにはシンボリックリンクがあります。変更されません。
詳細は、ln(1) を参照してください。
- -- file unchanged
圧縮によって節約されません。 入力は変更されません。
例
zenith という名前のファイルを圧縮して、圧縮情報をターミナルにプリントします。
ターミナルディスプレイには、2種類の行のいずれかが表示されます。
その例を示します。
zenith: Compression: 23.55% -- replaced with zenith.Z
これは、圧縮されたファイルが元のファイルより 23.55% 小さくなったことを示します。
また、
zenith: Compression: -12.04% -- file unchanged
は、 ファイルの圧縮を 行うと 12.04% のスペースを追加使用しなければならないことを示します。
以下のコマンドのいずれかをタイプ入力して、圧縮を復元します。
uncompress zenith.Z
compress -d zenith.Z
これにより、ファイル zenith.Z は元の展開された形式および名前に復元されます。
uncompress は、ファイルの指定がなければ標準入力を展開します。 例えば、圧縮されたtarファイルをリストするには次のように指定します。
uncompress -c arch.tar.Z | tar -tvf -
警告
圧縮されたファイルは大容量のメモリーがあるマシン間では使用できますが、
データ処理スペースが小さい (64Kバイト以下) アーキテクチャにファイル転送する場合には、
オプション -b12 を指定する必要があります。
1NFS
ネットワーク化されたファイルのアクセス制御リストは要約されます
(stat() によって st_mode の中に戻されるのと同じですが、
新しいファイルにはコピーされません (stat(2) を参照))。
著者
compress は、Joseph M. Orost、Kenneth E.
Turkowski、 Spencer W. Thomas、およびJames A. Woodsによって開発されました。
ファイル
- *.Z
compress によって作成され、uncompress によって削除される圧縮ファイル
参照
compact(1), pack(1), acl(5)