この記事のポイント
zstdはデフォルトレベルでgzipの約6.5倍速く圧縮でき、解凍も約3.9倍速いbzip2はログ形式のテキストに対してxzより高い圧縮率を実現(ただし解凍が最も遅い)- ランダムバイナリは4形式すべてでほぼ圧縮できない(圧縮率100%前後)
- 配布目的・アーカイブ保存なら
xz、日常のバックアップや転送ならzstdが最適 - Ubuntu 24.04 では
gzip・bzip2・xzはデフォルト搭載、zstdはapt install zstdで追加
「ファイルを圧縮するときって gzip でいいんじゃないの?」と思っている方は多いと思います。実際、tar.gz 形式は長年Linuxで標準的に使われてきました。でも今は状況が変わりつつあります。
本記事では、Linux でよく使われる4つの圧縮形式(gzip・bzip2・xz・zstd)について、Ubuntu 24.04 の Docker コンテナで実際に圧縮・解凍を計測した結果を紹介します。「どれが速いのか」「どれがサイズを小さくできるのか」が具体的な数字で分かります。
検証環境
Docker 公式イメージ ubuntu:24.04(arm64)でコマンドを実行。gzip 1.12 / bzip2 1.0.8 / xz-utils 5.4.5 / zstd 1.5.5。テストデータはDockerコンテナ内で生成した135MB のログ形式テキストファイル。3回計測の平均値を掲載しています(2026-06-14 計測)。
4つの圧縮形式の基本知識
①gzip(GNU zip)— Linuxの標準形式
gzip はLinuxでもっとも広く使われている圧縮形式です。.gz という拡張子で、tar.gz(= .tgz)として複数ファイルのアーカイブにもよく使われます。Ubuntu には最初から入っており、apt install 不要で即使えます。
gzip 1.12
Copyright (C) 2007-2022 Free Software Foundation, Inc.
$ gzip -6 largefile.log # デフォルトレベル6で圧縮
$ gunzip largefile.log.gz # 解凍
②bzip2 — 高圧縮率だが速度は遅い
bzip2 はブロックソート(BWT)アルゴリズムを使っており、特に繰り返しパターンが多いテキストデータで高い圧縮率を発揮します。ただし圧縮・解凍とも gzip より時間がかかります。
bzip2, a block-sorting file compressor. Version 1.0.8, 13-Jul-2019.
$ bzip2 -6 largefile.log # デフォルトレベル6で圧縮 → .bz2
$ bunzip2 largefile.log.bz2 # 解凍
③xz — 最高水準の圧縮率、圧縮が非常に遅い
xz は LZMA2 アルゴリズムを使い、4形式の中で最高レベルの圧縮率を持ちます。カーネルのソースコードやDebian/Ubuntuのパッケージ配布に使われる理由はここにあります。ただしデフォルトレベル(-6)での圧縮速度はzstdの約200倍以上遅いという欠点があります。
xz (XZ Utils) 5.4.5
$ xz -6 largefile.log # デフォルトレベル6で圧縮 → .xz
$ unxz largefile.log.xz # 解凍
④zstd(Zstandard)— Facebook製の新世代圧縮形式
zstd は Meta(Facebook)が開発した比較的新しい圧縮形式です。圧縮速度が圧倒的に速いのが最大の特徴で、圧縮率もgzipに近い水準を保ちつつ、解凍速度はさらに高速です。Ubuntu 24.04 では標準インストールに含まれていないため、別途インストールが必要です。
Reading package lists… Done
Get:1 …/noble-updates/main arm64 zstd arm64 1.5.5+dfsg2-2build1.1 [575 kB]
Unpacking zstd (1.5.5+dfsg2-2build1.1) …
Setting up zstd (1.5.5+dfsg2-2build1.1) …
$ zstd –version
*** Zstandard CLI (64-bit) v1.5.5, by Yann Collet ***
$ zstd -3 largefile.log # デフォルトレベル3で圧縮 → .zst
$ zstd -d largefile.log.zst # 解凍
実測ベンチマーク結果
135MB のログ形式テキストファイルを使って、4形式の圧縮・解凍速度と圧縮率を Ubuntu 24.04 Docker コンテナ内で3回計測しました。

①圧縮速度の比較

圧縮速度では zstd が圧倒的でした。135MB のログファイルをたった378ms(0.38秒)で処理しています。次に速い gzip でも2,462ms かかるので、zstd はgzipの6.5倍速く圧縮できます。
xz は82,683ms(約82秒)と、zstd の約218倍の時間がかかっています。頻繁に圧縮が発生する用途で xz を使うと、処理が目に見えて遅くなります。
②解凍速度の比較

解凍速度も zstd が最速で 193ms。gzip の 758ms と比べると約3.9倍速いという結果です。注目すべきは bzip2 で、圧縮よりさらに遅くなり3,983ms かかっています。アーカイブを頻繁に展開する作業では bzip2 はかなりのストレスになります。
xz は圧縮こそ極端に遅いですが、解凍は1,186ms とそれほど悪くありません。「配布パッケージのように、圧縮は一度だけで解凍は多数のユーザーが行う」という用途に向いている理由がわかります。
③圧縮率の比較(ログテキスト)

今回の実測で最も圧縮率が高かったのは bzip2 でした(元ファイルの8.1%に圧縮)。xz(10.4%)より高い圧縮率というのは意外に思えますが、bzip2 のブロックソートアルゴリズムはログのような繰り返しパターンが多いデータに特に効果的です。
zstd は16.3% と gzip(14.8%)より少し劣りますが、速度差を考えれば十分な結果といえます。
④ランダムバイナリの圧縮
100MB のランダムバイナリ(/dev/urandom)を圧縮した結果、4形式すべてで圧縮後サイズが元ファイルと同等(100%前後)になりました。ランダムデータにはパターンがないため、どの圧縮アルゴリズムでも縮小できません。これは圧縮の基本原理ですが、実際に計測で確認できました。
100+0 records in / 100+0 records out / 104857600 bytes (105 MB)
$ gzip -6 -c random.bin | wc -c
104878080 # ← 元より増えた!(約100.0%)
$ zstd -3 -c random.bin | wc -c
104860672 # ← ほぼ同じ(約100.0%)
# 既に圧縮済みのJPEG/MP4/ZIP等も同様の結果になる
総合比較表

Ubuntu 22.04 と 24.04 のバージョン差
Ubuntu 22.04(Jammy)と 24.04(Noble)で利用できるバージョンを実際に確認しました。
| 圧縮形式 | Ubuntu 22.04 (Jammy) | Ubuntu 24.04 (Noble) | 変更点 |
|---|---|---|---|
gzip |
1.10 | 1.12 | マイナーアップデート |
bzip2 |
1.0.8 | 1.0.8 | 変化なし |
xz-utils |
5.2.5 | 5.4.5 | パフォーマンス改善 |
zstd |
1.4.8 | 1.5.5 | 大幅アップデート(速度向上) |
gzip 1.10
$ xz –version | head -1
xz (XZ Utils) 5.2.5
$ zstd –version
*** zstd command line interface 64-bits v1.4.8, by Yann Collet ***
gzip 1.12
$ xz –version | head -1
xz (XZ Utils) 5.4.5
$ zstd –version
*** Zstandard CLI (64-bit) v1.5.5, by Yann Collet ***
用途別の使い分け
日常のバックアップや転送 → zstd 一択
毎日のバックアップや大きなファイルの転送では、圧縮・解凍の速度が体感に直結します。zstd なら処理待ち時間が大幅に短縮できます。圧縮率は gzip より少し劣りますが、速度のメリットが圧倒的です。
$ tar -x –zstd -f backup.tar.zst # 展開
長期保存・配布パッケージ → xz
圧縮は一度だけで、解凍が何度も行われる場合(ソフトウェア配布など)は xz が向いています。圧縮に時間がかかっても問題ない場面、かつ少しでも小さなサイズにしたい場合が xz の出番です。
互換性重視 → gzip
古いシステムや他のUnix環境との互換性が必要な場合は gzip が安全です。事実上すべてのLinux/Unix環境で利用可能です。
bzip2 はどこで使う?
正直、現在の bzip2 を新規採用する理由はほとんどありません。圧縮率は高くなる場面もありますが、解凍が遅すぎます。既存の .bz2 ファイルを扱う際に使う程度でよいでしょう。
よくある疑問
圧縮レベルは何を指定すれば良い?
各コマンドの -1(最速・低圧縮)から -9(最遅・高圧縮)の間で指定できます(デフォルトは gzip/bzip2/xz は -6、zstd は -3)。日常用途ではデフォルトのままで十分です。zstd は -1 から -19 まであり、さらに --ultra -22 まで指定できます。
$ zstd -19 hugefile.tar # 最高圧縮(かなり遅い)
$ zstd -3 hugefile.tar # デフォルト(バランス)
$ xz -1 hugefile.tar # xz でも -1 は大幅高速化
並列圧縮でxzを高速化できる?
xz は -T オプションでスレッド数を指定できます。マルチコアのVPSを使っている場合は試してみる価値があります(今回の実測は -T1 = シングルスレッドで計測)。
4
$ xz -6 -T4 hugefile.tar # 4スレッドで並列圧縮
# スレッド数分だけメモリ消費が増える点に注意
tar コマンドとの組み合わせは?
ディレクトリごとアーカイブする場合は tar と組み合わせます。
$ tar -cjf archive.tar.bz2 mydir/ # bzip2
$ tar -cJf archive.tar.xz mydir/ # xz
$ tar -c –zstd -f archive.tar.zst mydir/ # zstd(GNU tar 1.31以降)
# 解凍はすべて tar -xf archive.xxx でOK(形式を自動判定)
注意
tar --zstd オプションは GNU tar 1.31 以降で対応しています。Ubuntu 22.04 は tar 1.34、Ubuntu 24.04 は tar 1.35 のため両方で使えます。
まとめ
Ubuntu 24.04 で4つの圧縮形式(gzip/bzip2/xz/zstd)を実際に計測した結果をまとめます。
- 速度最優先なら
zstd(gzip の6.5倍速く圧縮、3.9倍速く解凍) - 圧縮率最優先で時間を問わないなら
xz(bzip2もログデータでは健闘) - 互換性・汎用性なら
gzip(速度と圧縮率のバランスも悪くない) - 新規採用で
bzip2を選ぶ理由は現時点でほぼない - ランダムバイナリや既圧縮ファイル(jpg/mp4/zip等)はどの形式でも圧縮できない
VPS でサーバーを運用していると、ログのローテーション・バックアップ・大きなファイルの転送など、圧縮の場面は意外と多いものです。用途に応じて使い分けることで、作業効率が大きく変わります。まずは apt install zstd で zstd を追加しておくと何かと便利です。
サーバー運用に興味があれば、VPSを借りてLinux環境を試してみるのが一番の近道です。



コメント