首页 > 服务器运维 > sersync同步有遗漏问题

sersync同步有遗漏问题

2012年6月4日 发表评论 阅读评论

相关链接:

sersync: http://code.google.com/p/sersync/

问题描述:

最近在使用sersync时候碰到一个两端文件有遗漏问题, 具体是目标文件有些存在有些不存在. 在对比了遗漏的文件. 发现了”xxxx1.jpg”没有同步过去.  然后查看失败日志脚本(后面详细解释)发现里面没有文件. 同时再去查看运行日志. 发现有如下错误:

显示连接被重置, ping了一下两方的网络. 看到超时大概在180ms左右, 重新手动rsync上去. 发现是吧”xxxx1.jpg”正常同步上去.  这时加上之前说的有些文件同步上去有些无法同步, 我们即可判断是网络原因导致.
sersync有个同步失败解决措施. 我们来看这个同步失败的配置(看配置文件):

官方的解释是这样的:

对于失败的传输,会进行重新传送,再次失败就会写入rsync_fail_log,然后每隔一段时间(timeToExecute进行设置)执行该脚本再次重新传送,然后清空该脚本。可以通过path来设置日志路径。

通过查看官方解释, 我们可以知道sersync是有对同步失败的文件采取措施, 避免同步失败而导致文件的完整性问题. 但是我们发现, sersync有这个选项. 但是文件还是没有达到完整性.
但是我们查看到有句” 执行该脚本再次重新传送,然后清空该脚本。” 这个应该是根据程序执行流程写的. 这个地方有点含糊. 我们继续往下看.

场景模拟:

我们现在来模拟一下场景:
将/www 目录使用sersync同步到目标服务器. 并查看网络有问题的时候是否重新传送失败的文件.

首先我们设置同步目录配置:

我们上面设置为1.1.1.1是为了模拟暂时无法连接的场景.

再修改失败重传的时间(我们为了测试, 就给她设置为1分钟)

运行sersync:
执行sersync2程序

接下来我们到/www里面创建一个目录:

这个时候会因为网络原因无法同步”/www/test“文件夹, 然后会将失败文件存入”/tmp/rsync_fail_log.sh“文件里面
查看 “/tmp/rsync_fail_log.sh“文件:

然后我们等待一分钟, 可以看到由sersync的输出里面包含如下:

也就是一分钟去执行了”/tmp/rsync_fail_log.sh“脚本文件. 我们会看到还是无法连接

然后我们去查看”/tmp/rsync_fail_log.sh“脚本文件, 发现被清空了..
到这里大家就已经明白为什么同步的文件不完整了. sersync虽然会对失败的文件放进”/tmp/rsync_fail_log.sh” 重传, 但是第二次还是失败的话会被清空. 这样就造成了文件不一致的问题.



除非注明,波尔博客的文章均为原创, 转载请注明作者和出处, 谢谢合作.
博客网址: 波尔 Boll
本文链接地址: https://www.boll.me/archives/204



分类: 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.