基于Lsync+sync实现实时文件同步_双氧水地带_百度空间
lsyncd 全称是Live Syncing (Mirror) Daemon,它是一款能实时同步本地文件或目录到远端的机器,
它的工作原理:监视本地的目录,当源数据有文件或目录更新时,更新本地文件或目录到远端机器,
保持实时文件同步。它更新数据时需要远端机器运行rsync demon。
下面我将通过一个示例来通过lsyncd与rsync实现数据的实时同步
本示例所需要的软件是:lsyncd与rsync
在它们的官方主页上可以下载{zx1}的源代码
lsyncd的官方主页为:http://code.google.com/p/lsyncd/
rsync的官方主页为:http://samba.anu.edu.au/rsync/
在本地机器上安装rsync
#wget http://samba.anu.edu.au/ftp/rsync/src/rsync-3.0.5.tar.gz
#tar xf rsync-3.0.5.tar.gz
#cd rsync-3.0.5
#./configure \
--prefix=/usr/local/rsync \
--disable-ipv6 \
--disable-iconv
#make && make install
在本地机器上安装lsyncd
#wget http://lsyncd.googlecode.com/files/lsyncd-1.26.tar.gz
#cd lsyncd-1.26
#./configure
#make && make install
远端机器的配置
#vi /etc/rsyncd.conf
[test]
path = /tmp/test #保持数据的目录
hosts allow = 192.168.0.2 #允许访问的主机IP
read only = false #是否只读
新建目录
#mkdit /tmp/test
#chown nobody:nobody /tmp/test
在远端机器上启动rsync
#/usr/local/rsync/bin/rsync --daemon
使rsync随机器启动
echo "/usr/local/rsync/bin/rsync --daemon" >> /etc/rc.local
在本地机器上配置lsyncd
建立配置文件
#vi /etc/lsyncd.conf
/home/test/ 192.168.0.3 test
说明:/home/test/ 要实时同步的目录
192.168.0.3 要实时同步到的远端机器
test 对应远端机器的rsync的tag。
如果要同步多台就在这个文件中每同步一台加一行
格式如上所示
对lsyncd建立日志文件
#vi /etc/logrotate.d/lsyncd
/var/log/lsyncd {
missingok
notifempty
sharedscripts
postrotate
/etc/rc.d/init.d/lsyncd restart 2>&1 > /dev/null || true
endscript
}
说明:它的日志保存的文件为/var/log/lsyncd,
建立lsyncd的启动文件
#vi /etc/rc.d/init.d/lsyncd
#
#! /bin/sh
#
# lsyncd
# description: Live Syncing (Mirror) Daemon
# chkconfig: 2345 90 10
# processname: lsyncd
# Source function library.
. /etc/init.d/functions
RETVAL=0
PROCNAME=lsyncd
DAEMON="/usr/local/bin/lsyncd"
DAEMON_OPTS="--rsync-remote-sh ssh"
DAEMONUSER=lsyncd
# See how we were called.
case "$1" in
start)
echo -n "Starting lsyncd Live Syncing Daemon: "
BUFIFS=$IFS
IFS=
exec 3< /etc/lsyncd.conf
while read FL 0<&3
do
export src=`echo $FL|awk -F, '{print $1}'`
export remotehost=`echo $FL|awk -F, '{print $2}'`
export dest=`echo $FL|awk -F, '{print $3}'`
su ${DAEMONUSER} -c "${DAEMON} ${DAEMON_OPTS} ${src} ${remotehost}:${dest}" >& /dev/null
done
exec 3<&-
IFS=$BUFIFS
#exit 0
pkill -0 $PROCNAME
RETVAL=$?
if [ $RETVAL -eq 0 ]
then
echo_success
else
echo_failure
fi
echo
;;
stop)
echo -n "Stopping lsyncd Live Syncing Daemon: "
killproc $DAEMON
RETVAL=$?
if [ $RETVAL -eq 0 ]
then
echo_success
else
echo_failure
fi
echo
;;
status)
status $PROCNAME
RETVAL=$?
;;
restart|reload)
$0 stop
$0 start
RETVAL=$?
;;
condrestart)
if [ -f $PIDFILE ]; then
$0 stop
$0 start
RETVAL=$?
fi
;;
*)
echo "Usage: $0 {start|stop|status|restart|condrestart}"
exit 1
esac
exit $RETVAL
给启动脚本执行权限
#chmod +x /etc/rc.d/init.d/lsyncd
启动lsyncd
#/etc/rc.d/init.d/lsyncd start
确认lsyncd是否启动
#/etc/rc.d/init.d/lsyncd status
lsyncd (pid 18753) is running...
把lsyncd加入到随机器启动当中
#chkconfig lsyncd on
测试:
在本机机器的/home/test.建立一个文件。到远端的/tmp/root确认是否存在
如没有同步成功请检查日志文件/var/log/lsyncd,确定错误。
同时检查防火墙是否正确配置成功
本实现方案存在的问题:
对于大文件的问题,本人在测试过程中下载了一个600M的ISO镜像文件,
在下载过程中,远端机器会生成一个一样文件名的文件,但大小并随本地机器的变化而发生变化,
它当本地机器下载完成后,再进行传输,会有一点点延迟。
郑重声明:资讯 【基于Lsync+sync实现实时文件同步_双氧水地带_百度空间】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【
在线投诉
】,我们审核后将会尽快处理。
——
相关资讯
——
盘点目前卫生巾有那些品牌
2018/2/14
拖把塑料头定做_家佳乐清洁用品厂
2018/8/18
成都库存太阳能发电板回收18861926626利用回收
2017/5/5
代理拜耳PC APEC1895耐高温
2011/4/14
一码7185.com-23331.com
2014/10/23
去xxxxxx方法找不到吗
2015/3/4
剖腹产xx价格_金典薰衣草xx
2015/3/10
甘肃黑枸杞价格jg
2015/3/23
显示出旺盛生命力中国文化产业逆势腾飞--中关村多媒体创意产业园官方 ...
2010/1/8
阔兴仓储物流配送中心奠基开工阿里巴巴cnkuoxing的博客BLOG
2010/1/16
图文店或名片店创业{zj2}方案(三)
2010/1/17
中石化将争取政府加快调整成品油价« China Energy News 能源网
2010/4/29
涂料两用光泽度仪;MN60-D金属- 其他- 分类信息- 小榄网—菊城视窗|小榄 ...
2010/5/4
白凡士林,黄凡士林,生产厂家天津市瑞达鑫华研磨材料_抛光膏骨胶冷胶_ ...
2010/5/7
美的烘干机维修||美的干衣机维修4006785551-售后维修ptkgk345 _ 售后 ...
2010/5/11