Windows 7 で cron + rsync 自動バックアップ

Windows にはたくさんの便利なバックアップソフトがあるが、Cygwin を使用しているならば、Linux と同じように cronrsync を導入して自動でバックアップを実行させることができる。Cygwin で cron を使う方法はたくさん Web 上に説明されているが (let me google)、ここにもメモしておく。

まずは croncygrunsrv (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 -ecrontab 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 を使ってバックアップの開始や終了を視覚的に通知してもよいかもしれない。

https://skalldan.files.wordpress.com/2012/02/wpid-growl.png

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s