2012年5月14日月曜日

"lsyncd"を複数ディレクトリに適用

スズキです。

下記のように"lsyncd"を紹介してきましたが、適用対象は単一のディレクトリでした。
今回は、複数のディレクトリに対して適用する方法を紹介します。

といっても、下記のように設定ファイル(/etc/lsyncd.conf)で、
"sync"ブロックを複数記述するだけで実現します。
settings = {
    logfile    = "/var/log/lsyncd.log",
    statusFile = "/var/log/lsyncd.status",
    nodaemon   = true,
}

s3sync = {
    maxProcesses = 1,
    onStartup = "s3cmd -c /root/.s3cfg -P -r --delete-removed sync ^source ^target/",
    onCreate  = "s3cmd -c /root/.s3cfg -P put ^source^pathname   ^target^pathname",
    onModify  = "s3cmd -c /root/.s3cfg -P put ^source^pathname   ^target^pathname",
    onDelete  = "s3cmd -c /root/.s3cfg    del                    ^target^pathname",
    onMove    = "s3cmd -c /root/.s3cfg    mv  ^target^o.pathname ^target^d.pathname",
}

sync{
    s3sync,
    source = "/tmp/src1",
    target = "s3://www.suz-lab.com/tmp1",
}

sync{
    s3sync,
    source = "/tmp/src2",
    target = "s3://www.suz-lab.com/tmp2",
}

そろそろ、"Write Proxyパターン"としてまとめるか...
--------
http://www.suz-lab.com

1 コメント:

AKI さんのコメント...

いつもec2の運営で参考にさせて頂いております。私の設定ミスかと思いますが、s3cmd, s3syncをインストール後 lsyncd.comfを修正しlsyncdを再起動させると lsyncd unexpected symbol near '?' といエラーを吐きます。「s3sync = { 」の辺りで発生しており対処方法がわかりません。もし何か助言いただけるものがございましたらよろしくお願いします。