VMWare Fusionの仮想マシンのバックアップを定期的に行うためにAutomatorで作ったアプリをカレンダーで起動する

2018年2月18日

この記事は最初の投稿日から10年経過しています。内容が古い可能性があります。

VMWare の仮想マシンはファイルサイズが大きく、さらに起動しただけで更新されるので、TimeMachineのバックアップ対象にしてしまうと、ず〜〜〜っとバックアップが動くはめになってしまいます。

なので、バックアップ対象から外しているのですが、そうすると仮想マシンのバックアップがないことになってしまいます。

そこで、外付けハードディスクにたまにコピーするわけですが、これを定期的に自動でコピーするようにしました。

Mac でシェルスクリプトを定期的に実行するには、シェルスクリプトを作ってそれをlaunchdに登録するのが正統派だと思いますが、ここはあえてAutomator + カレンダーにて。

Automator でコピーするアプリを作る

※注意)以下の処理ではファイルを削除する処理が含まれています。記述を誤ると大事なファイルがすべて消えてしまう可能性があるため、内容を理解した上で間違いないと自分で理解できた時のみ実行してください。rsync は間違うと大惨事になる可能性を秘めています。

Automator の「シェルスクリプトを実行」のアクションを使って rsync を起動してコピーを行います。

以下の条件も追加しています。

  • VMWare が起動中にコピーすると不完全なコピーになるので起動していない時。
  • rsync が起動していない。つまりすでにコピー中ではない時。

これが作った Automator。

Automator

シェルスクリプトの内容は以下の通り。


isVMwareAlive=`ps -e | grep VMware | grep -v grep | wc -l`
if [ $isVMwareAlive = 0 ]; then
isRsyncAlive=`ps -e | grep rsync | grep -v grep | wc -l`
if [ $isRsyncAlive = 0 ]; then
rsync -av -P --delete 仮想マシンのディレクトリ バックアップ先のディレクトリ >ログファイル名 2>&1
fi
fi

if は1回でもできると思いますが、あんまり深く考えずに2重構造で。

これを「ファイル」→「書き出す…」で適切なファイル名で書きだすとアプリケーションが出来上がります。

カレンダーに登録する。

次に、これを定期的に実行するためカレンダーに登録します。

新しいイベントを登録し、通知からカスタムを選びます。

カレンダー

「ファイルを開く」を選んでさっき作ったアプリを指定するとアプリを起動することができます。

カレンダー 2

以上で完了

時間になるとアプリが起動します。

Running

参考にさせていただきました。

WindowsでいうタスクスケジューラはMacでいうとAutomator+iCalですよ – auientが調べたこと

シェルスクリプトでプロセスを監視し自動実行&自動kill

Mac

Posted by toshyon