企業中Linux系統如何通過rsync服務做資料同步
阿新 • • 發佈:2020-11-03
1. rsync服務介紹
rsync是一個遠端資料同步工具,可通過網路快速同步多臺主機間的檔案,也可以使用 rsync 同步本地硬碟中的不同目錄。rsync 在同步檔案時會檢查檔案之間是否有差異,它只同步存在差異或者不存在的檔案,即增量備份。
2. 環境介紹
此博文利用兩臺 Linux(centos) 主機,一臺作為客戶端,即應用型別伺服器,一臺作為服務端,即備份伺服器,使用rsync服務將客戶端的重要資料定時同步至備份伺服器,模擬企業生產環境進行介紹。
3. 部署安裝
服務端部署(備份伺服器)
步驟一:檢查是否安裝
[root@backup ~]# rpm -qa | greprsync #<==== 檢查確認已經安裝,若未安裝利用 yum install rsync -y 命令進行安裝 rsync-3.1.2-6.el7_6.1.x86_64
步驟二:編寫配置檔案
cp /etc/rsyncd.conf{,.bak} #<==== 備份原始配置檔案
echo ''> /etc/rsyncd.conf #<==== 清空檔案內容
vim /etc/rsyncd.conf
uid = rsync #----指定管理備份目錄的使用者 gid = rsync #----指定管理備份目錄的使用者組 port = 873 #----定義rsync備份服務的網路埠號 fake super = yes #---- 將rsync虛擬使用者偽裝成為一個超級管理員使用者 use chroot = no #----和安全相關的配置 max connections = 200 #----最大連線數 timeout = 300 #----超時時間(單位秒) pid file = /var/run/rsyncd.pid #----記錄程序號資訊 1、讓程式快速結束程序 2、判斷一個服務是否在執行 lock file = /var/run/rsync.lock #----鎖檔案 log file = /var/log/rsyncd.log #----記錄rsync服務的日誌檔案,用於排錯分析問題 ignore errors #----忽略傳輸中的簡單錯誤 read only = false #----指定備份目錄可讀可寫 list = false #----使客戶端可以檢視服務端的模組資訊 hosts allow = 172.16.1.0/24 #----允許傳輸備份資料的主機(白名單) hosts deny = 0.0.0.0/32 #----禁止傳輸資料備份的主機(黑名單) auth users = rsync #----指定認證使用者 secrets file = /etc/rsync.password #----指定認證使用者密碼檔案 使用者名稱稱:密碼資訊 [backup] #----模組資訊 comment = "backup dir by yunxuan" path = /backup #----模組中的配置引數 指定備份目錄
步驟三:搭建服務環境
建立rsync虛擬使用者、建立備份服務認證密碼檔案、建立備份目錄
[root@backup ~]# useradd -M -s /sbin/nologin rsync #<==== 建立虛擬使用者rsync [root@backup ~]# mkdir /backup #<==== 建立備份目錄 [root@backup ~]# chown -R rsync.rsync /backup/ #<==== 修改備份目錄訪問許可權 [root@backup ~]# ll -d /backup/ #<==== 檢視備份目錄屬性資訊 drwxr-xr-x. 2 rsync rsync 6 Nov 3 17:23 /backup/
[root@backup ~]# echo "rsync:123456" > /etc/rsync.password #<==== 建立備份服務認證密碼檔案 [root@backup ~]# chmod 600 /etc/rsync.password #<==== 修改備份服務認證密碼檔案許可權
[root@backup ~]# ll /etc/rsync.password #<==== 檢視備份服務認證密碼檔案屬性資訊
-rw-------. 1 root root 13 Nov 3 17:24 /etc/rsync.password
步驟四:啟動rsync應用
[root@backup ~]# systemctl start rsyncd [root@backup ~]# systemctl enable rsyncd Created symlink from /etc/systemd/system/multi-user.target.wants/rsyncd.service to /usr/lib/systemd/system/rsyncd.service. [root@backup ~]# systemctl status rsyncd ● rsyncd.service - fast remote file copy program daemon Loaded: loaded (/usr/lib/systemd/system/rsyncd.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2020-11-03 17:36:40 CST; 18s ago Main PID: 3651 (rsync) CGroup: /system.slice/rsyncd.service └─3651 /usr/bin/rsync --daemon --no-detach Nov 03 17:36:40 backup systemd[1]: Started fast remote file copy program daemon.
步驟五:待客戶端配置完成,進行測試資料同步功能
[root@backup ~]# ll /backup/ #<==== 檢查客戶端是否將hosts檔案備份至服務端/backup目錄 total 4 -rw-r--r--. 1 rsync rsync 158 Jun 7 2013 hosts [root@backup ~]#
客戶端部署(應用伺服器)
步驟一:檢查rsync軟體是否安裝
[root@backup ~]# rpm -qa | grep rsync #<==== 檢查確認已經安裝,若未安裝利用 yum install rsync -y 命令進行安裝 rsync-3.1.2-6.el7_6.1.x86_64
步驟二:客戶端建立密碼檔案(用於免互動同步資料)
[root@nfs01 ~]# echo "123456">/etc/rsync.password [root@nfs01 ~]# chmod 600 /etc/rsync.password [root@nfs01 ~]# ll /etc/rsync.password -rw-------. 1 root root 7 Nov 3 17:41 /etc/rsync.password [root@nfs01 ~]# cat /etc/rsync.password 123456
步驟三:測試資料同步功能
[root@nfs01 ~]# rsync -avz /etc/hosts rsync@172.16.1.211::backup --password-file=/etc/rsync.password #<==== 將客戶端hosts檔案備份至服務端 sending incremental file list hosts sent 140 bytes received 43 bytes 366.00 bytes/sec total size is 158 speedup is 0.86
4. rsync 同步命令語法介紹、常用引數和示例演示
rsync守護程序語法:
Access via rsync daemon
# 客戶端做拉操作,恢復資料 Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST] rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
# 客戶端做推操作,備份資料
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
常用引數:
-v | 顯示詳細的傳輸資訊 |
-a | 命令的歸檔引數,相當於(rtopgDl) |
-r | 遞迴引數 |
-t | 保持穩健屬性資訊中時間資訊(mtime)不變,修改時間 |
-o | 保持檔案的屬主資訊不變 |
-g | 保持檔案的屬組資訊不變 |
-p | 保持檔案的許可權資訊不變 |
-D | 保持裝置檔案資訊不變 |
-l | 保持連結檔案屬性不變 |
-L | 保持連結檔案資料資訊不變 |
-P | 顯示資料傳輸的進度資訊 |
--exclude=PATTERN | 排除指定資料不被傳輸 |
--exclude-from=file | 排除指定資料不被傳輸(批量排除) |
--bwlimit=RATE | 顯示傳輸的速率 |
--delete | 無差異同步資料 |
示例:
--delete 無差異同步資料,將客戶端/data目錄下的所有資料無差異的同步至服務端/backup目錄下
此引數在企業中慎用
# 當前客戶端資料 [root@nfs01 ~]# ll /data total 0 -rw-r--r--. 1 root root 0 Nov 3 18:52 01.txt -rw-r--r--. 1 root root 0 Nov 3 18:52 02.txt -rw-r--r--. 1 root root 0 Nov 3 18:52 03.txt -rw-r--r--. 1 root root 0 Nov 3 18:52 a.jpg -rw-r--r--. 1 root root 0 Nov 3 18:52 b.jpg drwxr-xr-x. 2 root root 6 Nov 3 18:52 test # 當前服務端資料 [root@backup ~]# ll /backup/ total 4 -rw-r--r--. 1 rsync rsync 158 Jun 7 2013 hosts # 客戶端執行同步命令 [root@nfs01 ~]# rsync -avz --delete /data/ rsync@172.16.1.211::backup --password-file=/etc/rsync.password sending incremental file list deleting hosts ./ 01.txt 02.txt 03.txt a.jpg b.jpg test/ sent 372 bytes received 139 bytes 1,022.00 bytes/sec total size is 0 speedup is 0.00 # 檢視服務端同步情況 [root@backup ~]# ll /backup/ total 0 -rw-r--r--. 1 rsync rsync 0 Nov 3 18:52 01.txt -rw-r--r--. 1 rsync rsync 0 Nov 3 18:52 02.txt -rw-r--r--. 1 rsync rsync 0 Nov 3 18:52 03.txt -rw-r--r--. 1 rsync rsync 0 Nov 3 18:52 a.jpg -rw-r--r--. 1 rsync rsync 0 Nov 3 18:52 b.jpg drwxr-xr-x. 2 rsync rsync 6 Nov 3 18:52 test
備份連結檔案,要使連結檔案資料資訊不失效,加 -L 引數生效
[root@nfs01 data]# ll total 4 lrwxrwxrwx. 1 root root 7 Nov 3 18:59 001_link.txt -> 001.txt -rw-r--r--. 1 root root 7 Nov 3 18:59 001.txt [root@nfs01 data]# rsync -avz -L /data/001_link.txt rsync@172.16.1.211::backup --password-file=/etc/rsync.password sending incremental file list 001_link.txt sent 105 bytes received 43 bytes 296.00 bytes/sec total size is 7 speedup is 0.05 [root@backup backup]# ll 001_link.txt -rw-r--r--. 1 rsync rsync 7 Nov 3 18:59 001_link.txt [root@backup backup]# cat 001_link.txt 123456