rsync是一个用于文件同步和备份的命令行工具,它可以在本地或远程系统之间同步文件和目录。

服务端

全局参数

在文件中[module]之前参数是全局参数,rsync允许使用"[global]“模块名称来指示全局参数部分的开始。

可以在配置文件的全局部分中包含任何模块参数,这样提供的值将成为该参数的默认值。

motd file
此参数允许您指定要在每次连接时显示给客户端的“每日消息”。通常包含站点信息和任何法律声明。默认值为没有motd文件。启动守护进程时,可以通过--dparam=motdfile=FILE命令行选项覆盖此设置。

pid file
此参数告诉rsync守护进程将其进程ID写入该文件。如果文件已经存在,则rsync守护进程将中止而不是覆盖该文件。启动守护进程时,可以通过--dparam=pidfile=FILE命令行选项覆盖此设置。

port
您可以通过指定此值(默认为873)来覆盖守护进程的默认端口号。如果守护进程由inetd运行,则此设置将被忽略,并且将被--port命令行选项所取代。

address
您可以通过指定此值来覆盖守护进程的默认IP地址。如果守护进程由inetd运行,则此设置将被忽略,并且将被--address命令行选项所取代。

socket options
此参数可以为喜欢尽可能调整系统的人提供无尽的乐趣。您可以设置各种可能使传输更快或更慢的套接字选项!有关一些可能设置的选项的详细信息,请参阅setsockopt()系统调用的man页。默认情况下,不设置任何特殊的套接字选项。这些设置也可以通过--sockopts命令行选项指定。

listen backlog
当守护进程侦听连接时,您可以覆盖默认的等待队列长度。默认值为5。

模块参数

comment
该参数指定一个描述字符串,当客户端获取可用模块列表时,该字符串将显示在模块名称旁边。默认情况下没有评论。

path
该参数指定守护程序文件系统中要在此模块中提供的目录。您必须为CWrsyncd.conf中的每个模块指定此参数。

use chroot
如果"use chroot"参数为true,则rsync守护程序将在与客户端开始文件传输之前,将其根目录更改为指定的路径。这样做的好处是能够额外防止可能存在的实现安全漏洞,但缺点是需要超级用户权限,不能跟踪绝对路径或位于新根目录之外的符号链接,并且会复杂化通过名称保留用户和组。

numeric ids
启用此参数会禁用当前守护程序模块中用户和组的名称映射。这将阻止守护程序尝试加载任何与用户/组相关的文件或库。启用此参数使传输行为看起来就像客户端已经传递了--numeric-ids命令行选项。默认情况下,此参数对于chroot模块是启用的,对于非chroot模块是禁用的。除非您采取了确保模块具有必要的资源以进行名称转换并且不可能更改这些资源的步骤,否则不应启用chroot启用的模块上的此参数。

charset
这指定了模块文件名所采用的字符集名称。如果客户端使用 --iconv选项,无论实际传递的字符集是什么,守护进程将使用charset参数的值。这样可以使得守护进程在 chroot 模块中支持字符集转换而无需额外文件,并且确保名称转换以一致的方式进行。如果未设置charset参数,则拒绝 --iconv 选项,就像通过refuse options指定了iconv一样。

max connections
此参数允许您指定允许的最大同时连接数。当达到最大连接数时,任何连接的客户端都会收到一条消息告知他们稍后再试。默认值为0,表示没有限制。负值禁用该模块。还请参阅 lqlock filerq 参数。

log file
当 log file参数设置为非空字符串时,rsync 守护进程将将消息记录到指定的文件中,而不是使用 syslog。如果对每个模块而不是全局设置进行了这个值的设置,全局日志仍将包含任何授权失败或配置文件错误消息。
如果守护进程无法打开指定的文件,它将回退到使用 syslog,并输出关于失败的错误信息。(请注意,以前无法打开指定日志文件被视为致命错误。)

syslog facility
此参数允许您指定从 rsync 守护进程记录消息时要使用的 syslog 设施名称。您可以使用系统上定义的任何标准 syslog 设施名称。常见的名称有 auth、authpriv、cron、daemon、ftp、kern、lpr、mail、news、security、syslog、user、uucp、local0、local1、local2、local3、local4、local5、local6 和 local7。默认值为 daemon。如果log file设置为非空字符串(无论是在每个模块的设置中设置,还是从全局设置继承),此设置将不起作用。

max verbosity
此参数允许您控制守护程序生成的最大冗长信息量(因为这些信息会记录在日志文件中)。默认设置为1,允许客户端请求一级冗长度。

lock file
此参数指定用于支持“max connections”参数的文件。rsync守护程序在该文件上使用记录锁定以确保不超过共享锁定文件的模块的最大连接数限制。默认设置为/var/run/rsyncd.lock。

read only
此参数确定客户端是否可以上传文件。如果“read only”为true,则任何尝试的上传都将失败。如果“read only”为false,则如果守护程序端的文件权限允许,可以进行上传。默认情况下,所有模块都是只读的。

write only
此参数确定客户端是否可以下载文件。如果“write only”为true,则任何尝试的下载都将失败。如果“write only”为false,则如果守护程序端的文件权限允许,可以进行下载。默认情况下,此参数被禁用。

list
此参数确定当客户端请求列出可用模块时,是否应列出此模块。通过将其设置为false,您可以创建隐藏模块。默认情况下,模块是可列出的。

uid
此参数指定在进行与该模块之间的文件传输时应作为守护程序以root身份运行时的用户名或用户ID。与“gid”参数结合使用,确定可用的文件权限。默认设置为-2,通常为用户“nobody”。

gid
此参数指定在进行与该模块之间的文件传输时应作为守护程序以root身份运行时的组名或组ID。这与“uid”参数相辅相成。默认设置为-2,通常为组“nobody”。

fake super
为一个模块设置“fake super = yes”会使守护端表现得好像已经指定了“--fake-user”命令行选项一样。这允许存储文件的全部属性,而无需实际将守护程序运行为root。

exclude
这个参数接受一个以空格分隔的守护进程排除模式列表。与客户端的--exclude选项一样,模式可以使用“-”或“+”来显式指示排除/包含。对于给定的模块,只能应用一个“exclude”参数。有关排除文件如何影响守护进程的详细信息,请参见“filter”参数。

include
使用“include”参数覆盖“exclude”参数的效果。对于给定的模块,只能应用一个“include”参数。有关排除文件如何影响守护进程的详细信息,请参见“filter”参数。

exclude from
该参数指定了守护进程上包含守护进程排除模式的文件的名称,空格分隔。对于给定的模块,只能应用一个“exclude from”参数;如果有多个排除文件,则可以将它们指定为“filter”参数中的合并文件。有关排除文件如何影响守护进程的详细信息,请参见“filter”参数。

include from
类似于“exclude from”的参数,用于守护进程包含模式的文件。对于给定的模块,只能应用一个“include from”参数。有关排除文件如何影响守护进程的详细信息,请参见“filter”参数。

incoming chmod
此参数允许您指定一组逗号分隔的chmod字符串,这些字符串将影响所有传入文件(由守护进程接收的文件)的权限。这些更改发生在所有其他权限计算之后,即使在客户端未指定--perms时,它也会覆盖目标默认和/或现有权限。有关此字符串格式的信息,请参阅--chmod rsync选项的描述和chmod(1)手册页。

outgoing chmod
此参数允许您指定一组逗号分隔的chmod字符串,这些字符串将影响所有传出文件(从守护进程发送的文件)的权限。这些更改首先发生,使发送的权限看起来与存储在文件系统中的权限不同。例如,您可以在服务器上禁用组写入权限,同时对客户端来说它仍然是打开的。有关此字符串格式的信息,请参阅--chmod rsync选项的描述和chmod(1)手册页。

auth users
此参数指定一个以逗号和空格分隔的用户名列表,这些用户名将被允许连接到该模块。这些用户名不需要存在于本地系统上。用户名还可以包含shell通配符字符。如果设置了“auth users”,则客户端将被要求提供用户名和密码来连接到该模块。用于此交换的是挑战-响应身份验证协议。明文用户名和密码存储在“secrets file”参数指定的文件中。默认情况下,所有用户都可以不需要密码连接(称为“anonymous rsync”)。

secrets file
该参数指定包含用于认证此模块的用户名:密码对的文件名。仅当指定了auth users参数时才会查询该文件。该文件以行为基础,每行包含由单个冒号分隔的用户名:密码对。以井号(#)开头的任何行都被视为注释并被跳过。密码可以包含任何字符,但请注意,许多操作系统限制可以在客户端输入的密码长度,因此您可能发现超过8个字符的密码无法工作。

strict modes
此参数确定是否检查秘密文件的权限。如果strict modes为true,则secrets file不得被除rsync守护进程所运行的用户ID之外的任何用户ID读取。如果strict mod为false,则不执行检查。默认值为true。添加此参数是为了适应在Windows操作系统上运行的rsync。

hosts allow
此参数允许您指定与连接客户端的主机名和IP地址匹配的模式列表。如果没有模式匹配,则拒绝连接。

hosts deny
该参数允许您指定与连接客户端的主机名和IP地址匹配的模式列表。如果模式匹配,则拒绝连接。有关更多信息,请参阅“hosts allow”参数。
默认情况下,没有“hosts deny”参数,这意味着所有主机都可以连接。

ignore errors
该参数告诉rsyncd在决定是否运行传输的删除阶段时忽略守护程序上的I/O错误。通常,如果发生任何I/O错误,rsync会跳过--delete步骤,以防止由于临时资源短缺或其他I/O错误而造成灾难性的删除。在某些情况下,此行为是适得其反的,因此您可以使用此参数关闭此行为。

ignore nonreadable
这告诉rsync守护进程完全忽略用户无法读取的文件。这对于可能在目录中包含一些不可读文件的公共存档非常有用,系统管理员不希望这些文件被看到。

transfer logging
此参数启用了按文件的下载和上传进行日志记录,格式与ftp守护进程使用的格式类似。守护进程始终在传输结束时记录传输,因此如果传输被中止,则日志文件中不会提及。

log format
该参数允许您在启用传输日志时指定用于记录文件传输的格式。

timeout
此参数允许您覆盖此模块的I/O超时客户端选择。使用此参数,您可以确保rsync不会永远等待死亡的客户端。超时以秒为单位指定。零值表示没有超时,并且是默认值。对于匿名rsync守护进程,一个不错的选择可能是600(即10分钟超时)。

refuse options
此参数允许您指定一个用空格分隔的rsync命令行选项列表,这些选项将被您的rsync守护进程拒绝。您可以指定完整的选项名称、其一字母缩写或与多个选项匹配的通配符字符串。

dont compress
此参数允许您根据通配符模式选择在从守护程序拉取文件时不应进行压缩的文件名(不存在类似的参数来控制将文件推送到守护程序)。压缩在CPU使用方面是昂贵的,因此通常最好不要尝试压缩无法很好压缩的文件,例如已经压缩过的文件。

pre-xfer exec, post-xfer exec
传输之前和/或之后可以指定要运行的命令。如果pre-xfer exec命令失败,则传输在开始之前被中止。

服务配置示例

uid = nobody
gid = nobody
use chroot = yes
max connections = 4
pid file = /var/run/rsyncd.pid
exclude = lost+found/
transfer logging = yes
timeout = 900
ignore nonreadable = yes
dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

[backup]
auth users = root
secrets file = /etc/rsyncd.pass
path = /data1
list = no

客户端

常用参数

-a/--archive
以归档模式进行同步,包括递归复制、保留权限、时间戳等。

-v/--verbose
输出详细的信息。

-P/--progress
显示传输进度。

--password-file
指定秘钥文件

--bwlimit
限制传输带宽,单位为KB,注意不是Kb。

推/拉文件示例

rsync -avP --password-file=/etc/rsync_backup.pass --bwlimit=50000 data_dir 172.x.x.10::backup/
rsync -avP --password-file=/etc/rsync_backup.pass --bwlimit=50000 172.x.x.10::backup/data_dir/ data_dir/