rsync是Linux/UNIX下的文件同步和數據傳輸工具。rsync即remote sync,有如下特性:
1>可以鏡像保存整個目錄樹和文件系統
2>可以增量同步數據,文件傳輸效率高
3>可以保持原有文件的權限,時間等屬性
4>加密傳輸數據,保證數據安全性
5>支持匿名傳輸
rsync的4中應用模式:
1>shell應用模式,也成本地模式
2>遠程shell模式,利用SSH執行底層連接和加密傳輸
3>查詢模式,也稱列表模式
4>服務模式,即rsync服務器
rsync的不足
1>rsync同步數據時需要掃描所有的文件後進行對比,然後進行差量傳輸。如果文件數量太大,rsync就顯得非常低效
2>rsync不能實時監測、同步數據
inotify是一種強大的、細粒度的、異步的文件系統事件監控機制。Linux內核從2.6.13.開始加入對inotify的支持。
通過inotify可以監控文件系統中添加、刪除、修改、移動等各種細微事件,利用內核接口,第三方軟件可以 監控文件系統的各種變化。
inotify-tools就是一個三方軟件,安裝完後會生成inotifywait和inotifywatch兩個命令:
inotifywait用於等待文件或文件集上的一個特定事件,可以監控任何文件和目錄設置,並且可以遞歸地監控整個目錄樹;inotifywatch用於收集被監控的文件系統統計數據,包括每個inotify事件發生多少次等信息。
/proc/sys/fs/inotify/max_queued_events 表示調用inotify_init時分配到inotify instance中可排隊的event數的最大值,超出這個值得事件丟棄,但觸發IN_Q_OVERFLOW事件。
/proc/sys/fs/inotify/max_user_instances 表示每一個real user ID可以創建的inotify instance數量的上限
/proc/sys/fs/inotify/max_user_watches 表示每個inotify實例相關聯的watches的上限,也就是每個inotify實例可監控的最大目錄數量,如果監控文件數量巨大,需要根據情況適當的增加此值的大小。
inotifywait是一個監控等待事件:
-m,monitor表示始終保持事件監聽狀態
-r,recursive表示遞歸查詢目錄
-q,quit表示打印出監控事件
-e,event指定要監控的事件,常見的事件有modify,delete,create和attrib等
案例:保證3臺web服務器上的文件是一致的。
1、安裝rsync和inotify-tools
inotify-tools是監控文件系統變化的工具,安裝到內容發佈節點,3服務節點安裝rsync。
說明:inotify-tools節點充當rsync客戶端的角色,3臺服務節點充當rsync服務器角色,整個數據同步過程就是一個從客戶端向服務端發送數據的過程。
2、服務節點上配置rsync
vim rsyncd.conf
uid = nobody
gid = nobody
use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
locak file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[web1]
path = /web1/wwwroot/
comment = web1 file
ignore errors
read only = no
write only = no
hosts allow = inotift-tools_ipaddress
hosts deny = *
list = false
uid = root
gid = root
auth users = web1user
secrets file = /etc/web1.pass
再配置完上3臺服務節點後,依次啓動rsync:echo "/usr/local/bin/rsync --daemon" >> /etc/rc.local
3、配置內容分佈節點inotify-tools
目的是將生成的html網頁實時同步到集羣中的服務節點上。