macOSでコンテキストメニューからファイルをAES256パスワード付きZIP圧縮を行うAutomatorのワークフロー作成
パスワード付きZIP圧縮操作をmacOSデフォルトappのAutomatorを用いて、ファイルを右クリックで表示されるコンテキストメニューから行うワークフロー作成の流れです。
パスワードはAES256(Advanced Encryption Standard 256ビット長暗号鍵)で暗号化したいので、暗号化と復号化に対応したCUI版の7zip(p7zip)を用いることにします。
- シェルスクリプトの実装において参考にさせて頂いたページ:https://qiita.com/kouichirou/items/81efde08822293dc6bc6
動作確認環境
$ sw_vers
ProductName: macOS
ProductVersion: 11.2.3
BuildVersion: 20D91
$ brew -v
Homebrew 2.7.7
準備
Homebrewでp7zip
をインストールします。
brew install p7zip
インストールの際、以下のメッセージが出て失敗する場合はxcode-select --install
を先に実行します。
Install the Command Line Tools:
xcode-select --install
権限の設定
システム環境設定 -> セキュリティとプライバシー -> プライバシー
へ移動し、フルディスクアクセス
の項目にFinderを追加しチェックをONにします。
※ FinderのPATH:/System/Library/CoreServices/Finder.app
Automatorでワークフローの作成
Automator(/System/Applications/Automator.app
)を開き、新規書類ボタンをクリックし書類の種類はクイックアクションを選択します。
続けてアクション -> ライブラリ -> シェルスクリプトを実行
と進み、シェルスクリプトを実行
を右ペインにD&Dし追加します。
右ペインのそれぞれの設定値は以下を参考に指定します。
項目名 | 設定値 |
---|---|
ワークフローが受け取る現在の項目 | ファイルまたはフォルダ |
検索対象 | Finder.app |
入力 | すべての選択項目 |
イメージ | アクション |
カラー | ブラック |
シェルスクリプトを実行の項目の設定値も以下を参考に指定します。
項目名 | 設定値 |
---|---|
シェル | /bin/bash |
入力の引き渡し方法 | 引数として |
シェルスクリプトは以下を入力し保存します。保存時にファイル名の指定ができますが、この時指定した文字列がコンテキストメニューに表示されるため分かりやすい適当な名前を入力します。
password=$(osascript -e ' text returned of (display dialog "パスワードを入力して下さい:" with title "AES256パスワード付きZIP圧縮" default answer "" buttons {"OK"} default button 1) ')
if [ "$password" != "" ];then
password="-p"${password}
fi
/usr/local/bin/7z a -ssw -mem=AES256 -mx=9 -tzip ${password} -scsWIN -xr\!.DS_Store "$1".zip "$@"
最後の行で7zを用いてAES256でZIP圧縮していますが、-scsWIN
オプションを付けることでWindowsでの文字化け防止が期待でき、-mem=AES256
の指定ではAES256以外にZipCrypto, AES128, AES192
の指定も可能です。
-mx=9
では圧縮レベルを指定でき、[0 | 1 | 3 | 5 | 7 | 9]
の中から選択が可能です。数字が大きくなると圧縮レベルも高くなります。
7zのPATHについて
最後の行の/usr/local/bin/7z
のPATHはHomebrew
のインストール先で変わるため、環境に合わせて変更する必要があります。
HomebrewのインストールPATHの取得はbrew --prefix
で可能です。
実際の使用様子
ZIP圧縮中はメニューバーに回転した歯車が表示され、処理が完了すると歯車が消えます。ファイルの数量によって処理時間は大きく左右されるので歯車の様子で都度進捗具合を確認するといいでしょう。
AES256で圧縮済みのZIPの展開について
macOSではプリインストールアプリのアーカイブユーティリティ.app
を使用して展開ができますが、Windows OSではネイティブのZIP展開ではAES256に対応していないため失敗します。
Windows OSで展開する場合はexe版の7Zipをインストールして7Zip経由で展開すると正常に展開可能です。(※AES256に対応したアーカイバであれば7Zipである必要はありません。)