[Mac] フォルダ構造ごとそのままコピーし、元のフォルダの古いファイルを削除

WordPress はプラグインを使って Dropbox に自動バックアップをしている。古いバックアップは自動で削除するようにはしているものの、WordPress のデータ量が増えていくに従って Dropbox がすぐに容量いっぱいになるようになった。

Dropbox を有料プランにアップグレードするのも手だが、それなら WordPress のバックアップは Mac でローカルにどんどん保存していき、Dropbox からは自動削除する方法を考えてみた。ちょうど常時起動している Mac もある。

使用ツール:Hazel(有料)、Dropbox、Keyboard Maestro(有料)

(1)Mac に Dropbox アプリケーションをインストールし、Dropbox のファイルをローカルで扱えるようにする。

(2)Mac の適当な場所に WordPress バックアップ用のフォルダ(wordpress-backup とでも名付けるとする)を作成する。

(3)Hazel でコピー元となる Dropbox フォルダーを追加。

(4)続けて Rules を追加。以下のようにする。

・If all of the following conditions are met
・Do the following to the matched file or folder:
・Copy to folder [2のフォルダ](Options で If file exists: replace the existing file とし、 Do not copy if a duplicate にチェックを入れる)

(5)Keyboard Maestro で例えば夜の 0:30 に以下のシェルスクリプトを実行するようにする(Dropbox フォルダから3日より前のファイルを削除する場合)。

・Triggered by any of the following: [At time: At 0:30] [On these days: SMTWTFS]
・Execute Shell Script: find [Dropbox フォルダへのパス] -mtime +3 | xargs rm -f

(最初はシェルスクリプトの実行も Hazel で設定していたが、コピーと削除のタイミングがうまく調整できなかったのでアプリケーションを分けることにした。)

これで Dropbox にファイルが追加されると自動でバックアップフォルダへコピーされ、さらに元の Dropbox から古いファイルが自動で削除されるようになった。バックアップフォルダにはどんどんファイルが溜まっていくようにしている。

参考:
指定日付以前の古いファイルを削除したり移動する方法
http://www.searchman.info/tips/2950.html