タイトル: zip ファイルやディレクトリをzip形式に圧縮する
本稿は Linux の zip コマンドに関する記事です。ファイルやディレクトリを ZIP 形式 に圧縮するコマンドで、解凍側は同じく Linux の unzip や、Windows / Mac の標準機能で展開できます。
基本構文
|
zip [オプション] 圧縮後のファイル名 圧縮対象のファイル/ディレクトリ名 |
ディレクトリを圧縮する場合は -r を付与します。
|
zip -r backup.zip src/ |
主なオプション
| オプション | 用途 |
|---|---|
-r | ディレクトリを再帰的に |
-0〜-9 | 圧縮率 (-0無圧縮 / -6既定 / -9最大) |
-q | 静かに実行 (進行表示を抑制) |
-v | 詳細表示 |
-e | パスワード保護 (対話入力) |
-P パスワード | パスワードを引数指定 (履歴に残るので非推奨) |
-u | 既存 zip に追加・更新 |
-d | zip からファイル削除 (zip -d a.zip target) |
-x "パターン" | 除外パターン (-x "*.log" 等) |
-i "パターン" | 対象パターンに限定 |
-j | ディレクトリパスを含めない (ファイルだけ) |
-y | シンボリックリンクをそのまま保存 |
-X | 追加属性 (UID/GID 等) を保存しない |
-s サイズ | 分割アーカイブ作成 (-s 100m) |
よく使う実例
|
# ディレクトリを再帰圧縮 |
解凍コマンド: unzip
|
unzip backup.zip # カレントに展開 |
zip と他の圧縮形式の比較
| 形式 | コマンド | 用途 |
|---|---|---|
| zip | zip / unzip | Win/Mac/Linux 全部で展開しやすい |
| tar.gz | tar czvf / tar xzvf | Linux で定番、属性保持 |
| tar.xz | tar cJvf | tar.gz より高圧縮 |
| tar.bz2 | tar cjvf | 中圧縮 |
| 7z | 7z a | 圧縮率高め (要 p7zip) |
| gzip 単体 | gzip | 1ファイル圧縮 |
運用上のヒント
- 巨大ディレクトリの圧縮は時間と一時 IO 負荷がかかる。バックアップウィンドウで実施
- 本番ログを zip して世代管理するには
logrotateが便利 - 大量小ファイルならtar + gzip のほうが軽い場合あり
- パスワード付き zip の暗号化は古典的な ZipCrypto が既定で脆弱。機密用途では
7zの AES-256 や暗号化ファイルシステム / 鍵管理サービスを検討 - 大文字小文字を区別する Linux と、区別しない Windows での名前衝突に注意
注意点
zip/unzipは標準では入っていないディストロもある。sudo apt install zip unzip等で導入- シンボリックリンクは
-yを付けないとリンク先のファイルが入る - パスワード
-Pはシェル履歴に残る。-eでの対話入力が安全 - 分割ファイルはすべてのファイルが揃っていないと展開不可
- 大量ファイルでの進捗を見たい場合は
pvや-vオプションを活用
関連
- 親カテゴリ: コマンド一覧 (Linux)
- 関連コマンド: unzip ファイルの解凍 / unzip zipファイルを解凍する / tar ファイルの圧縮と解凍