この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:2
ページ更新者:atom
更新日時:2026-06-10 12:08:58

タイトル: zip ファイルやディレクトリをzip形式に圧縮する

本稿は Linux の zip コマンドに関する記事です。ファイルやディレクトリを ZIP 形式 に圧縮するコマンドで、解凍側は同じく Linux の unzip や、Windows / Mac の標準機能で展開できます。

基本構文

zip [オプション] 圧縮後のファイル名 圧縮対象のファイル/ディレクトリ名

ディレクトリを圧縮する場合は -r を付与します。

zip -r backup.zip src/
zip data.zip a.txt b.txt c.txt

主なオプション

オプション用途
-rディレクトリを再帰的に
-0-9圧縮率 (-0無圧縮 / -6既定 / -9最大)
-q静かに実行 (進行表示を抑制)
-v詳細表示
-eパスワード保護 (対話入力)
-P パスワードパスワードを引数指定 (履歴に残るので非推奨)
-u既存 zip に追加・更新
-dzip からファイル削除 (zip -d a.zip target)
-x "パターン"除外パターン (-x "*.log" 等)
-i "パターン"対象パターンに限定
-jディレクトリパスを含めない (ファイルだけ)
-yシンボリックリンクをそのまま保存
-X追加属性 (UID/GID 等) を保存しない
-s サイズ分割アーカイブ作成 (-s 100m)

よく使う実例

# ディレクトリを再帰圧縮
zip -r release.zip dist/

# 最大圧縮で
zip -9r release.zip dist/

# ログを除外
zip -r backup.zip project/ -x "*.log" -x "node_modules/*"

# パスワード付き
zip -er secret.zip secret/

# 既存 zip に追加
zip backup.zip extra.txt

# 100MB ごとに分割
zip -s 100m -r big.zip largedir/

解凍コマンド: unzip

unzip backup.zip            # カレントに展開
unzip -d /tmp/out backup.zip # 出力先指定
unzip -l backup.zip         # 中身一覧 (展開しない)
unzip -t backup.zip         # 整合性チェック

zip と他の圧縮形式の比較

形式コマンド用途
zipzip / unzipWin/Mac/Linux 全部で展開しやすい
tar.gztar czvf / tar xzvfLinux で定番、属性保持
tar.xztar cJvftar.gz より高圧縮
tar.bz2tar cjvf中圧縮
7z7z a圧縮率高め (要 p7zip)
gzip 単体gzip1ファイル圧縮

運用上のヒント

  • 巨大ディレクトリの圧縮は時間と一時 IO 負荷がかかる。バックアップウィンドウで実施
  • 本番ログを zip して世代管理するには logrotate が便利
  • 大量小ファイルならtar + gzip のほうが軽い場合あり
  • パスワード付き zip の暗号化は古典的な ZipCrypto が既定で脆弱。機密用途では 7z の AES-256 や暗号化ファイルシステム / 鍵管理サービスを検討
  • 大文字小文字を区別する Linux と、区別しない Windows での名前衝突に注意

注意点

  • zip / unzip標準では入っていないディストロもある。sudo apt install zip unzip 等で導入
  • シンボリックリンク-y を付けないとリンク先のファイルが入る
  • パスワード -Pシェル履歴に残る-e での対話入力が安全
  • 分割ファイルはすべてのファイルが揃っていないと展開不可
  • 大量ファイルでの進捗を見たい場合は pv-v オプションを活用

関連