您好,登錄后才能下訂單哦!
一、了解rsync;
1、 rsync是一款類unix增量備份工具,可以實現快速的鏡像同步。
2、 rsync的特點:
1) 同步整個目錄(遞歸同步)樹
2) 能保持文件的屬性(權限、時間、軟硬鏈接)
3) 快速:首次同步時完全復制,再次同步只同步修改部分,且傳輸是壓縮的。
4) 安全:可以調用ssh協議加密傳輸
5) 支持匿名的站點同步,實現公共資源共享。
3、 rsync工作原理:
1) rsync的架構:C/S;角色分為同步源(備份源)、發起端。
發起端:發起rsync請求的。
同步端:相應rsync請求的。
2) 同步的方向:
上行同步:數據在發起端,本地登陸用戶對數據必須有讀取權限,遠程用戶必須對目錄有寫的權限
下行同步:數據在同步源,本地登陸用戶對目錄必須有寫入權限,遠程用戶必須對數據有讀的權限
二、rsync的基本使用
1、 基本語法:
本地同步:rsync [選項] 數據 目標目錄
遠程上行同步: rsync [選項] 數據 用戶@IP:/目標目錄
遠程下行同步: rsync [選項] 用戶@IP:/數據/ 目標目錄
2、 常用的選項:
-avzH ##a歸檔并保留屬性,v顯示詳細信息,z壓縮,H保留硬鏈接
--delete ##刪除目標目錄有但源數據中沒有的文件
3、 注意事項
1) 源數據加“/“ 表示同步目錄的內容;不加”/“表示同步目錄本身及其內容。
2) --delete選項經常用來刪除大文件,速度很快。
4、 遠程同步:推薦使用SSH的方式,即安全又方便。
1) 創建用戶(同時在發起端和同步源上完成)
2) Setfacl設置權限,保證rsync的權限和遠程程序權限
3) 配置ssh的密鑰隊登陸實現rsync無密碼執行
4) 編寫腳本和計劃任務,完成定時的同步
三、rsync+inotify自動同步
1、 了解inotify:linux內核提供文件系統變化監控并通知的機制,通過inotify—tool工具進行管理。
2、 調整內核參數:
max_queue_events:監控隊列大小
max_user_instances:最多監控實例數
max_user_watches:每個實例最多監控文件數
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
3、 inotify-wait命令的語法:
inotifwait -mrq -e modify,create,move,delete,attrib 目錄 選項:-m持續監控、r遞歸、q簡化輸出,-e指定監控事件
4. 編寫腳本并設置后臺開機運行
[lu01@localhost bin]$ cat rsync_ inotify.sh
#!/bin/bash
##by www.linuxfan.cn 2016-11-25
DIR=/var/www/html/
RSYNC="rsync -azH --delete $DIR ru01@192.168.100.151:$DIR"
INOTIFY="inotifywait -mrq -e modify,move,create,attrib,delete $DIR"
$INOTIFY |while read DIRECTORY EVENT FILE;do
$RSYNC
done
/home/lu01/bin/rsync_inotify.sh & ##后臺運行
注:rsync+inotify只在上行同步使用
案例:下載
備份源操作:
mkdir /opt/data
touch /opt/data/{1..9}.txt
useradd r_get
echo 123123 |passwd --stdin r_get
rpm -qa rsync ##確認已經安裝rsync軟件
netstat -uptln |grep 22
確認r_get用戶對/opt/data有讀權限
發起端操作:
rsync -avzH r_get@192.168.100.151:/opt/data/ /tmp ##下載
rsync -avzH r_get@192.168.100.151:/opt/data /tmp ##對比差異
rsync -avzH r_get@192.168.100.151:/opt/data/ /tmp --delete ##保證數據一致,下行同步以同步源為依據
案例:上傳
備份源操作:
mkdir /opt/data_bak
useradd r_put
echo 123123 |passwd --stdin r_put
setfacl -m u:r_put:rwx /opt/data_bak ##確保用戶對目標目錄有寫入權限
getfacl /opt/data_bak
確保rsync和sshd正常
發起端操作:
mkdir /data
touch /data/{1..9}.avi
rsync -avzH /data r_put@192.168.100.151:/opt/data_bak
rsync -avzH /data/ r_put@192.168.100.151:/opt/data_bak
rsync -avzH /data/ r_put@192.168.100.151:/opt/data_bak --delete
在備份源上驗證結果。
案例:ssh密鑰對認證后rsync同步
ssh-keygen -t rsa
ssh-copy-id r_get@192.168.100.151 ##給下載用戶上傳公鑰匙
ssh-copy-id r_put@192.168.100.151
ssh r_get@192.168.100.151 ##登錄驗證,r_put同理
執行rssync同步驗證:
vi /root/bin/rsync.sh
#!/bin/bash
rsync -avzH /data/ r_put@192.168.100.151:/opt/data_bak --delete
rsync -avzH r_get@192.168.100.151:/opt/data/ /tmp --delete
grep rsync /var/spool/cron/root
if [ $? -ne 0 ];then
echo "30 0 * * 6 /root/bin/rsync.sh &>/var/log/rsync.log" >/var/spool/cron/root
:wq
chmod +x /root/bin/rsync.sh
2.inotify+rsync實時同步:上行同步
1)安裝inotify-tools
tar zxvf inotify-tools-*.tar.gz -C /usr/src/
cd /usr/src/inotify-tools-*/
./configure &&make &&amake install
ls /usr/local/bin/inotify*
2)inotify的使用:
vi /etc/sysctl.conf
fs.inotify.max_queued_envents = 16384 ##監控事件隊列數
fs.inotify.max_user_instances = 1024 ##監控實例數
fs.inotify.max_user_watches = 1048576 ##監控的文件數量
:wq
sysctl -p
inotifywait -mrq -e modify,create,attrib,move,delete /root/data ##-m持續監控,r遞歸目錄,q簡化輸出,-e指定監控事件:modify修改、create創建、attrib權限修改、move移動、delete刪除;在其他終端操作文件,查看變化
vi rsync_inotify.sh ##實時同步腳本
#!/bin/bash
RSYNC="rsync -avzH /root/data/ r_put@192.168.100.151:/opt/data_bak/ --delete"
INT_CMD="inotifywait -mrq -e modify,create,move,delete,attrib /root/data/"
$INT_CMD |while read DIRECOTRY EVENT FILE;do
$RSYNC
done
:wq
chmod +x rsync_inotify.sh
rsync_inotify.sh & ##啟動腳本
測試驗證。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。