-
10月182008
サーバ間でのファイル同期をrsyncとsshで自動化
No CommentsCentOSにて、SSHとrsyncを使ってファイル同期する方法です。
WWWサーバを複数台用意して負荷分散する場合に、
両方にファイルアップするのが面倒になったんで、調べました。
★ファイル同期のイメージ
サーバA(仮にIP=192.168.0.5 同期元=こちらのファイルを同期します)
サーバB(仮にIP=192.168.0.6 同期先=こちらにファイルをコピー&上書きします)A$
サーバAにtelnetもしくはssh接続で作業していることを意味します。
B$
サーバBにtelnetもしくはssh接続で作業していることを意味します。
$は一般ユーザ
#はroot
をあらわします。
ここで同期するのはディレクトリとそれ以下のファイルです。
rsync のオプションでいろいろと設定できるようです。
今回は、
■同じファイルやディレクトリがある場合は、新しいファイルだけを上書きします。
■元のパーミッションやグループ、タイムスタンプなどを保持したまま同期します。
■コピーしたファイルのログをとります。
1)サーバBにユーザをつくる。
サーバA上の同期するファイルの所有者と同じにユーザ名にしておきます。B# useradd test B# passwd test
以下、パスワードを設定する
2)サーバBのホームディレクトリにssh公開鍵の置き場をつくります。B# su - test B$ mkdir /home/test/.ssh
3)サーバAにユーザtestで接続して、公開鍵を作ります。
パスフレーズを何も入力しないのがポイントです。A$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/test/.ssh/id_rsa): ←何も入力しないでEnter Created directory '/home/test/.ssh'. Enter passphrase (empty for no passphrase): ←何も入力しないでEnter Enter same passphrase again: ←何も入力しないでEnter Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx::xx:xx:xx test@192.168.0.5
4)3で作成した公開鍵をコピー先(サーバB)にコピーする
A$ cd /home/test/.ssh A$ scp id_rsa.pub test@192.168.0.6:~/.ssh/ test@192.168.0.5's password:********
5)転送先サーバーで公開鍵の名前を変更します。所有者、権限も設定します。
B$ mv id_rsa.pub authorized_keys B$ chown test:test /home/test/.ssh/authorized_keys B$ chmod 600 authorized_keys
6)パスワード入力無しでsshログインできるか確認します。
AからBに接続しにいきます。A$ ssh test@192.168.0.6
7)接続できたらcronを設定します。ここでは5分おきにバックアップしています。
A$ crontab -e
*/5 * * * * rsync -auz -e ssh /home/test/data/ test@192.168.0.6:/home/test/data/ > /home/test/logs/rsync.log 2>





