rsync實現遠端同步
摘要
rsync命令是一個遠端資料同步工具,可通過LAN/WAN快速同步多臺主機間的檔案。rsync使用所謂的“rsync演算法”來使本地和遠端兩個主機之間的檔案達到同步,這個演算法只傳送兩個檔案的不同部分,而不是每次都整份傳送,因此速度相當快。 rsync是一個功能非常強大的工具,其命令也有很多功能特色選項,我們下面就對它的選項一一進行分析說明。
一、配置rsync源伺服器
1.1、關於rsync
1.1.1、一款快速增量備份工具
1.1.2、Remote Sync,遠端同步
1.1.3、支援本地複製,或者與其他SSH、rsync主機同步
1.1.4、官方網站:http://rsync.samba.org
1.2、rsync同步源
指備份操作的遠端伺服器,也稱為備份源
1.3、基本思路
1.3.1、建立rsyncd.conf配置檔案、獨立的賬戶檔案
1.3.2、啟用rsync的--daemon模式
1.4、應用示例
1.4.1、使用者backuper,允許下行同步
1.4.2、操作的目錄為/var/www/html
1.5、配置檔案rsync.conf
1.5.1、需手動建立,語法類似於Samba配置
1.5.2、認證配置auth users、secrets file,不加則為匿名
1.6、rsync賬戶檔案
1.6.1、採用“使用者名稱:密碼”的記錄格式,每行一個使用者記錄
1.6.2、獨立的賬戶資料,不依賴於系統賬號
1.7、啟用rsync服務
通過--daemon獨自提供服務
二、使用rsync備份工具
2.1、rsync命令的用法
1 語法
2 rsync [選項] 原始位置 目標位置
3
4 常用選項
5 -a: 歸檔模式,遞歸併保留物件屬性,等同於-rlptgoD
6 -v: 顯示同步過程的詳細(verbose)資訊
7 -z: 在傳輸檔案時進行壓縮(compress)
8 -H: 保留硬連線檔案
9 -A: 保留ACL屬性資訊
10 -p: 保留檔案的許可權標記
11 -t: 保留檔案的時間標記
12 -g: 保留檔案的屬組標記
13 -o: 保留檔案的屬主標記
14 -delete: 刪除目標位置有而原始位置沒有的檔案
15 -checksum: 根據物件的校驗和來決定是否跳過檔案
2.2、配置源的兩種表示方法
1 格式1
2 使用者名稱@主機地址::共享模組名
3
4 格式2
5 rsync://使用者名稱@主機地址/共享模組名
2.3、rsync源的免互動處理
使用 --password-file= 密碼檔案
三、rsync遠端同步部署
3.1、環境說明
3.2、配置rsync源伺服器A
①檢查rsync是否安裝
1 [root@rsync ~]# rpm -q rsync
2 rsync-3.0.9-18.el7.x86_64
②修改配置檔案
1 [root@rsync ~]# vi /etc/rsyncd.conf
2 uid = nobody
3 gid = nobody
4 use chroot = yes #禁錮在宿主目錄中
5 address = 20.0.0.10 #監聽地址
6 port 873 #埠號
7 pid file = /var/run/rsyncd.pid #程序檔案位置
8 log file = /var/log/rsyncd.log #日誌檔案位置
9 hosts allow = 20.0.0.0/24 #允許地址範圍
10 dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 #不再壓縮這幾種格式的檔案
11 [wwwroot]
12 path = /var/www/html #同步的目錄
13 comment = www.xuhao.com
14 read only = yes #只讀
15 auth users = backuper
16 secrets file = /etc/rsyncd_users.db #使用者密碼存放位置
③建立backuper使用者的密碼檔案
1 [root@rsync ~]# vi /etc/rsyncd_users.db
2 backuper:123456
④給密碼檔案設定執行許可權
1 [root@rsync ~]# chmod 600 /etc/rsyncd_users.db
⑤啟動rsync
1 [root@rsync ~]# rsync --daemon
2 [root@rsync ~]# netstat -antp |grep rsync
3 tcp 0 0 20.0.0.10:873 0.0.0.0:* LISTEN 14461/rsync
⑥安裝httpd,有一個/var/www/html的共享目錄,也可以自己建立
1 [root@rsync ~]# yum -y install httpd
2 [root@rsync ~]# echo "this is test web" > /var/www/html/index.html
3.3、客戶機伺服器B測試
①格式一
1 [root@client ~]# rsync -avz backuper@20.0.0.10::wwwroot /opt
2 Password:
3 receiving incremental file list
4 ./
5 index.html
6
7 sent 83 bytes received 172 bytes 56.67 bytes/sec
8 total size is 17 speedup is 0.07
9 [root@client ~]# cat /opt/index.html #檢視是否成功
10 this is test web
②格式二
1 刪除同步的檔案再測試
2 [root@client ~]# rm -rf /opt/index.html
3 [root@client ~]# cat /opt/index.html
4 cat: /opt/index.html: 沒有那個檔案或目錄
5
6 同步
7 [root@client ~]# rsync -avz rsync://[email protected]/wwwroot /opt
8 Password:
9 receiving incremental file list
10 ./
11 index.html
12
13 sent 83 bytes received 172 bytes 56.67 bytes/sec
14 total size is 17 speedup is 0.07
15 [root@client ~]# cat /opt/index.html
16 this is test web
③免密方式登入
1 建立免密登入檔案
2 [root@client ~]# vi /etc/server.pass
3 [root@client ~]# chmod 600 /etc/server.pass
4 [root@client ~]# rm -rf /opt/index.html
5 [root@client ~]# rsync -avz --delete --password-file=/etc/server.pass backuper@20.0.0.10::wwwroot /opt
6 receiving incremental file list
7 deleting rh/
8 ./
9 index.html
10
11 sent 83 bytes received 172 bytes 72.86 bytes/sec
12 total size is 17 speedup is 0.07
13 [root@client ~]# cat /opt/index.html
14 this is test web
四、rsync實時同步
4.1、rsync實時同步
4.1.1、定期同步的不足
①執行備份的時間固定,延遲明顯、實時性差
②當同步源長期不變化時,密集的定期任務是不必要的
4.1.2、實時同步的優點
①一旦同步源出現變化,立即啟動備份
②只要同步源無變化,則不執行備份
4.2、關於inotify
Linux核心的inotify機制
①從版本2.6.13開始提供
②可以從監控檔案系統的變動情況,並做出通知響應
③輔助軟體:inotify-tools