- 更新が検知されなず、同期されない
- 更新が検知されてもtail -fできない
まずはインストール方法
yumで入ってくれるバージョンは古いので要注意
lsyncd.x86_64 2.0.4-1.el5.1 epelだと、Apacheのログファイルのようにファイルをオープンしっぱなしのファイルについては更新を検知できないらしい。
githubによると、inotifyModeのところに
(Lsyncd >= 2.0.5) Specifies on inotify systems what kind of changes to listen to. Can be "Modify", "CloseWrite" (default) or "CloseWrite or Modify".
と書かれている。
なので、こっちから2.0.7のrpmを入手
32bit版
http://www6.atomicorp.com/channels/atomic/centos/5/i386/RPMS/lsyncd-2.0.7-2.el5.art.i386.rpm
http://www6.atomicorp.com/channels/atomic/centos/6/i386/RPMS/lsyncd-2.0.7-2.el6.art.i686.rpm
64bit版
http://www6.atomicorp.com/channels/atomic/centos/5/x86_64/RPMS/lsyncd-2.0.7-2.el5.art.x86_64.rpm
http://www6.atomicorp.com/channels/atomic/centos/6/x86_64/RPMS/lsyncd-2.0.7-2.el6.art.x86_64.rpm
そして、サービス起動用のファイル/etc/init.d/lsyncdを作成してパーミッションを755に設定
#!/bin/bash
# chkconfig: - 85 15
# description: lsyncd
RETVAL=0
prog="/usr/bin/lsyncd"
conf="/etc/lsyncd.conf"
pidfile="/var/run/lsyncd.pid"
. /etc/rc.d/init.d/functions
start() {
echo -n "Starting $prog:"
daemon $prog $conf
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch $pidfile
return $RETVAL
}
stop() {
echo -n "Stopping $prog:"
killproc $prog
RETVAL=$?
echo
rm -f $pidfile
return $RETVAL
}
case $1 in
start ) start ;;
stop ) stop ;;
restart) stop && start ;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
次に設定ファイルを作成
settings = {
logfile = "/var/log/lsyncd.log",
statusFile = "/var/log/lsyncd.stat",
statusInterval = 1,
inotifyMode = "CloseWrite or Modify",
}
sync{
default.rsync,
source = "/var/log/httpd/",
target = "/mnt/log/httpd/",
rsyncOpts = {"-rlptgoD","--append","--max-delete=-1"},
maxDelays = 1
}
sync{
default.rsync,
source = "/var/log/mail/",
target = "/mnt/log/mail/",
rsyncOpts = {"-rlptgoD","--append","--max-delete=-1"},
maxDelays = 1
}
ポイントとしては、inotifyModeに"CloseWrite or Modify"を指定することで、ファイルの更新かファイルハンドラがクローズされたかでイベントを検知するよう設定rsyncOptsで--appendを指定することで、ログファイルのように追記更新型のファイル用に、同期先のファイルの置き換えではなく、追記で対応するように設定
--max-delete=-1を指定することで、同期元からファイルが削除されても同期先のファイルは消されないように設定 っという感じにしてみましたヾ(*・ω・)シ
あとは、サービスを起動するだけ
service lsyncd start
0 件のコメント:
コメントを投稿