1. 程式人生 > >Rsync+inotify 數據同步

Rsync+inotify 數據同步

linux rsync工具的使用

Rsync工具的使用

--------

rsync 端口873

rsync常用的命令選項:

-a:歸檔模式,相當於遞歸、保留權限等多個選項的組合

-v:顯示同步過程詳細信息

-z:傳輸過程中啟用壓縮

-A:保留文件的ACL屬性信息

-n:測試同步過程,不做實際修改

--delete:刪除目標文件夾內多余的文檔


---------------------------

本地同步(命令用法類似cp)

rsync -a --delete /date/www/ /data/bak_www/


遠程SSH同步(命令用法類似scp)

rsync -a --delete /data/www [email protected]

/* */:/data/bak_www/

————————————————————————————————————————————————————————————————————————



Rsync+Rsync

創建rsync配置文件rsyncd.conf

vim /etc/rsyncd.conf


[tools] //定義共享名

path =/data/www //rsync服務端數據目錄路徑

comment = Rsync Share Test //同步資源註釋

read only = yes //只讀

dont compress =*.gz *.bz2 *.tgz *.zip //同步時不再壓縮的文檔類型

auth users = zhangsan //執行數據同步的用戶名(多個用戶用,英文逗號隔開)

secrets file =/etc/rsync_user //指定賬號文件的路徑

timeout = 600 //設置超時時間

hosts allow = 192.168.1.119 //允許進行數據同步的客戶端IP地址,可以設置多個,用英文狀態下逗號隔開

hosts deny = 192.168.1.118 //禁止數據同步的客戶端IP地址,可以設置多個,用英文狀態下逗號隔開

log file = /var/log/rsync.log //日誌文件位置,啟動rsync後自動產生這個文件,無需提前創建

motd file = /etc/rsync.Motd //rsync啟動時歡迎信息頁面文件位置(文件內容自定義)

----------------------------

創建rsync賬號文件rsync_user

vim /etc/rsync_user

zhangsan:123456

//每行一個用戶名, 用戶名:密碼(註意權限)

---------------------------

chmod 600 /etc/rsync_user


客戶端

------

查看到服務端提供的資源(後面兩個::)

rsync 192.168.1.100::


使用zhangsan賬戶遠程同步(需要輸入密碼)

rsync -av --delete [email protected]::tools /data/bak


使用zhangsan賬戶非交互式同步(不需要輸入密碼)

rsync -av --delete --password-file=/etc/rsync_password [email protected]::tools /data/bak_www/


預先把密碼存放在/etc/rsync_password,這裏存放位置,可自由安排。

chmod 600 /etc/rsync_password (權限)


————————————————————————————————————————————————————————————————————————




inotify+Rsync


ssh-keygen

創建並部署SSH公鑰,實現免密碼驗證


ssh-copy-id [email protected]

拷貝到192.168.1.101上面

---------------------------------------------------------

下載inotify

編譯安裝

wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

tar xf inotify-tools-3.14.tar.gz ;cd inotify-tools-3.14

./configure --prefix=/usr/local/inotify && make && make install


創建個腳本,加入後臺運行.

vim /usr/local/inotify-3.14/inotify.sh

#!/bin/bash

#para

host01=192.168.1.100 #inotify-slave的ip地址

src=/data/apache-tomcat-9.0.0.M21/webapps #本地監控的目錄

dst=tools #inotify-slave的rsync服務的模塊名

user=rsync_backup #inotify-slave的rsync服務的虛擬用戶

rsync_passfile=/etc/rsync.password #本地調用rsync服務的密碼文件

inotify_home=/usr/local/inotify-3.14 #inotify的安裝目錄

#judge

if [ ! -e "$src" ] \

|| [ ! -e "${rsync_passfile}" ] \

|| [ ! -e "${inotify_home}/bin/inotifywait" ] \

|| [ ! -e "/usr/bin/rsync" ];

then

echo "Check File and Folder"

exit 9

fi

${inotify_home}/bin/inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f‘ -e close_write,delete,create,attrib $src \

| while read file

do

# rsync -avzP --delete --timeout=100 --password-file=${rsync_passfile} $src $user@$host01::$dst >/dev/null 2>&1

cd $src && rsync -aruz -R --delete ./ $user@$host01::$dst --password-file=${rsync_passfile} >/dev/null 2>&1

#cd /data/apache-tomcat-9.0.0.M21/webapps && rsync -aruz -R --delete ./ [email protected]::tools --password-file=/etc/rsync.password

done

exit 0

-------------------


###########inotify報錯error while loading shared libraries: libinotifytools.so.0: cannot open shared object fil########

系統找不到該庫

find . -name libinotifytools.so.0

把查找的文件路追加到 /etc/ld.so.conf

------------------------------------


Rsync+inotify 數據同步