rsync+ssh+cronで自動バックアップ
どこでも結構書いてあるネタだけどとりあえず。
前提条件
- バックアップ環境はClosedの為、外部からのアクセスを考えてません。
- セキュリティもあまあま(sshはつかったほうが自動化が簡単そうだったから)
LOCAL側での作業
- 鍵置き場作成
- パス無しのSSH鍵を作成
# (sudo)ssh-keygen -t dsa -N "" -f /root/.ssh/rsync
コマンド実行が終わると/root/.ssh/rsyncとrsync.pubが作成される
SSH v2なのでdsa必須・-N ""でパス無しに
- REMOTE側へ共有鍵をコピー
# scp /root/.ssh/rsync.pub root@REMOTE:/root/.ssh/authorized_keys
- 動作確認(rsync実行)
# rsync -vvrlpogt -e "ssh -i /root/.ssh/rsync.new" /LocalBackupdir/ REMOTE:/RemoteBackupdir/
- cronへの入力
# crontab -e
0 1 * * * rsync -rlpogt -e "ssh -i /root/.ssh/rsync" /LocalBackupDir/ REMOTE:/RemoteBackupDir/
この場合は毎日AM1:00にrsyncを実行し、LOCALからREMOTEへコピーを実行。詳細はcrontabのマニュアルでもみてください。
REMOTE側での作業
- 鍵置き場作成
初期設定でsshdさえ動作していれば特にやることは無し。
もしもアクセスできないようであれば
PermitRootLogin yes
に変更して、/etc/init.d/sshd restart
メモ:セキュリティ向上させたい場合(未試行)
コマンドを制限する
- REMOTE側のsshd_config内のPermitRootLoginを以下のように変更
PermitRootLogin forced-commands-only
- その後、authorized_keys内の先頭に以下を記述
command="ssh -i /root/.ssh/rsync REMOTE rsync --server -vvlogtpr . /Backupdir/"
上記コマンドはrsyncを-vvオプション付きで実行したときに最初にでてくる内容をコピペするしたもの。
*1:コピペする場合は改行に気をつけてください