Rsync學習之旅中

rsync配置文件詳解

配置文件內容說明

man rsyncd.conf

全局參數html

rsyncd.conf參數 參數說明
uid=rsync 運行rsync守護進程的用戶。
gid=rsync 運行rsync用戶組(用戶所在的組)
use chroot=no 若是爲true,daemon會在客戶端傳輸文件前「chroot to the path」。這是一種安全配置,由於咱們大多數都在內網,因此不配也不要緊
max connections=200 設置最大鏈接數,默認0,意思無限制,負值爲關閉這個模塊
strict modes=yes 是否檢查口令文件的權限
port=873 默認端口873
timeout=400 默認爲0,表示no timeout,建議300-600(5-10分鐘)
pid file rsync daemon啓動後將其進程pid寫入此文件。若是這個文件存在,rsync不會覆蓋該文件,而是會終止
lock file 指定lock文件用來支持「max connections」參數,使得總鏈接數不會超過限制
log file 不設或者設置錯誤,rsync會使用rsyslog輸出相關日誌信息
motd file 「motd file」參數用來指定一個消息文件,當客戶鏈接服務器時該文件的內容顯示給客戶,默認沒有motd文件

模塊參數vim

rsyncd.conf參數 參數說明
ignore errors 忽略無關的I/O錯誤
read only=false 指定客戶端是否能夠上傳文件,默認對全部模塊爲true
list=false 是否容許客戶端能夠查看可用模塊列表,默認爲能夠
hosts allow 指定能夠聯繫的客戶端主機名或和ip地址或地址段,默認狀況沒有此參數,即均可以鏈接
hosts deny 指定不能夠聯繫的客戶端主機名或ip地址或地址段,默認狀況沒有此參數,即均可以鏈接
auth users 指定以空格或逗號分隔的用戶可使用哪些模塊,用戶不須要在本地系統中存在。默認爲全部用戶無密碼訪問
secrets file 指定用戶名和密碼存放的文件,格式;用戶名;密碼,密碼不超過8位
[backup] 這裏就是模塊名稱,需用中括號擴起來,起名稱沒有特殊要求,但最好是有意義的名稱,便於之後維護
comment 模塊註釋信息
path 這個模塊中,daemon使用的文件系統或目錄,目錄的權限要注意和配置文件中的權限一致,不然會遇到讀寫的問題

定義變量信息實現免密鑰交互

添加環境變量安全

export RSYNC_PASSWORD=vicodona123

測試服務器

[root@mico ~]# export RSYNC_PASSWORD=vicodona123
[root@mico ~]# rsync -azvP /root/practices/tmp/1.txt rsync_backup@47.107.108.121::backup 
sending incremental file list

sent 48 bytes  received 20 bytes  136.00 bytes/sec
total size is 0  speedup is 0.00

守護進程多模塊功能配置

第一步:編寫配置信息建立多模塊網絡

[root@vicodona ~]# vim /etc/rsyncd.conf
......
[micodata]
comment = "micodata dir by vicodona"
path = /backup/micodata

[micobackup]
comment = "micobackup dir by vicodona"
path = /backup/micobackup

第二步:建立多模塊指定的目錄socket

[root@vicodona xinetd.d]# mkdir /backup/mico{data,backup} -p
[root@vicodona xinetd.d]# chown rsync.rsync /backup/mico{data,backup}

第三步:利用rsync客戶端進行測試tcp

[root@mico ~]# rsync -azv /root/practices/tmp/ rsync_backup@47.107.108.121::backup --password-file=/etc/rsync.passwd
sending incremental file list
./
1.txt

sent 107 bytes  received 46 bytes  306.00 bytes/sec
total size is 0  speedup is 0.00

說明測試

rsyncd.conf配置文件中,添加多模塊信息,能夠不用重啓rsync服務,即時生效~
全局變量參數針對全部模塊生效;局部變量參數只針對指定模塊生效
read only參數默認配置爲ture,即爲只讀模式
全局變量發生變化,不用重啓rsync服務;局部變量發生變化,須要重啓rsync服務ui

【說明】不管是全局變量發生變化,仍是局部變量發生變化,都建議重啓rsync服務使配置生效this

守護進程的排除功能實踐

排除的方式

  • --exclude=要配置的目錄或文件名稱
  • --exclude-from=要排除多個目錄或文件彙總文件名稱
    +在配置文件中進行修改,指定要排除的信息

--exclude 排除測試

第一步:,建立模擬測試環境

[root@mico data]# mkdir {a..d}
[root@mico data]# touch {a..d}/{1..3}.txt
[root@mico data]# tree
.
├── a
│   ├── 1.txt
│   ├── 2.txt
│   └── 3.txt
├── b
│   ├── 1.txt
│   ├── 2.txt
│   └── 3.txt
├── c
│   ├── 1.txt
│   ├── 2.txt
│   └── 3.txt
└── d
    ├── 1.txt
    ├── 2.txt
    └── 3.txt

4 directories, 12 files

第二步:利用--exclude 參數測試排除功能
需求:不要a目錄中的3.txt 也不要b、c目錄

[root@mico data]# rsync -avz /root/practices/data/ --exclude=a/3.txt --exclude=b --exclude=c rsync_backup@47.107.108.121::micodata
sending incremental file list
./
a/
a/1.txt
a/2.txt
d/
d/1.txt
d/2.txt
d/3.txt

sent 372 bytes  received 134 bytes  1,012.00 bytes/sec
total size is 0  speedup is 0.00

精簡方式排除

[root@mico data]# rsync -avz /root/practices/data/ --exclude=a/3.txt  --exclude={b,c} rsync_backup@47.107.108.121::micodata
sending incremental file list
./
a/
a/1.txt
a/2.txt
d/
d/1.txt
d/2.txt
d/3.txt

sent 372 bytes  received 134 bytes  1,012.00 bytes/sec
total size is 0  speedup is 0.00

利用--exclude-from方式進行排除

第一步:建立模擬測試環境

[root@mico data]# mkdir {a..d}
[root@mico data]# touch {a..d}/{1..3}.txt

第二步:進行排除

# 將須要排除的文件寫入delete.txt文件
[root@mico data]#  vim delete.txt
a/1.txt
b/2.txt
c/3.txt
[root@mico data]# rsync -avz /root/practices/data/ --exclude-from=/root/practices/data/delete.txt rsync_backup@47.107.108.121::micodata
sending incremental file list
./
delete.txt
a/
a/2.txt
a/3.txt
b/
b/1.txt
b/3.txt
c/
c/1.txt
c/2.txt
d/
d/1.txt
d/2.txt
d/3.txt

sent 716 bytes  received 241 bytes  638.00 bytes/sec
total size is 26  speedup is 0.03

說明:

  1. 排除文件中,須要利用相對路徑指定排除信息(不能利用絕對路徑)
  2. 相對路徑指的是相對同步的目錄信息而言,是對rsync -avz /data/ 後面的data目錄進行相對

在配置文件中修改要排除的文件

第一步:編寫修改服務端配置文件

vim /etc/rsyncd.conf
[nfsdata]
comment = "micodata dir by vicodona"
path = /backup/micodata
exclude=a/3.txt b c

第二步:重啓rsync服務

[root@vicodona micodata]# systemctl restart rsyncd 
[root@vicodona micodata]# rsync --daemon

第三步:進行測試

[root@mico data]# rsync -avz /root/practices/data/  rsync_backup@47.107.108.121::micodata
sending incremental file list
./
delete.txt
ERROR: daemon refused to receive file "a/3.txt"
ERROR: daemon refused to receive directory "b"
*** Skipping any contents from this failed directory ***
ERROR: daemon refused to receive directory "c"
*** Skipping any contents from this failed directory ***
a/
a/1.txt
a/2.txt
d/
d/1.txt
d/2.txt
d/3.txt

sent 617 bytes  received 435 bytes  701.33 bytes/sec
total size is 26  speedup is 0.02
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2]

守護進程來建立備份目錄

經過客戶端命令建立服務端備份目錄中子目錄

# 推送/root/practices/data/a/delete.txt 文件到服務器 /backup/sda 目錄
[root@mico practices]# rsync -avzP /root/practices/data/delete.txt rsync_backup@47.107.108.121::backup/sda
sending incremental file list
delete.txt
             26 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/1)

sent 116 bytes  received 43 bytes  318.00 bytes/sec
total size is 26  speedup is 0.16

查看同步結果

[root@vicodona backup]# ll sda/
total 4
-rw-r--r-- 1 rsync rsync 26 Jul 15 16:06 delete.txt

說明:

a 目標目錄名稱後要加上 "/", 表示建立目錄,不然變爲修改傳輸文件名稱了
b 利用客戶端建立服務備份子目錄時,只能建立一級子目錄。

守護進程的訪問控制配置

第一步:在服務端配置文件,編寫白名單策略或黑名單策略(只能取其一)

[root@vicodona backup]# cat /etc/rsyncd.conf 
hosts allow = 47.107.108.0/24
# hosts deny = 0.0.0.0/32

關於訪問控制說明:

  1. 白名單和黑名單同時存在時,默認控制策略爲不匹配的傳輸數據信息所有放行
  2. 白名單單一存在時,默認控制策略爲不匹配的傳輸數據信息所有禁止
  3. 黑名單單一存在時,默認控制策略爲不匹配的傳輸數據信息所有放行

守護進程無差別同步配置

什麼是無差別

  • 推模式:我有什麼,你就有什麼;我沒有,你也不能有
  • 拉模式:你有什麼,我就有什麼;你沒有,我也不能有
    總結:服務端客戶端數據徹底一致(如出一轍)

實現無差別同步的方法

第一步: 建實驗環境

[root@mico practices]# ll  data/
總用量 20
drwxr-xr-x 2 root root 4096 7月  15 15:42 a
drwxr-xr-x 2 root root 4096 7月  15 15:42 b
drwxr-xr-x 2 root root 4096 7月  15 15:42 c
drwxr-xr-x 2 root root 4096 7月  15 15:42 d
-rw-r--r-- 1 root root   26 7月  15 16:06 delete.txt

第二步:進行第一次數據同步

[root@mico practices]# rsync -avz --delete /root/practices/data/ rsync_backup@47.107.108.121::backup/micodata/
sending incremental file list
./
delete.txt
a/
a/1.txt
a/2.txt
a/3.txt
b/
b/1.txt
b/2.txt
b/3.txt
c/
c/1.txt
c/2.txt
c/3.txt
d/
d/1.txt
d/2.txt
d/3.txt

sent 879 bytes  received 298 bytes  2,354.00 bytes/sec
total size is 26  speedup is 0.02

第三步:刪除指定目錄,並添加指定文件,測試無差別功能

# 刪除客戶端中的 a/ 目錄,再進行無差別傳輸
[root@mico data]# rm -rf a/
[root@mico data]# rsync -avz --delete /root/practices/data/ rsync_backup@47.107.108.121::backup/micodata/
Password: 
sending incremental file list
deleting a/3.txt
deleting a/2.txt
deleting a/1.txt
deleting a/
./

sent 300 bytes  received 69 bytes  82.00 bytes/sec
total size is 26  speedup is 0.07

第四步:查看服務端的數據同步狀況

[root@mico data]# ll
總用量 16
drwxr-xr-x 2 root root 4096 7月  15 15:42 b
drwxr-xr-x 2 root root 4096 7月  15 15:42 c
drwxr-xr-x 2 root root 4096 7月  15 15:42 d
-rw-r--r-- 1 root root   26 7月  15 16:06 delete.txt

能夠看見,a目錄下的數據已經同步刪除

【注意】無差別同步方法對應用

實現存儲數據與備份數據徹底一致(慎用)

rsync -avz --delete  /data/ rsync_backup@47.107.108.121::backup /

快速刪除大文件數據

1.mkdir /null      --建立出一個空目錄。
 2.rsync -avz --delete /null/ /bigdata/
  # 刪除效率高於 rm -rf /bigdata

守護進程的列表功能配置

第一步:在服務端配置文件中開啓list列表功能

[root@vicodona ~]# vim /etc/rsyncd.conf
list = true

第二步:客戶端查看服務端模塊信息

[root@vicodona ~]# systemctl stop rsyncd
[root@vicodona ~]# rsync --daemon

第三步:客戶端查看服務端模塊信息

[root@mico data]# rsync  rsync_backup@47.107.108.121::
backup                    "backup dir by vicodona"
micodata                 "micodata dir by  vicodona"
micobackup            "micobackup dir by vicodona"

爲了提高備份服務器安全性,建議關閉list列表功能

服務端常見問題

問題一

@ERROR: chroot failed
rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]

【緣由】服務器端的目錄不存在或無權限,建立目錄並修正權限可解決問題。

問題二

@ERROR: auth failed on module tee
rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]

【緣由】服務器端該模塊(tee)須要驗證用戶名密碼,但客戶端沒有提供正確的用戶名密碼,認證失敗。
提供正確的用戶名密碼解決此問題。

問題三

@ERROR: Unknown module ‘tee_nonexists’
rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]

【緣由】服務器不存在指定模塊。提供正確的模塊名或在服務器端修改爲你要的模塊以解決問題。

問題四

password file must not be other-accessible
continuing without password file
Password:

【解決】這是由於rsyncd.pwd rsyncd.secrets的權限不對,應該設置爲600。如:chmod 600 rsyncd.pwd

問題五

rsync: failed to connect to 218.107.243.2: No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(104) [receiver=2.6.9]

【解決】對方沒開機、防火牆阻擋、經過的網絡上有防火牆阻擋,都有可能。關閉防火牆,其實就是把tcp udp的873端口打開。

問題六

rsync error: error starting client-server protocol (code 5) at main.c(1524) [Receiver=3.0.7]

【解決】/etc/rsyncd.conf配置文件內容有錯誤。請正確覈對配置文件。

問題七

rsync: chown "" failed: Invalid argument (22)

【解決】權限沒法複製。去掉同步權限的參數便可。(這種狀況多見於Linux向Windows的時候)

問題八:

@ERROR: daemon security issue -- contact admin
rsync error: error starting client-server protocol (code 5) at main.c(1530) [sender=3.0.6]

【緣由】
同步的目錄裏面有軟鏈接文件,須要服務器端的/etc/rsyncd.conf打開use chroot = yes。掠過軟鏈接文件。

問題九:

ERROR: module is read only
rsync error: syntax or usage error (code 1) at main.c(747) [receiver=2.6.8]
rsync: connection unexpectedly closed (4 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(600) [sender=3.0.6]

【解決】 提示打開了read only,將配置文件 read only = no

問題十:

cat /var/log/rsyncd.log
2011/12/14 11:58:37 [22377] name lookup failed for XX.XX.XX.XX: Name or service not known
2011/12/14 11:58:37 [22377] connect from UNKNOWN (XX.XX.XX.XX)
2011/12/14 11:58:37 [22377] rsync to html/ from unknown (XX.XX.XX.XX)

【解決】須要在服務端這臺機上上的/etc/hosts裏面添加客戶端機的ip和機器名

問題十一:

[root@Dell-R710 ~]# rsync -artuz -R --delete ./ 192.168.1.233::gex
rsync: failed to connect to 61.145.118.206: Connection refused (111)
rsync error: error in socket IO (code 10) at clientserver.c(124) [sender=3.0.6]

【解決】
1、查看防火牆
2、查看服務端是否開啓守護進程

ps ax|grep rsync
rsync --daemon --config=/etc/rsyncd.conf

客戶端常見問題

問題一

rsync -auzv --progress --password-file=/etc/rsync.pas root@192.168.133.128::backup /home/
rsync: could not open password file "/etc/rsync.pas": No such file or directory (2)
Password: 
@ERROR: auth failed on module backup
rsync error: error starting client-server protocol (code 5) at main.c(1506) [Receiver=3.0.7]

【說明】遇到這個問題:client端沒有設置/etc/rsync.pas這個文件,而在使用rsync命令的時候,加了這個參數--
password-file=/etc/rsync.pas

問題二

rsync -auzv --progress --password-file=/etc/rsync.pas root@192.168.133.128::backup /home/
@ERROR: auth failed on module backup
rsync error: error starting client-server protocol (code 5) at main.c(1506) [Receiver=3.0.7]

【說明】遇到這個問題:client端已經設置/etc/rsync.pas這個文件,裏面也設置了密碼111111,和服務器一致,可是
服務器段設置有錯誤,服務器端應該設置/etc/rsync.pas ,裏面內容root:111111 ,這裏登錄名不可缺乏

問題三

rsync -auzv --progress --password-file=/etc/rsync.pas root@192.168.133.128::backup /home/
@ERROR: chdir failed
rsync error: error starting client-server protocol (code 5) at main.c(1506) [Receiver=3.0.7]

【說明】遇到這個問題,是由於服務器端的/home/backup 其中backup這個目錄並無設置,因此提示:chdir failed

問題四:

rsync: write failed on "/home/backup2010/wensong": No space left on device (28)
rsync error: error in file IO (code 11) at receiver.c(302) [receiver=3.0.7]
rsync: connection unexpectedly closed (2721 bytes received so far) [generator]
rsync error: error in rsync protocol data stream (code 12) at io.c(601) [generator=3.0.7]

【說明】磁盤空間不夠,因此沒法操做。
能夠經過df /home/backup2010 來查看可用空間和已用空間

問題五:網絡收集問題

一、權限問題
相似以下的提示:rsync: opendir "/kexue" (in dtsChannel) failed: Permission denied (13)注意查看同步的目錄權限是否爲755
二、time out

rsync: failed to connect to 203.100.192.66: Connection timed out (110)
rsync error: error in socket IO (code 10) at clientserver.c(124) [receiver=3.0.5]

【說明】檢查服務器的端口netstat –tunlp,遠程telnet測試。

三、服務未啓動

rsync: failed to connect to 10.10.10.170: Connection refused (111)
rsync error: error in socket IO (code 10) at clientserver.c(124) [receiver=3.0.5]

【說明】啓動服務:rsync --daemon --config=/etc/rsyncd.conf

四、磁盤空間滿

rsync: recv_generator: mkdir "/teacherclubBackup/rsync……" failed: No space left on device (28)
*** Skipping any contents from this failed directory ***

五、Ctrl+C或者大量文件

rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at rsync.c(544) [receiver=3.0.5]
rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at rsync.c(544) [generator=3.0.5]

六、xnetid啓動

rsync: read error: Connection reset by peer (104)
rsync error: error in rsync protocol data stream (code 12) at io.c(759) [receiver=3.0.5]

查看rsync日誌

rsync: unable to open configuration file "/etc/rsyncd.conf": No such file or directory

xnetid查找的配置文件位置默認是/etc下,根據具體狀況建立軟連接。例如:

ln -s /etc/rsyncd/rsyncd.conf /etc/rsyncd.conf

或者更改指定默認的配置文件路徑,在/etc/xinetd.d/rsync配置文件中

相關文章
相關標籤/搜索