Sersync 是我们金山逍遥网技术支持部平台组周洋同学,开发的一款基于 inotify + rsync 的大量文件的多服务器自动同步程序,目前已开源,开源协议为 New BSD License。
原理:
使用 Linux 2.6 内核的 inotify 监控 Linux 文件系统事件,被监听目录下如果有文件发生修改,sersync 将通过内核自动捕获到事件,并将该文件利用 rsync 同步到多台远程服务器。sersync 仅仅同步发生增、删、改事件的单个文件或目录,不像rsync镜像同步那样需要比对双方服务器整个目录下数千万的文件,并且支持多线程同步,因此效率非常高。
应用:
金山游戏官网的 CMS 内容发布系统。无论编辑通过 Web 还是 FTP 上传图片、视频、附件,还是系统工程师直接去CMS发布服务器上增加、修改、删除文件,干完这些事情后不用做任何处理,sersync 会自动将发生增、删、改事件的文件同步到远程服务器,并可以在文件同步完成后,自动调用 CDN(ChinaCache)缓存刷新接口,刷新发生修改、删除的文件的访问 URL。
更多内容,请访问项目网址:http://code.google.com/p/sersync/
原理:
使用 Linux 2.6 内核的 inotify 监控 Linux 文件系统事件,被监听目录下如果有文件发生修改,sersync 将通过内核自动捕获到事件,并将该文件利用 rsync 同步到多台远程服务器。sersync 仅仅同步发生增、删、改事件的单个文件或目录,不像rsync镜像同步那样需要比对双方服务器整个目录下数千万的文件,并且支持多线程同步,因此效率非常高。
应用:
金山游戏官网的 CMS 内容发布系统。无论编辑通过 Web 还是 FTP 上传图片、视频、附件,还是系统工程师直接去CMS发布服务器上增加、修改、删除文件,干完这些事情后不用做任何处理,sersync 会自动将发生增、删、改事件的文件同步到远程服务器,并可以在文件同步完成后,自动调用 CDN(ChinaCache)缓存刷新接口,刷新发生修改、删除的文件的访问 URL。
更多内容,请访问项目网址:http://code.google.com/p/sersync/
有个叫csync项目,但这个貌似好像不是实时的。这个是我目前知道的,有没有其他的解决方案,还得问张大侠......
如果同步源上的文件删除了,目标机器上的文件,同步系统会删除吗?
这个问题好像没有回答,,,是否有--delete 参数呢
具体大于30g使用情况,可以问下群里叫kavin的人。
默认带--delete参数。是实时增量同步。
不支持自定义rsync参数
如果有能力的话,大文件建议用Hadoop集群,中小文件建议搭建FastDFS集群。
这么好的东西,应该贴个实例出来让我们一起跟着学习一下,有空写个吧,呵呵!
还有上面你回复别人的这句话。
假设监听源服务器/opt目录,该目录下有a.txt、b.txt、c.txt三个文件。修改了b.txt文件,则自动将b.txt同步到远程服务器覆盖远程文件。删除了c.txt文件,则自动删除远程服务器b.txt。在源服务器/opt目录内创建了子目录test,则远程服务器也创建子目录test。在test目录内新建了文件d.txt,则自动将test/d.txt同步到远程服务器test/d.txt。a.txt文件没有任何修改操作,则不会同步。
删除了c.txt文件,则自动删除远程服务器b.txt。这句话没有弄明白什么意思,为什么删了C文件在远程上会删B文件呢?我没有搞明白。还是你又笔误了呢?请给个明示。
不支持多目录同步到多目录的操作.这句话是个什么意思?谢谢.
想法相同的朋友emailme:ique@sohu.com