2026年5月29日
2026年5月29日
gzip・bzip2・xzで圧縮・展開する方法
はじめに
Linuxで単一ファイルを圧縮する代表的なツールがgzip、bzip2、xzの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オプションで元ファイルを保持できる
関連記事: