1. 程式人生 > >rsync同步服務實驗講解

rsync同步服務實驗講解

監視 type 顯示 client 功能 mnt sync 拷貝 步驟

rsync 同步服務

復制: 源所有數據
同步: 只傳輸變化數據

? 命令用法
– rsync [選項...] 源目錄 目標目錄

? 本地同步
– rsync [選項...] 本地目錄1 本地目錄2
– rsync [選項...] 本地目錄1/ 本地目錄2

[root@svr7 ~]# mkdir /todir
[root@svr7 ~]# rsync -a /boot /todir //同步整個文件夾
[root@svr7 ~]# rsync -a /boot/ /todir/ //只同步目錄下的數據

? rsync操作選項
– -n:測試同步過程,不做實際修改
– --delete:刪除目標文件夾內多余的文檔
– -a:歸檔模式,相當於-rlptgoD

– -v:顯示詳細操作信息
– -z:傳輸過程中啟用壓縮/解壓

##########################################
[root@svr7 /]# rm -rf /opt/
[root@svr7 /]# rm -rf /mnt/

[root@svr7 /]# cp /etc/passwd /opt
[root@svr7 /]# touch /opt/1.txt
[root@svr7 /]# ls /opt/
[root@svr7 /]# ls /mnt/

[root@svr7 /]# rsync -avz /opt/ /mnt
[root@svr7 /]# ls /opt/
[root@svr7 /]# ls /mnt/

[root@svr7 /]# touch /opt/2.txt

[root@svr7 /]# rsync -avz /opt/ /mnt
[root@svr7 /]# ls /opt/
[root@svr7 /]# ls /mnt/
######################################################
--delete : 刪除目標路徑比源目錄多余的文檔

[root@svr7 /]# rsync -avz --delete /opt/ /mnt
[root@svr7 /]# ls /opt/ /mnt

[root@svr7 /]# touch /mnt/nsd.txt
[root@svr7 /]# ls /opt/ /mnt

[root@svr7 /]# rsync -avz --delete /opt/ /mnt

[root@svr7 /]# ls /opt/ /mnt
#####################################################
遠程同步 rsync+ssh
? 服務端要求
– 開啟sshd服務,並提供授權的用戶、密碼

命令格式:
rsync 選項 /路徑/目錄/ 用戶名@對方IP地址:/路徑/對方目錄
rsync 選項 用戶名@對方IP地址:/路徑/對方目錄/ /路徑/目錄/
虛擬機A:

rsync -avz --delete /opt/ [email protected]:/mnt/

虛擬機B:

ls /mnt

######################################################
實時的遠程同步

虛擬機A:

rsync -avz --delete /opt/ [email protected]:/mnt/

虛擬機B:

ls /mnt

一 公鑰 私鑰 實現的虛擬機A與虛擬機B 驗證同步 無需密碼

1.虛擬機A生成公鑰 私鑰
[root@svr7 /]# ssh-keygen #一路回車
[root@svr7 /]# ls /root/.ssh/

[root@svr7 /]# ssh-copy-id [email protected] #拷貝公鑰

[root@svr7 /]# ssh [email protected]

[root@pc207 ~]# exit #退出到B

二 安裝一個軟件,實時監控一個目錄內容,有變化會報告

步驟1:將該inotify-tools-3.13.tar.gz上傳 虛擬機A
真機上操作:

scp /root/桌面/tools/inotify-tools-3.13.tar.gz [email protected]:/root/

步驟2:安裝gcc和make開發工具
[root@svr7 /]# yum -y install gcc make
步驟3:tar解包,釋放源代碼至指定目錄

tar -xf /root/inotify-tools-3.13.tar.gz -C(大寫) /opt/

ls /opt/

步驟4: ./configure 配置,指定安裝目錄/功能模塊等選項

cd /opt/inotify-tools-3.13/

   # ./configure  

步驟5:make 編譯,生成可執行的二進制程序文件

make

步驟6:make install 安裝,將編譯好的文件復制到安裝目錄

make install

# which inotifywait 
# ls /usr/local/bin/inotifywait

#############################################
inotifywait監控
? 基本用法
– inotifywait [選項] 目標文件夾

? 常用命令選項
– -m,持續監控(捕獲一個事件後不退出)
– -r,遞歸監控、包括子目錄及文件
– -q,減少屏幕輸出信息
– -e,指定監視的 modify、move、create、delete、attrib事件類別

inotifywait------> while

rsync -avz --delete /opt/ [email protected]:/mnt/

最容易形成死循環

while [條件判斷]
do
循環執行語句
done

[root@svr7 /]# vim /root/1.sh
#!/bin/bash
i=0

while [ $i -le 10 ]
do
i=expr $i + 1
echo $i
done

[root@svr7 /]# chmod +x /root/1.sh
[root@svr7 /]# /root/1.sh

#################################################

三 書寫實時同步的腳本

[root@svr7 /]# vim /root/rsync.sh

#!/bin/bash
dir=/opt/
while inotifywait -rqq $dir
do
rsync -az --delete $dir [email protected]:/mnt/
done

[root@svr7 /]# chmod +x /root/rsync.sh

[root@svr7 /]# /root/rsync.sh

######################################################
DNS的分離解析(視圖解析)
? 當收到客戶機的DNS查詢請求的時候
– 能夠區分客戶機的來源地址
– 為不同類別的客戶機提供不同的解析結果(IP地址)

不同的客戶端區解析同一個域名,解析結果不同

前提: 客戶端的分類要合理 , 所有的客戶端都要找到自己的分類
一旦使用view功能,所有的zone都必須在view中

view "haha" {
match-clients { 192.168.4.7; }
zone "12306.cn" {
......12306.cn.zone;
}; };

view "xixi" {
match-clients { any; }
zone "12306.cn" {
...... 12306.cn.abc
}; };

客戶端192.168.4.207---->www.tedu.cn----->1.1.1.1
客戶端非192.168.4.207---->www.tedu.cn----->2.2.2.2

options {
directory "/var/named";
};
view "haha" {
match-clients { 192.168.4.207; };
zone "tedu.cn" IN {
type master;
file "tedu.cn.haha";
};
};
view "xixi" {
match-clients { any; };
zone "tedu.cn" IN {
type master;
file "tedu.cn.xixi";
};
};

– 根據view調用的順序,“匹配即停止”

rsync同步服務實驗講解