Psyncd – 基于inotify和rsync的linux同步工具

Psyncd是一款类似于Lsyncd的文件同步工具,开发语言是python,原理是基于inotify对文件改动事件的监控,然后封装rsync命令进行同步。可以做到实时同步、单个文件同步、海量文件同步。

Psyncd

Psyncd介绍:

Psyncd是一款类似于Lsyncd的文件同步工具,开发语言是python,原理是基于inotify对文件改动事件的监控,然后封装rsync命令进行同步。

Psyncd采用time delay和events delay机制,这两种方式同时兼顾了实时性和海量小文件同步。可以对海量小文件进行聚合,避免使用inotify+rsync时海量文件造成频繁切换线程造成cpu负载增加,吃不满带宽。
Psyncd也可以监控到单个小文件改动,进行单个文件的精确推送,避免增加系统负载。
Psyncd可以同时监控百万级文件,推送十几个target。(参考目前的测试效果)
Psyncd文件改动事件的监控依赖于watchdog(其中watchdog的依赖,可以参考watchdog项目),watchdog封装了inotify和pathtools等,是基于python开发的一个文件事件监控库。
Psyncd开发和测试环境是python2.7,python3.5只进行过简单测试(50G/70W+ 文件)。

欢迎Pull Request

Psyncd是个小工具,文件结构并不复杂,读起来也不难,欢迎大家下载测试并提issue和pr。
如果要提pr,请附赠至少三例测试用例,不必附赠具体测试结果,只需体现是否正常。测试用例要覆盖代码改动所涉及flow的本环节,上下环节。
有好的想法欢迎跟我交流,可以通过我的邮箱联系到我。欢迎一起开发更多功能。


如何使用:

0.请预先安装pathtools=0.1.1和watchdog=0.10.2,可以直接使用pip安装。使用源码安装时,进入目录,执行”python setup.py install”即可。
1.下载代码https://github.com/ZKeeer/Psyncd,使用命令”python psyncd.py”即可,记得执行命令前完成第二步的配置文件
2.如何写配置文件,在Psyncd.conf中已经写得很清楚的,请详细阅读
3.如何停止:请使用Ctrl+C


TODO:

  • 优化文件聚合逻辑和去重逻辑
  • 兼容python2和python3
  • 支持日志格式自定义
  • 增加rsync其他参数的支持
  • 重新封装inotify,用来替代watchdog
  • 增加跨平台支持

发表评论

电子邮件地址不会被公开。 必填项已用*标注