2026年5月29日

2026年5月29日

gzip・bzip2・xzで圧縮・展開する方法

はじめに

Linuxで単一ファイルを圧縮する代表的なツールがgzipbzip2xzの3種です。それぞれ圧縮率と速度のバランスが異なるため、用途に応じて使い分けることが重要です。

本記事では3つのツールの基本操作、展開方法、圧縮率比較、そしてストリーム処理での実用例を解説します。

症状・背景

  • ログファイルを圧縮して容量を節約したい
  • gzファイル/bz2ファイル/xzファイルを展開したい
  • 圧縮率と速度の最適なバランスを知りたい
  • pipe処理で圧縮しながらバックアップしたい

手順・設定方法

ステップ1: gzipで圧縮・展開する

# ファイルを圧縮(元ファイルは削除される)
gzip access.log

# 元ファイルを保持して圧縮
gzip -k access.log

# 圧縮レベルを指定(1=高速, 9=高圧縮)
gzip -9 access.log

# 展開
gunzip access.log.gz
# または
gzip -d access.log.gz

ステップ2: bzip2で圧縮・展開する

# bzip2圧縮(gzipより高圧縮率)
bzip2 access.log

# 元ファイル保持
bzip2 -k access.log

# 展開
bunzip2 access.log.bz2
# または
bzip2 -d access.log.bz2

# 内容を表示せず確認のみ
bzip2 -t access.log.bz2

ステップ3: xzで圧縮・展開する

# xz圧縮(最高圧縮率、やや低速)
xz access.log

# 元ファイル保持で圧縮
xz -k access.log

# 圧縮レベル指定
xz -9 access.log

# 展開
unxz access.log.xz
# または
xz -d access.log.xz

ステップ4: 表示と比較を行う

# 展開せず内容を表示
zcat access.log.gz       # gzip用
bzcat access.log.bz2     # bzip2用
xzcat access.log.xz      # xz用

# パイプで圧縮しながら保存
mysqldump db | gzip > db.sql.gz

# 各形式のサイズを比較
ls -lh access.log.{gz,bz2,xz}

注意事項

  • デフォルトでは元ファイルが削除されるため、必要なら-kオプションを併用する
  • xzはメモリ消費が大きく、リソースが限られた環境では注意が必要
  • 圧縮率はxz > bzip2 > gzip、速度はgzip > bzip2 > xzの順
  • 複数ファイルを1つにまとめる機能はないため、tarと組み合わせる

まとめ

1. gzipは高速・互換性重視の標準圧縮ツール

2. bzip2は中間のバランス、文字ベースファイルで効果的

3. xzは最高圧縮率、長期保管や配布に向く

4. -kオプションで元ファイルを保持できる

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ