Windows にはたくさんの便利なバックアップソフトがあるが、Cygwin を使用しているならば、Linux と同じように cron と rsync を導入して自動でバックアップを実行させることができる。Cygwin で cron を使う方法はたくさん Web 上に説明されているが (let me google)、ここにもメモしておく。
まずは cron と cygrunsrv (Cygwin コマンドを Windows 上のサービスとして動作させるためのコマンド) を Cygwin の setup.exe や apt-cyg などで導入する。次に、
$ cron-config
を実行して尋ねられる質問に適宜答える。途中で、
Do you want the cron daemon to run as yourself? (yes/no) yes
と聞かれるので yes と答えておく。以下のコマンドで cron サービスが起動しているか確認できる。
$ cygrunsrv --query cron Service : cron Display name : Cron daemon Current State : Running Controls Accepted : Stop Command : /usr/sbin/cron -n
上のように Current State が Running となっていることを確認する。あとは通常通り crontab -e や crontab FILENAME などでジョブの登録を行うだけである。
以上で完了のはずだが、どうも私の場合うまく動いていなかった。イベントログで動作を確認してみると以下のエラーが出ている。
$ cronevents
2012/02/05 19:35:01 [hoge] /usr/sbin/cron: PID xxxx: (CRON) error (can't cd to HOME)
cron は /etc/passwd で指定されている HOME をみるので、上のような「can’t cd to HOME」なエラーが出ていたのであった。私は Windows のホーム (C:/Users/hoge) を Cygwin のホームにしていたので、同じように設定している方は注意が必要である。
以下のジョブを登録してテストを行う。
* * * * * /bin/date >> /tmp/crontest.txt
tail でファイルを監視。
$ tail -f /tmp/crontest.txt Sun Feb 5 20:20:01 2012 Sun Feb 5 20:21:01 2012 Sun Feb 5 20:22:01 2012 Sun Feb 5 20:23:01 2012 ...
1分毎に date が書きこまれていれば成功。
rsync でホームフォルダのバックアップを行う場合、例えば、
00 23 * * * rsync -av --delete --exclude Dropbox /cygdrive/c/Users/your_username/ /cygdrive/z/backup
といったジョブを登録しておく (例は毎日 23 時に実行)。
デスクトップ通知システム Growl for Windows を使ってバックアップの開始や終了を視覚的に通知してもよいかもしれない。