BLOGTIMES
::
Home > lsyncd ディレクトリのリアルタイムミラーリング
2009/03/02
[ by hsur at 16:03]

lsyncd ディレクトリのリアルタイムミラーリング

  

FTPでポツポツと転送されてくるファイルをWindowsのファイルサーバーになるべくリアルタイムにコピーする必要があったのですが、ファイルシステムのリアルタイムミラーリングというとHA用の大艦巨砲なものが多いので、もうちょっとお手軽な感じのソフトはないかなと思って探してみたところ、lsyncdというソフトを見つけました。

lsyncd - Google Code

Lsyncd uses rsync to synchronize local directories with a remote machine running rsyncd. Lsyncd watches multiple directories trees through inotify. The first step after adding the watches is to rsync all directories with the remote host, and then sync single file by collecting the inotify events. So lsyncd is a light-weight live mirror solution that should be easy to install and use while blending well with your system. See lsyncd --help for detailed command line options.

lsyncdはinotifyを使ってディレクトリを監視し、ディレクトリに変化が合った場合にはrsyncを使ってディレクトリを同期するという動作を行うようです。ファイル転送があると、いちいちrsyncするのでちょっと重いかもしれませんが、ファイルの転送はそんなに頻度が高いわけでもないし、そこまでの信頼性も必要ないので今回はこれで行くことにしました。


インストール自体は下記のコマンドで特に問題なくインストールできました。

./configure
make
make install

アーカイブにはinitスクリプトが入っていないのでそのあたりは「リアルタイムミラーリングツール導入(lsyncd rsyncd) - Fedoraで自宅サーバー構築」を参考にしました。設定についてはアーカイブに入っているlsyncd.conf.xmlを/etc/lsyncd.conf.xmlにコピーしたのでその部分については書き換えています。

後は/etc/init.d/lsyncd startでデーモンを起動して、ファイルを送信元に放り込んでみると、リアルタイムに送信先にファイルが同期されます。

設定のサンプルなど

/etc/lsyncd.conf.xml

<lsyncd version="1">
<settings>
        <callopts>
                <option text="-lt%r" />
                <option text="--delete" />
                <exclude-file />
                <source />
                <destination />
        </callopts>
</settings>
<directory>
        <source path="/path/to/src/" />
        <target path="/path/to/dest" />
</directory>
</lsyncd>

/etc/init.d/lsyncd

#!/bin/bash
#
# lsyncd
#
# chkconfig: - 99 20
# description: lsyncd auto start script

start() {
        /usr/local/bin/lsyncd
}

stop() {
    /bin/kill -9 `/sbin/pidof lsyncd`
    until [ -z $(/sbin/pidof lsyncd) ]; do :; done
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    status)
        pid=`pidof lsyncd`
        if [ $? -eq 0 ]; then
            echo "lsyncd (pid $pid) is running..."
        else
            echo "lsyncd is not running"
        fi
        ;;
    *)
        echo "Usage: lsyncd {start|stop|restart|status}"
        exit 1
esac

exit $?
このエントリは役に立ちましたか?
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→http://blog.cles.jp/item/2944
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form

コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。

OpenID を使ってログインすることができます。

Identity URL: Yahoo! JAPAN IDでログイン

Web Services by Yahoo! JAPANPowered by NP_SpamBayesJP
★下記に2つの英単語をスペースで区切って入力してください
::
Home > lsyncd ディレクトリのリアルタイムミラーリング