lsyncを使用したリアルタイムバッチ処理

2010-12-01T00:00:00+09:00 Linux

lsyncdはバックアップミラーリングだけじゃなくて、リアルタイムバッチ処理等もできるっぽい

lsyncd.conf.xmlを作成

<lsyncd version="1">
    <settings>
        <logfile filename="/var/log/lsyncd.log" />
        <pidfile filename="/var/run/lsynd.pid" />
        <binary filename="/home/kinjouj/test.sh" />

        <!-- 必ず設定する事 -->
        <callopts>
            <source />
        </callopts>
    </settings>
    <directory>
        <source path="/home/kinjouj/data" />
        <target path="/dev/null" />
    </directory>
</lsyncd>

バッチ処理スクリプト

#!/bin/sh

find "$1" -iname \*.jpg | while read file ; do
    if [ -f "$file" ] ; then
        /usr/bin/php /opt/tools/convert.php "$file";
    fi
done

バッチ処理スクリプト自体には更新されたディレクトリパスしか渡されないので、バッチ処理するファイルは個々で取得するしかない(バッチ処理後に消したり移動したりで対応すると良いのかも)

zookeeperのクラスタ構成構築 lsyncを使ったバックアップミラーリング