トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

rsync over SSH+cronで定期リモートバックアップ

rsync over SSH+cronで定期リモートバックアップ

 SSHを通したrsyncによって、リモートバックアップする設定です。cronで定時起動することで定期リモートバックアップになります。ほぼリアルタイムでミラーリングしたければ、DRBDやlsyncd+rsyncdによる方法をご検討下さい。今回はユーザのホームディレクトリ以下の1ディレクトリが対象なので、rootログインは必要ない場合を想定しています。rootログインが必要なディレクトリをバックアップする場合は他を当たって下さい。

バックアップ先での設定

 Debianの場合です。

sudo apt-get install openssh-server
sudo nano -w /etc/ssh/sshd_config
# Portなどを適宜設定
# authorized_keysを読みに行く設定を有効に
ssh-keygen -N "" -f ~/.ssh/rsync
cat ~/.ssh/rsync.pub >> ~/.ssh/authorized_keys

バックアップ先で行う設定はこれだけ。あとはSSHサーバを再起動すればよい。

バックアップ元での設定

 こちらもDebianの場合。秘密鍵をバックアップ元から持ってくること。実際には鍵ペア生成はこちらでやって、秘密鍵はこちらの中だけにあるようにした方が良い。今回は私の移動の都合でバックアップ先で生成しています。

sudo apt-get install openssh-client rsync
cp /mnt/xx/rsync ~/.ssh/rsync
rsync -rlz -e "ssh -i /home/localuser/.ssh/rsync" \
/home/localuser/backup/ \
remoteuser@ipaddress:/home/remoteuser/backup/

これでバックアップは実行されますが、定時起動のためにcronに登録します。

echo 'rsync -rlz -e "ssh -i /home/localuser/.ssh/rsync" \
/home/localuser/backup/ \
remoteuser@ipaddress:/home/remoteuser/backup/' > rsyncbackup.sh
echo '15,45 * * * * /bin/sh /home/localuser/rsyncbackup.sh' >> ~/crontab
crontab crontab

何故かcrontabに直接コマンドを書くと実行できない環境があったので、シェルスクリプト経由でコマンドを実行しています。この設定では毎時15,45分にバックアップが実行されます。ファイルの削除は反映されません。

最終更新時間:2011年10月07日 11時53分35秒