rsyncで簡単にバックアップサーバーを構築

今週、お客さんが契約していたVPSが削除されてしまうという事件が発生。。
(お客さんが契約更新のメールに気付かずに、契約更新日を過ぎてしまったようだ。。)

DBはバックアップしておいたからよかったものの、コンテンツなどはなくなってしまった。

これを踏まえ rsyncで簡単にバックアップシステムを構築。手順は次のような感じ。

  • バックアップ用ユーザを作成(バックアップ機、サービス機)
  • sshの鍵作成&配布

バックアップ機で

$ ssh-keygen -N "" -t rsa
$ ssh-copy-id service.host:

パスフレーズなしでログインできること確認

以下のような感じ

#!/bin/sh

CONF=`dirname $0`/backup.conf
RSYNC_CMD='/usr/bin/rsync -a'

cat $CONF |
{
    while read P_SRC P_DST; do
        $RSYNC_CMD $P_SRC $P_DST
    done
}

exit 0

設定ファイル(backup.conf)は、

service.host1:/path/to/dir1 data/service.host1
service.host1:/path/to/dir2 data/service.host1
service.host2:/path/to/dir1 data/service.host2

こんな感じ。

  • cronに設定
0 2 * * * sh backup.sh

さくっと構築できる割に効果は大。新しいサーバーが追加になっても5分でバックアップ設定できる。