使用rsync+inotify實現數據實時同步

1. rsync是什麼?

rsync(remote synchronize)是Liunx/Unix下的一個遠程數據同步工具。它可通過LAN/WAN快速同步多臺主機間的文件和目錄,並適當利用rsync算法(差分編碼)以減少數據的傳輸。

rsync第一次會全量傳輸,後續會對比兩個文件的不同,只傳輸文件更新的部分,傳輸速度比一般工具快。

rsync還可以拷貝、顯示目錄屬性及拷貝文件,並可選擇性的壓縮及遞歸拷貝。

1.2 rsync優點和不足

優點:

安全性高
備份迅速,使用同步算法,只比較變化
支持增量備份
保存源目錄整個目錄樹和文件系統
保持源文件的權限、時間、軟硬連接等
無需特使權限即可安裝
優化流程和比較高的文件傳輸效率。
多樣方式來傳輸文件。
支持匿名運行,方便網站鏡像。
與scp相比,rsync傳輸速度遠在scp之上。(局域網測試,rsync是scp的20倍)
解決對實時性要求不高的數據備份需求

不足:

同步數據,需要掃描所有文件進行對比,才進行差量傳輸。如果文件數量達到百萬甚至千萬級,掃描文件對比文件將非常耗時,降低了rsync效率。

rsync不能實時地區監測、同步數據。雖然可以通過守護進程方式觸發同步,但兩次動作間有時間差,導致數據不一致,無法應對出現故障時完全恢復數據。

2. 初識inotify

inotify是一種強大的、細粒度的、異步的文件系統事件監控機制,linux內核從2.6.13起,加入了inotify支持,通過inotify可以監控文件系統中添加、刪除,修改、移動等各種細微事件,利用這個內核接口,第三方軟件就可以監控文件系統下文件的各種變化情況,而inotify-tools就是這樣的一個第三方軟件。

在上面章節中,我們講到,rsync可以實現觸發式的文件同步,但是通過crontab守護進程方式進行觸發,同步的數據和實際數據會有差異,而inotify可以監控文件系統的各種變化,當文件有任何變動時,就觸發rsync同步,這樣剛好解決了同步數據的實時性問題。

使用rsync+inotify實現數據實時同步

1、配置rsync源服務器A(同步源提供數據的原始位置,發起端讀取同步源的數據)

使用rsync+inotify實現數據實時同步
使用rsync+inotify實現數據實時同步
使用rsync+inotify實現數據實時同步
使用rsync+inotify實現數據實時同步
使用rsync+inotify實現數據實時同步
使用rsync+inotify實現數據實時同步
使用rsync+inotify實現數據實時同步
使用rsync+inotify實現數據實時同步
使用rsync+inotify實現數據實時同步
使用rsync+inotify實現數據實時同步
使用rsync+inotify實現數據實時同步
使用rsync+inotify實現數據實時同步
使用rsync+inotify實現數據實時同步

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