lsyncdで特定のファイルだけ同期する | Glide Note – グライドノート

lsyncd – Lsyncd (Live Syncing Daemon) synchronizes local directories with a remote targets – Google Project Hosting
lsyncdで特定のファイルだけ同期する方法があったのでメモ。
lsyncdはexcludeFromで同期除外(exclude)のファイル指定は可能なんですが、指定ファイルだけ同期(include)の設定が出来なかったので何とかならないものかと調べていたら、rsyncOps部分で実現出来ました。まあrsyncのオプションで無理矢理実現してるだけですが。導入完了はCentOS 5.7です。

yumでlsyncdの導入。

yum -y install lsyncd
rpm -ql lsyncd /usr/bin/lsyncd/usr/share/doc/lsyncd-2.0.4/usr/share/doc/lsyncd-2.0.4/COPYING/usr/share/doc/lsyncd-2.0.4/ChangeLog/usr/share/doc/lsyncd-2.0.4/examples/usr/share/doc/lsyncd-2.0.4/examples/lbash.lua/usr/share/doc/lsyncd-2.0.4/examples/lecho.lua/usr/share/doc/lsyncd-2.0.4/examples/lgforce.lua/usr/share/doc/lsyncd-2.0.4/examples/limagemagic.lua/usr/share/doc/lsyncd-2.0.4/examples/lpostcmd.lua/usr/share/doc/lsyncd-2.0.4/examples/lrsync.lua/usr/share/doc/lsyncd-2.0.4/examples/lrsyncssh.lua/usr/share/man/man1/lsyncd.1.gz

yumで入れても設定ファイルも起動スクリプトも生成されないので自分で用意。

mkdir -p /etc/lsyncd/ /bin/cat<< EOF> /etc/lsyncd/lsyncd.conf------ User configuration file for lsyncd.---- Simple example for default rsync.--settings = {        statusFile = "/tmp/lsyncd.stat",        statusInterval = 1,} sync{        default.rsync,        source="/etc/",        target="/root/tmp/etc/",        rsyncOps={"-az", "--exclude-from=/etc/lsyncd/rsync_exclude.lst"},}EOF /bin/cat<< EOF> /etc/lsyncd/rsync_exclude.lst+ passwd+ shadow- *EOF

上記設定は/etc/passwd,/etc/shadowだけ同期して、それ以外は同期しない設定になってます。

起動用スクリプト /etc/init.d/lsyncd を用意。ファイルの中身は下記のような感じ

#!/bin/bash## chkconfig: - 85 15# description: Lightweight inotify based sync daemon## processname:  lsyncd# config:       /etc/lsyncd/lsyncd.conf# config:       /etc/sysconfig/lsyncd# pidfile:      /var/run/lsyncd.pid # Source function library. /etc/init.d/functions # Source networking configuration.. /etc/sysconfig/network # Check that networking is up.[ "$NETWORKING" = "no" ] && exit 0 OPTIONS="-pidfile /var/run/lsyncd.pid /etc/lsyncd/lsyncd.conf" if [ -e /etc/sysconfig/lsyncd.options ]; then  . /etc/sysconfig/lsyncd.optionsfi RETVAL=0 prog="lsyncd"thelock=/var/lock/subsys/lsyncd start() {        echo -n $"Starting $prog: "        if [ $UID -ne 0 ]; then                RETVAL=1                failure        else                daemon /usr/bin/lsyncd $OPTIONS                RETVAL=$?                [ $RETVAL -eq 0 ] && touch $thelock        fi;        echo        return $RETVAL} stop() {        echo -n $"Stopping $prog: "        if [ $UID -ne 0 ]; then                RETVAL=1                failure        else                killproc /usr/bin/lsyncd                RETVAL=$?                [ $RETVAL -eq 0 ] && rm -f $thelock        fi;        echo        return $RETVAL} reload(){        echo -n $"Reloading $prog: "        killproc /usr/bin/lsyncd -HUP        RETVAL=$?        echo        return $RETVAL} restart(){        stop        start} condrestart(){    [ -e $thelock ] && restart    return 0} case "$1" in  start)        start        ;;  stop)        stop        ;;  restart)        restart        ;;  reload)        reload        ;;  condrestart)        condrestart        ;;  status)        status lsyncd        RETVAL=$?        ;;  *)        echo $"Usage: $0 {start|stop|status|restart|condrestart|reload}"        RETVAL=1esac exit $RETVAL

同期先のディレクトリを作成

mkdir -p /root/tmp/etc/

起動スクリプトの登録と自動起動の設定

chmod u+x /etc/init.d/lsyncdchkconfig --add lsyncdchkconfig lsyncd on/etc/init.d/lsyncd start

passwdとshadowを更新して、反映されているか確認。

useradd hogepasswd hogemore /root/tmp/etc/*

lsyncd.confで同期先をリモートサーバにすれば、リモートサーバと同期できて (゚Д゚)ウマー

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中