lsyncdãã¤ãã£ã¦ç°¡åã«ãã¡ã¤ã«åæã
lsyncdã¨ãããã¼ã«ããåãã§ããããï¼ãããå°å
¥ãããã¨ã§ããªã¢ã¼ãã®ãã¹ãã¨ãã£ã¬ã¯ããªåä½ã§åæããããã¨ãã§ãã¾ãã
先日のエントリーã§ãç´¹ä»ãã¦ãã¾ãããå®ã¯è¨å®ãå°å
¥ããããç°¡åã§ããããè¨å®ã§ãªã¢ã¼ãéã§ãã¡ã¤ã«ã®åæãã¨ããã®ã¯ãã¯ã便å©ã§ãããã
ãã¦ãä»åã¯lsyncdã®ç°¡åãªå°å
¥æ¹æ³ãç´¹ä»ãããã¨æãã¾ãã
lsyncdã®ä»çµã¿
lsyncdã¯linux kernel2.6.13ã§å°å
¥ããããinotifyã¨ããAPIãã¤ãã£ã¦åä½ãã¦ãã¾ãã
inotifyã¯ãã¡ã¤ã«ã·ã¹ãã ã®ã¤ãã³ããåå¾ãããã¨ãã§ããAPIã§ããã¡ã¤ã«ã®ä½æãåé¤ãªã©ãããããã¤ãã³ãã¨ãã¦åå¾ããããã¨ãã§ãã¾ãã
ãã®ä»çµã¿ã¨ãrsyncãçµã¿åããã¦ãã¡ã¤ã«ã®åæãè¡ããã¨ãå®ç¾ãã¦ãã¾ãã
lsyncdã®ã¤ã³ã¹ãã¼ã«
ã¾ãã以ä¸ã®ãã¼ã¸ããsourceããã¦ã³ãã¼ããã¦ãã ããã
http://sourceforge.jp/projects/freshmeat_lsycnd/resources/
$ tar xvfz lsyncd-1.25.tar.gz && cd lsyncd-1.25 $ ./configure --prefix=/usr/local/lsyncd $ make && sudo make install
ã¤ã³ã¹ãã¼ã«ã¯ç°¡åã§ãããç¹å¥ãªãã¨ã¯ããã«ä¸è¨ã®ã³ãã³ãã ãã§ç°¡åã«å°å ¥ãããã¨ãã§ãã¾ãã
lsyncdãåãã
ãã¦ãããã§ã¯lsyncdãåä½ããã¾ãããããããã¯ã¼ã¯è¶ãã«ãã¡ã¤ã«ãåæãããè¨å®ã®ãããhost1ã¨host2ã¨ãã2ã¤ã®ãã¹ããããããããåå解決ãã§ããã¨ããåæã§é²ãã¾ãã
åä½ã¤ã¡ã¼ã¸
åä½ã¤ã¡ã¼ã¸ã¯ä¸è¨ã®éãã§ãã
- originalãã¼ã¿
host1:/var/tmp/original/
- copyå
host2:/var/tmp/copy/
host2ã®è¨å®
ã¾ãå ã«ãã³ãã¼å ã®ãµã¼ããã»ããã¢ããããå¿ è¦ãããã¾ããä¸è¨ã®ã³ãã³ãã§è¨å®ããã¾ãããã
$ sudo tee /etc/rsyncd.conf << EOF uid = root gid = root log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid [data] comment = rsync server path = /var/tmp/copy/ hosts allow = host1 read only = false EOF
ãã¦ãä¸è¨ã®è¨å®ãã¡ã¤ã«ãæ´æ°ããããrsyncã®daemonãèµ·åããã¾ãããã
$ sudo rsync --daemon $ ps `cat /var/run/rsyncd.pid` PID TTY STAT TIME COMMAND 22290 ? Ss 0:00 rsync --daemon
ä¸è¨ã®ããã«æ£å¸¸ã«ããã»ã¹ãããã£ã¦ããã°æåã§ãã
host1ã®è¨å®
ããã§ã¯ããã¡ã¤ã«ã®ã³ãã¼å ã®ãµã¼ãã§lsyncdãèµ·åãã¾ãããããªãã·ã§ã³ãå¼æ°ã«æ¸¡ãã ãã§ç°¡åã«èµ·åããããã¨ãã§ãã¾ãã
$ sudo mkdir /var/tmp/original/ $ /usr/local/lsyncd/bin/lsyncd /var/tmp/original/ host2::data
ããã§å®äºã§ãï¼ããã§ã¯ãã¹ãããã¦ã¿ã¾ãããã
ãã¡ã¤ã«åæã®ãã¹ã
ããã§ã¯host1å´ãããã¹ãããã¦ã¿ã¾ãããã
$ for i in {1..10} ; do sudo touch /var/tmp/original/$i ; done $ for i in {11..20} ; do sudo mkdir /var/tmp/original/$i ; done
ããã§host2:/var/tmp/copy/ã確èªãã¦ã¿ã¦ãã ãããããã§æ£å¸¸ã«ãã¡ã¤ã«ãã§ãã¦ããã°æåã§ãã
ç°¡åã«è¨å®ã§ããã¨ã¦ã便å©ãªãã¼ã«ãªã®ã§ãã²å°å
¥ãæ¤è¨ãã¦ã¿ã¦ãã ããã
lsyncdã®èµ·åscript
ããªãç°¡ç´ ãªãã®ã§ãããèµ·åscriptã§ããcentos5.3ã§åä½ã確èªãã¦ãã¾ãã
#!/bin/bash # # lsyncd # # chkconfig: - 99 20 # description: lsyncd start script LSYNCD=/usr/local/lsyncd/bin/lsyncd SRC=/var/tmp/original/ HOST=localhost DEST=data PID=/var/run/lsyncd/lsyncd.pid . /etc/init.d/functions start() { daemon $LSYNCD $SRC $HOST::$DEST --pidfile $PID } stop() { killproc -p $PID } checkproc() { if [ -e $PID ] ; then echo "Already running..." exit 1 fi } case "$1" in start) checkproc start ;; stop) stop ;; restart) stop start ;; *) echo "Usage: lsyncd [ start | stop | restart ]" exit 1 esac exit $?