*lsyncd [#q00e8c1e]

RIGHT:更新日&lastmod();


lsyncdを使用してリアルタイムにディレクトリ単位で別ホストにミラーリング
このシステムにはファイル内容が変更された場合それを検出するソフトinotifyを利用する。これはkeranel-2.6.13以降なら動作するが、Vine4.x Vine5.xにはないのでソースから inotify-toolsをインストール


''ホスト設定''

マスタ(10.3.2.3 /home/student/lsyncd_tmp) セカンダリ(10.3.2.4 /home/student/lsyncd_tmp2)

マスタのlsyncd_tmpが変更されたら、セカンダリのlsyncd_tmp2の内容も変更される


以下のtoolが必要なのでインストール
 # apt-get install libxml2-devel


**マスタの設定 [#xad2882a]

***inotify-toolsのインストール [#l2bbc8e8]

以下からinotify-toolsをDownload

http://inotify-tools.sourceforge.net/

 $ tar zvxf inotify-tools-3.13.tar.gz

 $ ./configure --prefix=/usr 
 $ make 
 $ su 
 # make install 

以下のようにリンクを作成

 # cd /usr/include/sys
 
 # ln -s ../inotifytools/inotify.h
 # ln -s ../inotifytools/inotify-nosys.h
 # ln -s ../inotifytools/inotifytools.h


***inotify-toolsのインストール [#i8c35037]

以下からlsyncdをDownload

http://en.sourceforge.jp/projects/freshmeat_lsycnd/resources/


 $ tar tzvf lsyncd-1.26.tar.gz
 $ cd lsyncd-1.26
 $ ./configure
 
 checking for unistd.h... yes
 checking sys/inotify.h usability... yes
 checking sys/inotify.h presence... yes
 checking for sys/inotify.h... yes
 configure: creating ./config.status
 config.status: creating Makefile
 config.status: creating config.h
 config.status: executing depfiles commands
 
 $ make
 $ make all-am
 make[1]: ディレクトリ `/usr/local/src/lsyncd-1.26' に入ります
 gcc -DHAVE_CONFIG_H -DXML_CONFIG -I. -Wall `xml2-config --cflags` -g -O2 -MT 
 lsyncd.o -MD -MP -MF .deps/lsyncd.Tpo -c -o lsyncd.o lsyncd.c
 lsyncd.c: 関数 `remove_dirwatch' 内:
 lsyncd.c:1000: 警告: `dw' might be used uninitialized in this function
 mv -f .deps/lsyncd.Tpo .deps/lsyncd.Po
 gcc -Wall `xml2-config --cflags` -g -O2 `xml2-config --libs` -o lsyncd lsyncd.o
 make[1]: ディレクトリ `/usr/local/src/lsyncd-1.26' から出ます
 
 $ su
 # make install

以下の起動ファイルを作成

''init.d/lsyncd''

 #!/bin/bash
 #
 # chkconfig: 345 56 50
 # description: start and stop lsyncd
 #
 #
 
 # Source function library.
 . /etc/rc.d/init.d/functions
 
 PATH=$PATH:/usr/local/bin
 
 # Source networking configuration.
 [ -r /etc/sysconfig/lsyncd ] && . /etc/sysconfig/lsyncd
 
 option="$SHORT_LOG $IGNORE_START_ERRORS $DEBUG"
 
 RETVAL=0
 
 prog="lsyncd"
 
 start(){
     echo -n $"Starting $prog: "
     daemon $prog $option
     RETVAL=$?
     echo
     touch /var/lock/subsys/lsyncd
     return $RETVAL
 }
 
 stop(){
     echo -n $"Stopping $prog: "
     killproc $prog
     RETVAL=$?
     echo
     rm -f /var/lock/subsys/lsyncd
     return $RETVAL
 
 }
 
 reload(){
     echo -n $"Reloading configuration: "
     killproc $prog -HUP
     RETVAL=$?
     echo
     return $RETVAL
 }
 
 restart(){
     stop
     start
 }
 
 condrestart(){
     [ -e /var/lock/subsys/lsyncd ] && restart
     return 0
 }
 
 
 # See how we were called.
 case "$1" in
     start)
         start
         ;;
     stop)
         stop
         ;;
     status)
         status $prog
         ;;
     restart)
         restart
         ;;
     reload)
         reload
         ;;
     condrestart)
         condrestart
         ;;
     *)
         echo $"Usage: $0
         {start|stop|status|restart|condrestart|reload}"
         RETVAL=1
 esac
 
 exit $RETVAL


マスタのコピー元とセカンダリのコピー先およびrsyncのオプションを指定 。
target pathのモジュール名(test)はセカンダリのrsyncd.confの内容([test])とあわせる
また、-ltdは-lt%rとあるページもあった(%r は lsyncd 起動時には r、それ以外は d になるそうだ)

&color(red){-avzがないとdeleteがうまく動作しなかった};

''/etc/lsyncd.conf.xml''を作成

 <settings>
   <callopts>
   <option text="-ltd"/>
   <option text="--delete"/>
   <option text="-avz"/>
   <source/>
   <destination/>
   </callopts>
 </settings>
 
 <directory>
   <source path="/home/student/lsyncd_tmp"/>
   <target path="10.3.2.4::test/"/>
 </directory>
 </lsyncd>

**セカンダリの指定 [#b5396ac7]

rsyncサーバとしてコピー先ディレクトリ、および書き込み許可ホスト、そのユーザ、グループ、モジュール名を指定

''/etc/rsyncd.conf''を作成

 uid = student
 gid = student
 
 [test]
        path = /home/student/lsyncd_tmp2
        hosts allow = 10.0.0.0/8
        read only = false


''起動''

# /usr/bin/rsync --daemon --config=/etc/rsyncd.conf

rc.loaclにでも書いておく


***その他 [#td0beaed]

実際マスタのディレクトリに変化が出ると以下のコマンドがマスタで動く

 /usr/bin/rsync -ltd --delete -avz /home/student/lsyncd_tmp 10.3.2.4::test/


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS