lsyncでリアルタイムファイル同期

lsyncを使うことでリアルタイムにファイルを同期することができます。
ファイルやディレクトリの同期を行うコマンドであるrsyncと組み合わせることによって使用します。

rsyncは多くの場合デフォルトでインストールされているので、まずlsyncをインストールします。
amazon linuxの場合、デフォルトのリポジトリには存在しないのでepelリポジトリを利用します。

yum install --enablerepo=epel lsyncd

/usr/share/doc/lsyncd-..*/examples/下に設定サンプルが置かれるのでこれを参考に設定ファイルを編集します。

vim /etc/lsyncd.conf
-------------------------------------------------------------
settings{
        logfile = "/var/log/lsyncd/lsyncd.log",
        statusFile = "/tmp/lsyncd.stat",
        statusInterval = 1,
}

sync{
        default.rsync,
        source="/path/to/source/",
        target="/path/to/target/"
}
-------------------------------------------------------------

source=” “で同期元のディレクトリを、target=” “で同期先のディレクトリを指定します。
設定ファイルが書けたらlsyncを起動します。

service lsyncd start
chkconfig lsyncd on

以上で同期元のディレクトリに変更があれば同期先のディレクトリに変更が同期されるようになります。
リモートで同期を行うにはsshで同期元から同期先へ公開鍵認証でログインできるように設定しておき、 lsyncの設定を以下のように行います。

vim /etc/lsyncd.conf
-------------------------------------------------------------
settings{
        logfile = "/var/log/lsyncd/lsyncd.log",
        statusFile = "/tmp/lsyncd.stat",
        statusInterval = 1,
}

sync{
        default.rsyncssh,
        source="/path/to/source/",
        host="同期先のip"
        targetdir="/path/to/target/"
}
-------------------------------------------------------------

targetがtargetdirに変わっていることに注意してください。