CentOS 63下rsync服务器的安装与配置Word文档下载推荐.docx
《CentOS 63下rsync服务器的安装与配置Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《CentOS 63下rsync服务器的安装与配置Word文档下载推荐.docx(17页珍藏版)》请在冰豆网上搜索。
#wgethttp:
//pkgs.repoforge.org/rsync/rsync-3.0.9-2.el6.rfx.x86_64.rpm
3.3.安装rsync
#rpm-ivhrsync-3.0.9-2.el6.rfx.x86_64.rpm
四、配置rsync服务
4.1.配置rsync服务器的步骤
∙首先要选择服务器启动方式
∙对于负荷较重的rsync服务器应该使用独立运行方式
∙对于负荷较轻的rsync服务器可以使用xinetd运行方式
∙创建配置文件rsyncd.conf
∙对于非匿名访问的rsync服务器还要创建认证口令文件
4.2.以xinetd运行rsync服务
CentOS默认以xinetd方式运行rsync服务。
rsync的xinetd配置文件
在/etc/xinetd.d/rsync。
要配置以xinetd运行的rsync服务需要执行如下的命令:
#chkconfigrsyncon
#servicexinetdrestart
管理员可以修改/etc/xinetd.d/rsync配置文件以适合您的需要。
例如,您可以修改配置行
server_args=--daemon
在后面添加rsync的服务选项。
4.3.独立运行rsync服务
最简单的独立运行rsync服务的方法是执行如下的命令:
#/usr/bin/rsync--daemon
您可以将上面的命令写入/etc/rc.local文件以便在每次启动服务器时运行rsync服务。
当然,您也可以写一个脚本在开机时自动启动rysnc服务。
4.4.
配置文件rsyncd.conf
两种rsync服务运行方式都需要配置rsyncd.conf,其格式类似于samba的主配置文件。
配置文件rsyncd.conf默认在/etc目录下。
为了将所有与rsync服务相关的文件放在单独的目录下,可以执行如下命令:
#mkdir/etc/rsyncd
#touch/etc/rsyncd/rsyncd.conf
#ln-s/etc/rsyncd/rsyncd.conf/etc/rsyncd.conf
配置文件rsyncd.conf由全局配置和若干模块配置组成。
配置文件的语法为:
∙模块以[模块名]开始
∙参数配置行的格式是name=value,其中value可以有两种数据类型:
∙字符串(可以不用引号定界字符串)
∙布尔值(1/0或yes/no或true/false)
∙以#或;
开始的行为注释
∙\为续行符
全局参数
在文件中[module]之外的所有配置行都是全局参数。
当然也可以在全局参数部分定义模块参数,这时该参数的值就是所有模块的默认值。
参数
说明
默认值
address
在独立运行时,用于指定的服务器运行的IP地址。
由xinetd运行时将忽略此参数,使用命令行上的–address选项替代。
本地所有IP
port
指定rsync守护进程监听的端口号。
由xinetd运行时将忽略此参数,使用命令行上的–port选项替代。
873
motdfile
指定一个消息文件,当客户连接服务器时该文件的内容显示给客户。
无
pidfile
rsync的守护进程将其PID写入指定的文件。
logfile
指定rsync守护进程的日志文件,而不将日志发送给syslog。
syslogfacility
指定rsync发送日志消息给syslog时的消息级别。
daemon
socketoptions
指定自定义TCP选项。
模块参数
模块参数主要用于定义rsync服务器哪个目录要被同步。
模块声明的格式必须为[module]形式,这个名字就是在rsync客户端看到的名字,类似于Samba服务器提供的共享名。
而服务器真正同步的数据是通过path来指定的。
可以根据自己的需要,来指定多个模块,模块中可以定义以下参数:
a.基本模块参数
path
指定当前模块在rsync服务器上的同步路径,该参数是必须指定的。
comment
给模块指定一个描述,该描述连同模块名在客户连接得到模块列表时显示给客户。
b.模块控制参数
usechroot
若为true,则rsync在传输文件之前首先chroot到path参数所指定的目录下。
这样做的原因是实现额外的安全防护,但是缺点是需要root权限,并且不能备份指向path外部的符号连接所指向的目录文件。
true
uid
指定该模块以指定的UID传输文件。
nobody
gid
指定该模块以指定的GID传输文件。
maxconnections
指定该模块的最大并发连接数量以保护服务器,超过限制的连接请求将被告知随后再试。
0(没有限制)
lockfile
指定支持maxconnections参数的锁文件。
/var/run/rsyncd.lock
list
指定当客户请求列出可以使用的模块列表时,该模块是否应该被列出。
如果设置该选项为false,可以创建隐藏的模块。
readonly
指定是否允许客户上传文件。
若为true则不允许上传;
若为false并且服务器目录也具有读写权限则允许上传。
writeonly
指定是否允许客户下载文件。
若为true则不允许下载;
若为false并且服务器目录也具有读权限则允许下载。
false
ignoreerrors
指定在rsync服务器上运行delete操作时是否忽略I/O错误。
一般来说rsync在出现I/O错误时将将跳过–delete操作,以防止因为暂时的资源不足或其它I/O错误导致的严重问题。
ignorenonreadable
指定rysnc服务器完全忽略那些用户没有访问权限的文件。
这对于在需要备份的目录中有些不应该被备份者获得的文件时是有意义的。
timeout
该选项可以覆盖客户指定的IP超时时间。
从而确保rsync服务器不会永远等待一个崩溃的客户端。
对于匿名rsync服务器来说,理想的数字是600(单位为秒)。
0(未限制)
dontcompress
用来指定那些在传输之前不进行压缩处理的文件。
该选项可以定义一些不允许客户对该模块使用的命令选项列表。
必须使用选项全名,而不能是简称。
当发生拒绝某个选项的情况时,服务器将报告错误信息然后退出。
例如,要防止使用压缩,应该是:
”dontcompress=*”。
*.gz*.tgz*.zip*.z*.rpm*.deb*.iso*.bz2*.tbz
c.模块文件筛选参数
exclude
指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到exclude列表中。
这等同于在客户端命令中使用–exclude来指定模式。
空
excludefrom
指定一个包含exclude规则定义的文件名,服务器从该文件中读取exclude列表定义。
include
指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到include列表中。
这等同于在客户端命令中使用–include来指定模式。
includefrom
指定一个包含include规则定义的文件名,服务器从该文件中读取include列表定义。
∙一个模块只能指定一个exclude参数、一个include参数。
∙结合include和exclude可以定义复杂的exclude/include规则。
∙这几个参数分别与相应的rsync客户命令选项等价,唯一不同的是它们作用在服务器端。
∙关于如何书写规则文件的内容请参考http:
//www.howtocn.org/rsync:
use_rsync。
d.模块用户认证参数
authusers
指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。
这里的用户和系统用户没有任何关系。
用户名和口令以明文方式存放在secretsfile参数指定的文件中。
(匿名方式)
secretsfile
指定一个rsync认证口令文件。
只有在authusers被定义时,该文件才起作用。
strictmodes
指定是否监测口令文件的权限。
若为true则口令文件只能被rsync服务器运行身份的用户访问,其他任何用户不可以访问该文件。
∙rsync认证口令文件的权限一定是600,否则客户端将不能连接服务器。
∙rsync认证口令文件中每一行指定一个用户名:
口令对,格式为:
username:
passwd
∙一般来说口令最好不要超过8个字符。
若您只配置匿名访问的rsync服务器,则无需设置上述参数。
e.模块访问控制参数
hostsallow
用一个主机列表指定哪些主机客户允许连接该模块。
不匹配主机列表的主机将被拒绝。
*
hostsdeny
用一个主机列表指定哪些主机客户不允许连接该模块。
客户主机列表定义可以是以下形式:
∙单个IP地址。
例如:
192.168.0.1
∙整个网段。
192.168.0.0/24,192.168.0.0/255.255.255.0
∙可解析的单个主机名。
centos,
∙域内的所有主机。
∙“*”则表示所有。
∙多个列表项要用空格间隔。
f.模块日志参数
transferlogging
使rsync服务器将传输操作记录到传输日志文件。
logformat
指定传输日志文件的字段。
”%o%h[%a]%m(%u)%f%l”
设置了”logfile”参数时,在日志每行的开始会添加”%t[%p]“。
可以使用的日志格式定义符如下所示:
∙%a-远程IP地址
∙%h-远程主机名
∙%l-文件长度字符数
∙%p-该次rsync会话的PID
∙%o-操作类型:
”send”或“recv”
∙%f-文件名
∙%P-模块路径
∙%m-模块名
∙%t-当前时间
∙%u-认证的用户名(匿名时是null)
∙%b-实际传输的字节数
∙%c-当发送文件时,记录该文件的校验码
五、rsync服务器应用案例
5.1.
在服务器端TS-DEV上配置rsync服务
a.编辑配置文件
#vi/etc/rsyncd/rsyncd.conf
#Minimalconfigurationfileforrsyncdaemon
#Seersync
(1)andrsyncd.conf(5)manpagesforhelp
#Thislineisrequiredbythe/etc/init.d/rsyncdscript
#GLOBAL
OPTIONS
uid=root
gid=root
usechroot=no
readonly=yes
#limitaccesstoprivateLANs
hostsallow=172.16.0.0/255.255.0.0192.168.1.0/255.255.255.010.0.1.0/255.255.255.0
hostsdeny=*
maxconnections=5
pidfile=/var/run/rsyncd.pid
secretsfile=/etc/rsyncd/rsyncd.secrets
#lockfile=/var/run/rsync.lock
motdfile=/etc/rsyncd/rsyncd.motd
#Thiswillgiveyouaseparatelogfile
logfile=/var/log/rsync.log
#Thiswilllogeveryfiletransferred-upto85,000+peruser,persync
transferlogging=yes
logformat=%t%a%m%f%b
syslogfacility=local3
timeout=300
#
MODULE
[davidhome]
path=/home/david/
list=yes
ignoreerrors
authusers=david
comment=Davidhome
exclude=important/
[chinatmp]
path=/tmp/china/
list=no
authusers=china
comment=tmp_china
b.建立/etc/rsyncd/rsyncd.secrets文件
#vim/etc/rsyncd/rsyncd.secrets
david:
asdf
#格式
用户名:
口令
china:
jk
#该用户不要求是系统用户
c.为了密码的安全性,我们把权限设为600
#chownroot:
root/etc/rsyncd/rsyncd.secrets
#chmod600/etc/rsyncd/rsyncd.secrets
d.建立连接到服务器的客户端看到的欢迎信息文件/etc/rsyncd/rsyncd.motd
#vim/etc/rsyncd/rsyncd.motd
+++++++++++++++++++++++++++
+
DavidCamp
+
e.启动rsync
#/etc/init.d/xinetdrestart
f.查看873端口是否起来
#netstat-an|grep873
如果rsync启动成功的话可以看到873端口已经在监听了。
g.服务器端文件详细
5.2.客户端配置
a.客户端安装rsync
#yum-yinstallrsync
b.通过rsync客户端来同步数据
场景一:
#rsync-avzPdavid@172.16.1.135:
:
davidhome
/tmp/david/
Password:
这里要输入david的密码,是服务器端提供的,在前面的例子中,我们用的是asdf,输入的密码并不显示出来;
输好后就回车;
注:
这个命令的意思就是说,用david用户登录到服务器上,把davidhome数据,同步到本地目录/tmp/david/上。
当然本地的目录是可以你自己定义的,比如dave也是可以的;
当你在客户端上,当前操作的目录下没有davidhome这个目录时,系统会自动为你创建一个;
当存在davidhome这个目录中,你要注意它的写权限。
说明:
-a参数,相当于-rlptgoD,-r是递归-l是链接文件,意思是拷贝链接文件;
-p表示保持文件原有权限;
-t保持文件原有时间;
-g保持文件原有用户组;
-o保持文件原有属主;
-D相当于块设备文件;
-z传输时压缩;
-P传输进度;
-v传输时的进度等信息,和-P有点关系,自己试试。
可以看文档;
场景二:
#rsync-avzP
--deletedavid@172.16.1.135:
这回我们引入一个–delete选项,表示客户端上的数据要与服务器端完全一致,如果/tmp/david/目录中有服务器上不存在的文件,则删除。
最终目的是让/tmp/david/目录上的数据完全与服务器上保持一致;
用的时候要小心点,最好不要把已经有重要数所据的目录,当做本地更新目录,否则会把你的数据全部删除;
场景三:
--delete
--password-file=/tmp/rsync.password
david@172.16.1.135:
这次我们加了一个选项–password-file=rsync.password,这时当我们以david用户登录rsync服务器同步数据时,密码将读取/tmp/rsync.password这个文件。
这个文件内容只是david用户的密码。
我们要如下做;
#touch/tmp/rsync.password
#chmod600/tmp/rsync.password
#echo"
asdf"
>
/tmp/rsync.password
这样就不需要密码了;
其实这是比较重要的,因为服务器通过crond计划任务还是有必要的;
5.3.rsync客户端自动与服务器同步数据
编辑crontab
#crontab-e
加入如下代码:
100***rsync-avzP--delete--password-file=/tmp/rsync.passworddavid@172.16.1.135:
davidhome/tmp/david/
表示每天0点10分执行后面的命令。
六、错误分析
@ERROR:
chdirfailed
rsyncerror:
errorstartingclient-serverprotocol(code5)atmain.c(1530)[receiver=3.0.6]
rsync:
opendir"
."
(inxxxxxxx)failed:
Permissiondenied(13)
解决办法:
1、将selinux对rsync的限制全部去掉:
#/usr/sbin/setsebool-Prsync_disable_trans1
2、狠一点,禁止整个selinux:
#vim/etc/selinux/config
将其中的SELINUX=enforcing修改为SELINUX=disabled
保存退出后,重启机器。
至此,rsync服务器配置完毕。