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
– -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
#####################################################
遠程同步 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同步服務實驗講解