*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/

''/var/log/lsyncd''に以下の残る

 sent 205 bytes  received 16 bytes  442.00 bytes/sec
 total size is 15  speedup is 0.07
 Mon Aug 31 11:45:33 2009: Rsync of [/home/student/lsyncd_tmp/] ->  [10.3.2.4::test/] finished
 Mon Aug 31 11:45:33 2009: Processing through tosync stack.
 Mon Aug 31 11:45:33 2009: being done with tosync stack
 Mon Aug 31 11:45:33 2009: inotfy event: DELETE:.#c
 Mon Aug 31 11:45:33 2009: event DELETE:.#c triggered.
 Mon Aug 31 11:45:33 2009:   BUILDPATH(0, (null), (null)) - > /home/student/lsyncd_tmp/
 Mon Aug 31 11:45:33 2009:   BUILDPATH(0, (null), 10.3.2.4::test/) ->  10.3.2.4::test/
 Mon Aug 31 11:45:33 2009: rsyncing /home/student/lsyncd_tmp/ --> 10.3.2.4::test/
 building file list ... done

''logのlogrotateの設定''

/etc/logrotate.d/lsyncd

 /var/log/lsyncd{
   weekly
   rotate 5
   copytruncate
   compress
   notifempty
   missingok
 }

&color(red){注)lsyncdが起動されるとマスタのしてしたディレクトリ自体がスレーブコピーされる。その後同じのがないの消えるが原因不明};

セカンダリに一時的に

 /lsyncd_tmp2/lsyncd_tmp

というディレクトリが出来る


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS