zipとtar.gzの使い分け入門:サーバー作業で迷わない圧縮・解凍コマンド
サーバーでファイルをまとめて移動したいとき、まず覚えるべき選択肢は zip と tar.gz です。結論から言うと、Windows利用者へ渡すならzip、Linuxサーバー内でバックアップや配布に使うならtar.gz が扱いやすい場面が多くなります。
zip は複数ファイルを1つにまとめながら圧縮できます。tar.gz は、まず tar で複数ファイルを1つのアーカイブにまとめ、その全体を gzip で圧縮する形式です。Web制作、WordPressのテーマ移動、ログ退避、デプロイ前のバックアップでは、この違いを知っているだけで作業ミスを減らせます。
この記事で分かることは次の通りです。
zipとtar.gzの違い- サーバーでよく使う圧縮・解凍コマンド
- 入力例と出力確認の見方
- 権限、展開先、上書きで失敗しやすい点
- 目的別の使い分け
対象環境は、Linux系サーバーのシェル作業を想定します。コマンド例は一般的な zip、unzip、GNU tar、GNU gzip を前提にしています。macOSやレンタルサーバーではBSD系の tar や提供元独自の環境差があるため、実行前に tar --version や zip -v で確認してください。
zipとtar.gzは何が違うのか
zip と tar.gz の一番の違いは、「まとめる処理」と「圧縮する処理」が分かれているかどうかです。
zip は、ファイルをまとめる機能と圧縮する機能を1つの形式で持っています。WindowsやmacOSの標準機能、GUIの圧縮ソフトでも開きやすいため、制作会社、顧客、非エンジニアとの受け渡しに向いています。
一方、tar.gz は2段階です。
tar: 複数のファイルやディレクトリを1つにまとめるgzip: その1つのファイルを圧縮する
GNU gzipのマニュアルでも、gzip は基本的に個々のファイルを .gz に圧縮するツールとして説明されており、複数ファイルをまとめる用途では tar と組み合わせます。ここを混同すると、「gzip でフォルダを丸ごと圧縮できない」というつまずきにつながります。
ここがポイント:
zipは単体で「まとめる+圧縮」、tar.gzは「tarでまとめる+gzipで圧縮」です。
サーバー作業ではどちらを選ぶべきか
選び方は、圧縮率だけで決めないほうが実務では安全です。誰が開くのか、どこで展開するのか、権限やパスを保ちたいのかで変わります。
zipが向いている場面
zip は、受け渡し相手がサーバーに慣れていないときに強い形式です。
例えば、制作中の静的ファイル一式を顧客へ渡す、Windows利用者から画像素材を受け取る、WordPressのアップロード用素材をまとめる、といった場面では zip が扱いやすくなります。
主な用途は次の通りです。
- WindowsやmacOSの利用者へファイルを渡す
- GUIツールで中身を確認してもらう
- 画像、PDF、HTML、CSS、JavaScriptをまとめる
- サーバー上で一時的に展開して確認する
ただし、Unix系の権限や所有者情報を厳密に保ちたい作業では注意が必要です。共有用には便利ですが、サーバー内の完全な復元を目的にするなら tar.gz のほうが合う場合があります。
tar.gzが向いている場面
tar.gz は、Linuxサーバー同士の移動やバックアップでよく使われます。ディレクトリ構造をまとめて扱いやすく、コマンドラインだけで作成、一覧確認、展開まで進められます。
よくある用途は次の通りです。
- WordPressテーマやプラグインの退避
public_html配下の一部バックアップ- ログファイルの保管
- デプロイ前のディレクトリ丸ごと保存
- サーバー間でのファイル転送
GNU tarは gzip、bzip2、xz、zstd など複数の圧縮方式を扱えます。.tar.gz では -z オプションで gzip を使うのが基本です。
基本コマンド:作成、一覧確認、解凍
圧縮ファイルは、作る前よりも「展開前に中身を見る」習慣が大切です。意図しない絶対パスや余計な親ディレクトリが入っていると、解凍時に作業場所を汚します。
zipを作る
assets ディレクトリを assets.zip にまとめる例です。
zip -r assets.zip assets/
-r は再帰的に処理する指定です。ディレクトリ配下のファイルも含めたい場合に使います。
入力例の構成は次のように考えます。
assets/
css/style.css
js/app.js
images/logo.png
作成後は、中身を確認します。
unzip -l assets.zip
出力例は環境によって少し変わりますが、次のようにファイル一覧が見えます。
Archive: assets.zip
Length Date Time Name
--------- ---------- ----- ----
128 2026-07-08 10:00 assets/css/style.css
256 2026-07-08 10:00 assets/js/app.js
2048 2026-07-08 10:00 assets/images/logo.png
zipを解凍する
展開先を指定するなら -d を使います。
unzip assets.zip -d /tmp/check-assets
展開先を指定しないと、現在のディレクトリに展開されます。サーバー作業では、いきなり本番ディレクトリで解凍せず、まず /tmp や作業用ディレクトリで中身を確認すると安全です。
tar.gzを作る
site-backup ディレクトリを site-backup.tar.gz にする例です。
tar -czf site-backup.tar.gz site-backup/
オプションの意味は次の通りです。
-c: 新しいアーカイブを作成する-z: gzipで圧縮する-f: 出力ファイル名を指定する
GNU tarでは、ファイル名の拡張子から圧縮方式を選ぶ -a も使えます。
tar -caf site-backup.tar.gz site-backup/
ただし、初心者のうちは tar -czf のように圧縮方式を明示したほうが、コマンドの意味を追いやすいです。
tar.gzの中身を見る
展開前に一覧を確認します。
tar -tzf site-backup.tar.gz
出力例です。
site-backup/
site-backup/index.html
site-backup/wp-content/themes/sample/style.css
site-backup/logs/access.log
tar -tf site-backup.tar.gz だけで読める環境もあります。GNU tarは圧縮形式を自動認識できるためです。ただし、パイプから読む場合などは -z が必要になることがあります。
tar.gzを解凍する
作業用ディレクトリへ展開します。
mkdir -p /tmp/check-site
tar -xzf site-backup.tar.gz -C /tmp/check-site
オプションの意味は次の通りです。
-x: 展開する-z: gzipを通して読む-f: 入力ファイル名を指定する-C: 展開先ディレクトリを指定する
-C の展開先ディレクトリは事前に存在している必要があります。存在しない場所を指定すると失敗します。
実務でよくある使いどころ
圧縮・解凍は単なるファイル操作ではなく、作業前後の戻しやすさを作るための手段です。
WordPressテーマを更新前に退避する
テーマディレクトリを更新前に保存する例です。
cd /var/www/example.com/wp-content/themes
tar -czf mytheme-20260708.tar.gz mytheme/
中身を確認します。
tar -tzf mytheme-20260708.tar.gz | head
ここで mytheme/ から始まっていれば、展開時にもテーマディレクトリ単位で戻しやすくなります。/var/www/... のような絶対パスが入っていないかも確認してください。
ログを日付つきで圧縮する
アクセスログやエラーログは、そのまま置くと容量を圧迫します。古いログを退避するなら、日付をファイル名に入れると後で探しやすくなります。
tar -czf logs-20260708.tar.gz logs/
圧縮後にサイズを見る例です。
ls -lh logs-20260708.tar.gz
gzip -l を使うと、gzipファイルの圧縮サイズや展開後サイズを確認できます。
gzip -l logs-20260708.tar.gz
zipで納品用ファイルを作る
HTML一式を相手へ渡す場合は、zipのほうが開きやすいことがあります。
zip -r deliverables.zip index.html css/ js/ images/
確認します。
unzip -l deliverables.zip
相手がWindowsで開く前提なら、ファイル名の文字コードや日本語ファイル名にも注意します。文字化けが心配な場合は、英数字中心のファイル名に寄せるのが無難です。
よくある失敗と対処
圧縮・解凍の失敗は、コマンドそのものよりも「どこで実行したか」「どこに展開したか」で起きます。
失敗1:現在の場所に大量展開してしまう
unzip archive.zip や tar -xzf archive.tar.gz は、基本的に現在のディレクトリへ展開します。
本番ディレクトリで実行すると、想定外のファイルが混ざることがあります。先に中身を見て、展開先を指定しましょう。
unzip -l archive.zip
unzip archive.zip -d /tmp/check-archive
tar -tzf archive.tar.gz
tar -xzf archive.tar.gz -C /tmp/check-archive
失敗2:tar.gzをあとから更新しようとする
GNU tarのマニュアルでは、圧縮済みアーカイブには更新、削除、追記などの制限があると説明されています。つまり、archive.tar.gz にあとから1ファイルだけ足す、という運用は避けたほうがよいです。
必要な場合は、元ディレクトリから作り直します。
tar -czf site-backup.tar.gz site-backup/
差分を頻繁に扱いたいなら、圧縮ファイルを作るより rsync やバックアップツールを検討するほうが運用しやすくなります。
失敗3:gzipでディレクトリを圧縮しようとする
gzip は、複数ファイルを1つのアーカイブにまとめるツールではありません。ディレクトリを丸ごと保存したいなら tar と組み合わせます。
NG例です。
gzip site-backup/
改善例です。
tar -czf site-backup.tar.gz site-backup/
失敗4:権限や所有者を戻せる前提で作業する
サーバー移行や復旧では、ファイルの所有者、グループ、パーミッションが重要です。ただし、一般ユーザー権限で展開した場合、所有者情報を完全には戻せないことがあります。
確認するコマンドは次の通りです。
ls -la
WordPressでは、PHPプロセスがファイルを書き込めるかどうかが問題になります。展開後に管理画面から更新できない、画像をアップロードできない、といった症状が出る場合は、圧縮形式だけでなく所有者と権限を確認してください。
目的別の使い分け
迷ったときは、次の基準で選ぶと判断しやすくなります。
- 相手に渡すファイル:
zip - WindowsやmacOSで開いてもらう:
zip - Linuxサーバー内のバックアップ:
tar.gz - ディレクトリ構造ごと保管する:
tar.gz - 展開前に一覧確認したい:
zipもtar.gzも可能 - 差分同期をしたい:
rsyncなど別手段を検討
zip と tar.gz のどちらが常に正解、という話ではありません。開く人と戻す場所が決まると、選ぶ形式も決まります。
Web制作の現場では、顧客やデザイナーとの受け渡しは zip、サーバー上の退避や移行は tar.gz と分けるだけでも、作業手順がかなり整理されます。
作業前チェックリスト
最後に、実行前に確認したい項目をまとめます。
- 圧縮対象のディレクトリに移動しているか
- 余計な親ディレクトリを含めていないか
- 展開前に
unzip -lまたはtar -tで中身を見たか - 展開先を
-dや-Cで指定したか - 本番ディレクトリではなく作業用ディレクトリで試したか
- 日本語ファイル名や空白入りファイル名が混ざっていないか
- 展開後に所有者、権限、ファイルサイズを確認したか
次に見るべき分岐点は、単発の受け渡しなのか、繰り返すバックアップ作業なのかです。単発なら zip や tar.gz の手作業で十分ですが、毎日・毎週の退避なら、日付つきファイル名、保存世代数、失敗時の通知まで含めてスクリプト化する段階に入ります。
