rsync over ssh を使ってバックアップ †DATやDLTでサーバーのバックアップを取ってきたが、せいぜい持って2年位なもので、 やりたいこと †
rsyncって? †
sshって? †
設定してみる †参考(というか、書かれていることをそのまま実行)にしたサイト 次の手順で。
1. 秘密鍵、公開鍵作成 †鍵のペアは「コピー元」マシン上で ssh-keygen コマンドにより作成する。
src# ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/root/.ssh/id_dsa): /root/.ssh/rsync Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/rsync. Your public key has been saved in /root/.ssh/rsync.pub. The key fingerprint is: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx root@src.hoge.com この例の場合、/root/.ssh に 秘密鍵「rsync」と公開鍵「rsync.pub」が生成される。 2. 公開鍵を「コピー先」マシンへインストールする。 †今回は「コピー先」マシンでもrootアカウントを使う。
3. sshd関連の設定、authorized_keys の修正 †「コピー先」マシンにて sshd の設定を変更し root アカウントでsshログインを許可する。ただし、特定のコマンドのみ実行可能なように制限する。また、「コピー先」マシンの/root/.ssh/authorized_keys にcommandオプションを追加して、実行するコマンドを設定する。
4. テスト †「コピー元」マシンから「コピー先」マシンに接続してテストしてみる。 src# ssh -i /root/.ssh/rsync root@dest.hoge.com Desktop anaconda-ks.cfg install.log install.log.syslog Connection to dest.hoge.com closed. src# 分かりにくいが、「Desktop anaconda-ks.cfg...」という行は、リモートマシンのlsの結果である。 5. 最終設定、cron登録 †リモートからコマンド実行の確認ができたら、rsyncのコマンドラインを設定する。
6. 複数のディレクトリを個別にバックアップするには? †例えば、「コピー元」の/etc/*は「コピー先」の/var/BAK/etc/*へ、/home/* は /var/BAK/home/* へバックアップしたい場合はどうするか? command="rsync --server --delete -logDtprz . /var/BAK/etc/" ssh-dss AAAA.... .... .... root@src.hoge.com command="rsync --server --delete -logDtprz . /var/BAK/home/" ssh-dss AAAA.... .... .... root@src.hoge.com そして、コピー元では単純に次のようなバッチを実行している。 #!/bin/sh ## /etc/* /usr/local/bin/rsync -az --delete -e "/usr/bin/ssh -i /root/.ssh/rsync_etc" /etc/ root@dest.hoge.com:/var/BAK/etc/ ## /home/* /usr/local/bin/rsync -az --delete -e "/usr/bin/ssh -i /root/.ssh/rsync_home" /home/ root@dest.hoge.com:/var/BAK/home/ 他にもっと単純な方法がありそうな悪寒...。
|