Linuxでファイルを圧縮・解凍するコマンド一覧|gzip・bzip2・xzの使い分けと比較コマンド

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxコマンド, LinuxコマンドU-Z, 圧縮・解凍・アーカイブ管理コマンド > Linuxでファイルを圧縮・解凍するコマンド一覧|gzip・bzip2・xzの使い分けと比較コマンド
「圧縮ファイルを解凍しようとしたらコマンドが違った」「gzip、bzip2、xz……どれを使えばいいのか混乱している」——Linuxを使い始めると、こういった場面に必ずぶつかります。

Linuxには圧縮・解凍のコマンドが複数あり、それぞれ拡張子も圧縮アルゴリズムも異なります。間違ったコマンドを使えば「このファイルは処理できない」とエラーが出るだけです。

この記事では、Linuxで使われる主要な圧縮・解凍コマンド(compress/uncompress、gzip/gunzip、bzip2/bunzip2、xz/unxz)を体系的に解説します。拡張子別の使い分け方、実際の実行例、処理速度と圧縮率の比較まで一気にまとめます。
【この記事でわかること】
・拡張子(.Z/.gz/.bz2/.xz)でコマンドを使い分けるのが基本
・gzip -d / bzip2 -d / xz -d で解凍、-k オプションで元ファイルを保持できる
・圧縮率は xz > bzip2 > gzip、処理速度は gzip が最速
・tar と組み合わせる場合は -z(gzip)/-j(bzip2)/-J(xz)フラグを使う

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

Linuxの圧縮コマンドを整理する

Linuxには歴史的な経緯から複数の圧縮形式が並立しています。まず全体像を把握しましょう。

コマンド 拡張子 アルゴリズム 特徴
compress / uncompress .Z LZW 古いUnix由来。現在はほぼ使われない
gzip / gunzip .gz DEFLATE 最も普及。処理速度が速い
bzip2 / bunzip2 .bz2 BWT+Huffman gzipより高圧縮。やや遅い
xz / unxz .xz LZMA2 最高圧縮率。処理時間が長い
実務での出現頻度は「.gz > .bz2 > .xz > .Z」の順です。.Zファイルに遭遇することは現在のRHEL/Ubuntu環境ではほぼありません。

compress / uncompress コマンド(.Z形式)

1. uncompressの基本構文

compressコマンドで圧縮されたファイル(拡張子 .Z)を復元するのがuncompressです。

# 書式 uncompress [オプション] ファイル名 # 主なオプション # -c 復元結果を標準出力に出力する(元ファイルは残る) # -f 同名ファイルが存在しても確認せず上書きする # -v 処理結果の詳細を表示する

2. uncompressの実行例

実際の.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拡張子が取れてtarファイルになります) $ 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

元の .Z ファイルは削除されます。元ファイルを残したい場合は -c オプションでリダイレクトしてください。

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

3. compressで圧縮する

# ファイルを.Z形式で圧縮します $ compress pakira.txt # pakira.txt.Z が生成され、元のpakira.txtは削除されます # 圧縮後のファイルを確認します $ ls -l pakira.txt.Z -rw-r--r--. 1 root root 2340 4月 7 12:00 pakira.txt.Z

注意: compressはLZW特許の問題から一時期普及が止まった経緯があります。現在は特許切れですが、新規に使う理由はほぼありません。互換性が必要な古いシステムとのやり取り以外では使わないことをお勧めします。

gzip / gunzip コマンド(.gz形式)

最も使われる圧縮コマンドです。RHEL系・Debian系問わず標準インストールされています。

1. gzipの基本構文とオプション

# 書式 gzip [オプション] ファイル名 # 主なオプション # -d 解凍する(gunzip と同等) # -k 元ファイルを残したまま圧縮する(--keep) # -c 結果を標準出力に出力する # -r ディレクトリを再帰的に処理する # -v 処理詳細を表示する(圧縮率も表示) # -1 ~ -9 圧縮レベル指定(-1=最速/低圧縮、-9=最遅/高圧縮、デフォルトは-6) # -l 圧縮ファイルの情報を表示する(元サイズ・圧縮後サイズ・圧縮率)

2. gzipで圧縮する

# ファイルを圧縮します(元ファイルは削除されます) $ gzip access.log $ ls -lh access.log.gz -rw-r--r-- 1 root root 1.2M 4月 7 12:00 access.log.gz # -v で圧縮率を確認しながら圧縮します $ gzip -v access.log access.log: 82.3% -- replaced with access.log.gz # 元ファイルを残したまま圧縮します(-k オプション) $ gzip -k access.log $ ls -lh access.log access.log.gz -rw-r--r-- 1 root root 6.8M 4月 7 12:00 access.log -rw-r--r-- 1 root root 1.2M 4月 7 12:00 access.log.gz

3. gunzip(gzip -d)で解凍する

# 方法1: gunzip コマンドを使う $ gunzip access.log.gz # 方法2: gzip -d を使う(gunzip と同等) $ gzip -d access.log.gz # 解凍せずに内容を確認する(zcat / zless) $ zcat access.log.gz | head -5 192.168.1.10 - - [07/Apr/2026:10:00:01 +0900] "GET / HTTP/1.1" 200 4523 ...

4. 圧縮ファイルの情報を確認する

# -l で圧縮ファイルの情報を表示します $ gzip -l access.log.gz compressed uncompressed ratio uncompressed_name 1243648 6815744 81.8% access.log

bzip2 / bunzip2 コマンド(.bz2形式)

gzipより高い圧縮率を誇りますが、処理速度はやや遅くなります。Linuxカーネルのソースコードは長らく.tar.bz2形式で配布されていました。

1. bzip2の基本構文とオプション

# 書式 bzip2 [オプション] ファイル名 # 主なオプション # -d 解凍する(bunzip2 と同等) # -k 元ファイルを残したまま処理する(--keep) # -c 結果を標準出力に出力する # -v 処理詳細を表示する # -1 ~ -9 圧縮レベル指定(デフォルト -9) # -t ファイルの整合性テスト(解凍はしない)

2. bzip2で圧縮・解凍する

# ファイルを.bz2形式で圧縮します $ bzip2 access.log $ ls -lh access.log.bz2 -rw-r--r-- 1 root root 1.0M 4月 7 12:00 access.log.bz2 # 元ファイルを残したまま圧縮します $ bzip2 -k access.log # 解凍します $ bunzip2 access.log.bz2 # または $ bzip2 -d access.log.bz2 # 解凍せずに内容を確認する(bzcat) $ bzcat access.log.bz2 | head -3

xz / unxz コマンド(.xz形式)

現在最も高い圧縮率を実現するコマンドです。RHEL/Rocky Linux/AlmaLinuxのRPMパッケージは.xz形式で配布されています。処理時間が長いため、頻繁に参照するファイルよりアーカイブ用途に向いています。

1. xzの基本構文とオプション

# 書式 xz [オプション] ファイル名 # 主なオプション # -d 解凍する(unxz と同等) # -k 元ファイルを残したまま処理する(--keep) # -c 結果を標準出力に出力する # -v 処理詳細を表示する # -0 ~ -9 圧縮レベル指定(デフォルト -6) # -l .xzファイルの情報を表示する # -T N 使用するCPUスレッド数(-T 0 で全コア使用)

2. xzで圧縮・解凍する

# ファイルを.xz形式で圧縮します(大きいファイルは時間がかかります) $ xz access.log $ ls -lh access.log.xz -rw-r--r-- 1 root root 892K 4月 7 12:00 access.log.xz # -v で圧縮状況を確認しながら実行します $ xz -v access.log access.log (1/1) 100 % 892.0 KiB / 6.5 MiB = 0.134 # 元ファイルを残したまま圧縮します $ xz -k access.log # 解凍します $ unxz access.log.xz # または $ xz -d access.log.xz # 解凍せずに内容を確認する(xzcat) $ xzcat access.log.xz | head -3 # マルチスレッドで高速圧縮(全コア使用) $ xz -T 0 large_file.tar

tarと組み合わせた圧縮・解凍(.tar.gz / .tar.bz2 / .tar.xz)

実務でよく使うのは「tarでまとめながら圧縮」するパターンです。tarコマンドにフラグを追加するだけで連動できます。

1. tarの圧縮フラグ一覧

フラグ 形式 拡張子
-z gzip .tar.gz(または.tgz)
-j bzip2 .tar.bz2
-J xz .tar.xz

2. 圧縮アーカイブの作成

# gzip圧縮でアーカイブ作成 $ tar czf backup.tar.gz /var/log/nginx/ # bzip2圧縮でアーカイブ作成 $ tar cjf backup.tar.bz2 /var/log/nginx/ # xz圧縮でアーカイブ作成 $ tar cJf backup.tar.xz /var/log/nginx/ # -v を加えると処理中のファイル名を表示します $ tar czfv backup.tar.gz /var/log/nginx/

3. 圧縮アーカイブの展開

# gzip圧縮アーカイブを展開 $ tar xzf backup.tar.gz # bzip2圧縮アーカイブを展開 $ tar xjf backup.tar.bz2 # xz圧縮アーカイブを展開 $ tar xJf backup.tar.xz # 展開先ディレクトリを指定する場合は -C オプションを使います $ tar xzf backup.tar.gz -C /tmp/restore/ # 圧縮形式を自動判別して展開(tar -xf だけでもOK) $ tar xf backup.tar.gz $ tar xf backup.tar.bz2 $ tar xf backup.tar.xz

4. 圧縮アーカイブの内容確認(展開せずに)

# 内容一覧の表示(展開せずに確認) $ tar tzf backup.tar.gz var/log/nginx/ var/log/nginx/access.log var/log/nginx/error.log $ tar tjf backup.tar.bz2 $ tar tJf backup.tar.xz # または自動判別 $ tar tf backup.tar.gz

圧縮形式の比較と使い分け

実際に6.8MBのApacheアクセスログを圧縮した結果です(RHEL 9.4環境)。
形式 圧縮後サイズ 圧縮率 処理時間(目安) 展開速度
gzip(-6) 1.2 MB 82% 約0.3秒 速い
bzip2(-9) 1.0 MB 85% 約1.2秒 やや遅い
xz(-6) 892 KB 87% 約3.8秒 遅い
選び方の目安:
・頻繁に展開するログファイル → gzip(速度優先)
・長期保存・転送コスト削減 → xz(圧縮率優先)
・既存の.bz2アーカイブの操作 → bzip2(互換性)
・古いUnixシステムとのやり取り → compress/uncompress

トラブルシュート・よくあるエラー

「command not found」が出た場合

bzip2やxzは最小インストールでは省略される場合があります。

# RHEL系でインストール $ sudo dnf install bzip2 xz # Debian/Ubuntu系でインストール $ sudo apt install bzip2 xz-utils

「gzip: access.log.gz already exists; do you wish to overwrite?」と聞かれた場合

同名の .gz ファイルがすでに存在しています。上書きするなら「y」、しないなら「n」を入力してください。スクリプト内で自動処理したい場合は -f(強制上書き)オプションを使います。

# 強制上書きして圧縮 $ gzip -f access.log

「gzip: access.log.gz: not in gzip format」が出た場合

拡張子は.gzでもファイルが壊れているか、実際には異なる形式です。fileコマンドで確認しましょう。

# ファイルの実際の形式を確認します $ file access.log.gz access.log.gz: bzip2 compressed data, block size = 900k # bzip2だったのでbunzip2で解凍します $ bunzip2 access.log.gz

圧縮・解凍中にディスク不足でエラーが出た場合

圧縮は展開元ファイルと圧縮後ファイルの両方が一時的に必要です。ディスクに十分な空き容量があることを確認してください。

# ディスク使用状況を確認します $ df -h / Filesystem Size Used Avail Use% Mounted on /dev/mapper/rhel-root 50G 32G 18G 65% /

本記事のまとめ

Linuxの圧縮・解凍コマンドは拡張子を見ると使うコマンドが決まります。
やりたいこと コマンド
.Zファイルを解凍する uncompress ファイル名.Z
.gzファイルを解凍する gunzip ファイル名.gz
.bz2ファイルを解凍する bunzip2 ファイル名.bz2
.xzファイルを解凍する unxz ファイル名.xz
gzipで圧縮(元ファイルも残す) gzip -k ファイル名
xzで圧縮(元ファイルも残す) xz -k ファイル名
tarでgzip圧縮アーカイブを作成 tar czf archive.tar.gz ディレクトリ
tar.gz/.bz2/.xzを展開する tar xf archive.tar.gz
圧縮ファイルの形式を確認する file ファイル名
「どのコマンドを使えばいいか分からない」という場面では、まず file コマンドでファイルの実際の形式を確認する習慣をつけてください。拡張子に惑わされずに正確な判断ができます。

Linuxサーバー運用の基礎を体系的に学びたい方へ

圧縮・解凍コマンドに限らず、Linuxサーバー管理では「コマンドは知っているが、なぜそう使うのかが分からない」という壁にぶつかります。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

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

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

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

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

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

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

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