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同步工具
轉發請註明