UNIX/Linuxの部屋 zipコマンドの使い方

TOP UNIX/Linuxの部屋 UNIX/Linuxコマンド一覧 用語集 新版 由来/読み方辞書 環境変数マニュアル Cシェル変数 システム設定ファイル システムコール・ライブラリ ネットワークプログラミングの基礎知識 クラウドサービス徹底比較・徹底解説




コマンド zip ファイルを圧縮し、ZIP 形式のアーカイブを作成する このエントリーをはてなブックマークに追加

最終更新


zip コマンドを使うと ZIP 形式のアーカイブファイルを生成することができる。zip ファイルを展開するには unzip コマンドを使う。



zip コマンドの基本的な使い方
ZIP 形式のアーカイブファイルを生成するには下記のようにする。
% zip example.zip sample*
⇒ sample* をアーカイブし、example.zip という zip ファイルを生成する。

既に存在する zip ファイルに対して再度 zip コマンドを実行すると、以下のような挙動になる。
  • 新規のファイルについてはアーカイブに追加する。
  • 既にアーカイブ済みのファイルについては、最新のファイル内容に更新する。

ディレクトリを再帰的にアーカイブしたい場合は、-r オプションを指定する。
% zip -r example.zip dir/
-r オプションを指定しないとディレクトリだけが zip ファイルに格納されてしまい、その下のファイルは格納されない。

zip ファイルの内容を確認するには unzip -l とする。
% unzip -l exmaple.zip
Archive: exmaple.zip
Length Date Time Name
-------- ---- ---- ----
64704 04-19-09 00:39 sample1.txt
23052 04-19-09 00:39 sample2.txt
94896 04-19-09 00:40 sample3.txt
13599 04-19-09 00:40 sample4.dat
-------- -------
196251 4 files
また、unzip -x でアーカイブファイルを展開することができる。

より詳細な情報を見たい場合は zipinfo コマンドを使う。

暗号化
zip コマンドに -e オプションを指定することで、暗号化することができる。
% zip -e exmaple.zip sample*
Enter password: (パスワードを入力)
Verify password: (もう一度パスワードを入力)

もしバッチ処理などで自動的に暗号化したい場合は、-e ではなく -P オプションを使用する。ただし zip コマンドの実行中に第三者が ps コマンドを叩いた場合、パスワードがわかってしまうので、セキュリティが保障できる環境のみで使用すること。
% zip -P secret exmaple.zip sample*
⇒ パスワード「secret」で暗号化

FreeBSD や Linux などの zip コマンドは問題ないが、Solaris の zip コマンド・ unzip コマンドは、OS 標準・SunSite 版いずれも暗号化機能なしでコンパイルされており、暗号化/復号化しようとすると、
% zip -e exmaple.zip sample*
zip error: Invalid command arguments (encryption not supported)
とエラーになる。この場合は自分でソースからコンパイルする必要がある。現在の OpenSolaris では暗号化機能が有効化されているが、Solaris10 ではまだ未対応らしい。

zip コマンドのオプション
▷ -y または --symlinks オプション
シンボリックリンクを、シンボリックリンクとして格納する
▷ -l または --to-crlf オプション
ファイル中の改行コード LF を、Windows 式の CR+LF に変換して格納する。
▷ -e または --encrypt オプション
zip ファイル生成時にパスワードにて暗号化する。
▷ -r または --recurse-paths オプション
ディレクトリを再帰的にたどってアーカイブを作成する。

zip パッケージについて
zip はコマンド名であるが、Info-ZIP というグループが作成・メンテナンスしているパッケージ名でもある。zip パッケージには以下のコマンドが含まれている。
zip zip ファイルを生成する。
zipcloak 暗号化されていない zip ファイルを暗号化/暗号化された zip ファイルを復号化する
zipnote zip ファイルにコメントを付加する。
zipsplit zip ファイルを分割する。

関連コマンド
zip コマンドは、UNIX/Linux と Windows にて相互にファイルのやりとりを行う場合に使うとよい。

UNIX/Linux 同士で完結する場合は、zip コマンドではなく tar + gzip/bzip2 を使うのが一般的である。