CentOS6.5でlsyncdを動かす

CentOS6.5(x86_64)でlsyncdを動かします。起動スクリプトの修正やバックアップ側でrsyncをデーモンとして動かす必要があるなど設定が難しかったので覚書として設定方法を記載します。

vagrantで以下2つのVMが起動している状態を前提とします。

| ホスト | IPアドレス |
|:-----:|:---------:|
| マスター | 192.168.33.81 |
| バックアップ | 192.168.33.82|

# インストール
```
[マスター側]
# RPMForgeリポジトリが無い場合。CentOS6 x86_64用
$ sudo yum install http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

# lsyncd, rsyncインストール
$ sudo yum install lsyncd rsync

[バックアップ側]
# rsyncインストール
$ sudo yum install rsync
```

# lsyncd設定
```
[マスター側]
# 設定ファイル置き場を作成
$ sudo mkdir /etc/lsyncd

# 同期対象のディレクトリ作成
$ mkdir /home/vagrant/lsyncd_test

# 設定ファイルを作成
$ sudo vi /etc/lsyncd/lsyncd.conf
======================================
----
-- User configuration file for lsyncd.
--
-- Simple example for default rsync.
--
settings {
        logfile    = "/var/log/lsyncd.log",
        statusFile = "/tmp/lsyncd.stat",
        statusInterval = 1,
        maxProcesses = 2,
        nodaemon     = false,
        insist       = 1,
}

sync{
        default.rsync,
        source="/home/vagrant/lsyncd_test",
        target="192.168.33.82::test",
        rsync = {
          _extra = {  "-a" },
        }
}
======================================

# lsyncd起動時のオプション設定ファイル修正
$ sudo vi /etc/sysconfig/lsyncd
======================================
# コメントアウトを外してconfファイルのPATHを/etc/lsyncd/lsyncd.confに修正
* before
#OPTIONS="-pidfile /var/run/lsyncd.pid /etc/lsyncd.conf"

* after
OPTIONS="-pidfile /var/run/lsyncd.pid /etc/lsyncd/lsyncd.conf"
======================================

# スクリプトの不具合修正
$ sudo vi /etc/init.d/lsyncd
======================================
# 23行目付近sourceを追加
* before
/etc/sysconfig/lsyncd

* after
source /etc/sysconfig/lsyncd

# 32行目付近修正
* before
[ -f /etc/lsyncd.conf ] || exit 6

* after
[ -f /etc/lsyncd/lsyncd.conf ] || exit 6
======================================

[バックアップ側]
# 同期用ディレクトリ作成
$ mkdir /home/vagrant/lsyncd_test

# rsyncd.confファイルの作成
$ sudo vi /etc/rsyncd.conf
======================================
uid = root
gid = root
read only = no
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid

[test]
path = /home/vagrant/lsyncd_test
hosts allow = localhost 192.168.33.0/24
hosts deny = *
read only = false
======================================

# デーモンとして起動
sudo /usr/bin/rsync --daemon --config=/etc/rsyncd.conf
```

# lsyncd起動
```
[マスター側]
# lsyncd起動
$ sudo service lsyncd start

# テストファイル作成
$ touch /home/vagrant/lsyncd_test/testfile

# lsyncdのログを確認
$ tail -f /var/log/lsyncd.log
======================================
# しばらくすると以下の様なログが表示される

Sat Aug  9 03:47:06 2014 Normal: Calling rsync with filter-list of new/modified files/dirs
/testfile
/
Sat Aug  9 03:47:06 2014 Normal: Finished a list after exitcode: 0
======================================


[バックアップ側]
# ファイルが作成されていることを確認
$ ls /home/vagrant/lsyncd_test
```


# リンク
* [lsyncd.confの設定をLuaでテクニカルに記述](http://qiita.com/ftakao2007/items/a282255d6103d7ade3c3)
* [checkinstallをインストールする。](http://hirotomium.com/memories/2008/10/checkinstall.php)
  * RPMForgeリポジトリ追加方法
* [lsyncとrsync](http://greenleaf.sakuraweb.com/index.php?lsync%E3%81%A8rsync)
  * インストール方法 
* [rsyncd.conf](http://www.infoscience.co.jp/technical/rsync/rsyncd_conf.html)
  * rsyncd.confについて
* [Vagrantfile](https://github.com/ftakao2007/Automation/blob/master/work/lsync_rsync/CentOS6.5/Vagrantfile)
* [lsyncd を使ってWinSCP的なリアルタイム同期を実現する．使い方](http://takuya-1st.hatenablog.jp/entry/20110527/1306521386)