基于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)或【
在线投诉
】,我们审核后将会尽快处理。
——
相关资讯
——
压铸投光灯外壳为什么要用防硫化灯珠
2020/8/26
LED玉米灯为什么会这么便宜
2019/7/13
佛山皇域新材料科技有限公司是不是骗子?加盟皇者轻松致富【榆林新闻网】
2018/2/14
挤出机冷却
2018/2/14
江门新会专业男科那个医院好
2015/11/3
妻子性冷淡怎么治∈
2015/3/22
怎么样瘦肚子最快xxx
2015/3/5
2010-2013年中国随车起重机行业市场预测与投资咨询研究报告
2010/1/31
徐家汇附近的ktv 徐家汇ktv_上海喷绘展览展示,喷画,写真,易拉宝制作 ...
2010/2/23
[BB Insight]-Jared公司–五十步告百步的抄袭者- Berryfans-莓友网
2010/2/28
对于转基因大米流入市场,农业部以外的其他政府部门也不应该袖手旁观_ ...
2010/3/19
美尔康车载电热杯_北京永成信达科技有限公司_百度空间
2010/3/20
帮你提升xxx_梦仙_新浪博客
2010/4/9
我怎么知道我买的电视机在网上没有图右,左扬声器和音频插件? | 虚拟 ...
2010/5/29
从围棋定段赛 说到职业棋手门槛的设置_踏雪无痕_新浪博客
2010/7/26
雅诗兰黛眼霜价格表
2013/2/8
蒙口羽绒服专卖店
2013/2/19
怎么样除去眼角皱纹
2015/2/26
沈阳激光祛斑好吗
2015/3/15
中学生脱发怎么办
2015/4/21