lsyncd + rsync on Debian(lenny) でらくらく同期
やはり Debian ですよね,いろいろと.
と言うわけで,以前は DRBD Dual Primary + GFS2 と言う構成で試していたんですが,起動や停止手順を誤るとプロセスが完全に死んじゃってシステム終了すらできなくなったりしたので,お気軽な方の検証を.
参考 : http://d.hatena.ne.jp/wadap/20090913/1252839223
下準備
いつも通り IP アドレスは手動で標準システムのみのものを用意します.そして
# aptitude install sudo vim lv openssh-server # update-alternatives --config editor # visudo # addgroup wheel # adduser user wheel # logout
こんな感じのを2つ用意します.virt-clone を使ったやり方はkumofs を KVM 上の Debian(lenny) にインストールして動かすまで - なんとなく日記を参考に.今回は普通にインストールしました.
slave 側の準備
$ sudo adduser rsyncd $ sudo mkdir /opt/folder $ sudo chmod 777 /opt/folder $ sudo chown rsyncd.rsyncd /opt/folder $ sudo vim /etc/rsyncd.conf
uid = rsyncd gid = rsyncd log file = /var/log/rsyncd.log [data] comment = rsync slave path = /opt/folder hosts allow = lsyncd-master read only = false
$ sudo rsyncd --daemon
master 側の準備
今回はパッケージ化します.
$ sudo aptitude install rsync build-essential libxml2-dev dh-make autotools-dev fakeroot $ wget http://lsyncd.googlecode.com/files/lsyncd-1.26.tar.gz $ tar zxvf lsyncd-1.26.tar.gz $ cd lsyncd-1.26/ $ dh_make --createorig $ fakeroot dpkg-buildpackage $ sudo dpkg -i ../lsyncd_1.26-1_amd64.deb $ sudo mkdir /opt/folder $ sudo chgrp wheel /opt/folder $ sudo chmod g+w /opt/folder $ sudo vim /etc/lsyncd.conf.xml
<lsyncd version="1.25"> <settings> <logfile filename="/var/log/lsyncd"/> <pidfile filename="/var/run/lsyncd/lsyncd.pid"/> <binary filename="/usr/bin/rsync"/> <callopts> <option text="-lt%r"/> <option text="-p"/> <exclude-file/> <source/> <destination/> </callopts> </settings> <directory> <source path="/opt/folder"/> <target path="lsyncd-slave::data"/> </directory> </lsyncd>
$ sudo lsyncd
適当にファイル作ったりするとファイルが転送されます.これは便利だな.
#!/usr/bin/env bash ### BEGIN INIT INFO # Provides: lsyncd # Required-Start: $local_fs $remote_fs $network $syslog # Required-Stop: $local_fs $remote_fs $network $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start/stop lsyncd daemon ### END INIT INFO LSYNCD=/usr/bin/lsyncd SRC=/opt/folder PID=/var/run/lsyncd/lsyncd.pid . /lib/lsb/init-functions case "$1" in start) log_daemon_msg "Start lsyncd." $LSYNCD ;; stop) log_daemon_msg "Stop lsyncd." killproc -p $PID ;; restart) $0 stop $0 start ;; *) echo "Usage: /etc/init.d/lsyncd {stnard|stop|restart}" ;; esac
注意点としては lsyncd の設定で,source の部分の最後のスラッシュです.つけると「ディレクトリの中身」になり,つけないと「ディレクトリ自体」となるようで,ここでちょっとはまりました.