rsyncを使ってサーバ間バックアップ
- cronを使ってrsync, sshで10分毎にバックアップ
- それぞれのサーバにアカウントrsyncuserを作り、公開鍵認証を利用
- コピー元 /var/www 配下すべて
- コピー先サーバの /home/rsyncuser/<コピー元サーバのドメイン名>/var/www/ 配下に保存
- サーバのsshのポートは10022
- rsyncuserはコピー元サーバからのみログイン可能にする(鍵漏れ対策)
それぞれのサーバにrsyncuserを作りサーバ間rsync
コピー元サーバ
コピー元サーバにログインする必要はないので、ログインできないユーザとして追加
sudo useradd -s /bin/false rsyncuser
空の鍵作成
$ sudo -u rsyncuser ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/rsyncuser/.ssh/id_rsa): (エンター) Created directory '/home/rsyncuser/.ssh'. (エンター) Enter passphrase (empty for no passphrase): (エンター) ... sudo -u rsyncuser mv /home/rsyncuser/.ssh/id_rsa.pub /home/rsyncuser/.ssh/authorized_keys
公開鍵をコピー先サーバへ転送
sudo cp /home/rsyncuser/.ssh/authorized_keys ~/authorized_keys-rsyncuser scp -P10022 ~/authorized_keys-rsyncuser <転送先サーバ>: rm -f ~/authorized_keys-rsyncuser
コピー先サーバ
コピー元サーバで作成した公開鍵を、rsyncuserの.sshディレクトリに入れる
sudo useradd rsyncuser sudo -u rsyncuser mkdir -m 700 /home/rsyncuser/.ssh sudo mv ~/authorized_keys-rsyncuser /home/rsyncuser/.ssh/authorized_keys sudo chown rsyncuser:rsyncuser /home/rsyncuser/.ssh/authorized_keys
バックアップを保存するためのディレクトリを作成
sudo -u rsyncuser mkdir -p /home/rsyncuser/<コピー元サーバのドメイン>/var/www
コピー元サーバ
rsyncのテスト /var/www 以下をバックアップ
sudo -u rsyncuser rsync -av -e 'ssh -p10022 -i /home/rsyncuser/.ssh/id_rsa' /var/www/ rsyncuser@<コピー先サーバ>:`hostname`/var/www/ Are you sure you want to continue connecting (yes/no)? yes # yesと入力しエンター
10分毎にrsyncするようにcronにセット
$ sudo -u rsyncuser crontab -e */10 * * * * rsync -av -e 'ssh -p10022 -i /home/rsyncuser/.ssh/id_rsa' /var/www/ rsyncuser@<コピー先サーバ>:`hostname`/var/www/
ログイン元を制限
コピー先サーバ
rsyncuserがログインはコピー元サーバに限定
$ sudo vim /etc/ssh/sshd_config UsePAM yes $ sudo vim /etc/security/access.conf - : rsyncuser : ALL EXCEPT <コピー元サーバIP> $ sudo vim /etc/pam.d/sshd #%PAM-1.0 auth required pam_sepermit.so auth include password-auth account required pam_nologin.so account required pam_access.so # ここの行を追加 account include password-auth password include password-auth $ sudo service sshd reload