1. 程式人生 > >rsync + inotify 檔案同步功能

rsync + inotify 檔案同步功能

rsync同步服務與cp命令有些相似,都是拷貝資料。
cp只能複製:完全拷貝源到目標
rsync可以同步:增量拷貝,只傳輸變化過程中的資料
命令用法
rsync [選項…] 源目錄/ 目標目錄 #把源目錄同步到目標目錄
常見的選項: -n 測試同步過程,不做實際修改
–delete 刪除目標檔案多餘的文件
-a 歸檔模式,(保持原始檔的所有熟悉與目標檔案相同)
-v 顯示詳細操作資訊
-z 傳輸過程中啟用壓縮/解壓
建立一個目錄,並拷貝幾個檔案到其中
mkdir /dir1 &&mkdir /nsd01
cp /etc/passwd /etc/group /etc/fstab /dir1/ #給源目錄拷貝幾個檔案
在這裡插入圖片描述


然後執行rsync 同步命令 就能看到 將源目錄檔案拷貝到新的目錄中
我們再在原始檔中寫入新的內容時,我們在執行rsync命令就會發現只同步新的檔案
在這裡插入圖片描述
此時就會看到只同步1.txt檔案內容
0.1我們檔案內容改變時,也會同步到目標目錄
在這裡插入圖片描述
0.2 如果目標資料夾多了檔案,但是我們要保持原始檔與目標檔案一致時我們需要新增一個選項,–delete
rsync --delete -avz /dir1/ /stu01
在這裡插入圖片描述
會自動將目標的檔案的新檔案刪除,保持與源同步。
0.3 rsync+ssh遠端同步
#我在這裡演示下如何從我的虛擬機器 同步到我的雲主機
rsync --delete -avz /zhangfan/ [email protected]
:/test/
在這裡插入圖片描述
在來看看我的雲主機
在這裡插入圖片描述
已經同步成功 OK
0.4 如何實現 每天同步,寫入週期性計劃任務 crontab -e
*/10 * * * * rsync --delete -avz /opt [email protected]:/opt/
#每10分鐘同步一次

0.5 rsync + inotify 檔案同步功能
第一步 原始碼安裝 inotify
在這裡插入圖片描述
./configure
make && make install
inotifywait +[選項] + 目標資料夾 #有這個命令證明安裝成功
inotifywait的基本用法
-m 持續監控
-r 遞迴監控
-q 減少螢幕輸出
-e 指定監控的modify . move create delete attrib
inotifywait -mrq /root/zf001/
在這裡插入圖片描述


寫shell指令碼 將rsync 與inotifywait 連用

#!/bin/bash
while   inotifywait -rq /opt  &> /dev/null 
do
 rsync --delete -az  /opt/  [email protected]:/opt
done

然後檢視該目錄下的檔案,這是我的虛擬機器[在這裡插入圖片描述]
在這裡插入圖片描述
最後檢視我的雲主機

此處已經確認我的虛擬機器 opt目錄下的檔案已經完成和我的雲主機目錄正在同步
#需要注意的是 兩臺伺服器要設定ssh 無密碼登陸
ssh-keygen -t rsa
ssh-copy-id [email protected]