2021-03-05 分類: 網站建設
在企業日常web應用中,某些特殊的數據需要要求保持跟服務器端實時同步,那我們該如何來配置呢?如何來實現呢?這里可以采用rsync+inotify來實現需求。
一、Inotify簡介
Inotify 是一個 Linux特性,它監控文件系統操作,比如讀取、寫入和創建。Inotify 反應靈敏,用法非常簡單,并且比 cron 任務的繁忙輪詢高效得多。
Inotify,它是在內核 2.6.13 版本中引入的一個新功能,它為用戶態監視文件系統的變化提供了強大的支持,允許監控程序打開一個獨立文件描述符,并針對事件集監控一個或者多個文件,例如打開、關閉、移動/重命名、刪除、創建或者改變屬性。
在inotify 的前身是 dnotify。由于 dnotify 的局限性太大,加之用戶始終都希望用到更好的產品。因此,inotify 順理成章的取代了 dnotify。
Rsync安裝完畢后,需要安裝inotify文件檢查軟件。同時為了同步的時候不需要輸入密碼,這樣可以使用ssh免密鑰方式進行同步。
二、Rsync認證方式-兩種方式
rsync-daemon
ssh
注意:在使用rsync時,同步端和被同步端都必須安裝rsync程序。
1)rsync-daemon認證
在rsync-daemon認證方式下,默認監聽tcp的873端口
在rsync-daemon認證下,rsync可以把密碼寫入到一個文件中。
注意:被同步端的rsync必須啟動,配置文件。同步端可以不起動服務,但必須有這個應用。
2)ssh認證
通過ssh隧道進行傳輸,類似于scp工具,同步操作不在局限于rsync中定義的同步文件夾,并且雙方只要安裝rsync,也不要雙方啟動rsync。
Rsync安裝配置參考我另一篇文章:
這里采用Rsync基于SSH認證方式+inotify實時同步
服務端IP:192.168.8.7
客戶端IP:192.168.8.8
三、安裝inotify
1)下載inotify-tools安裝包
[root@localhost ~]# wget inotify-tools-3.14.tar.gz
1
2)解壓,安裝
[root@localhost ~]# tar zxf inotify-tools-3.14.tar.gz
[root@localhost ~]# cd inotify-tools-3.14
[root@localhost inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify
[root@localhost inotify-tools-3.14]# make && make install
2
3
3)配置免密鑰認證,這里不再介紹,SSH免密鑰認證可以參考我另一篇文章:
4)編寫腳本
vim rsync_inotify.sh,內容如下
#!/bin/sh #2019-05-01 22:05:29 #by author fei ##本地需要同步的目錄 SRC=/test/ ##遠程目錄 DATA=/test/ ##遠程同步IP IP=192.168.8.8 inotifywait -mrq --timefmt '%Y-%m-%d-%H:%M' --format '%T %w %f' -e modify,delete,create,attrib,move $SRC | while read file do rsync -aP --delete $SRC root@$IP:$DATA done
保存退出~~
5)在服務端啟動該腳本,創建測試文件
[root@localhost ~]# ln -s /usr/local/inotify/bin/* /usr/sbin //創建軟連接
[root@localhost ~]# mkdir /test
[root@localhost ~]# sh -x rsync_inotify.sh
[root@localhost ~]# cd /test/
[root@localhost test]# touch test.txt
4
6)在客戶端查看是否同步,如有數據代表同步
5
實時同步成功~~~
PS:創建文件、刪除文件、移動文件(重命名)、訪問文件、修改文件都會被記錄
7)后臺運行此腳本
nohup sh rsync_inotify.sh &
注:日志會記錄到nohup.out文件
其他Linux發行版安裝方法可以參見:https://github.com/rvoicilas/inotify-tools/wiki#wiki-getting
四、inotifywait命令
Inotify一種強大的、細粒度的、異步文件系統監控機制,它滿足各種各樣的文件監控需要,可以監控文件系統的訪問屬性、讀寫屬性、權限屬性、刪除創建、移動等操作,也就是可以監控文件發生的一切變化。。
inotify-tools是一個C庫和一組命令行的工作提供Linux下inotify的簡單接口。inotify-tools安裝后會得到inotifywait和inotifywatch這兩條命令:
1)inotifywait命令可以用來收集有關文件訪問信息,Linux發行版一般沒有包括這個命令,需要安裝inotify-tools,這個命令還需要將inotify支持編譯入Linux內核,好在大多數Linux發行版都在內核中啟用了inotify。
2)inotifywatch命令用于收集關于被監視的文件系統的統計數據,包括每個 inotify 事件發生多少次。
開始之前需要檢測系統內核是否支持inotify:
使用uname -r命令檢查Linux內核,如果低于2.6.13,就需要重新編譯內核加入inotify的支持。
inotify相關參數
inotify定義了下列的接口參數,可以用來限制inotify消耗kernel memory的大小。由于這些參數都是內存參數,因此,可以根據應用需求,實時的調節其大小:
1) /proc/sys/fs/inotify/max_queued_evnets表示調用inotify_init時分配給inotify instance中可排隊的event的數目的大值,超出這個值的事件被丟棄,但會觸發IN_Q_OVERFLOW事件。
2)/proc/sys/fs/inotify/max_user_instances表示每一個real user id可創建的inotify instatnces的數量上限。
3)/proc/sys/fs/inotify/max_user_watches表示每個inotify instatnces可監控的大目錄數量。如果監控的文件數目巨大,需要根據情況,適當增加此值的大小。
inotifywait命令參數
-m是要持續監視變化。
-r使用遞歸形式監視目錄。
-q減少冗余信息,只打印出需要的信息。
-e指定要監視的事件列表。
--timefmt是指定時間的輸出格式。
--format指定文件變化的詳細信息。
可監聽的事件
分享名稱:在Linux上如何部署Rsync+inotify實時同步?
網站網址:http://m.newbst.com/news43/104343.html
成都網站建設公司_創新互聯,為您提供軟件開發、微信小程序、網站收錄、網站策劃、網站建設、網頁設計公司
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯
猜你還喜歡下面的內容