1. 程式人生 > 實用技巧 >rsync實現遠端同步

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

4.3、環境說明