首页 » Linux » rsync » rsync命令之服务端参数详解

rsync命令之服务端参数详解

 

rsync服务端配置文件分全局定义和模块定义:

全局定义:

#可以在全局定义中,定义模块参数。
#rsync的yes/no和true/false都是通用的,建议用一种写法。

port = 873

#指定端口号(默认是873),可省略不写

motd file = /etc/rsyncd/rsyncd.motd

#motd file 指定一个消息提示的文件,要自己写文件内容,一般都不写,不影响运行,看个人喜好。
举例:你在服务端定义了这个文件,文件内容为This is motd file!,你在客户端使用rsync进行同步服务端时,首先会提示This is motd file!然后再进行同步。

pid file = /var/run/rsyncd.pid

#将rsync守护进程的PID写入指定的文件,防止多个守护进程运行(当kill杀死PID后,也要同时删除你定义的rsyncd.pid,否则是无法启动的,我这里是以独立运行rsync服务的截图)

socket options 定义TCP选项,默认关闭
address 关闭即可

模块定义:

[demo]

#定义模块的名字,rsync将通过这个名字来确定同步那个文件夹,这个模块是必须的

path = /opt/www

#指定需要同步的目录所在位置

comment = whsir

#注释

ignore errors

#忽略IO错误

exclude = test1/ test2/

#排除目录,排除不需要同步的目录,多个之间使用空格隔开

--exclude-from=FILE

#从文件读取排除模式(将排除的文件或目录写在一个文件中,一行一个文件或目录)

--include-from=FILE

#从文件读取包含模式(将排除的文件或目录写在一个文件中,一行一个文件或目录)

include = test3/ test4/

#指定目录,要和exclude一同使用

charset = GBK

#指定编码格式,一般是在windows和linux之间同步时用到(Windows和Linux端rsync推拉同步https://blog.whsir.com/post-527.html

auth users = user

#指定用来同步的用户,可使用空格或者逗号隔开多个用户名,如果不使用此选项,默认匿名,结合secrets file来使用

secrets file = /etc/rsyncd/rsyncd.secrets

#指定密码文件的路径,其实文件后缀不一定非是.secrets,可以写在全局配置里。/etc/rsyncd/rsyncd.secrets文件内容格式为,用户名:密码,注意中间用冒号,结合auth users来使用

uid = nobody
gid = nobody

#指定用户和用户组来执行,默认nobody

use chroot = false

#用chroot,在传输文件之前,服务器守护程序在将chroot 到文件系统中的目录中,这样做的好处是可能保护系统被安装漏洞侵袭的可能。缺点是需要超级用户权限。另外对符号链接(软链接)文件,将会排除在外。建议false,当然你也可以写成no。
#chroot为true时必须使用root权限,且不能备份path路径外的链接文件

write only = false

#是否禁止客户端下载(客户端用rsync拉服务端的文件就相当于下载),如果为true,则客户端不能使用rsync拉服务端的文件,会报出一下错误,不写这个参数的话,默认是disabled;若为false并且服务器目录也具有读权限则允许下载。

ERROR: module is write only
rsync error: syntax or usage error (code 1) at main.c(692) [sender=3.0.6]
rsync: connection unexpectedly closed (5 bytes received so far) [receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(600) [receiver=3.0.6]

read only = false

#指定是否允许客户上传文件。若为 true 则不允许上传(也就是客户端用rsync推);若为false并且服务器目录也具有读写权限则允许上传。

hosts allow=192.168.1.0/255.255.255.0 123.0.0.0/8 123.123.123.123

#指定哪些客户端允许连接该模块,可以是单个IP,也可以指定整个网段,格式是ip与ip之间、ip和网段之间、网段和网段之间要用空格隔开 ,如果写*则是所有

hosts deny = *

#指定哪些客户端不允许连接该模块,*是所有(hosts allow定义了客户端的IP并写在了hosts deny的前面,则只允许hosts allow定义的IP进行连接,这里需要注意hosts allow和hosts deny的先后顺序)

max connections = 3

#并发连接的最大数,在达到最大值时,如果再有客户端使用同步会提示如下信息:
@ERROR: max connections (1) reached -- try again later
rsync error: error starting client-server protocol (code 5) at main.c(1503) [receiver=3.0.6]
提示客户端达到最大连接数,稍后尝试,如果写成0则不限制,负值禁用模块,配合lock file锁文件使用。
如果将max connections和/var/log/rsync.lock定义在[模块]下,则只对当前模块生效。
如果将max connections和/var/log/rsync.lock定义在全局下,则对下面所有的模块生效,如果设置全局max connections=1那么如果你定义多个模块,则同时只能连接一个,根据使用情况进行设置!!!

lock file = /var/run/rsyncd.lock

#rsync守护进程对此文件使用记录锁定,确保服务端[模块]不超过最大连接数,配合max connections使用。

timeout = 600

#超时时间,超过这个时间将会断开连接,确保rsync服务器不会一直等待一个崩溃的客户端,建议设置600秒,如果设置为0,则表示没有超时。

transfer logging = false

#是否记录传输日志,建议false

log file = /var/log/rsync.log

#指定rsync守护进程的日志文件

log format = %t %a %m %f %b

#日志文件格式,根据自身情况选择是否使用

list = false

#是否显示数据目录,从安全的角度出发,这里应该要false

 

原文链接:rsync命令之服务端参数详解,转载请注明来源!

4