Linux / コマンド / zip - 複数のファイルをZIPアーカイブにまとめる

zipは、ファイルとディレクトリを1つのZIPアーカイブにまとめて圧縮します。異なるOS間でファイルをやり取りする際によく使われる形式です。

通常はオプションの後にZIP名と格納するファイルを指定します。ディレクトリの中まで含めるには-rを使います。既存ZIPへの実行は項目の追加・置き換えであり、元の作業フォルダから消したファイルがZIPから自動的に消えるわけではありません。新しい名前で作るか、更新後にunzipで一覧と整合性を確認してください。

基本的な文法

zip [オプション] アーカイブ.zip ファイルまたはディレクトリ ...

インストールされている実装とオプションは、配布版によって異なる場合があります。man zipで現在のシステムの説明を確認してください。

使用例

2つのファイルをまとめる

report.txtとnotes.txtを用意し、同名のアーカイブがない新しいZIP名を選びます。通常は格納後も入力ファイルが残ります。

zip documents.zip report.txt notes.txt

ディレクトリ全体を圧縮

-rでサブディレクトリとファイルを含めます。

zip -r project.zip project/

作成したアーカイブを確認

圧縮後にunzip -lでファイルリストを確認します。

unzip -l project.zip

ZIPファイルに何が含まれているかを確認する

zipは複数のファイルを1つのZIPアーカイブにまとめることができます。-qは追加の処理を静かに行い、リストの参照は別のコマンドで行います。

printf 'hello\n' > note.txt
zip -q bundle.zip note.txt
unzip -Z -1 bundle.zip

例の出力:

note.txt

一覧だけでは、格納データの破損まで検査していません。unzip -t bundle.zipは各項目を内部で解凍して整合性を検査します。これも送信者の身元や改ざんされていないことの証明ではありません。

主なオプションと形式

オプション・形式 説明
-r ディレクトリのサブ項目を再帰的に含めます。
-0 圧縮せずにファイルを保存します。
-1 ... -9 圧縮レベルを選択します。
-u 新しいファイルを追加し、既存の同名項目より新しいファイルを更新します。
-x パターン 一致するパスを除外します。

使用する際の注意点

既存のZIPファイルを再利用すると、構成内容が予想と異なって更新されることがあるため、新しい名前で作成するか、まずバックアップしてください。一般的なZIPのパスワードオプションは強力なセキュリティ手段とみなさず、機密データには適切な暗号化ツールを選んでください。ZIP形式はプラットフォーム間で権限・所有権などのメタデータの保持が同じではない場合があります。

よくある質問

zip project.zip project/だけでフォルダの中のファイルはすべて入りますか?

いいえ。ディレクトリ内容を再帰的に含めるには通常zip -r project.zip project/を使用します。

公式ドキュメント

オプションの正確な動作や実装ごとの差は、zip関連の公式ドキュメントで確認できます。