Rsync(remote synchronize)是一個遠程數據同步工具,可通過LAN/WAN快速同步多臺主機間的文件,也可以使用 Rsync 同步本地硬盤中的不同目錄。Rsync 是用于取代rcp的一個工具,Rsync使用所謂的 “Rsync 算法” 來使本地和遠程兩個主機之間的文件達到同步,這個算法只傳送兩個文件的不同部分,而不是每次都整份傳送,因此速度相當快。您可以參考 How Rsync Works A Practical Overview 進一步了解 rsync 的運作機制。
Rsync支持大多數的類Unix系統,無論是Linux、Solaris還是BSD上都經過了良好的測試。此外,它在windows平臺下也有相應的版本,比較知名的有cwRsync和Sync2NAS。
需要注意的是必須在服務器A和B上都安裝rsync,其中A服務器上是以服務器模式運行rsync,而B上則以客戶端方式運行rsync。這樣在web服務器A上運行rsync守護進程,在B上定時運行客戶程序來備份web服務器A上需要備份的內容。
一、什么是rsync
rsync,remote synchronize顧名思意就知道它是一款實現遠程同步功能的軟件,它在同步文件的同時,可以保持原來文件的權限、時間、軟硬鏈接等附加信息。 rsync是用 “rsync 算法”提供了一個客戶機和遠程文件服務器的文件同步的快速方法,而且可以通過ssh方式來傳輸文件,這樣其保密性也非常好,另外它還是免費的軟件。
rsync 包括如下的一些特性:
能更新整個目錄和樹和文件系統;
有選擇性的保持符號鏈鏈、硬鏈接、文件屬于、權限、設備以及時間等;
對于安裝來說,無任何特殊權限要求;
對于多個文件來說,內部流水線減少文件等待的延時;
能用rsh、ssh 或直接端口做為傳輸入端口;
支持匿名rsync 同步文件,是理想的鏡像工具;
二、架設rsync服務器
架設rsync 服務器比較簡單,寫一個配置文件rsyncd.conf 。文件的書寫也是有規則的,我們可以參照rsync.samba.org 上的文檔來做。當然我們首先要安裝好rsync這個軟件才行;
A、rsync的安裝;
獲取rsync
rysnc的官方網站:http://rsync.samba.org/可以從上面得到最新的版本。目前最新版是3.05。當然,因為rsync是一款如此有用的軟件,所以很多Linux的發行版本都將它收錄在內了。
軟件包安裝
# sudo apt-get install rsync 注:在debian、ubuntu 等在線安裝方法;
# yum install rsync 注:Fedora、Redhat 等在線安裝方法;
# rpm -ivh rsync 注:Fedora、Redhat 等rpm包安裝方法;
其它Linux發行版,請用相應的軟件包管理方法來安裝。
源碼包安裝
tar xvf rsync-xxx.tar.gz
cd rsync-xxx
./configure --prefix=/usr ;make ;make install 注:在用源碼包編譯安裝之前,您得安裝gcc等編譯開具才行;
B、配置文件
rsync的主要有以下三個配置文件rsyncd.conf(主配置文件)、rsyncd.secrets(密碼文件)、rsyncd.motd(rysnc服務器信息)
服務器配置文件(/etc/rsyncd.conf),該文件默認不存在,請創建它。
具體步驟如下:
#touch /etc/rsyncd.conf #創建rsyncd.conf,這是rsync服務器的配置文件。
#touch /etc/rsyncd.secrets #創建rsyncd.secrets ,這是用戶密碼文件。
#chmod 600 /etc/rsyncd/rsyncd.secrets #將rsyncd.secrets這個密碼文件的文件屬性設為root擁有, 且權限要設為600, 否則無法備份成功!
#touch /etc/rsyncd.motd
下一就是我們修改rsyncd.conf和rsyncd.secrets和rsyncd.motd文件的時候了。
設定/etc/rsyncd.conf
rsyncd.conf是rsync服務器主要配置文件。我們先來個簡單的示例,后面在詳細說明各項作用。
比如我們要備份服務器上的/home和/opt,在/home中我想把easylife和samba目錄排除在外;
# Distributed under the terms of the GNU General Public License v2
# Minimal configuration file for rsync daemon
# See rsync(1) and rsyncd.conf(5) man pages for help
# This line is required by the /etc/init.d/rsyncd script
pid file = /var/run/rsyncd.pid
port = 873
address = 192.168.1.171
#uid = nobody
#gid = nobody
uid = root
gid = root
use chroot = yes
read only = yes
#limit access to private LANs
hosts allow=192.168.1.0/255.255.255.0 10.0.1.0/255.255.255.0
hosts deny=*
max connections = 5
motd file = /etc/rsyncd.motd
#This will give you a separate log file
#log file = /var/log/rsync.log
#This will log every file transferred - up to 85,000+ per user, per sync
#transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
[rhel4home]
path = /home
list=yes
ignore errors
auth users = root
secrets file = /etc/rsyncd.secrets
comment = This is RHEL 4 data
exclude = easylife/ samba/
[rhel4opt]
path = /opt
list=no
ignore errors
comment = This is RHEL 4 opt
auth users = easylife
secrets file = /etc/rsyncd/rsyncd.secrets
注:關于auth users是必須在服務器上存在的真實的系統用戶,如果你想用多個用戶以,號隔開,比如auth users = easylife,root
設定密碼文件
密碼文件格式很簡單,rsyncd.secrets的內容格式為:
用戶名:密碼
我們在例子中rsyncd.secrets的內容如下類似的;在文檔中說,有些系統不支持長密碼,自己嘗試著設置一下吧。
easylife:keer
root:mike
chown root.root rsyncd.secrets #修改屬主
chmod 600 rsyncd.secrets #修改權限
注:1、將rsyncd.secrets這個密碼文件的文件屬性設為root擁有, 且權限要設為600, 否則無法備份成功! 出于安全目的,文件的屬性必需是只有屬主可讀。
2、這里的密碼值得注意,為了安全你不能把系統用戶的密碼寫在這里。比如你的系統用戶easylife密碼是000000,為了安全你可以讓rsync中的easylife為keer。這和samba的用戶認證的密碼原理是差不多的。
設定rsyncd.motd 文件;
它是定義rysnc服務器信息的,也就是用戶登錄信息。比如讓用戶知道這個服務器是誰提供的等;類似ftp服務器登錄時,我們所看到的 linuxsir.org ftp ……。 當然這在全局定義變量時,并不是必須的,你可以用#號注掉,或刪除;我在這里寫了一個 rsyncd.motd的內容為:
++++++++++++++++++++++++++++++++++++++++++++++
Welcome to use the mike.org.cn rsync services!
2002------2009
++++++++++++++++++++++++++++++++++++++++++++++
三、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 指定的。我們可以根據自己的需要,來指定多個模塊。每個模塊要指定認證用戶,密碼文件、但排除并不是必須的
下面是前面配置文件模塊的例子:
[rhel4home] #模塊它為我們提供了一個鏈接的名字,在本模塊中鏈接到了/home目錄;要用[name] 形式
path = /home #指定文件目錄所在位置,這是必須指定的
auth users = root #認證用戶是root ,是必須在服務器上存在的用戶
list=yes #list 意思是把rsync 服務器上提供同步數據的目錄在服務器上模塊是否顯示列出來。默認是yes 。如果你不想列出來,就no ;如果是no是比較安全的,至少別人不知道你的服務器上提供了哪些目錄。你自己知道就行了;
ignore errors #忽略IO錯誤
secrets file = /etc/rsyncd.secrets #密碼存在哪個文件
comment = linuxsir home data #注釋可以自己定義
exclude = beinan/ samba/
注:exclude是排除的意思,也就是說,要把/home目錄下的easylife和samba排除在外; easylife/和samba/目錄之間有空格分開
[rhel4opt]
path = /opt
list=no
comment = optdir
auth users = beinan
secrets file = /etc/rsyncd/rsyncd.secrets
ignore errors
四、啟動rsync服務器及防火墻的設置
啟動rsync服務器相當簡單,有以下幾種方法
A、--daemon參數方式,是讓rsync以服務器模式運行
#/usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf #--config用于指定rsyncd.conf的位置,如果在/etc下可以不寫
B、xinetd方式
修改services加入如下內容
# 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 主站蜘蛛池模板: 精品一区二区久久久久久按摩 | 午夜精品老牛av一区二区三区 | 日韩美香港a一级毛片免费 日韩激情 | 草莓视频久久 | 色吧综合网 | 91热久久免费频精品黑人99 | 国产精品视频1区 | 亚洲综人网 | 亚洲精品午夜国产va久久成人 | 视频一区 中文字幕 | 久久免费看片 | 高清在线国产 | 黄色电影免费网址 | 久久性生活免费视频 | 黑色丝袜美美女被躁视频 | 男女做性免费网站 | 久久久成人精品视频 | 久久久一区二区三区四区 | 毛片三区 | 热99re久久免费视精品频软件 | 亚洲午夜国产 | 婷婷久久网| 久久精品一区二区三区四区五区 | 凹凸成人精品亚洲精品密奴 | 99精彩视频在线观看 | 99爱精品在线| 免费的性生活视频 | 久啪视频| 亚洲成人免费影视 | www.91sese | 精品国产99久久久久久宅男i | 精品一区二区久久久久久久网精 | 99re色| 一区二区三区视频在线播放 | wankzhd| 欧美性生活网站 | 毛片网站网址 | 国产精品刺激对白麻豆99 | 欧美一极视频 | 性视频久久 | a黄在线观看 |