关于rsync daemon的配置文件:
rsync安装时没有提供一个配置文件模板,需要自己手动创建,名称为rsyncd.conf。
配置文件文件分为两部分,全局参数和模块参数。全局参数设定全局的,默认的属性,模块参数设定每个用来同步的目录的属性,模块即用来同步的目录。
文件格式由模块和参数组成,模块名称由[ ]括起来,参数的形式是”name=value”,#号开头的行是注释,”\”结尾的行表示行未结束。
参数中”=”号后面的值可以是字符串(不必使用引号括起来),或者布尔值。布尔值可以是yes/no、0/1或true/false。布尔值中的大小写没有意义,但在字符串中有意义。
常用的全局选项:
motd file:设定欢迎消息
pid file:该选项告诉daemon把它的进程ID写入指定文件。如果文件已经存在,daemon会中止运行,而不是覆盖原文件。
port:设定daemon运行监听的端口。如果daemon是由inetd运行,该选项将被忽略;如果命令行中已经指定--port,该选项将被取代。
address:设定rsync daemon运行时监听的地址。同上,如果daemon由inetd运行或命令行中已经指定了--port,该选项将被忽略或取代。
模块参数比较多,常用的有:
path:设定该模块的目录位置
use chroot:指定是否使用chroot,值为yes或no,我推荐no
max connections:该参数设定了daemon允许每个client发起的最大连接数。超过最大连接数,client会收到警告信息,值为0表示不限制,值为负数表示禁用该模块
lock file:该参数用来支持max connection,它指定一个文件来记录client的请求,以确保client的请求不会突破最大连接数
log file:设定该模块的log文件的位置,如果此参数未设定,或rsync daemon读取指定文件失败,rsync会使用syslog记录日志;如果此参数只在每个模块中设定,而未在全局中设定,则全局日志将只记录授权失败或配置文件错误的消息
read only:设定是否允许客户端上传文件,默认为yes,不允许上传文件
write only:设定是否允许客户端下载文件,默认为no,允许下载文件(有点拗)
list:设定该模块是否允许被列出,有点类似于samba的browseable,默认为yes,我们可以把它设定为no,来创建一个隐藏模块
uid:当rsync daemon以root用户运行时,此参数指定了,向该模块传输文件,或从该模块传输文件时的用户身份(用户名或用户ID),默认为-2,即nobody用户
gid:意义类似于uid,默认为-2,即nobody组
incoming chmod:这个参数允许你指定多个以逗号分隔的权限字符,这些权限会影响所有daemon收到的文件。这些权限会在其它所有权限之后生效,这意味着,如果客户端没有指定--perms,它们会覆盖掉目标默认和(以及或)已经存在的权限。
auth users:这个参数指定了允许访问该模块的用户列表,列表中的用户名以逗号和空格分隔。指定用户可以不必真实存在于本地系统,用户名中也可以包含shell通配符。纯文本的用户名和密码存储在由”secrets file”参数指定的文件中。
secrets file:该参数指定一个密码文件,用于该模块的授权验证。只有当指定了”auth users”参数时,这个文件才会被考虑。密码可以包含任何字符,最好不要超过8个字符。该参数没有默认值,你必须手动创建一个密码文件,而且该文件不应该被其它用户访问。
strict modes:该参数决定了是否对密码文件进行权限检查。如果值为yes,除了运行rsync daemon的用户外,其它用户均不能访问该文件。默认值为yes。
fake super:如果该模块设置成fake super = yes,跟在命令行中指定了--fake-super效果一样。它不需要daemon以root运行,就可以存储文件的完整属性。
hosts allow:简单的说,该参数指定了允许访问该模块的客户端名称或IP。可以指定一个具体的IP,或配合掩码指定一个IP段。当hosts allow和hosts deny同时指定的时候,先检查hosts allow,匹配的客户端将被允许访问该模块;然后检查hosts deny,匹配的客户端将被拒绝;既不匹配hosts allow又不匹配hosts deny的客户端将被允许访问。
hosts deny:该参数指定的客户端均不允许访问该模块。
ignore errors:如果该参数被指定,在进行传输中的删除操作时,rsync将忽略掉daemon的I/O错误。通常情况下,如果发生任何I/O错误,rsync将忽略掉--delete操作,以防止由于临时资源短缺或其它I/O错误而导致的灾难性(文件)丢失。
timeout:rsync的超时设置,防止客户端的死连接,单位为秒。默认值为0,意味着没有超时定义。
dont compress:此选项允许指定一些基于通配符模式的文件名,当从daemon拉文件时,这些文件将不会被压缩。选项接受一个以空格分隔的,大小写敏感的通配符模式列表。类似于命令行中的--skip-compress=LIST,并且会覆盖命令中的参数。
filter:该参数接受一个由空格分开的daemon过滤规则列表,每个模块只接受一个filter参数,所以要把所有规则写入一个filter参数中。可以使用正常语法把一个或多个merge-file指定成一条规则。
exclude:该参数接收一个以空格分隔的daemon排除规则的列表,像客户端的--exclude选项一样,它使用”-“或”+”来指明排除或包含。一个模块中只能有一个exclude参数。
include:该参数可以覆盖掉exclude的效果。一个模块中只能有一个include参数。
exclude from:该参数指定了一个daemon上的文件,用来包含daemon的排除规则,每行一条(规则)。每个模块中只能有一个exclude from参数,如果有多个exclude-from文件,可以在filter参数中把它们看成成一个merge file。
include from:类似于exclude from。
译者注:对于什么是merge-file或merge file,参考下文关于client中的过滤规则。
本人的rsync daemon配置文件:
- #This is the rsync daemon configuration
- #global settings
- pid file = /var/rsync/rsync.pid
- port = 873
- lock file = /var/rsync/lock.log
- log file = /var/rsync/rsync.log
- #module settings
- [hadoop]
- path = /home/hdfs/hadoop/conf/
- use chroot = no
- max connections = 15
- read only = yes
- write only = no
- list = no
- uid = hdfs
- gid = hdfs
- incoming chmod = 644
- auth users = hdfs
- secrets file = /etc/rsync.pass
- strict modes = yes
- hosts allow = 192.168.9.53
- hosts deny = *
- ignore errors = yes
- timeout = 120
- [hbase]
- path = /home/hdfs/hbase/conf/
- use chroot = no
- max connections = 15
- read only = yes
- write only = no
- list = no
- uid = hdfs
- gid = hdfs
- incoming chmod = 644
- auth users = hdfs
- secrets file = /etc/rsync.pass
- strict modes = yes
- hosts allow = 192.168.9.53
- hosts deny = *
- ignore errors = yes
- timeout = 120
- [native]
- path=/home/hdfs/hadoop/lib/native/
- use chroot = no
- max connections = 15
- read only = yes
- write only = no
- list = no
- uid = hdfs
- gid = hdfs
- incoming chmod = 644
- auth users = hdfs
- secrets file = /etc/rsync.pass
- strict modes = yes
- hosts allow = 192.168.9.53
- hosts deny = *
- ignore errors = yes
- timeout = 120
译者注:我的配置文件中,各模块有一些重复的选项,看起来有点啰嗦。网上有很多文章,都把uid、gid、max connections、use chroot等模块选项写到了全局选项中,很多人都这样写,说明应该是可以那样写的;但我还是按照官方文档中的方法,把它们写到了模块选项中。
本文转自 li_qinshan 51CTO博客,原文链接:http://blog.51cto.com/share/560761