結論:互換性はgzip、速度はzstd、圧縮率はxzから比較する
| 形式 | 特徴 | 向く用途 |
|---|---|---|
| gzip | 対応環境が多く扱いやすい | 受け渡し、一般的なバックアップ |
| xz | 圧縮に時間をかけてサイズを小さくしやすい | 長期保管、配布物 |
| zstd | 圧縮・展開速度と圧縮率のバランス | 定期バックアップ、頻繁な展開 |
データの種類によって結果は変わります。ログやテキストは縮みやすく、JPEG、動画、ZIPなど既に圧縮されたデータは小さくなりにくいため、代表データで測定します。
tarと圧縮の役割は異なる
tarは複数のファイルとディレクトリを一つにまとめ、パスや権限などの情報を保持するアーカイブツールです。gzip、xz、zstdはデータを圧縮します。GNU tarはこれらを組み合わせて扱えます。
# アーカイブのみ
tar -cf project.tar project/
# gzipで圧縮
tar -czf project.tar.gz project/
圧縮アーカイブを作成する
gzip
tar -czf backup-20260830.tar.gz data/
xz
tar -cJf backup-20260830.tar.xz data/
zstd
tar --zstd -cf backup-20260830.tar.zst data/
オプションは、-cが作成、-fが出力ファイル指定、-zがgzip、-Jがxzです。--zstdにはzstdプログラムと対応するtarが必要です。
削除する前に内容を確認する
tar -tf backup-20260830.tar.gz | less
gzip -t backup-20260830.tar.gz
xz -t backup-20260830.tar.xz
zstd -t backup-20260830.tar.zst
tar -tfは収録ファイルを一覧表示します。各形式の-tは圧縮データの整合性を検査します。ただし、アーカイブが開けることはバックアップ全体の復元保証ではありません。重要データは別の場所へ試験復元します。
安全に解凍する
信頼できないアーカイブを、ルート権限で重要なディレクトリへ直接展開しないでください。まず内容を確認し、空の作業用ディレクトリへ展開します。
mkdir restore-check
tar -tf backup-20260830.tar.gz | less
tar -xf backup-20260830.tar.gz -C restore-check/
GNU tarは多くの場合、読み込み時に形式を自動判定するため、展開では-xfを使用できます。環境やtar実装によって動作が異なる場合は、tar --versionとマニュアルを確認します。
単一ファイルを圧縮する
gzip -k application.log
xz -k application.log
zstd -k application.log
-kは元ファイルを残します。ログ運用では手動圧縮を繰り返すより、logrotateやアプリケーション側の保持設定を利用した方が安全な場合があります。
サイズと時間を比較する
du -sh data/
time tar -czf sample.tar.gz data/
time tar -cJf sample.tar.xz data/
time tar --zstd -cf sample.tar.zst data/
ls -lh sample.tar.*
同じデータを使い、作成時間、展開時間、ファイルサイズ、利用先での互換性を比較します。機密データをベンチマーク用として不用意にコピーしないことにも注意します。
圧縮しても容量が足りない場合
圧縮はバックアップや転送量の削減には有効ですが、稼働中のVMイメージ、コンテナレイヤー、データベースを常に圧縮して解決できるとは限りません。まずdf・du・lsblkによる容量診断で不足箇所を確認します。
削除と圧縮を行っても必要容量を確保できない場合は、Linux用SSDの選び方で接続方式と容量を確認してください。