lsyncd設定

lsyncd
=> kernel 2.6のinotify(inodeでのファイル検知機能)を使ったrsync
リアルタイムな同期が可能
いちいちrsyncをするのでmailスプールやDBストレージには不向き
今回はサイトにPloneのFileSystemStorageでパラッパラッとアップされるワードやPDFファイルを他のZopeクラスタに複製する

wget http://www.pri.univie.ac.at/lsyncd/lsyncd-1.0.tar.gz
tar xvf lsyncd-1.0.tar.gz

via sshのパッチ
http://d.hatena.ne.jp/dongore/20080201

./configure
make
sudo make install

ユーザlsyncd作成
パスフレーズなしのssh鍵作成
複製領域 /var/zope/var/fss
にACL

cd /var/zope/var
sudo setfacl -m d:u::7,d:g::5,d:o::5,d:u:lsyncd:7,d:u:zope:7 fss
sudo setfacl -m u::7,g::5,o::5,u:lsyncd:7:u:zope:7 fss

=> ユーザlsyncd作成やACLの設定はクライアントでも行う

initスクリプト作成 # てきとー

#! /bin/sh
#
# lsyncd
# description: Live Syncing (Mirror) Daemon
# chkconfig: 2345 90 10
# processname: lsyncd

# Source function library.
. /etc/init.d/functions

RETVAL=0
PROCNAME=lsyncd

DAEMON="/usr/local/bin/lsyncd"
DAEMON_OPTS="--rsync-remote-sh ssh"
DAEMONUSER=lsyncd

# See how we were called.
case "$1" in
  start)
	echo -n "Starting lsyncd Live Syncing Daemon: "
	BUFIFS=$IFS
	IFS=
	exec 3< /etc/lsyncd.conf
	while read FL 0<&3
	do
	    export src=`echo $FL|awk -F, '{print $1}'`
	    export remotehost=`echo $FL|awk -F, '{print $2}'`
	    export dest=`echo $FL|awk -F, '{print $3}'`
	    su ${DAEMONUSER} -c "${DAEMON} ${DAEMON_OPTS} ${src} ${remotehost}:${dest}" >& /dev/null
	done
	exec 3<&-
	IFS=$BUFIFS
	#exit 0

	pkill -0 $PROCNAME
	RETVAL=$?
	if [ $RETVAL -eq 0 ]
	then
	    echo_success
	else
	    echo_failure
	fi	
	echo
	;;
  stop)
	echo -n "Stopping lsyncd Live Syncing Daemon: "
	killproc $DAEMON
	RETVAL=$?
	if [ $RETVAL -eq 0 ]
	then
		echo_success
	else
		echo_failure
	fi
	echo
	;;
  status)
	status $PROCNAME
	RETVAL=$?
	;;
  restart|reload)
  	$0 stop
	$0 start
	RETVAL=$?
	;;
  condrestart)
        if [ -f $PIDFILE ]; then
            $0 stop
            $0 start
            RETVAL=$?
        fi
	;;
  *)
	echo "Usage: $0 {start|stop|status|restart|condrestart}"
	exit 1
esac

exit $RETVAL

設定ファイル/etc/lsyncd.confはカンマ区切りで
元ディレクトリ、リモートホスト、先ディレクトリ
こんな感じ
/var/zope/var/fss,10.1.1.4,/var/zope/var/fss
/var/zope/var/fss,10.1.1.5,/var/zope/var/fss
/var/zope/var/fss,10.1.1.6,/var/zope/var/fss