Mac のバックアップといえば iBackup がなんだかんだ便利で使ってたんですが。
最近、NASを立ち上げた事で、バックアップ先をNASにしてたら、何かとエラーが頻発して調子よくないので、自分でシェルスクリプトを書いて Cron で回すことにした。
iBackup + NAS 環境でエラー
主に発生したエラーは、リソースフォーク関連のファイルに関するエラーと、NASへのネットワークエラー。
- リソースフォークに関するエラー
これは、iBackup の rsync オプションを変更すれば何とかなりそうだけど。。。 - NASのネットワークエラー
iBackup の環境設定(⌘,)→接続タブのところで「サーバーに接続」を設定していたんだけど、バックアップ中に失敗してバックアップ先で書き込みエラーが発生していた。
NASの方をゲストアクセス許可(だれでも書き込み可に)しておけば、大丈夫そうだけど、気持ち良くないのでゲストアクセスは拒否。
シェルスクリプトを書く
NASのIPアドレス:192.168.1.100
NASの共有フォルダ:ShareHD
マウント名:BackupHD
NASの共有フォルダ:ShareHD
マウント名:BackupHD
シェルスクリプト名:rsync_backup.sh
シェルスクリプトに、「NASの共有フォルダをマウント」「マウントしたフォルダにrsync」、バックアップするフォルダは、引数で渡す。
こんな感じです。
#!/bin/sh
mkdir /Volumes/BackupHD
/sbin/mount -t afp afp://username:****@192.168.1.100/ShareHD /Volumes/BackupHD
rsync -av "$1" "/Volumes/BackupHD/"
本来なら、マウント済みのボリュームがあるか確認して、アンマウントなどの処理も加えた方がいいのだろうけど、今回その辺は割愛。
crontab に登録
crontab -e で直接書き込むなとか、言われてるブログもありますが、他に使ってるcronジョブがあるわけではないし、問題ないかと。
5 */7 * * * /bin/sh /Users/username/rsync_backup.sh '/Users/username/Dropbox'
15 */7 * * * /bin/sh /Users/username/rsync_backup.sh '/Users/username/Box Sync'
7時、14時、21時の5分にDropboxを。
同15分にBox SyncフォルダをNASにバックアップします。
あとは、エラーや出力のログ書き出しなどもきちんとやっておいた方がいいんでしょうけど、それは後日。