概述
1、rsync(Remote Sync遠程同步)
是一款開源的快速備份工具,可以在不同主機間鏡像同步數據,支持本地複製,或與其他SSH、rsync主機同步,rsync應用廣泛,大多數Linux都將其作爲默認組件已安裝。
2、組成
①發起端:負責發起rsync同步操作的客戶機
②備份源:負責響應來自客戶機rsync同步操作的服務器,可以是SSH備份源或rsync備份源
3、同步方式
①下行同步:備份源負責提供文檔的原始位置;發起端應對該位置有讀取權限
②上行同步:備份源負責提供文檔的目標位置;發起端應對該位置有寫入權限
4、inotify機制
①Linux內核從2.6.13開始提供inotify機制,可以監控文件系統的變動情況作出通知響應,如可以針對目錄或文件的變化及時作出響應
②使用rsync工具與inotify機制相結合,可實現觸發式實時同步
③inotify機制由內核提供,主要做本機監控,因此更適合上行同步
④輔助工具:inotify-tools
inotifywait:用於持續監控,實時輸出結果
inotifywatch:用於短期監控,任務完成後再出結果
實驗環境:
搭建兩臺WEB服務器以實現負載均衡,因此兩臺服務器的網站文檔內容必須相同,使用rsync進行遠程同步,需要結合inotify機制實現觸發式的上行同步,保持兩個站點內容一致。
服務器A:192.168.4.254,作爲rsync發起端,/var/www/html爲原始位置
服務器B:192.168.4.100,作爲遠程SSH服務器,/var/www/html爲目標位置
注:兩臺服務器都需要安裝配置Apache,請自行解決
一、配置SSH備份源(服務器B)
1、創建備份用戶rput,準備目錄/var/www/html
useradd rput
passwd rput
mkdir –p /var/www/html -----安裝Apache時也會自動創建此目錄
2、將目錄/var/www/html屬主改爲rput,並設置ACL允許用戶daemon寫入
chown -R rput:rput /var/www/html
setfacl -R -m user:daemon:rwx /var/www/html
setfacl -R -m default:user:daemon:rwx /var/www/html
getfacl /var/www/html
3、配置並啓用sshd服務,允許rput用戶登陸
vi /etc/ssh/sshd_config
allowusers rput
service sshd restart
二、使用rsync備份工具(服務器A)
1、創建備份用戶tom,創建目錄/var/www/html,並添加測試網頁文件
useradd tom
passwd tom
echo "welcome to benet." > /var/www/html/index.html
2、將目錄/var/www/html屬主改爲tom,並設置ACL允許用戶daemon寫入
chown -R tom:tom /var/www/html
setfacl -R -m user:daemon:rwx /var/www/html
setfacl -R -m default:user:daemon:rwx /var/www/html
getfacl /var/www/html
3、由tom用戶創建SSH密鑰對,並將密鑰短語設爲空,實現無交互登陸
su – tom
ssh-keygen -t rsa
4、將tom用戶公鑰分發給服務器B的rput用戶,並驗證登陸
ssh-copy-id [email protected]
注:①ssh-copy-id命令可以把本地的ssh公鑰文件安裝到遠程主機對應的賬戶下
②也可使用scp命令將公鑰文件拷貝至服務器,再導入到儲存密鑰的文件中
③例scp ~/.ssh/id_rsa.pub [email protected]:/tmp
cat /tmp/id_rsa.pub >> /home/rput/.ssh/authorized_keys
5、使用rsync做上行同步
rsync -az --delete /var/www/html/ [email protected]:/var/www/html/
6、在服務器B查看同步的情況
ls /var/www/html
注:rsync命令的用法
①基本格式:rsync [選項] 原始位置 目標位置
②常用選項:
-a:歸檔模式,遞歸併保留對象屬性,等同於 -rlptgoD
-v:顯示同步過程的詳細(verbose)信息
-z:在傳輸文件時進行壓縮(compress)
-H:保留硬連接文件
-r:遞歸模式,包含目錄及子目錄中所有文件
-l:對於符號鏈接文件仍然複製爲符號鏈接文件
-p:保留文件的權限標記
-t:保留文件的時間標記
-g:保留文件的屬組標記(僅超級用戶使用)
-o:保留文件的屬主標記(僅超級用戶使用)
-D:保留設備文件及其他特殊文件
--delete:刪除目標位置有而原始位置沒有的文件
--checksum:根據對象的校驗和來決定是否跳過文件
三、通過inotify機制實現實時同步(服務器A)
1、安裝inotify-tools軟件包,以便使用inotifywait、inotifywatch工具
tar zxf inotify-tools-3.14.tar.gz -C /usr/src/
cd /usr/src/inotify-tools-3.14/
./configure
make && make install
2、編寫腳本,根據inotifywait監控結果觸發rsync同步操作
su - tom -------切換爲備份用戶tom
vi rputsync.sh
chmod a+x rputsync.sh
注:inotifywait常用選項
-m 持續進行監控
-r 遞歸監控所有子對象
-q 簡化輸出信息
-e 指定要監控哪些事件類型,如modify、create、move、delete
3、執行腳本,修改/var/www/html目錄內容,驗證同步效果
su - tom ------必須以tom身份運行腳本
./rputsync.sh
cd /var/www/html
touch a b c
在目標位置(服務器B)查看同步的情況
ls /var/www/html
補充:配置rsync備份源
1、建立/etc/rsyncd.conf配置文件
vi /etc/rsyncd.conf
2、創建賬戶數據文件
vi /etc/rsyncd_users.db
backuper:123
chmod 600 /etc/rsyncd_users.db
3、啓動rsync服務程序
rsync –daemon
netstat -anptu | grep rsync
vi /etc/xinetd.d/rsync
disable = no
yum –y install xinetd
service xinetd start