zip / unzip コマンド

zip形式の圧縮ファイルを扱うコマンド。

lzh形式の圧縮ファイルの場合はlhaコマンドを使う。

tar形式のファイルの場合はtarコマンドを使う。

インストール

Ubuntuではzip, unzipというパッケージに入っている。(Ubuntu 13.10, 15.10 で確認)

$ sudo apt-get install zip unzip

パスワード付きのZIPの作成・解凍

パスワード付きのZIPの作成(圧縮)または解凍をコマンドで行うには -P オプションを使う。

$ zip -P «パスワード» «ZIPファイル名» «圧縮対象ファイル»
$ unzip -P «パスワード» «ZIPファイル名»

ただし、コマンドラインにパスワードを与えると、履歴やpsコマンドでわかってしまうので、セキュリティ上はよくない。

ディレクトリまるごとzip圧縮するには

オプション -r を付ける。

$ zip -r «ZIPファイル名» «対象ディレクトリ»

tar での以下に相当する。

$ tar cvzf «TARGZファイル名» «対象ディレクトリ»

zipファイルを解凍するには

$ unzip «ZIPファイル名»

Javaの開発環境に付属のjarコマンドでもできる。

$ jar xvf «ZIPファイル名»

これらは tar での以下に相当する。

$ tar xvzf «TARGZファイル名»

jar は tar と同じ使い方で、ただ tar に付けるオプション z だけ削除する、と覚えると楽。

zipファイルに含まれるファイルの一覧を見るには

$ unzip -l «ZIPファイル名»

jar でもできる。

$ jar tf «ZIPファイル名»

これらは tar での以下に相当する。

$ tar tzf «TARGZファイル名»

jar は tar と同じ使い方で、ただ tar に付けるオプション z だけ削除する、と覚えると楽。

圧縮結果のバイナリを標準出力に吐き出すには

ZIPファイル名の代わりに - と書くと、- というファイルに圧縮ファイルを書き出すのではなく、標準出力にバイナリが書き出される。

これを応用して、ローカルにある大量のファイルを圧縮しながらリモートにSSHで転送するには以下のようにする。

$ zip -r - «圧縮対象ディレクトリ» | ssh «リモートホスト» "cat > «リモートでの書き出し先圧縮ファイルパス»"

ローカルにディスク容量の余裕がなく、あまりにも大容量で一時的にであっても圧縮ファイルをローカルに置くことができない場合にこの方法が便利。

tarでも同じことができる。-> ローカルにある大量のファイルを tar しながら、リモートにアップロードするには

このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。