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)にコピーする
5)転送先サーバーで公開鍵の名前を変更します。所有者、権限も設定します。
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>
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:********
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
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>
Search
Categories
Tags
New Comments
11/26 09:22:28
kennyqi
CPUの稼働率、 DBとWebサーバを分けたら落ち着きました^^;>>
11/05 02:37:46
kennyqi
この設定をしたら、サーバのCPU稼働率が100%になる時間が出...>>
08/10 11:46:27
kennyqi
2009年8月15日よりAmazonAPIは 電子署名による取得が必須と...>>
01/09 00:43:25
kennyqi
どうもありがとうございます。 写真はわけたほうがみやすい...>>
01/09 00:36:48
Motoo
早速旅行記おめでとうございます。 ただ、画像がおおきすぎ...>>
Archives
カテゴリ別記事リスト
2月, 2010
11月, 2009
9月, 2009
7月, 2009
6月, 2009
4月, 2009
3月, 2009
2月, 2009
1月, 2009
12月, 2008
11月, 2008
10月, 2008
9月, 2008
5月, 2008
3月, 2008
2月, 2008
1月, 2008
12月, 2007
Memo
» フリーWebテンプレート
» 携帯絵文字一覧
» 無料ロゴメーカー
Categories
Tags
Nucleus | Google | 文字化け | CentOS4 | MySQL | 携帯 | CentOS5 | PHP | テンプレート | HDD | AU | Softbank | SEO | CentOS | UTF-8 | Apache | 海外アプリ | エラー | Postfix | メールサーバ
New Comments
11/26 09:22:28
kennyqi
CPUの稼働率、 DBとWebサーバを分けたら落ち着きました^^;>>
11/05 02:37:46
kennyqi
この設定をしたら、サーバのCPU稼働率が100%になる時間が出...>>
08/10 11:46:27
kennyqi
2009年8月15日よりAmazonAPIは 電子署名による取得が必須と...>>
01/09 00:43:25
kennyqi
どうもありがとうございます。 写真はわけたほうがみやすい...>>
01/09 00:36:48
Motoo
早速旅行記おめでとうございます。 ただ、画像がおおきすぎ...>>
Archives
カテゴリ別記事リスト
2月, 2010
11月, 2009
9月, 2009
7月, 2009
6月, 2009
4月, 2009
3月, 2009
2月, 2009
1月, 2009
12月, 2008
11月, 2008
10月, 2008
9月, 2008
5月, 2008
3月, 2008
2月, 2008
1月, 2008
12月, 2007
Memo
» フリーWebテンプレート
» 携帯絵文字一覧
» 無料ロゴメーカー