本文最后更新于 5332 天前,其中的信息可能已经有所发展或是发生改变。
抑制不住的冲动给大家介绍sersync,来进行文件同步,公司的产品部署平台就是采用SVN + sersync来实现的。可以参考这篇文章《利用SVN搭建测试服务器》,文件同步采用sersync即可。
sersync原理
使用 Linux 2.6 内核的 inotify 监控 Linux 文件系统事件,被监听目录下如果有文件发生修改,sersync 将通过内核自动捕获到事件,并将该文件利用 rsync 同步到多台远程服务器。sersync 仅仅同步发生增、删、改事件的单个文件或目录,不像rsync镜像同步那样需要比对双方服务器整个目录下数千万的文件,并且支持多线程同步,因此效率非常高。
sersync介绍
sersync主要用于服务器同步,web镜像等功能。基于boost1.41.0,inotify api,rsync command.开发。目前使用的比较多的同步解决方案是inotify-tools+rsync ,另外一个是google开源项目Openduckbill(依赖于inotify- tools),这两个都是基于脚本语言编写的。相比较上面两个项目,本项目优点是:
- sersync是使用c++编写,而且对linux系统文件系统产生的临时文件和重复的文件操作进行过滤(详细见附录,这个过滤脚本程序没有实现),所以在结合rsync同步的时候,节省了运行时耗和网络资源。因此更快。
- 相比较上面两个项目,sersync配置起来很简单,其中bin目录下已经有基本上静态编译的2进制文件,配合bin目录下的xml配置文件直接使用即可。
- 另外本项目相比较其他脚本开源项目,使用多线程进行同步,尤其在同步较大文件时,能够保证多个服务器实时保持同步状态。
- 本项目有出错处理机制,通过失败队列对出错的文件重新同步,如果仍旧失败,则每10个小时对同步失败的文件重新同步。
- 本项目自带crontab功能,只需在xml配置文件中开启,即可按您的要求,隔一段时间整体同步一次。无需再额外配置crontab功能。
- 本项目socket与http插件扩展,满足您二次开发的需要。
PS:金山的同学开源出来的,不得不推荐鼓励下。
谢谢分享
张X?
@网点, 他同事搞的,http://code.google.com/p/sersync/ 这里有介绍
你好,发现你的网站速度好快,能问下空间在哪里买的吗?
@xing393939, http://www.meyu.net
很不错,这可以拿来用了…谢谢分享
很不错的idea,下来看看
谢谢分享
我的网站,pr为2 ,不知道能不能跟你交换个链接
域名是http://shanhairail.info
400电话
找不到你的联系方式,如果可以的话,我的QQ:515246540,
不错支持下
测试评论是否可以发表
@kimi, 可以发表
慷慨的给予快乐,自己更快乐。
你怎么说和你说什么同样重要。
楼上2位是广告
不错,如果支持双向同步就好了
误人子弟
1. 多文件夹同步无法实现,只能启动多个sersync进程
2. 对于目录排除支持太有限了,如果同时支持手动添加inotifywait和rsync的exclude参考就完美了
sersync是使用c++编写,而且对linux系统文件系统产生的临时文件和重复的文件操作进行过滤(详细见附录,这个过滤脚本程序没有实现)
sersync 过滤不了,太可惜了,搞了我半天,解决放弃过滤了.. 多台服务器最好配置用户与密码都一样,要不然不能过滤,踩过的坑!!!!