Rsync文件同步服务器的简介安装和配置

(一)软件简介

  Rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync本来是用以取代rcp的一个工具,它当前由rsync.samba.org维护。Rsync使用所谓的“Rsync演算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。运行Rsync server的机器也叫backup server,一个Rsync server可同时备份多个client的数据;也可以多个Rsync server备份一个client的数据。

  Rsync可以搭配rsh或ssh甚至使用daemon模式。Rsync server会打开一个873的服务通道(port),等待对方Rsync连接。连接时,Rsync server会检查口令是否相符,若通过口令查核,则可以开始进行文件传输。第一次连通完成时,会把整份文件传输一次,下一次就只传送二个文件之间不同的部份。
  Rsync支持大多数的类Unix系统,无论是Linux、Solaris还是BSD上都经过了良好的测试。此外,它在windows平台下也有相应的版本,比较知名的有cwRsync和Sync2NAS
  Rsync的基本特点如下:
  1.可以镜像保存整个目录树和文件系统
  2.可以很容易做到保持原来文件的权限、时间、软硬链接等;
  3.无须特殊权限即可安装;
  4.优化的流程,文件传输效率高
  5.可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接
6.支持匿名传输


(二)核心算法

假定在名为α和β的两台计算机之间同步相似的文件A与B,其中α对文件A拥有访问权,β对文件B拥有访问权。并且假定主机α与β之间的网络带宽很小。那么rsync算法将通过下面的五个步骤来完成:
  1.β将文件B分割成一组不重叠的固定大小为S字节的数据块。最后一块可能会比S 小。
  2.β对每一个分割好的数据块执行两种校验:一种是32位的滚动弱校验,另一种是128位的MD4强校验
  3.β将这些校验结果发给α。
  4.α通过搜索文件A的所有大小为S的数据块(偏移量可以任选,不一定非要是S的倍数),来寻找与文件B的某一块有着相同的弱校验码和强校验码的数据块。这项工作可以借助滚动校验的特性很快完成。
  5.α发给β一串指令来生成文件A在β上的备份。这里的每一条指令要么是对文件B经拥有某一个数据块而不须重传的证明,要么是一个数据块,这个数据块肯定是没有与文件B的任何一个数据块匹配上的。

(三)服务端配置
    Rsync在RHEL5下是默认安装的,版本为2.6.8-3.1,最新版本可从 获得。

一、配置文件rsyncd.conf

1. 创建配置目录和文件

# 在/etc目录下创建一个rsyncd的目录,我们用来存放rsyncd.conf 和rsyncd.secrets文件
mkdir /etc/rsyncd
# 创建rsyncd.conf ,这是rsync服务器的配置文件
touch /etc/rsyncd/rsyncd.conf

#创建rsyncd.secrets ,这是用户密码文件

touch /etc/rsyncd/rsyncd.secrets

# 为了密码的安全性,我们把权限设为600
chmod 600 /etc/rsyncd/rsyncd.secrets

# 服务器欢迎信息
touch /etc/rsyncd/rsyncd.motd 

2. 编辑rsyncd.conf

# This line is required by the /etc/init.d/rsyncd script

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsyncd.lock

port = 873

address = 192.168.55.229

uid = root  

gid = root  

use chroot = yes 

read only = yes  #注意这个用户ID和组ID,如果要方便的话,可以设置成root,这样rsync几乎就可#以读取任何文件和目录了,但是也带来安全隐患。建议设置成只能读取你要备份的目录和文件即可。

#limit access to private LANs

hosts allow=192.168.55.0/255.255.255.0 10.0.55.0/255.255.255.0 

hosts deny=*

max connections = 5    # 最大连接数为5

motd file = /etc/rsyncd/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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/wyyysj.html