Linuxの圧縮・解凍コマンドまとめ|gzip・tar・zipの使い方

  • URLをコピーしました!

Linuxでファイルやディレクトリを圧縮・解凍するコマンドは複数あります(gzip, tar, zip, xz, bzip2など)。 単にファイルサイズを縮めるだけでなく、**用途・スピード・互換性・圧縮率・展開速度**で使い分ける必要があります。

この記事では、各コマンドの基本から、実務で使う比較・使い分け・性能差・よくある失敗と対処まで完全網羅します。

📚Linux学習の全体像を知りたい方へ
本記事はLinux学習の一部内容です。初心者から現場レベルまでの学習順をまとめたロードマップはこちら。
Linux学習ロードマップ完全版|初心者から現場レベルまでの勉強手順とコマンド体系まとめ

目次

目次

圧縮を使う目的

圧縮操作をする理由は主に以下:

  • ディスク容量節約
  • ファイル転送帯域の削減
  • バックアップデータの効率化
  • アーカイブとしてまとめたい

主な圧縮ツールと特徴(一覧)

コマンド特徴圧縮率対応
gzip単一ファイルの圧縮広く互換あり
tarまとめて圧縮(アーカイブ)tar + gzip/xz などアーカイブ運用
zipWindows互換性高いクロスプラットフォーム
xz高圧縮率だが遅めバックアップ
bzip2gzipより少し圧縮率高やや高歴史的用途

基本的な圧縮・解凍コマンド

gzip(単一ファイル)

gzip file.txt
gzip -d file.txt.gz
gzip -k file.txt   # 元ファイルを残す

tar(複数ファイル/ディレクトリ)

# tarだけ(アーカイブ化のみ)
tar cvf archive.tar dir/

# gzip圧縮
tar czvf archive.tar.gz dir/

# xz圧縮
tar cJvf archive.tar.xz dir/

# 解凍
tar xvf archive.tar.gz
tar xvf archive.tar.xz

zip / unzip (Windows互換含む)

zip -r archive.zip dir/
unzip archive.zip

bzip2

bzip2 file.txt
bzip2 -d file.txt.bz2

実務でよく使う圧縮例

バックアップディレクトリを1本化(gzip + tar)

tar czvf app_backup_$(date +%F).tar.gz /var/www/html

転送効率重視(高圧縮)

tar cJvf app_backup_high.tar.xz /var/log

Windows/他環境でも展開したい

zip -r share.zip project/

圧縮方式の性能比較

圧縮方式選びは用途によって変わります:

  • 速度最優先gzip
  • 圧縮率最優先xz
  • 互換性最優先zip

大規模ログのバックアップでは xz、スクリプト配布では gzip、Windows との互換が必要なら zip が使われます。

よくある失敗と対処法

ファイルだけ gzip したいのにディレクトリごとになってしまう

原因:gzip はディレクトリ非対応。まず tar でまとめる必要があります。

対処

tar cvf before.tar dir/
gzip before.tar

圧縮が遅すぎる(大きいファイル)

原因:高圧縮率モード(xz など)を無条件に使っている

対処:gzip や低圧縮率設定で速度優先

zip で Permission denied

原因:権限不足でファイルにアクセスできない

対処:sudo を付ける / 権限を確認

FAQ(よくある質問)

Q1. gzip と tar の違いは?
gzip は単一ファイル専用、tar は複数ファイル/ディレクトリをまとめるためのアーカイブ化(圧縮は別オプションで行う)です。

Q2. 圧縮率と解凍速度のバランスは?
xz は圧縮率が高い反面、CPU 時間がかかります。高速処理が必要なら gzip を使います。

Q3. Windows でも解凍したい
zip はクロスプラットフォーム対応なので Windows でも解凍できます。

Q4. 圧縮ファイルを分割したい
tar + split を使います:

tar czvf - dir/ | split -b 500M - archive.tar.gz.part
目次