KennyQi PHP Blog

Linux、PHP、Perl、Ajax、MySQLでのWeb開発やWordPressの設定メモと息抜きブログ

  • 10月182008

    サーバ間でのファイル同期をrsyncとsshで自動化

    Published on 2008/10/18 09:10 2,305
    カテゴリ: Linux; タグ: ,

    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$ 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>
    
    このページはどうでしたか?
    よくないよい
    よかった:+2 人(2 人中)
    No Comments
  • 初めて当ブログに訪れた方や何度か当ブログにお越し頂いている皆様。
    もしブログの内容を気に入って頂けましたらRSSリーダーの登録よろしくお願いします。

コメント


ブログランキング

にほんブログ村 IT技術ブログへ 人気ブログランキングへ

最新記事

カテゴリー

人気記事