2009-09-16
lsyncd(+rsync)で複数サーバ間のファイルを自動で同期する
- http://fedorasrv.com/lsyncd.shtml
- http://www.naney.org/diki/d/2009-02-13-lsyncd.html
- http://d.hatena.ne.jp/wadap/20090913/1252839223
linuxのinotify機能を使ってファイルアクセスを監視して、ファイルの更新を検知するとrsyncかけてくれるらしい。めちゃ便利じゃね?
inotify
- http://www.linux.or.jp/JM/html/LDP_man-pages/man7/inotify.7.html
- http://www.ibm.com/developerworks/jp/linux/library/l-inotify/index.html
lsyncd
参考URLにあるように、デフォルトではrsync --deleteオプション付きなので注意。また、permissionを変更しただけでは反映されない。inotify自体はpermissionの変更も検知するみたいだけど。lsyncdの仕様?
lsyncd.conf.xmlでrsyncに"-p"オプションを設定しておけば、他のファイルが更新されたタイミングで、permission情報も更新されるとさ。
複数のサーバでlsyncdを起動して設定しとけば、相互に同期をかけることも可能ぽい。もちろんその場合はデフォルトのrsync --deleteオプションは外す必要あるけど。でも、同時に同ファイル名に書き込むと整合性とれなくなりそ?他にも、ファイル数が多かったり、書き込み頻度が多い場合も危険な香りがするから実運用では、相互に同期取るのは危険かなぁ。
lsyncdの設定
lsyncdの引数にsrc, dstを指定しないでlsyncdを起動した場合、/etc/lsyncd.conf.xmlが読まれる。他のファイルを読む場合は--confで。
<lsyncd version="1.25"> <settings> <logfile filename="/var/log/lsyncd"/> <binary filename="/usr/bin/rsync"/> <callopts> <option text="-lt%r"/> <option text="-p"/> <exclude-file/> <source/> <destination/> </callopts> </settings> <directory> <source path="/foo"/> <target path="host2::foo"/> </directory> <directory> <source path="/bar"/> <target path="/tmp/bar"/> </directory> </lsyncd>
host2のrsyncd設定
- /etc/rsyncd.conf
host1のlsyncd.conf.xmlに指定しているfooにあわせてをmodule_nameをfooに設定。実際に使う場合はたぶんアクセス制御も書いたほうがいい。
uid = root gid = root [foo] path=/foo read only = no
lsyncd 起動
# lsyncd --conf /etc/lsyncd.conf.xml
Unix的なアレの中の人の設定
lsyncd.conf.xmlを使わずに、/etc/lsyncd.confというファイルで設定されてて、書式がすげー簡素で便利そう。と思って記事をよく読むと、起動スクリプト内でawkを使って/etc/lsyncd.confからsrc, dst, host情報を取ってきて、lsyncdの引数に渡して直接起動している模様。
apacheのRedirectとRedirectMatch
RedirectはURLを引き継ぐけどRedirectMatchはでキャプチャした変数を使わない場合は引き継がない。というのをたまに忘れる。
Redirect /foo http://exmaple.com/foo RedirectMatch /bar http://example.com/bar RedirectMatch /baz/(*) http://example.com/baz/($1)
http://localhost/foo/hoge => http://exmaple.com/foo/hoge http://localhost/bar/hoge => http://exmaple.com/bar http://localhost/baz/hoge => http://exmaple.com/baz/hoge


