[Mac] launchd で cron のようにディレクトリをバックアップ

Mac には、標準でTime Machine という優れたバックアップツールが入っています。

今回は、Linuxマシンなんかでは、おなじみの cron のようにバックグラウンドで、バックアップをする方法を紹介します。

Mac のターミナルで、cron を使う方法もあるんですが、Mac では、Launchd を使うのがジャスティス!(前回、cron を使った記事を投稿しときながらも)

では早速。 “[Mac] launchd で cron のようにディレクトリをバックアップ” の続きを読む

Mac のバックアップを Cron 使って NAS に保存してみる

Mac のバックアップといえば iBackup がなんだかんだ便利で使ってたんですが。
最近、NASを立ち上げた事で、バックアップ先をNASにしてたら、何かとエラーが頻発して調子よくないので、自分でシェルスクリプトを書いて Cron で回すことにした。

iBackup + NAS 環境でエラー

主に発生したエラーは、リソースフォーク関連のファイルに関するエラーと、NASへのネットワークエラー。

  • リソースフォークに関するエラー
    これは、iBackup の rsync オプションを変更すれば何とかなりそうだけど。。。
  • NASのネットワークエラー
    iBackup の環境設定(⌘,)→接続タブのところで「サーバーに接続」を設定していたんだけど、バックアップ中に失敗してバックアップ先で書き込みエラーが発生していた。
    NASの方をゲストアクセス許可(だれでも書き込み可に)しておけば、大丈夫そうだけど、気持ち良くないのでゲストアクセスは拒否。

シェルスクリプトを書く

NASのIPアドレス:192.168.1.100
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にバックアップします。

あとは、エラーや出力のログ書き出しなどもきちんとやっておいた方がいいんでしょうけど、それは後日。