- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
*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
nano -w ~/.ssh/authorized_keys
# 作成した鍵でのログインを制限する
# 必要なら実行コマンドの制限やホスト制限ができます
# command="command",
# from="ipaddress",
# no-port-forwarding,
# no-X11-forwarding,
# no-agent-forwarding,
# no-pty ssh-rsa...
# とかする
# ただしssh-rsaのところ以外はスペースや改行は入れないこと
バックアップ先で行う設定はこれだけ。あとは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分にバックアップが実行されます。ファイルの削除は反映されません。