inotifywait rsync 實時同步指令碼

2021-09-25 12:32:49 字數 2701 閱讀 1360

相同伺服器我們時常需要相同的部署,這時就需要我們能夠實時的同步檔案。今天我就和大家分享乙個能夠實現自動遠端實時同步檔案的方法:

一、利用inotifywait對檔案系統事件實時監控, 觸發事件呼叫rsync遠端同步檔案至一台或多台伺服器

接下來說說我們需要使用到的工具:

1、rsync

乙個遠端資料同步工具,可通過lan/wan快速同步多台主機間的檔案。rsync使用所謂的「rsync演算法」來使本地和遠端兩個主機之間的檔案達到同步,這個演算法只傳送兩個檔案的不同部分,而不是每次都整份傳送,因此速度相當快。例子如下:

loop_rsync.sh

#!/bin/bash

from_dir="/home/datahandle/*"

to_dir="$home/workdir/datahandle"

while [ 0 -lt 1 ]; do

rsync -r $ $

[[ $# -eq 1 ]] && exit || sleep 2

done

2、inotifywaitt一種強大的、細粒度的、非同步檔案系統監控機制,它滿足各種各樣的檔案監控需要,可以監控檔案系統的訪問屬性、讀寫屬性、許可權屬性、刪除建立、移動等操作,也就是可以監控檔案發生的一切變化。。

3、實時同步ssh遠端金鑰登入的例子

由於遠端同步需要密碼驗證,我們通過公私鑰免密碼登陸遠端主機,從而實現遠端自動同步。

詳細例子請參考: 

應用場景

檔案監控可以配合rsync實現檔案自動同步,例如監聽某個目錄,當檔案變化時,使用rsync命令將變化的檔案同步。(可用於**自動發布)

安裝

cd inotify-tools-3.14

./configure

make

make install

安裝成功後在/usr/local/bin 下會有inotifywait 和 inotifywatch 命令。

inotifywait命令使用

監聽/usr/local/src 目錄:

/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %h:%m' --format '%t %w %f %e' -e modify,delete,create,attrib /usr/local/src

引數:

引數    說明

-m    持續監聽

-r    使用遞迴形式監視目錄

-q    減少冗餘資訊,只列印出需要的資訊

-e    指定要監視的事件,多個時間使用逗號隔開

--timefmt    時間格式

--format    監聽到的檔案變化的資訊

--timefmt 說明:

ymd分別表示年月日,h表示小時,m表示分鐘

--format 說明:

引數    說明

%w    表示發生事件的目錄

%f    表示發生事件的檔案

%e    表示發生的事件

%xe    事件以「x」分隔

%t    使用由–timefmt定義的時間格式

執行上面的命令之後,在監聽的目錄下建立乙個1.txt檔案,得到如下結果:

22/03/18 17:22 /usr/local/src/ 1.txt create

22/03/18 17:22 /usr/local/src/ 1.txt attrib

可監聽的事件有:引數    說明

access    訪問,讀取檔案。

modify    修改,檔案內容被修改。

attrib    屬性,檔案元資料被修改。

move    移動,對檔案進行移動操作。

create    建立,生成新檔案

open    開啟,對檔案進行開啟操作。

close    關閉,對檔案進行關閉操作。

delete    刪除,檔案被刪除。

問題

如果在使用過程**現

/usr/local/bin/inotifywait: error while loading shared libraries: libinotifytools.so.0: cannot open shared object file: no such file or directory

解決方案:

32位系統:ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib/libinotifytools.so.0

64位系統:ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib64/libinotifytools.so.0

參考: 

rsync inotify實時同步

inotify是一種強大的 細粒度的 非同步的檔案系統事件監控機制,linux核心從2.6.13起,加入了inotify支援,通過inotify可以監控檔案系統中新增 刪除,修改 移動等各種細微事件 資源準備 兩台centos7.2機器 一台rsync服務端 192.168.180.234 服務端配...

NFS inotify實時同步

inotify是一種檔案系統事件通告機制,能夠實時監控檔案系統下檔案的訪問 修改 刪除等各種變化情況並將其作為事件通告給使用者態應用程式。linux核心從2.6.13版本後已經整合了inotify的功能,使用者只需安裝inotify應用程式即可實現對檔案系統的監控。rpm qa grep rsync...

mysql 同步備份 mysql備份與同步指令碼

本節內容 用於mysql資料庫的備份與同步的shell指令碼。1,mysql同步指令碼 複製 示例 bin bash backup ad dbserver svr12232 to svr12234 sip 192.168.4.154 cd usr local yicha tools cnshop b...