rsync
$CREATE /10/26/2002 by Mie Suemitsu
$UPDATE /02/15/2004 by Takuya Ota
$UPDATE /05/13/2004 by Mie Suemitsu
$UPDATE /06/08/2004 by Mie Suemitsu
$UPDATE /05/05/2015 by Mie Suemitsu
rsync と ssh と cron を使ってバックアップサーバを作りましたが、昔と少々異なる部分もあり、テクニカルメモを書き直しました。10年以上も経ってる。。。。
CentOS をインストールすると rsync はコマンドとして標準で搭載されています。
# which rsync
/usr/bin/rsync
従って以前のようにtar.gzをわざわざダウンロードして rsync をインストールする必要はありません。
バックアップサーバに cron で rsync を使ってファイルの同期をとる場合は ssh でパスワードを要求されないようにする必要があります。
RSA鍵ペアを生成します。
バックアップサーバで次の操作をします。操作は root で行います。
.ssh に id_rsa と id_rsa_pub が生成される
id_rsa が秘密鍵、id_rsa_pub が公開鍵
.ssh のパーミッションを変更する
id_rsa_pub をリモートサーバの id_rsa_pub にコピー
リモートサーバで id_rsa_pub を authorized_keys にコピー
元々 authorized_keys がある場合は、後の行に追記する
authorized_keys のパーミッションを変更
# chmod 600 authorized_keys
リモートサーバの /etc/ssh/sshd_config を編集
# cd /etc/ssh
# vi sshd_config
PermitRootLogin yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
バックアップサーバからリモートサーバにパスワードなしで ssh ログインできるか確認する
# ssh servername.palmyra.jp
バックアップのrsync コマンドを実行する
# rsync -avz -e ssh servername.palmyra.ne.jp:/home/directory/ /home/directory
cron で動かす。例えば午前2:00に動かす場合
# crontab -e
* 2 * * * rsync -avz -e ssh servername.palmyra.ne.jp:/home/directory/ /home/directory
* * * * * は左から 分(0-59) 時(0-23) 日(1-31) 月(1-12) 曜日(0-7 0と7は日曜日)
下記のページは2004年6月8日以前のもので、古いので書き直しました。これより上の欄を参考にしてください。
rsync
1.rsync をダウンロード
# cd /usr/local/src
ftp://ftp.infoscience.co.jp/pub/rsync/ より rsync-2.5.5.tar.gz を get
2.展開
# tar zxvf rsync-2.5.5.tar.gz
# ln -s rsync-2.5.5 rsync
3.コンパイル
# cd rsync
# ./configure
# make
# make install
4.使用例
# rsync /dir1/ /dir2
dir1ディレクトリィの下にあるファイルを dir2ディレクトリィの下にコピー
# rsync /dir1 /dir2
dir1ディレクトリの階層から dir2ディレクトリにコピー
つまりコピーした先は /dir2/dir1 となる
/dir/ と /dir では動作が異なる
# rsync -avz -e ssh remotehost:/dir1/ /dir2
リモートホストの dir1 ディレクトリィのファイルをローカルホストの dir2 ディレクトリにコピー
-e ssh は リモートホストに ssh で接続する
-v option はレポートを表示
これを cron で動作させることによりミラーリングが可能 cron で動作させる場合 -v option は不要
cron で動作させる場合 ssh 接続でパスワードを要求されないようにするには ssh.html を参照
option に付いては下記 URL を参照
http://www.infoscience.co.jp/technical/rsync/rsync.html#option
下記のように大田君が記述しているが、上記の方法で十分動作する事を確認した 05/13/2004
バージョンが同じ場合は上記の方法で動作するが、バージョンが異なる場合には上記の方法ではやはり ssh 接続でパスワードを要求される
大田君の説明と同様であるがこちらのページにも記述した 06/08/2004
追記大田
上記の方法で解決できなかったので、さらに下記の方法を試すと実行する事が出来た
鍵の作成
バックアップしたいマシンで
#ssh-keygen -t rsa
でパスフレーズ無しの鍵を作成
この時$HOME/.sshに出来るid_rsa.pubをauthorized_keysという名前に
リネームするか、追加してパーミッションを600にする。
鍵のコピー
更にid_rsaというファイルを
バックアップするマシン
の$HOME/.ssh以下にコピーする。
鍵の登録
そしてバックアップするマシンで
#eval `ssh-agent`
とうちssh-agentを起動する
#ssh-add $HOME/.ssh/id_rsa
でssh-agentに鍵を登録する
接続
以上の設定が出来ればrsyncの実行時に
パスワードを聞かれなくなる。
cronで動かす際の注意
cronを使いバッチファイルでrsyncコマンドを動かす際には
バッチファイル内で
ssh-agentの起動
鍵の登録
rsyncコマンド
ssh-agentの終了
といった手順でバッチファイルを記述するようにしないと
認証されないので注意する事。