Rsync同步過程當中遇到的常見問題


1、Rsync服務介紹

Rsync屬於一款實現全量及增量同步數據的軟件工具,適用於unix/linux/windows等多種操做系統平臺。
Rsync軟件能實現本地複製,遠程複製,或者遠程守護進程方式複製。它以其delta-transfer算法聞名,減小經過網絡數據發送數量,利用只發送源文件和目標文件之間的差別信息,從而實現數據的增量同步複製。linux

2、Rsync工做方式

  1. 本地數據備份方式
  2. 遠程傳輸數據方式
  3. 守護進程傳輸數據方式

以rsync守護進程方式實現爲主,經過man rsync幫助,查看用法。算法

#拉取數據的命令參數用法
Pull:rsync [OPTION...] [USER@]HOST::SRC... [DEST]
      rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
參數解釋:
      [USER@]HOST::       --- 指定遠程鏈接的認證用戶
      SRC                 --- 指定相應的模塊信息
      [DEST]              --- 將遠程數據保存到本地的路徑信息

#推送數據的命令參數用法
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
      rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
參數解釋:
      [USER@]HOST::       --- 指定遠程鏈接的認證用戶
      SRC                 --- 指定本地要進行推送的數據信息
      [DEST]              --- 遠程進行保存數據的模塊信息

3、守護進程部署流程

3.1 服務端部署

1)主機環境檢查vim

[root@backup ~]# cat /etc/redhat-release 
CentOS release 6.8 (Final)
[root@backup ~]# uname -r
2.6.32-642.el6.x86_64
[root@backup ~]# uname -m
x86_64

2)檢查軟件是否安裝windows

[root@backup ~]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64

3)編輯配置文件
配置文件默認不存在,須要在/etc目錄下建立rsyncd.conf。
參數用法:man rsyncd.conf。網絡

#created by user at 2018
###rsyncd.conf start###
uid = www                                 #管理備份目錄的用戶(須要在linux系統下建立虛擬用戶)
gid = www                                 #管理備份目錄的用戶組
use chroot = no                           #保護模式,通常內網使用,能夠選擇禁用no
max connections = 200                     #能夠同時處理的併發鏈接數
timeout = 300                             #鏈接超時,在指定時間內沒有數據傳輸,自動釋放鏈接
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log    
ignore errors                             #備份傳輸過程當中,忽略一些I/O產生的傳輸錯誤
read only = false                         #對備份目錄開啓讀寫權限,默認爲true,只讀模式
list = false                              #禁止經過客戶端查詢服務端配置的模塊信息
hosts allow = 172.16.1.0/24               #容許指定網段或主機來訪問備份目錄
auth users = rsync_backup                 #認證用戶(虛擬認證用戶),不是真實存在的,非linux系統管理的虛擬用戶
secrets file = /etc/rsync.pass            #設置免交互方式用戶認證文件
[data]                                    #指定備份目錄的模塊名稱
comment = "sersync dir by myself"
path = /data                              #以絕對路徑方式,設置備份目錄路徑信息

4)建立備份目錄管理用戶併發

[root@backup ~]# useradd www -M -s /sbin/nologin

5)建立備份目錄socket

[root@backup ~]# mkdir /data
[root@backup ~]# chown -R www.www /data

6)建立用戶認證文件tcp

[root@backup ~]# echo 'rsync_backup:123456' >>/etc/rsync.pass
[root@backup ~]# chmod 600 /etc/rsync.pass

追加內容"認證用戶:密碼"到認證文件中,在追加前先切換爲英文輸入法,行尾不添加空格或tab等內容,防止認證出錯。
能夠經過vim編輯器尾行模式,輸入:set list檢查,或者使用命令cat -A /etc/rsync.pass檢查。編輯器

7)啓動Rsync服務工具

[root@backup ~]# rsync --daemon
[root@backup ~]# netstat -lntp|grep rsync
tcp        0      0 0.0.0.0:873              0.0.0.0:*                LISTEN        12805/rsync         
tcp        0      0 :::873                   :::*                     LISTEN        12805/rsync
[root@backup ~]# echo '/usr/bin/rsync --daemon' >>/etc/rc.local

若是rsync服務默認端口873被其餘服務佔用,使用rsync --daemon --port=PORT命令啓動測試,更多幫助查看rsync --daemon --help。

3.2 客戶端部署

1)主機環境檢查

[root@nfs ~]# cat /etc/redhat-release 
CentOS release 6.8 (Final)
[root@nfs ~]# uname -r
2.6.32-642.el6.x86_64
[root@nfs ~]# uname -m
x86_64

2)檢查軟件是否安裝

[root@nfs ~]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64

3)建立認證文件

[root@nfs ~]# echo '123456' >>/etc/rsync.pass
[root@nfs ~]# chmod 600 /etc/rsync.pass

客戶端認證文件只須要添加密碼便可,認證用戶在客戶端經過rsync命令進行設置。

4)進行數據備份測試

#客戶端備份數據
[root@nfs ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::data --password-file=/etc/rsync.pass 
sending incremental file list
hosts

sent 180 bytes  received 27 bytes  414.00 bytes/sec
total size is 294  speedup is 1.42

#服務端檢查備份數據
[root@backup ~]# ll /data/hosts
-rw-r--r-- 1 www www 294 Nov  6  2018 /data/hosts

4、Rsync備份過程當中常見的錯誤問題總結

1. 客戶端執行rsync命令發生錯誤問題

  • 錯誤提示
    ERROR: The remote path must start with a module name not a /
  • 演示過程
    [root@nfs ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::/data --password-file=/etc/rsync.pass
    ERROR: The remote path must start with a module name not a /
    rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]
  • 問題解決
    rsync命令語法錯誤,::/data錯誤的語法,data爲模塊,而不是目錄,正確寫法::data。

2. 配置了免交互方式備份數據,客戶端依舊須要輸入密碼問題

  • 錯誤提示
    password file must not be other-accessible
  • 演示過程
    [root@nfs ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::data --password-file=/etc/rsync.pass
    password file must not be other-accessible
    continuing without password file
    Password:
    sending incremental file list

    sent 26 bytes received 8 bytes 9.71 bytes/sec
    total size is 294 speedup is 8.65
  • 問題解決
    Rsync客戶端的認證文件不是600權限。

3. Rsync服務端防火牆問題

  • 錯誤提示
    No route to host
  • 演示過程
    [root@nfs ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::data --password-file=/etc/rsync.pass
    rsync: failed to connect to 172.16.1.41: No route to host (113)
    rsync error: error in socket IO (code 10) at clientserver.c(124) [sender=3.0.6]
  • 問題解決
    Rsync服務端開啓了防火牆功能,關閉便可。

4. Rsync用戶認證失敗問題

  • 錯誤提示
    ERROR: auth failed on module data
  • 演示過程
    [root@nfs ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::data --password-file=/etc/rsync.pass
    @ERROR: auth failed on module data
    rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]
  • 問題解決
    1.客戶端rsync命令認證用戶沒寫對,或者認證文件密碼所在行的結尾有多餘的空格或tab(cat -A /etc/rsync.pass檢查)
    2.客戶端認證文件/etc/rsync.pass配置錯誤,不須要rsync_backup認證用戶,只須要設置認證密碼便可。
    3.服務端認證文件中rsync_backup:123456後有空行或tab,須要注意。
    4.服務端認證文件/etc/rsync.pass權限不是600。
    5.服務端rsyncd.conf配置文件中,secrets file參數設置的認證文件名稱與系統中建立的認證文件名稱不一致。
    6.服務端rsyncd.conf配置文件中,uid和gid設置的管理用戶與備份目錄管理用戶不一致。

5. Rsync服務權限阻止問題

  • 錯誤提示
    Permission denied
  • 演示過程
    [root@nfs ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::data --password-file=/etc/rsync.pass
    sending incremental file list
    hosts
    rsync: mkstemp ".hosts.dGfSQ1" (in data) failed: Permission denied (13)

    sent 180 bytes received 27 bytes 414.00 bytes/sec
    total size is 294 speedup is 1.42
    rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]
  • 問題解決
    1.服務端/etc/rsyncd.conf文件中,uid和gid設置的管理用戶與備份目錄的屬主和屬組不一致。
    2.備份目錄的文件權限不是755。

6. Rsync服務備份目錄異常問題

  • 錯誤提示
    ERROR: chdir failed
  • 演示過程
    [root@nfs ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::data --password-file=/etc/rsync.pass
    @ERROR: chdir failed
    rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]
  • 問題解決
    服務端/etc/rsyncd.conf文件中,備份目錄模塊path路徑設置存在問題,檢查目錄是否存在,或者path路徑是否填寫正確。

7. Rsync服務備份模塊異常問題

  • 錯誤提示
    ERROR: Unknown module 'data'
  • 演示過程
    [root@nfs ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::data --password-file=/etc/rsync.pass
    @ERROR: Unknown module 'data'
    rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]
  • 問題解決
    1.客戶端rsync命令執行時,指定的模塊名稱不正確。
    2.服務端/etc/rsyncd.conf文件中,指定的備份目錄的模塊名稱不正確。

8.Rsync無效的用戶問題

  • 錯誤提示
    ERROR: invalid uid mine
  • 演示過程
    [root@nfs ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::data --password-file=/etc/rsync.pass
    @ERROR: invalid uid mine
    rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]
  • 問題解決
    服務端管理備份目錄的虛擬用戶不存在,經過「useradd 用戶 -M -s /sbin/nologin」進行建立便可。

9. Rsync服務未開啓問題

  • 錯誤提示
    Connection refused
  • 演示過程
    [root@nfs ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::data --password-file=/etc/rsync.pass
    rsync: failed to connect to 172.16.1.41: Connection refused (111)
    rsync error: error in socket IO (code 10) at clientserver.c(124) [sender=3.0.6]
  • 問題解決
    1.檢查服務:ps -ef|grep [r]sync
    2.開啓服務:rsync --daemon

10. Rsync服務鏈接超時問題

  • 錯誤提示
    Connection timed out
  • 演示過程
    [root@nfs ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.51::data --password-file=/etc/rsync.pass
    rsync: failed to connect to 172.16.1.51: Connection timed out (110)
    rsync error: error in socket IO (code 10) at clientserver.c(124) [sender=3.0.6]
  • 問題解決
    檢查目標主機IP地址,ping目標主機檢查鏈路是否正常。
    [root@nfs ~]# ping 172.16.1.41
    PING 172.16.1.41 (172.16.1.41) 56(84) bytes of data.
    64 bytes from 172.16.1.41: icmp_seq=1 ttl=64 time=0.438 ms
    64 bytes from 172.16.1.41: icmp_seq=2 ttl=64 time=0.543 ms

11. Rsync服務鏈接慢的問題

  • 日誌分析
    [root@backup ~]# tailf /var/log/rsyncd.log
    2019/06/27 12:49:35 [22251] params.c:Parameter() - Ignoring badly formed line in configuration file: ignore errors
    --- 未對rsync客戶端主機在服務端進行host解析,致使反向解析域名,使得鏈接緩慢。
    2019/06/27 12:49:55 [22251] name lookup failed for 172.16.1.31: Temporary failure in name resolution
    2019/06/27 12:49:55 [22251] connect from UNKNOWN (172.16.1.31)
    2019/06/27 12:49:55 [22251] rsync to data/ from rsync_backup@unknown (172.16.1.31)
    2019/06/27 12:49:55 [22251] receiving file list
    2019/06/27 12:49:56 [22251] sent 76 bytes received 81 bytes total size 294
  • 問題解決
    [root@backup ~]# echo -e '172.16.1.31\tnfs' >>/etc/hosts
    [root@backup ~]# tailf /var/log/rsyncd.log
    2019/06/27 12:55:06 [22268] params.c:Parameter() - Ignoring badly formed line in configuration file: ignore errors
    --- 能夠查看到服務端對nfs主機進行了正確的反向解析過程。 2019/06/27 12:55:06 [22268] connect from nfs (172.16.1.31) 2019/06/27 12:55:06 [22268] rsync to data/ from rsync_backup@nfs (172.16.1.31) 2019/06/27 12:55:06 [22268] receiving file list 2019/06/27 12:55:06 [22268] sent 76 bytes received 81 bytes total size 294
相關文章
相關標籤/搜索