本文档在lsyncd 2.04 环境下测试通过,其配置文件与 lsyncd 1.X 版本不兼容。
1 、安装lsyncd 2
# emerge lsyncd
可以看到
>>> Emerging (1 of 1) app-admin/lsyncd-2.0.4-r1
字样
2 、安装rsyncd ,据说这个配合 lsyncd 才能达到效果
# emerge rsync
可以看到
>>> Emerging (1 of 1) net-misc/rsync-3.0.8
如果你是幸运的,没有报错,就算安装上了
3 、 # nano /etc/lsyncd.conf.xml
settings = {
logfile = "/var/log/lsyncd.log",
statusFile = "/var/log/lsyncd.status",
nodaemon = true,
}
sync{default.rsync, source="/var/log/source", target="/var/log/dest"}
4 、 # nano /etc/init.d/lsyncd
#!/sbin/runscript
# lsyncd
# description: Live Syncing (Mirror) Daemon
# chkconfig: 2345 90 10
# processname: lsyncd
extra_commands="checkconfig"
RETVAL=0
PROCNAME=lsyncd
CONFFILE=/etc/${SVCNAME}.conf.xml
PIDFILE=/var/run/${SVCNAME}.pid
depend() {
use dns
need net
}
checkconfig() {
if [ ! -f "${CONFFILE}" ]; then
eerror "${CONFFILE} does not exist!"
return 1
fi
ebegin "Checking ${CONFFILE}"
eend $?
}
start()
{
ebegin "Starting ${SVCNAME}"
start-stop-daemon --start --exec /usr/bin/lsyncd \
--pidfile "${PIDFILE}" "${CONFFILE}"
eend $?
}
stop()
{
if [ "${RC_CMD}" = "restart" ]; then
checkconfig || return 1
fi
ebegin "Stopping ${SVCNAME}"
start-stop-daemon --stop --exec /usr/bin/lsyncd \
--pidfile "${PIDFILE}"
eend $? "Failed to stop lsyncd"
rm -f "${PIDFILE}"
}
5 、最后设定
# chmod 755 /etc/init.d/lsyncd 设定可执行
# rc-update add lsyncd default 设定开机自动执行
6 、本机两个不同目录的同步测试
# mkdir /var/log/source 建立源目录
# mkdir /var/log/dest 建立目标目录
# /etc/init.d/lsyncd start 启动服务
# cp /var/log/lastlog /var/log/source 向源目录传输文件
# ls -l /var/log/dest 在目标目录看到文件
7 、不同机器同步测试
由于在初始设定文件中加入一行
#nano /etc/lsyncd.conf.xml
插入
sync{default.rsync, source="/var/log/source", target="10.9.10.122:/var/log/"}
# cd /var/log/source
# mv lastlog lxdlog
# ssh
[email protected]
登录到10.9.10.122 服务器
# ls -l /var/log
可以看到如下结果:
log # ls -l
-rw-r--r-- 1 root root 292876 Dec 10 17:59 lxdlog
不同机器同步测试成功了
8 、不同机器文件同步后的权限问题
sync{default.rsync, source="/data/mysql", target="10.9.10.122::mysql_vip", rsyncOpts="-ltuspog"}
[mysql_vip]
uid = mysql
gid = mysql
path = /data/mysql
comment = mysql_vip
ignore error
read only = no