lsyncを使ってファイルの同期を仕組む事などがあるわけですが、同期対象から除外する設定で詰まったので記録記録。
sync { sync_web, sourse="/hoge/fuga/", target="user@hostname:/piyo/fuga/", }
/etc/lsyncd.confの一部抜粋。
lsyncで同期設定する時はこんな感じでやっています。共通設定は別途書き出して呼び出す感じで。この場合はsync_web。
sync { sync_web, sourse="/hoge/fuga/", target="user@hostname:/piyo/fuga/", exclude="/foo/", }
除外設定をする時はこう。excludeで除外対象のディレクトリを指定する。
で、今回、除外対象を増やそうと思って書いたのが以下。
sync { sync_web, sourse="/hoge/fuga/", target="user@hostname:/piyo/fuga/", exclude="/foo/", exclude="/bar/", }
excludeを一行追記しているのですが、除外されない!!なんで!!
サービスは普通に起動するので構文ミスとかでもなく。
厳密には/bar/ディレクトリ以下は除外されるのですが、/foo/ディレクトリが普通に同期されてしまう感じ。
マニュアルの該当ページ を参照すると、複数対象は括って書かれている感じ。ふむふむ。
sync { sync_web, sourse="/hoge/fuga/", target="user@hostname:/piyo/fuga/", exclude={"/foo/", "/bar/"}, }
真似した書いてこんな感じにしたら、無事2つのディレクトリが除外されました。
そもそもlsync.confはスクリプト言語で書かれている事を思い返せば、これ内部的には単に変数上書きしてるようなものなんじゃないかというオチ。
そりゃ反映されんわ。