compress / uncompressコマンドでファイルを圧縮・解凍する方法|gzipとの違いやインストール手順も


この記事の監修:宮崎智広(Linux教育歴15年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips > compress / uncompressコマンドでファイルを圧縮・解凍する方法|gzipとの違いやインストール手順も
「古いサーバーから引き継いだバックアップファイルが .Z という見慣れない拡張子で、どう解凍すればいいのかわからない」——レガシーなLinux環境を扱っていると、こんな場面に出くわすことがあります。

.Z ファイルは compress コマンドで圧縮された形式です。現在の主流は gzip ですが、古いシステムや過去のバックアップでは compress 形式がまだ残っています。いざ必要になったとき「compress: command not found」と表示されて手が止まる人も少なくありません。

この記事では、compress / uncompress コマンドの基本操作から、gzip との違い、インストール方法、そして現場で遭遇しやすいエラーの対処法まで、実践的に解説します。


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を無料で手に入れる 図解60P/登録10秒/解除も3秒

compress / uncompress とは? LZW圧縮と .Z ファイルの基礎知識

compress は、LZW(Lempel-Ziv-Welch)アルゴリズムを使ってファイルを圧縮するコマンドです。圧縮されたファイルには .Z という拡張子が付きます。uncompress は、その .Z ファイルを元に戻す(解凍する)コマンドです。

1980年代から1990年代にかけて、UNIX環境ではファイル圧縮の標準として広く使われていました。しかし、LZWアルゴリズムに特許問題があったことと、後発の gzip の方が圧縮率で優れていたことから、現在ではほとんどの場面で gzip に置き換わっています。

gzip との違い

圧縮アルゴリズム:compress は LZW、gzip は DEFLATE(LZ77 + ハフマン符号化)を使用
圧縮率:gzip の方が一般的に20~30%ほど圧縮率が高い
拡張子:compress は .Z、gzip は .gz
互換性:gzip は .Z ファイルも解凍できる(後方互換あり)が、compress は .gz を扱えない
現在の標準:ほぼすべてのLinuxディストリビューションに gzip はプリインストールされているが、compress は別途インストールが必要な場合が多い

いつ compress / uncompress が必要になるか

実務で compress を積極的に使う場面はほとんどありません。ただし、以下のケースでは避けられません。

レガシーシステムの保守:古いUNIXサーバーから引き継いだバックアップファイルが .Z 形式で残っている
古いソフトウェアのアーカイブ:FTPサイトや過去のソースコード配布で .tar.Z 形式が使われている
シェルスクリプトの互換性:既存の運用スクリプトが compress / uncompress を前提に書かれている

ncompress のインストール方法

最近のLinuxディストリビューションでは、compress / uncompress はデフォルトでインストールされていないことがあります。ncompress パッケージを導入すれば使えるようになります。

1. RHEL / CentOS / AlmaLinux(dnf / yum)

# ncompress パッケージをインストールする # dnf install -y ncompress # CentOS 7以前の場合は yum を使用 # yum -y install ncompress

2. Ubuntu / Debian(apt)

# ncompress パッケージをインストールする # apt install -y ncompress

インストール後、compress --versionwhich compress でコマンドが使えることを確認してください。

compress コマンドの基本的な使い方(ファイルの圧縮)

1. ファイルを圧縮する

もっとも基本的な使い方です。compress コマンドにファイル名を指定すると、元ファイルが削除され、.Z 拡張子の圧縮ファイルが作成されます。

# ファイルを圧縮する(元ファイルは削除される) # compress -v proftpd-1.3.4d.tar proftpd-1.3.4d.tar: -- replaced with proftpd-1.3.4d.tar.Z Compression: 40.22%

-v オプションを付けると、圧縮率が表示されます。上の例では 40.22% の圧縮率で処理されたことがわかります。

注意すべきは、compress は元ファイルを自動的に削除するという点です。元ファイルを残したまま圧縮したい場合は、次の -c オプションを使ってください。

2. 元ファイルを残したまま圧縮する(-c オプション)

-c オプションを指定すると、圧縮結果が標準出力に出力されます。リダイレクトで別ファイルに保存すれば、元ファイルを残したまま圧縮できます。

# 元ファイルを残したまま圧縮する # compress -c proftpd-1.3.4d.tar > proftpd-1.3.4d.tar.Z

バックアップ目的で圧縮する場合は、元ファイルが消えると困るので -c を使うのが安全です。

3. 既存の .Z ファイルを強制上書きする(-f オプション)

同名の .Z ファイルがすでに存在する場合、compress はデフォルトでは上書きを拒否します。-f オプションで強制的に上書きできます。

# 既存の .Z ファイルを強制上書きして圧縮する # compress -f proftpd-1.3.4d.tar

スクリプト内で自動実行する場合は、上書き確認のプロンプトが出ると処理が止まるため -f を付けておくと確実です。

uncompress コマンドの基本的な使い方(ファイルの解凍)

1. .Z ファイルを解凍する

uncompress コマンドに .Z ファイルを指定すると、元のファイルに復元されます。compress と同様に、解凍後は .Z ファイルが削除されます。

# 解凍前のファイルサイズを確認する $ ls -l proftpd-1.3.5.tar.Z -rw-r--r--. 1 root root 13005949 6月 16 12:17 2014 proftpd-1.3.5.tar.Z # .Z ファイルを解凍する $ uncompress proftpd-1.3.5.tar.Z # 解凍後のファイルサイズを確認する $ ls -l proftpd-1.3.5.tar -rw-r--r--. 1 root root 28354560 6月 16 12:17 2014 proftpd-1.3.5.tar

13MB の .Z ファイルが、解凍後は 28MB の .tar ファイルに復元されました。タイムスタンプは元ファイルのものが維持されます。

2. 元の .Z ファイルを残したまま解凍する(-c オプション)

compress と同じく、-c オプションで解凍結果を標準出力に出力できます。

# .Z ファイルを残したまま解凍する $ uncompress -c proftpd-1.3.5.tar.Z > proftpd-1.3.5.tar

元の圧縮ファイルをアーカイブとして保持しておきたい場合に使います。

3. 強制上書きで解凍する(-f オプション)

解凍先に同名ファイルが存在する場合、-f オプションで強制上書きできます。

# 同名ファイルが存在しても強制上書きで解凍する $ uncompress -f proftpd-1.3.5.tar.Z

zcat で .Z ファイルの中身を確認する

解凍せずに .Z ファイルの中身だけ見たい場合は、zcat コマンドを使います。zcat は .Z ファイルを解凍して標準出力に表示するコマンドで、圧縮ファイル自体はそのまま残ります。

# .Z ファイルの中身を解凍せずに表示する $ zcat proftpd-1.3.5.tar.Z | more

.tar.Z の場合はバイナリデータなので、内容を確認するには tar と組み合わせます。

# .tar.Z アーカイブの中身(ファイル一覧)を表示する $ zcat proftpd-1.3.5.tar.Z | tar tf -

パイプで tar に渡すことで、解凍とアーカイブ展開を一度にできます。ディスク容量が限られている環境では、一時ファイルを作らずに済むので便利です。

応用・実務Tips

1. gzip で .Z ファイルを解凍する

gzip には .Z ファイルの後方互換性があるため、uncompress がインストールされていない環境でも gzip で解凍できます。

# gzip を使って .Z ファイルを解凍する $ gzip -d proftpd-1.3.5.tar.Z

ncompress をインストールできない環境(権限がない場合など)では、この方法が有効です。

2. .tar.Z を一度に展開する

.tar.Z 形式のアーカイブは、uncompress と tar を別々に実行する代わりに、パイプで一度に展開できます。

# .tar.Z アーカイブをパイプで一度に展開する $ zcat proftpd-1.3.5.tar.Z | tar xf - # tar の -Z オプションが使える環境ではこちらでも可 $ tar -Zxf proftpd-1.3.5.tar.Z

tar の -Z オプションは compress フィルタを通す指定です。ただし、環境によっては対応していない場合があるため、zcat とパイプの方が確実です。

3. .Z と .gz の圧縮率を比較する

同じファイルを compress と gzip で圧縮して、実際の差を確認してみましょう。

# compress で圧縮する # compress -c largefile.tar > largefile.tar.Z # ls -l largefile.tar.Z -rw-r--r-- 1 root root 15728640 ... largefile.tar.Z # gzip で圧縮する # gzip -c largefile.tar > largefile.tar.gz # ls -l largefile.tar.gz -rw-r--r-- 1 root root 12582912 ... largefile.tar.gz

一般的に gzip の方が 20~30% 小さくなります。新規で圧縮する場合は gzip を使うのが合理的ですが、既存の .Z ファイルを扱う場面では compress / uncompress の知識が必要です。

トラブルシュート・エラー対処

1. 「compress: command not found」と表示される

compress / uncompress がインストールされていない環境で発生します。

# エラー例 $ compress test.tar -bash: compress: command not found # 対処: ncompress パッケージをインストールする # dnf install -y ncompress # または # apt install -y ncompress

パッケージをインストールする権限がない場合は、gzip -d で .Z ファイルを解凍できるので、そちらを使ってください。

2. 「uncompress: not in compressed format」と表示される

指定したファイルが compress 形式(.Z)ではない場合に発生します。

# エラー例 $ uncompress test.tar.Z test.tar.Z: not in compressed format

ファイルの拡張子が .Z であっても、中身が compress 形式でなければこのエラーが出ます。file コマンドで実際の形式を確認してください。

# ファイルの実際の形式を確認する $ file test.tar.Z test.tar.Z: gzip compressed data, ...

gzip 形式であれば gzip -d、bzip2 形式であれば bzip2 -d で解凍してください。

3. 「already has .Z suffix -- no change」と表示される

すでに .Z 拡張子が付いているファイルに対して compress を実行した場合のメッセージです。compress は二重圧縮を防ぐため、.Z ファイルの圧縮を拒否します。

4. 圧縮してもファイルサイズが変わらない

元ファイルがすでに圧縮済み(JPEG画像、MP4動画など)の場合、compress で圧縮してもサイズはほとんど変わりません。これは compress に限らず gzip でも同様です。圧縮の効果があるのは、テキストファイルやログファイルなど、データの冗長性が高いファイルです。

本記事のまとめ

compress / uncompress は現在の主流ではありませんが、レガシーシステムの保守や古いアーカイブの取り扱いで必要になる場面があります。以下のテーブルでコマンドを整理しておきます。

やりたいこと コマンド
ファイルを圧縮する compress ファイル名
圧縮率を表示しながら圧縮する compress -v ファイル名
元ファイルを残して圧縮する compress -c ファイル名 > ファイル名.Z
.Z ファイルを解凍する uncompress ファイル名.Z
元の .Z ファイルを残して解凍する uncompress -c ファイル名.Z > ファイル名
.Z ファイルの中身を解凍せずに表示する zcat ファイル名.Z | more
.tar.Z をパイプで一度に展開する zcat ファイル名.tar.Z | tar xf -
gzip で .Z ファイルを解凍する gzip -d ファイル名.Z
ncompress をインストールする(RHEL系) dnf install -y ncompress
ncompress をインストールする(Debian系) apt install -y ncompress


暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

※登録30秒/合わなければ解除3秒


宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが最近の悩み。ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。

図解60pのLinux無料マニュアル
登録10秒/自動返信でDL
無料で受け取る