什么是远程文件同步?
将远程服务器节点上的数据文件传输到本地服务器或PC上,反之亦然
如何进行远程文件同步?
方案一:rsync+cron
该方案简单粗暴,适用于实时性要求不是很高的场景,rsync在同步数据时需要扫描所有文件进行比对,当数据文件数量达到百万级以上时,该方案效率较为低下。
上代码:
rsync -acvzP source-server/path destination-server/path
参数说明:
-a、--archive参数表示存档模式,保存所有的元数据,比如修改时间(modification time)、权限、所有者等,并且软链接也会同步过去
-c、--checksum参数改变rsync的校验方式。默认情况下,rsync 只检查文件的大小和最后修改日期是否发生变化,如果发生变化,就重新传输;使用这个参数以后,则通过判断文件内容的校验和,决定是否重新传输
-v参数表示输出细节
-z参数指定同步时压缩数据
-P参数是--progress和--partial这两个参数的结合
方案二:lsyncd本地目录实时备份
该方案实时性高,速率可控,lysncd实际上是lua语言封装了inotify和rsync工具,采用了Linux内核(2.6.13 及以后)里的inotify触发机制,然后通过rsync去差异同步达到实时的效果
目前好像发现只能从本地向远程服务器进行分发,而不能拉取远程文件到本地
先yum install lua lua-devel asciidoc cmake安装好需要的依赖环境
从 googlecode lsyncd 上下载的lsyncd-2.1.5.tar.gz,直接./configure、make && make install即可
编辑配置文件lsyncd.conf
# cd lsyncd-2.1.5
# mkdir etc var
# vi etc/lsyn