Unix系マシン2台をsshとrsyncを使ってミラーリングする。
- ミラーリング対象のマシンをtarget、ファイルを保存するマシンをmirrorとする。
- targetとmirrorには、user1というユーザーが存在するとする。
準備:鍵ログインの準備
mirror側でパスフレーズなしの鍵を作成する。既存の公開鍵ペアを上書きしないようにid_rsa_for_backupという名前にしておく。
% ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/user1/.ssh/id_rsa): /home/user1/.ssh/id_rsa_for_backup と入力し「Enter」を押す Enter passphrase (empty for no passphrase): 「Enter」を押す Enter same passphrase again: 「Enter」を押す Your identification has been saved in /home/user1/.ssh/id_rsa_for_backup. Your public key has been saved in /home/user1/.ssh/id_rsa_for_backup.pub. The key fingerprint is:
~/.sshにid_rsa_for_backupとid_rsa_for_backup.pubができるのでこれを使って、targetにログインできるようにする。適当な手段を使って、id_rsa_for_backup.pub をtargetへ移動させる。scpを使う場合は以下のとおり。
% scp .ssh/id_rsa_for_backup.pub user1@target.hogehoge.ne.jp:
targetにログインし、公開鍵をauthorized_keysに付け加える。
% cat id_rsa_for_backup.pub .ssh/authorized_keys % rm id_rsa_for_backup.pub
mirrorからパスフレーズなしでログインできることを確かめる。
% ssh -i /home/user1/.ssh/id_rsa_for_backup user1@target.hogehoge.ne.jp
rsyncをcronで動かす
targetの/home/user1をmirrorの/home/user1/backupにミラーリングする。まずは、コマンドでちゃんとミラーリングできるかをチェック。
% mkdir ~/backup % rsync -avz --delete -e "ssh -i /home/user1/.ssh/id_rsa_for_backup" target.hogehoge.ne.jp:/home/user1 /home/user1/backup
うまくミラーリングできたら、上記をシェルスクリプトにしておく。コマンドのパスなどは適宜whichコマンドの結果を使って書き換えること。
#!/usr/bin/sh /usr/local/bin/rsync -avz --delete -e "/usr/local/ssh -i /home/user1/.ssh/id_rsa_for_backup" \\ target.hogehoge.ne.jp:/home/user1 /home/user1/backup
上記スクリプト名がbackup.shであるならば、許可権限を与える。そして、cronで実行させる。
% chmod 755 backup.sh % setenv EDITOR vi (crontabで編集する際のエディターをviにする) % crontab -e user1
たとえば、毎日朝7時に実行する場合には以下のようにする。
0 7 * * * /home/user1/backup.sh > /dev/null 2>&1