rsync + ssh でミラーリング

Unix系マシン2台をsshrsyncを使ってミラーリングする。

  • ミラーリング対象のマシンを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