KennyQiのPHPメモと息抜きブログ

KennyQi(ケニーチー)のブログへようこそ
Web制作 PHP開発のメモと息抜きブログ
ウェブ開発・デザイン・Nucleusのメモや旅日記などを綴っています
サーバ間でのファイル同期をrsyncとsshで自動化
2008年10月18日 | Linux | Posted by: kennyqi | 1646 PV
CentOSにて、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$ mkfir /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>


Comments
No comments yet

Add Comment