相同伺服器我們時常需要相同的部署,這時就需要我們能夠實時的同步檔案。今天我就和大家分享乙個能夠實現自動遠端實時同步檔案的方法:
一、利用inotifywait
對檔案系統事件實時監控, 觸發事件呼叫rsync
遠端同步檔案至一台或多台伺服器
接下來說說我們需要使用到的工具:
1、rsync
乙個遠端資料同步工具,可通過lan/wan快速同步多台主機間的檔案。rsync使用所謂的「rsync演算法」來使本地和遠端兩個主機之間的檔案達到同步,這個演算法只傳送兩個檔案的不同部分,而不是每次都整份傳送,因此速度相當快。例子如下:
loop_rsync.sh
2、inotifywaitt一種強大的、細粒度的、非同步檔案系統監控機制,它滿足各種各樣的檔案監控需要,可以監控檔案系統的訪問屬性、讀寫屬性、許可權屬性、刪除建立、移動等操作,也就是可以監控檔案發生的一切變化。。#!/bin/bashfrom_dir="/home/datahandle/*"
to_dir="$home/workdir/datahandle"
while [ 0 -lt 1 ]; do
rsync -r $ $
[[ $# -eq 1 ]] && exit || sleep 2
done
3、實時同步ssh遠端金鑰登入的例子
由於遠端同步需要密碼驗證,我們通過公私鑰免密碼登陸遠端主機,從而實現遠端自動同步。
詳細例子請參考:
應用場景
檔案監控可以配合rsync實現檔案自動同步,例如監聽某個目錄,當檔案變化時,使用rsync命令將變化的檔案同步。(可用於**自動發布)
安裝
cd inotify-tools-3.14安裝成功後在/usr/local/bin 下會有inotifywait 和 inotifywatch 命令。./configure
make
make install
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...