Psyncd——linux的實時同步工具

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+ 文件) 。


如何使用:

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

有想法和建議,可以通過郵件聯繫我 [email protected]


TODO:

  • 優化文件聚合邏輯和去重邏輯
  • 兼容python2和python3
  • 支持日誌格式自定義
  • 增加rsync其他參數的支持
  • 重新封裝inotify,用來替代watchdog
  • 增加跨平臺支持

本文首發於我博客:ZKeeer’s Note
Psyncd – 基於inotify和rsync的linux同步工具
轉發請註明

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章