Macでパスワードつきのzipファイルを作る 完全版

後輩のid:MoChiwakiが(Mac で zip圧縮 パスワード付き! - MoChiwakiブログ)というエントリを書いていたので僕も便乗してみる。
たぶん社内資料を会社に送付するときに必要になったんだと思う。

せっかくなのでMacでできるパスワードつきzipファイルの作り方を調べてみました。

1. zipファイルを作成して、後からパスワードをつける

id:MoChiwakiが紹介している方法ですが、
zipファイルを作成してから「zipcloak」というコマンドでパスワードを後付けします。
zipファイルの作成はFinder上なら右クリックで「"ファイル名"を圧縮」を選択するか、
ターミナル上ならzipコマンドでOKです。
ターミナル上で実行する場合は以下のようになります。

$ zip tmp.zip tmp.txt
  adding: tmp.txt (stored 0%)

$ zipcloak tmp.zip
Enter password:
Verify password:
encrypting: tmp.txt

2. zipコマンドだけでパスワードつきzipファイルを作成する

zipコマンドだけでもパスワードつきzipファイルを作成することができます。
zipファイルを作成するときにオプションを指定するだけです。

#file
zip -e 圧縮後のファイル名.zip ファイルのパス

#dir
zip -e -r 圧縮後のファイル名.zip ディレクトリのパス
# file
$ zip -e tmp.zip tmp.txt
Enter password:
Verify password:
  adding: tmp.txt (stored 0%)
# dir
$ zip -e -r tmp.zip tmp
Enter password:
Verify password:
  adding: tmp/ (stored 0%)
  adding: tmp/tmp.txt (stored 0%)

3. ツールでパスワードつきzipファイルを作成する

MacZip4winというツールを使うと、
Finder上からパスワードつきのzipファイルを作成することができます。
またこのツールでzipファイルを作ると、Windowsで解凍しても文字化けしないという特徴があります。
理由は圧縮時にファイル名をShift_JISで扱うからです。
また「.DS_Store」などMac特有のファイルも圧縮時に削除してくれます。


使い方は、MacZip4winを起動すると以下のような画面が立ち上がるので、
圧縮したいファイルおよびディレクトリをドラッグアンドドロップします。

そうするとパスワード入力の画面が出てくるのでパスワードを設定したら完了です。

オプションの「Encrypt」がパスワードの有無で、
「No Compress」は無圧縮でアーカイブのみ行います。


さて、ここまで色々見てきましたが、感想としてどれも地味に面倒くさいと思ったので、
こんな関数を書いてみました。殴り書きですが多分動くと思いますw

function ze() {
    if [ $# = 0 ]; then
        echo "usage: ze [./file] [./dirctory]"
    else
        arg=$1
        if [ `echo $arg | grep '\.'` ]; then
            file_name=`echo $arg | cut -d'.' -f1`
            zip -e "$file_name.zip" $arg
        else
            zip -e -r "$arg.zip" $arg
        fi
    fi
}

はてなダイアリーってGistの貼り付けできなかったっけ??
なんかscriptタグがうまく反映されなくてできなかった。


ともかくこれを.zshrcとかの設定ファイルに書いて、
若干コマンド量を減らしてパスワードつきzipファイルを作れるようになりました。

# file
$ ze カレントのファイル

# dir
$ ze カレントのディレクトリ
# file
$ ze tmp.txt
Enter password:
Verify password:
  adding: tmp.txt (stored 0%)
# dir
$ ze tmp
Enter password:
Verify password:
  adding: tmp/ (stored 0%)
  adding: tmp/tmp.txt (stored 0%)

まとめ
好きな方法でやればいいと思うw