2010年12月31日金曜日

lsyncd + ssh

業務でlsyncdで同期するWeb/ファイルサーバを作成したのでメモ。

OSはCentOS 5.5を想定。kernelは2.6.13以降必須。kernel上げずとも
inotifyを個別に入れれば大丈夫っていうブログもあるけど私の環境では動かず。
素直にkernelあげた方が良いと思う。それはそれで他の機能に多大な影響あるけど。
lsyncdは1.39で動作確認。
sshは相手先サーバでrsyncdデーモン立ち上げるのが面倒だったため。。

1. 正系ユーザの秘密鍵作成&副系へ公開鍵送付


# ssh-keygen -t rsa
: 途中の質問は全て[Enter]。(ssh公開鍵登録場所はデフォルト、パスはなし)
# scp .ssh/id_rsa.pub [ユーザ名]@副系:/home/[ユーザ名]
# ssh [ユーザ名]@副系
$ mkdir .ssh
$ cat id_rsa.pub >> .ssh/authorized_keys
$ chmod go-w $HOME $HOME/.ssh
$ chmod 600 $HOME/.ssh/authorized_keys
$ exit
# ssh [ユーザ名]@副系
: パスワードなしでログインできることを確認
# rm id_rsa.pub

2. lsyncdインストール

# cd /usr/local/src/
# tar xvzf lsyncd-1.39.tar.gz.gz
# cd lsyncd-1.39
# ./configure
# echo $?
⇒0であること
# make
# echo $?
⇒0であること
# make install
# echo $?
⇒0であること

3. lsyncd設定ファイル配置

# vi /etc/lsyncd.conf.xml
~~~~~~~~~~~~
<lsyncd version="1">
  <settings>
    <logfile filename="/var/log/lsyncd"/>
    <binary filename="/usr/bin/rsync"/>
    <pidfile filename="/var/run/lsyncd.pid"/>
    <callopts>
      <option text="-rvz"/>
      <option text="--rsh=ssh"/>
      <exclude-file/>
      <source/>
      <destination/>
    </callopts>
  </settings>
  <directory>
    <source path="[同期元フォルダ]"/>
    <target path="[ユーザ名]@[サーバ名]:[同期先フォルダ]"/>
  </directory>
</lsyncd>
~~~~~~~~~~~~

※上の<>が全角になっているので注意。。

4. lsyncd起動

# lsyncd

残:

起動スクリプト作ったり、ログローテートしたり、監視したり、動作確認したり。