Rsync+inotify 數據同步
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]
————————————————————————————————————————————————————————————————————————
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 數據同步