中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

在Linux上如何部署Rsync+inotify實時同步?

2021-03-05    分類: 網(wǎng)站建設

在企業(yè)日常web應用中,某些特殊的數(shù)據(jù)需要要求保持跟服務器端實時同步,那我們該如何來配置呢?如何來實現(xiàn)呢?這里可以采用rsync+inotify來實現(xiàn)需求。

一、Inotify簡介

Inotify 是一個 Linux特性,它監(jiān)控文件系統(tǒng)操作,比如讀取、寫入和創(chuàng)建。Inotify 反應靈敏,用法非常簡單,并且比 cron 任務的繁忙輪詢高效得多。

Inotify,它是在內(nèi)核 2.6.13 版本中引入的一個新功能,它為用戶態(tài)監(jiān)視文件系統(tǒng)的變化提供了強大的支持,允許監(jiān)控程序打開一個獨立文件描述符,并針對事件集監(jiān)控一個或者多個文件,例如打開、關閉、移動/重命名、刪除、創(chuàng)建或者改變屬性。

在inotify 的前身是 dnotify。由于 dnotify 的局限性太大,加之用戶始終都希望用到更好的產(chǎn)品。因此,inotify 順理成章的取代了 dnotify。

Rsync安裝完畢后,需要安裝inotify文件檢查軟件。同時為了同步的時候不需要輸入密碼,這樣可以使用ssh免密鑰方式進行同步。

二、Rsync認證方式-兩種方式

rsync-daemon

ssh

注意:在使用rsync時,同步端和被同步端都必須安裝rsync程序。

1)rsync-daemon認證

在rsync-daemon認證方式下,默認監(jiān)聽tcp的873端口

在rsync-daemon認證下,rsync可以把密碼寫入到一個文件中。

注意:被同步端的rsync必須啟動,配置文件。同步端可以不起動服務,但必須有這個應用。

2)ssh認證

通過ssh隧道進行傳輸,類似于scp工具,同步操作不在局限于rsync中定義的同步文件夾,并且雙方只要安裝rsync,也不要雙方啟動rsync。

Rsync安裝配置參考我另一篇文章:

CentOS6.9配置安裝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免密鑰認證可以參考我另一篇文章:

SSH免密鑰認證部署實戰(zhàn)

4)編寫腳本

vim rsync_inotify.sh,內(nèi)容如下

#!/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)在服務端啟動該腳本,創(chuàng)建測試文件

[root@localhost ~]# ln -s /usr/local/inotify/bin/* /usr/sbin //創(chuàng)建軟連接

[root@localhost ~]# mkdir /test

[root@localhost ~]# sh -x rsync_inotify.sh

[root@localhost ~]# cd /test/

[root@localhost test]# touch test.txt

4

6)在客戶端查看是否同步,如有數(shù)據(jù)代表同步

5

實時同步成功~~~

PS:創(chuàng)建文件、刪除文件、移動文件(重命名)、訪問文件、修改文件都會被記錄

7)后臺運行此腳本

nohup sh rsync_inotify.sh &

注:日志會記錄到nohup.out文件

其他Linux發(fā)行版安裝方法可以參見:https://github.com/rvoicilas/inotify-tools/wiki#wiki-getting

四、inotifywait命令

Inotify一種強大的、細粒度的、異步文件系統(tǒng)監(jiān)控機制,它滿足各種各樣的文件監(jiān)控需要,可以監(jiān)控文件系統(tǒng)的訪問屬性、讀寫屬性、權限屬性、刪除創(chuàng)建、移動等操作,也就是可以監(jiān)控文件發(fā)生的一切變化。。

inotify-tools是一個C庫和一組命令行的工作提供Linux下inotify的簡單接口。inotify-tools安裝后會得到inotifywait和inotifywatch這兩條命令:

1)inotifywait命令可以用來收集有關文件訪問信息,Linux發(fā)行版一般沒有包括這個命令,需要安裝inotify-tools,這個命令還需要將inotify支持編譯入Linux內(nèi)核,好在大多數(shù)Linux發(fā)行版都在內(nèi)核中啟用了inotify。

2)inotifywatch命令用于收集關于被監(jiān)視的文件系統(tǒng)的統(tǒng)計數(shù)據(jù),包括每個 inotify 事件發(fā)生多少次。

開始之前需要檢測系統(tǒng)內(nèi)核是否支持inotify:

使用uname -r命令檢查Linux內(nèi)核,如果低于2.6.13,就需要重新編譯內(nèi)核加入inotify的支持。

inotify相關參數(shù)

inotify定義了下列的接口參數(shù),可以用來限制inotify消耗kernel memory的大小。由于這些參數(shù)都是內(nèi)存參數(shù),因此,可以根據(jù)應用需求,實時的調節(jié)其大小:

1) /proc/sys/fs/inotify/max_queued_evnets表示調用inotify_init時分配給inotify instance中可排隊的event的數(shù)目的大值,超出這個值的事件被丟棄,但會觸發(fā)IN_Q_OVERFLOW事件。

2)/proc/sys/fs/inotify/max_user_instances表示每一個real user id可創(chuàng)建的inotify instatnces的數(shù)量上限。

3)/proc/sys/fs/inotify/max_user_watches表示每個inotify instatnces可監(jiān)控的大目錄數(shù)量。如果監(jiān)控的文件數(shù)目巨大,需要根據(jù)情況,適當增加此值的大小。

inotifywait命令參數(shù)

-m是要持續(xù)監(jiān)視變化。

-r使用遞歸形式監(jiān)視目錄。

-q減少冗余信息,只打印出需要的信息。

-e指定要監(jiān)視的事件列表。

--timefmt是指定時間的輸出格式。

--format指定文件變化的詳細信息。

可監(jiān)聽的事件


分享名稱:在Linux上如何部署Rsync+inotify實時同步?
網(wǎng)站網(wǎng)址:http://m.rwnh.cn/news43/104343.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、微信小程序、網(wǎng)站收錄網(wǎng)站策劃、網(wǎng)站建設、網(wǎng)頁設計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

广德县| 昌吉市| 项城市| 大理市| 吴堡县| 汉沽区| 双辽市| 苍梧县| 汝城县| 界首市| 大关县| 保康县| 大荔县| 金乡县| 清镇市| 仁怀市| 张家口市| 金门县| 泗水县| 宜兰市| 定襄县| 罗江县| 泾阳县| 成安县| 沛县| 湖口县| 丹寨县| 平顺县| 大姚县| 同江市| 日土县| 岑溪市| 固原市| 榕江县| 潞西市| 米林县| 韶关市| 张掖市| 仁化县| 东港市| 上思县|