share facebook facebook twitter menu hatena pocket slack

2012.07.11 WED

CentOS6.2にlsyncdをインストール

鈴木 宏康

WRITTEN BY 鈴木 宏康

以前、CentOSでlsyncdを使った同期の記事でも試したことがあるlsyncdですが、
当時は、サブディレクトリには対応してい等、あまり使い勝手がよくなかったのですが、
現在は対応しているようなので、再度試してみました。

尚、利用したCentOSは下記となります。

SUZ-LAB謹製 CentOS AMI (6.2.1 64bit ap-northeast-1)

それでは、はじめにインストールについてですが、lsyncdはyumで簡単に入れることができます。

# yum -y install lsyncd

次に下記のような設定ファイル(/etc/lsyncd.conf)を用意します。

settings = {
logfile = "/var/log/lsyncd.log",
statusFile = "/var/log/lsyncd.status",
nodaemon = true,
}

echo = {
maxProcesses = 1,
onStartup = "/bin/echo telling about ^source",
onAttrib = "/bin/echo attrib ^pathname",
onCreate = "/bin/echo create ^pathname",
onDelete = "/bin/echo delete ^pathname",
onModify = "/bin/echo modify ^pathname",
onMove = "/bin/echo move ^o.pathname -> ^d.pathname",
}

sync{
echo,
source = "/tmp/src/",
target = "/tmp/dst/",
}

これは対象のディレクトリでファイル操作をした時に、標準出力に情報を出力するだけの設定となります。

そして、この状態でlsyncdを起動します。

# lsyncd /etc/lsyncd.conf
17:23:09 Normal: Event Blanket spawns action '/bin/echo telling about ^source'
telling about /tmp/src/
17:23:09 Normal: Startup of '/tmp/src/' finished.
# touch /tmp/src/sample.txt

上記のように、対象ディレクトリにファイルを作成すると、下記のようなログが出力されます。

17:24:40 Normal: Event Create spawns action '/bin/echo create ^pathname'
create /sample.txt
17:24:40 Normal: Finished Create on /tmp/src//sample.txt = 0
17:24:40 Normal: Event Modify spawns action '/bin/echo modify ^pathname'
modify /sample.txt
17:24:40 Normal: Finished Modify on /tmp/src//sample.txt = 0

サブディレクトリに対してファイルを作成しても、同様にログが出力できていることが確認できます

# touch /tmp/src/sub/sample.txt
17:24:48 Normal: Event Create spawns action '/bin/echo create ^pathname'
create /sub/sample.txt
17:24:48 Normal: Finished Create on /tmp/src//sub/sample.txt = 0
17:24:48 Normal: Event Modify spawns action '/bin/echo modify ^pathname'
modify /sub/sample.txt
17:24:48 Normal: Finished Modify on /tmp/src//sub/sample.txt = 0

最後に下記のような起動スクリプトを作っておくことで、起動時にlsyncdを有効にすることも可能です。

#!/bin/bash
#
# lsyncd lsyncd
#
# chkconfig: 2345 99 10
# description: lsyncd

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

prog=lsyncd
lock=/var/lock/subsys/$prog
pid=/var/run/lsyncd.pid

# Source config
if [ -f /etc/sysconfig/$prog ] ; then
. /etc/sysconfig/$prog
fi

start() {
echo -n $"Starting $prog: "
$prog -pidfile $pid /etc/lsyncd.conf >> /var/log/lsyncd.log 2>&1 &
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch $lock
return $RETVAL
}

stop() {
echo -n $"Shutting down $prog: "
kill `cat /var/run/lsyncd.pid`
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f $lock
[ $RETVAL -eq 0 ] && rm -f $pid
return $RETVAL
}

case "$1" in
start)
start
RETVAL=$?
;;
stop)
stop
RETVAL=$?
;;
restart)
stop
start
RETVAL=$?
;;
status)
status -p $pid -l $lock $prog
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|status}"
RETVAL=1
esac

exit $RETVAL

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら

鈴木 宏康

鈴木 宏康

愛知県生まれ。東京工業大学大学院修士課程修了。在学時より、ベンチャー企業でインターネットに関する業務に携わり、現在はクラウド(主にAmazon Web Services)上での開発・運用を軸とした事業の、業務の中心として活躍。