參數(shù) | 說明 | 默認值 |
---|---|---|
address | 在獨立運行時,用于指定的服務器運行的 IP 地址。由 xinetd 運行時將忽略此參數(shù),使用命令行上的 –address 選項替代。 | 本地所有IP |
port | 指定 rsync 守護進程監(jiān)聽的端口號。 由 xinetd 運行時將忽略此參數(shù),使用命令行上的–port 選項替代。 | 873 |
motd file | 指定一個消息文件,當客戶連接服務器時該文件的內(nèi)容顯示給客戶。 | 無 |
pid file | rsync 的守護進程將其 PID 寫入指定的文件。 | 無 |
log file | 指定 rsync 守護進程的日志文件,而不將日志發(fā)送給 syslog。 | 無 |
syslog facility | 指定 rsync 發(fā)送日志消息給 syslog 時的消息級別。 | daemon |
socket options | 指定自定義 TCP 選項。 | 無 |
模塊參數(shù)
模塊參數(shù)主要用于定義 rsync 服務器哪個目錄要被同步。模塊聲明的格式必須為 [module] 形式,這個名字就是在 rsync 客戶端看到的名字,類似于 Samba 服務器提供的共享名。而服務器真正同步的數(shù)據(jù)是通過 path 來指定的。可以根據(jù)自己的需要,來指定多個模塊,模塊中可以定義以下參數(shù):
a. 基本模塊參數(shù)
參數(shù) | 說明 | 默認值 |
---|---|---|
path | 指定當前模塊在 rsync 服務器上的同步路徑,該參數(shù)是必須指定的。 | 無 |
comment | 給模塊指定一個描述,該描述連同模塊名在客戶連接得到模塊列表時顯示給客戶。 | 無 |
b. 模塊控制參數(shù)
參數(shù) | 說明 | 默認值 |
---|---|---|
use chroot | 若為 true,則 rsync 在傳輸文件之前首先 chroot 到 path 參數(shù)所指定的目錄下。這樣做的原因是實現(xiàn)額外的安全防護,但是缺點是需要 root 權(quán)限,并且不能備份指向 path 外部的符號連接所指向的目錄文件。 | true |
uid | 指定該模塊以指定的 UID 傳輸文件。 | nobody |
gid | 指定該模塊以指定的 GID 傳輸文件。 | nobody |
max connections | 指定該模塊的最大并發(fā)連接數(shù)量以保護服務器,超過限制的連接請求將被告知隨后再試。 | 0(沒有限制) |
lock file | 指定支持 max connections 參數(shù)的鎖文件。 | /var/run/rsyncd.lock |
list | 指定當客戶請求列出可以使用的模塊列表時,該模塊是否應該被列出。如果設置該選項為 false,可以創(chuàng)建隱藏的模塊。 | true |
read only | 指定是否允許客戶上傳文件。若為 true 則不允許上傳;若為 false 并且服務器目錄也具有讀寫權(quán)限則允許上傳。 | true |
write only | 指定是否允許客戶下載文件。若為 true 則不允許下載;若為 false 并且服務器目錄也具有讀權(quán)限則允許下載。 | false |
ignore errors | 指定在 rsync 服務器上運行 delete 操作時是否忽略 I/O 錯誤。一般來說 rsync 在出現(xiàn) I/O 錯誤時將將跳過 –delete 操作,以防止因為暫時的資源不足或其它 I/O 錯誤導致的嚴重問題。 | true |
ignore nonreadable | 指定 rysnc 服務器完全忽略那些用戶沒有訪問權(quán)限的文件。這對于在需要備份的目錄中有些不應該被備份者獲得的文件時是有意義的。 | false |
timeout | 該選項可以覆蓋客戶指定的 IP 超時時間。從而確保 rsync 服務器不會永遠等待一個崩潰的客戶端。對于匿名 rsync 服務器來說,理想的數(shù)字是 600(單位為秒)。 | 0 (未限制) |
dont compress | 用來指定那些在傳輸之前不進行壓縮處理的文件。該選項可以定義一些不允許客戶對該模塊使用的命令選項列表。必須使用選項全名,而不能是簡稱。當發(fā)生拒絕某個選項的情況時,服務器將報告錯誤信息然后退出。例如,要防止使用壓縮,應該是:”dont compress = *”。 | *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz |
c. 模塊文件篩選參數(shù)
參數(shù) | 說明 | 默認值 |
---|---|---|
exclude | 指定多個由空格隔開的多個文件或目錄(相對路徑),并將其添加到 exclude 列表中。這等同于在客戶端命令中使用 –exclude 來指定模式。 | 空 |
exclude from | 指定一個包含 exclude 規(guī)則定義的文件名,服務器從該文件中讀取 exclude 列表定義。 | 空 |
include | 指定多個由空格隔開的多個文件或目錄(相對路徑),并將其添加到 include 列表中。這等同于在客戶端命令中使用 –include 來指定模式 。 | 空 |
include from | 指定一個包含 include 規(guī)則定義的文件名,服務器從該文件中讀取 include 列表定義。 | 空 |
d. 模塊用戶認證參數(shù)
參數(shù) | 說明 | 默認值 |
---|---|---|
auth users | 指定由空格或逗號分隔的用戶名列表,只有這些用戶才允許連接該模塊。這里的用戶和系統(tǒng)用戶沒有任何關(guān)系。用戶名和口令以明文方式存放在 secrets file 參數(shù)指定的文件中。 | (匿名方式) |
secrets file | 指定一個 rsync 認證口令文件。只有在 auth users 被定義時,該文件才起作用。 | 空 |
strict modes | 指定是否監(jiān)測口令文件的權(quán)限。若為 true 則口令文件只能被 rsync 服務器運行身份的用戶訪問,其他任何用戶不可以訪問該文件。 | true |
username:passwd
一般來說口令最好不要超過8個字符。若您只配置匿名訪問的 rsync 服務器,則無需設置上述參數(shù)。e. 模塊訪問控制參數(shù)
參數(shù) | 說明 | 默認值 |
---|---|---|
hosts allow | 用一個主機列表指定哪些主機客戶允許連接該模塊。不匹配主機列表的主機將被拒絕。 | * |
hosts deny | 用一個主機列表指定哪些主機客戶不允許連接該模塊。 | 空 |
客戶主機列表定義可以是以下形式:
單個IP地址。例如:192.168.0.1整個網(wǎng)段。例如:192.168.0.0/24,192.168.0.0/255.255.255.0可解析的單個主機名。例如:centos,centos.bsmart.cn域內(nèi)的所有主機。例如:*.bsmart.cn“*”則表示所有。多個列表項要用空格間隔。f. 模塊日志參數(shù)
參數(shù) | 說明 | 默認值 |
---|---|---|
transfer logging | 使 rsync 服務器將傳輸操作記錄到傳輸日志文件。 | false |
log format | 指定傳輸日志文件的字段。 | ”%o %h [%a] %m (%u) %f %l” |
設置了”log file”參數(shù)時,在日志每行的開始會添加”%t [%p]“。
五、rsync 服務器應用案例
5.1. 在服務器端TS-DEV上配置rsync 服務
a. 編輯配置文件
# vi /etc/rsyncd/rsyncd.conf
b. 建立/etc/rsyncd/rsyncd.secrets文件
# vim /etc/rsyncd/rsyncd.secrets
david:asdf #格式 用戶名:口令
china:jk #該用戶不要求是系統(tǒng)用戶
c. 為了密碼的安全性,我們把權(quán)限設為600
# chown root:root /etc/rsyncd/rsyncd.secrets
# chmod 600 /etc/rsyncd/rsyncd.secrets
d. 建立連接到服務器的客戶端看到的歡迎信息文件/etc/rsyncd/rsyncd.motd
# vim /etc/rsyncd/rsyncd.motd
+++++++++++++++++++++++++++
+ David Camp +
+++++++++++++++++++++++++++
e. 啟動rsync
# /etc/init.d/xinetd restart
f. 查看873端口是否起來
# netstat -an | grep 873
如果rsync啟動成功的話可以看到873端口已經(jīng)在監(jiān)聽了。
g. 服務器端文件詳細
5.2. 客戶端配置
a. 客戶端安裝rsync
# yum -y install rsync
b. 通過rsync客戶端來同步數(shù)據(jù)
場景一:
# rsync -avzP david@172.16.1.135::davidhome /tmp/david/
Password: 這里要輸入david的密碼,是服務器端提供的,在前面的例子中,我們用的是 asdf,輸入的密碼并不顯示出來;輸好后就回車;
注: 這個命令的意思就是說,用david 用戶登錄到服務器上,把davidhome數(shù)據(jù),同步到本地目錄/tmp/david/上。當然本地的目錄是可以你自己定義的,比如 dave也是可以的;當你在客戶端上,當前操作的目錄下沒有davidhome這個目錄時,系統(tǒng)會自動為你創(chuàng)建一個;當存在davidhome這個目錄中,你要注意它的寫權(quán)限。
說明:
-a 參數(shù),相當于-rlptgoD,-r 是遞歸 -l 是鏈接文件,意思是拷貝鏈接文件;-p 表示保持文件原有權(quán)限;-t 保持文件原有時間;-g 保持文件原有用戶組;-o 保持文件原有屬主;-D 相當于塊設備文件;
-z 傳輸時壓縮;
-P 傳輸進度;
-v 傳輸時的進度等信息,和-P有點關(guān)系,自己試試??梢钥次臋n;
場景二:
# rsync -avzP --delete david@172.16.1.135::davidhome /tmp/david/
這回我們引入一個 –delete 選項,表示客戶端上的數(shù)據(jù)要與服務器端完全一致,如果 /tmp/david/目錄中有服務器上不存在的文件,則刪除。最終目的是讓/tmp/david/目錄上的數(shù)據(jù)完全與服務器上保持一致;用的時候要小心點,最好不要把已經(jīng)有重要數(shù)所據(jù)的目錄,當做本地更新目錄,否則會把你的數(shù)據(jù)全部刪除;
場景三:
# rsync -avzP --delete --password-file=/tmp/rsync.password david@172.16.1.135::davidhome /tmp/david/
這次我們加了一個選項 –password-file=rsync.password ,這時當我們以david用戶登錄rsync服務器同步數(shù)據(jù)時,密碼將讀取 /tmp/rsync.password 這個文件。這個文件內(nèi)容只是david用戶的密碼。我們要如下做;
# touch /tmp/rsync.password
# chmod 600 /tmp/rsync.password
# echo "asdf"> /tmp/rsync.password
# rsync -avzP --delete --password-file=/tmp/rsync.password david@172.16.1.135::davidhome /tmp/david/
注: 這樣就不需要密碼了;其實這是比較重要的,因為服務器通過crond 計劃任務還是有必要的;
5.3. rsync 客戶端自動與服務器同步數(shù)據(jù)
編輯crontab
# crontab -e
加入如下代碼:
表示每天0點10分執(zhí)行后面的命令。
六、錯誤分析
rsync: opendir "." (in xxxxxxx) failed: Permission denied (13)
解決辦法:
1、將 selinux 對 rsync 的限制全部去掉:
# /usr/sbin/setsebool -P rsync_disable_trans 1
# service xinetd restart
2、狠一點,禁止整個 selinux :
# vim /etc/selinux/config
將其中的 SELINUX=enforcing 修改為 SELINUX=disabled
保存退出后,重啟機器。
至此,rsync服務器配置完畢。
七、參考
關(guān)于rsync 命令的使用,請參考:http://www.howtocn.org/rsync:use_rsync
關(guān)于rsync 服務的詳細說明,請參考:http://www.howtocn.org/rsync:use_rsync_server