一、檢查rsync 是否已經安裝php
[root@test home]# rpm -qa|grep rsynchtml
若已經安裝,則使用rpm -e 命令卸載。linux
[root@test home]#rpm -e file.rpmcentos
二、到http://pkgs.repoforge.org/rsync/安全
下載相應版本的rpm包服務器
三、更新rsync.rpm包和安裝併發
[root@test home]#rpm -Uvh /home/tools/rsync-3.1.1-1.el5.rfx.i386.rpmsocket
[root@test home]#rpm -ivh /home/tools/rsync-3.1.1-1.el5.rfx.i386.rpmtcp
四、配置rsync server測試
service rsync { disable = no socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID }
六、配置文件
rsync的主要有如下三個配置文件rsyncd.conf(主配置文件)、rsyncd.secrets(密碼文件)、rsyncd.motd(rysnc服務器信息)
服務器配置文件(/etc/rsyncd.conf),該文件默認不存在,請建立它。
具體步驟以下:
[root@test etc]#touch /etc/rsyncd.conf #建立rsyncd.conf,這是rsync服務器的配置文件。
[root@test etc]#touch /etc/rsyncd/rsyncd.secrets #建立rsyncd.secrets ,這是用戶密碼文件。
[root@test etc]#vi /etc/rsyncd/rsyncd.secrets #建立rsyncd.secrets ,這是用戶密碼文件。
91wan:123456
[root@test etc]#chmod 600 /etc/rsyncd/rsyncd.secrets #將rsyncd.secrets這個密碼文件的文件屬性設爲root擁有, 且權限要設爲600, 不然沒法備份成功!
[root@test etc]#touch /etc/rsyncd/rsyncd.motd
[root@test etc]#vi /etc/rsyncd/rsyncd.motd
++++++++++++++++++++++++++++++++++++++++++++++
Welcome to use the mike.org.cn rsync services!
2002------2009
++++++++++++++++++++++++++++++++++++++++++++++
[root@test etc]#vi /etc/rsyncd.conf
secrets file = /etc/rsyncd/rsyncd.secrets motd file = /etc/rsyncd.motd read only = no list = yes uid = root gid = root hosts allow = 192.168.1.7 use chroot = no max connections = 10 [91wan] comment = 91wan path = /www/html auth users = 91wan
說明:
rsyncd.conf服務器的配置詳解
A、全局定義
在rsync 服務器中,全局定義有幾個比較關健的,根據咱們前面所給的配置文件 rsyncd.conf 文件;
pid file = /var/run/rsyncd.pid 注:告訴進程寫到 /var/run/rsyncd.pid 文件中;
port = 873 注:指定運行端口,默認是873,您能夠本身指定;
address = 192.168.1.171 注:指定服務器IP地址
uid = nobody
gid = nobdoy
注:服務器端傳輸文件時,要發哪一個用戶和用戶組來執行,默認是nobody。 若是用nobody 用戶和用戶組,可能遇到權限問題,有些文件從服務器上拉不下來。因此我就偷懶,爲了方便,用了root 。不過您能夠在定義要同步的目錄時定義的模塊中指定用戶來解決權限的問題。
use chroot = yes
注:用chroot,在傳輸文件以前,服務器守護程序在將chroot 到文件系統中的目錄中,這樣作的好處是可能保護系統被安裝漏洞侵襲的可能。缺點是須要超級用戶權限。另外對符號連接文件,將會排除在外。也就是說,你在 rsync服務器上,若是有符號連接,你在備份服務器上運行客戶端的同步數據時,只會把符號連接名同步下來,並不會同步符號連接的內容;這個須要本身來嘗 試
read only = yes
注:read only 是隻讀選擇,也就是說,不讓客戶端上傳文件到服務器上。還有一個 write only選項,本身嘗試是作什麼用的吧;
#limit access to private LANs
hosts allow=192.168.1.0/255.255.255.0 10.0.1.0/255.255.255.0
注:在您能夠指定單個IP,也能夠指定整個網段,能提升安全性。格式是ip 與ip 之間、ip和網段之間、網段和網段之間要用空格隔開;
max connections = 5
注:客戶端最多鏈接數
motd file = /etc/rsyncd/rsyncd.motd
注:motd file 是定義服務器信息的,要本身寫 rsyncd.motd 文件內容。當用戶登陸時會看到這個信息。好比我寫的是:
++++++++++++++++++++++++++++++++++++++++++++++
Welcome to use the mike.org.cn rsync services!
2002------2009
++++++++++++++++++++++++++++++++++++++++++++++
log file = /var/log/rsync.log
注:rsync 服務器的日誌;
transfer logging = yes
注:這是傳輸文件的日誌
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
B、模塊定義
模塊定義什麼呢?主要是定義服務器哪一個目錄要被同步。每一個模塊都要以[name]形式。這個名字就是在rsync 客戶端看到的名字,其實有點象Samba服務器提供的共享名。而服務器真正同步的數據是經過path 指定的。咱們能夠根據本身的須要,來指定多個模塊。每一個模塊要指定認證用戶,密碼文件、但排除並非必須的
下面是前面配置文件模塊的例子:
[91wan] #模塊它爲咱們提供了一個連接的名字,在本模塊中連接到了/www/html目錄;要用[name] 形式
path = /www/html #指定文件目錄所在位置,這是必須指定的
auth users = root #認證用戶是root ,是必須在服務器上存在的用戶
list=yes #list 意思是把rsync 服務器上提供同步數據的目錄在服務器上模塊是否顯示列出來。默認是yes 。若是你不想列出來,就no ;若是是no是比較安全的,至少別人不知道你的服務器上提供了哪些目錄。你本身知道就好了;
ignore errors #忽略IO錯誤
secrets file = /etc/rsyncd/rsyncd.secrets #密碼存在哪一個文件
comment = linuxsir home data #註釋能夠本身定義
exclude = config/
注:exclude是排除的意思,也就是說,要把/www/html目錄下的easylife和samba排除在外; easylife/和samba/目錄之間有空格分開
七、啓動rsync服務器及防火牆的設置
啓動rsync服務器至關簡單,有如下幾種方法
A、--daemon參數方式,是讓rsync以服務器模式運行
[root@test ~]#/usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf #--config用於指定rsyncd.conf的位置,若是在/etc下能夠不寫
[root@test ~]# vi /etc/rc.local
/usr/local/rsync –daemon #加入一行
B、xinetd方式
若是xinetd沒有的話,須要安裝一下
[root@test ~]# yum -y install xinetd
修改services加入以下內容
[root@test ~]# nano -w /etc/services
rsync 873/tcp # rsync
rsync 873/udp # rsync
這一步通常能夠不作,一般都有這兩行(個人RHEL4和GENTOO默認都有)。修改的目的是讓系統知道873端口對應的服務名爲rsync。如沒有的話就自行加入。
設定 /etc/xinetd.d/rsync, 簡單例子以下:
# default: off
# description: The rsync server is a good addition to am ftp server, as it \
# allows crc checksumming etc.
service rsync
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
上述, 主要是要打開rsync這個daemon, 一旦有rsync client要鏈接時, xinetd會把它轉介給 rsyncd(port 873)。而後service xinetd restart, 使上述設定生效.
rsync服務器和防火牆
Linux 防火牆是用iptables,因此咱們至少在服務器端要讓你所定義的rsync 服務器端口經過,客戶端上也應該讓經過。
爲防重啓將規則清除,我將規則直接加到規則配置文件裏邊了(/etc/sysconfig/iptables),以下:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 873 -j ACCEPT
注意,這條規則要加在REJECT規則前。
加好後,重啓下 iptables(# service iptables restart)。
八、檢查rsync是否啓動
[root@test ~]# lsof -i :873
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
xinetd 4396 root 5u IPv4 633387 TCP *:rsync (LISTEN)
客戶端配置
1 配置三個過程就能夠了
1.1 設定密碼文件
1.2 測試rsync執行指令
1.3 將rsync指令放入工做排程(crontab)
[root@test ~]# vi /etc/xinetd.d/rsync
# default: off # description: The rsync server is a good addition to an ftp server, as it \ # allows crc checksumming etc. service rsync { disable = yes socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID }
1.1 配置密碼文件 (注:爲了安全,設定密碼檔案的屬性爲:600。rsync.ps的密碼必定要和Rsync Server密碼設定案裏的密碼同樣)
[root@test ~]# vi rsync.ps
123456
[root@test ~]# chown root.root .rsync.ps # 注意必須給權限
[root@test ~]# chmod 600 .rsync.ps # 必須修改權限
1.2 從服務器上下載文件
[root@test ~]# rsync -avz --password-file=/home/rsync.ps 91wan@192.168.1.6::91wan /www/html
從本地上傳到服務器上去
[root@test ~]# rsync -avz --password-file=/home/rsync.ps /www/html/ 91wan@192.168.1.6::91wan
1.3將rsync指令放入工做排程(crontab)
[root@test ~]#crontab -e
*/30 * * * * /root/sync_91wan.sh #每30秒執行一次
[root@test ~]#touch /root/sync_91wan.sh
[root@test ~]#vi /root/sync_91wan.sh
rsync -vzrtopg --delete --progress /www/html/ 91wan@192.168.1.6::91wan --exclude=*.gz --exclude=include/config.inc.php --password-file=/home/rsync.ps
配置文件 rsyncd.conf 由全局配置和若干模塊配置組成。配置文件的語法爲:
全局參數
在文件中 [module] 以外的全部配置行都是全局參數。固然也能夠在全局參數部分定義模塊參數,這時該參數的值就是全部模塊的默認值。
參數 | 說明 | 默認值 |
---|---|---|
address | 在獨立運行時,用於指定的服務器運行的 IP 地址。由 xinetd 運行時將忽略此參數,使用命令行上的 –address 選項替代。 | 本地全部IP |
port | 指定 rsync 守護進程監聽的端口號。 由 xinetd 運行時將忽略此參數,使用命令行上的–port 選項替代。 | 873 |
motd file | 指定一個消息文件,當客戶鏈接服務器時該文件的內容顯示給客戶。 | 無 |
pid file | rsync 的守護進程將其 PID 寫入指定的文件。 | 無 |
log file | 指定 rsync 守護進程的日誌文件,而不將日誌發送給 syslog。 | 無 |
syslog facility | 指定 rsync 發送日誌消息給 syslog 時的消息級別。 | daemon |
socket options | 指定自定義 TCP 選項。 | 無 |
模塊參數
模塊參數主要用於定義 rsync 服務器哪一個目錄要被同步。模塊聲明的格式必須爲 [module] 形式,這個名字就是在 rsync 客戶端看到的名字,相似於 Samba 服務器提供的共享名。而服務器真正同步的數據是經過 path 來指定的。能夠根據本身的須要,來指定多個模塊,模塊中能夠定義如下參數:
a. 基本模塊參數
參數 | 說明 | 默認值 |
---|---|---|
path | 指定當前模塊在 rsync 服務器上的同步路徑,該參數是必須指定的。 | 無 |
comment | 給模塊指定一個描述,該描述連同模塊名在客戶鏈接獲得模塊列表時顯示給客戶。 | 無 |
b. 模塊控制參數
參數 | 說明 | 默認值 |
---|---|---|
use chroot | 若爲 true,則 rsync 在傳輸文件以前首先 chroot 到 path 參數所指定的目錄下。這樣作的緣由是實現額外的安全防禦,可是缺點是須要 root 權限,而且不能備份指向 path 外部的符號鏈接所指向的目錄文件。 | true |
uid | 指定該模塊以指定的 UID 傳輸文件。 | nobody |
gid | 指定該模塊以指定的 GID 傳輸文件。 | nobody |
max connections | 指定該模塊的最大併發鏈接數量以保護服務器,超過限制的鏈接請求將被告知隨後再試。 | 0(沒有限制) |
lock file | 指定支持 max connections 參數的鎖文件。 | /var/run/rsyncd.lock |
list | 指定當客戶請求列出可使用的模塊列表時,該模塊是否應該被列出。若是設置該選項爲 false,能夠建立隱藏的模塊。 | true |
read only | 指定是否容許客戶上傳文件。若爲 true 則不容許上傳;若爲 false 而且服務器目錄也具備讀寫權限則容許上傳。 | true |
write only | 指定是否容許客戶下載文件。若爲 true 則不容許下載;若爲 false 而且服務器目錄也具備讀權限則容許下載。 | false |
ignore errors | 指定在 rsync 服務器上運行 delete 操做時是否忽略 I/O 錯誤。通常來講 rsync 在出現 I/O 錯誤時將將跳過 –delete 操做,以防止由於暫時的資源不足或其它 I/O 錯誤致使的嚴重問題。 | true |
ignore nonreadable | 指定 rysnc 服務器徹底忽略那些用戶沒有訪問權限的文件。這對於在須要備份的目錄中有些不該該被備份者得到的文件時是有意義的。 | false |
timeout | 該選項能夠覆蓋客戶指定的 IP 超時時間。從而確保 rsync 服務器不會永遠等待一個崩潰的客戶端。對於匿名 rsync 服務器來講,理想的數字是 600(單位爲秒)。 | 0 (未限制) |
dont compress | 用來指定那些在傳輸以前不進行壓縮處理的文件。該選項能夠定義一些不容許客戶對該模塊使用的命令選項列表。必須使用選項全名,而不能是簡稱。當發生拒絕某個選項的狀況時,服務器將報告錯誤信息而後退出。例如,要防止使用壓縮,應該是:」dont compress = *」。 | *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz |
c. 模塊文件篩選參數
參數 | 說明 | 默認值 |
---|---|---|
exclude | 指定多個由空格隔開的多個文件或目錄(相對路徑),並將其添加到 exclude 列表中。這等同於在客戶端命令中使用 –exclude 來指定模式。 | 空 |
exclude from | 指定一個包含 exclude 規則定義的文件名,服務器從該文件中讀取 exclude 列表定義。 | 空 |
include | 指定多個由空格隔開的多個文件或目錄(相對路徑),並將其添加到 include 列表中。這等同於在客戶端命令中使用 –include 來指定模式 。 | 空 |
include from | 指定一個包含 include 規則定義的文件名,服務器從該文件中讀取 include 列表定義。 | 空 |
d. 模塊用戶認證參數
參數 | 說明 | 默認值 |
---|---|---|
auth users | 指定由空格或逗號分隔的用戶名列表,只有這些用戶才容許鏈接該模塊。這裏的用戶和系統用戶沒有任何關係。用戶名和口令以明文方式存放在 secrets file 參數指定的文件中。 | (匿名方式) |
secrets file | 指定一個 rsync 認證口令文件。只有在 auth users 被定義時,該文件才起做用。 | 空 |
strict modes | 指定是否監測口令文件的權限。若爲 true 則口令文件只能被 rsync 服務器運行身份的用戶訪問,其餘任何用戶不能夠訪問該文件。 | true |
username:passwd
e. 模塊訪問控制參數
參數 | 說明 | 默認值 |
---|---|---|
hosts allow | 用一個主機列表指定哪些主機客戶容許鏈接該模塊。不匹配主機列表的主機將被拒絕。 | * |
hosts deny | 用一個主機列表指定哪些主機客戶不容許鏈接該模塊。 | 空 |
客戶主機列表定義能夠是如下形式:
f. 模塊日誌參數
參數 | 說明 | 默認值 |
---|---|---|
transfer logging | 使 rsync 服務器將傳輸操做記錄到傳輸日誌文件。 | false |
log format | 指定傳輸日誌文件的字段。 | 」%o %h [%a] %m (%u) %f %l」 |
設置了」log file」參數時,在日誌每行的開始會添加」%t [%p]「。