更多信息 参考 Rsync命令介绍,本文仅介绍功能概要(特性)、按优先级排序的文件传输列表、批处理模式,退出码,配置文件。
命令格式
Local: rsync [OPTION...] SRC... [DEST]
Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST)
功能概要
Rsync是一个快速且用途广泛的文件复制工具(file copying tool)。
可以本地复制,可以通过远程shell或rsync后台程序向另外主机复制,可以通过远程shell或rsync后台程序从另外主机拷贝到本地主机。
Rsync提供大量参数选项来控制其行为的各个方面,同时允许以非常灵活的方式来指定文件集来复制。
Rsync以增量传输算法(delta-transfer algorithm)出名,仅传输源文件SRC和目的地DST已有文件的差异,这样可以减少网络上大量数据的传输。
Rsync广泛用于备份和镜像传输,并做为日常使用的不断改进的复制命令。
Rsync默认情况下采用一个“快速检查”算法("quick check" algorithm)找到需要传输的文件。该算法通过文件大小或最后一次更改的时间来快速找到文件。
当快速检查算法显示文件数据不需要传输,根据Rsync的参数配置项,可以直接在目的文件上进行其它保留属性的任何更改。
Rsync其它的一些特性:
1) 支持链接拷贝,设备拷贝,文件属主及其用户组拷贝,权限拷贝。(support for copying links, devices, owners, groups, and permissions)
2) 支持类似于GNU tar的exclude and exclude-from参数
--exclude=PATTERN 排除匹配模式的文件exclude files matching PATTERN
--exclude-from=FILE 从文件读取排除模式read exclude patterns from FILE
--include=PATTERN 不排除匹配模式的文件don't exclude files matching PATTERN
--include-from=FILE 从文件读取包含模式read include patterns from FILE
3) 支持CVS排除模式,自动忽略文件传输
-cvs-exclude, -C 像CVS同样的方式来自动忽略文件 auto-ignore files in the same way CVS does
4) 支持使用任何透明的远程shell,包括ssh or rsh
5) 不需要超级用户特权
6) 文件传输以最小化延迟传输成本
7) 支持匿名或经过认证的rsync后台守护进程(理想状态是镜像)
Rsync连接一个远程系统的方式
有两种连接方式:1) 使用一个远程shell程序(ssh获rsh);2) 通过TCP连接一个rsync守护进程。
传输列表按优先级排序SORTED TRANSFER ORDER
Rsync在自己内部的传输列表中指定文件排序。将同名目录的文件内容合并,可以轻松移除重复的文件。然而当文件传输的顺序和命令中配置的不同时使某些人感到困惑。
如果你需要在另外一个文件传输前传输一个特殊文件,可以将文件分成不同的rsync调用,或者使用--delay-updates参数。
--delay-updates延迟更新参数,不影响排序的传输顺序,但会更快进入最终的文件更新阶段。
--delay-updates延迟更新参数,将每一个更新的文件的临时文件放入一个保存目录,直到传输结束,在这期间所有文件被快速重命名后放入这个保持目录。试图将文件的更新操作更加原子化。默认情况下,文件将放入一个叫.~tmp~ 的目录,每个文件传输后的目的目录。除非指定 --partial-dir参数,变更传输的目的目录名。
--partial-dir的评论章节,详细讨论如何将.~tmp~目录将被排除在传输列表中,以及如何通过Rsync对可能存在老的.~tmp~进行清理的方法。
This option puts the temporary file from each updated file into a holding directory until the end of the transfer, at which time all the files are renamed into place in rapid succession. This attempts to make the updating of the files a little more atomic.
By default the files are placed into a directory named .~tmp~ in each file's destination directory, but if you've specified the --partial-dir option, that directory will be used instead.
--no-inc-recursive参数 Rsync需要内存中文件的完整列表为了能够在最后对其进行迭代(--no-inc-recursive : it needs the full file list in memory in order to be able to iterate over it at the end) 。这个参数选项需要在对端需要更多的内存(每个传输文件一个bit位),并在对端需要足够的磁盘空间来保存所有更新文件的附加副本。注意不应该使用绝对路径来指定--partial-dir参数,除非传输中的任何文件都没有相同的名字(假如路径是绝对的,所有同步的文件将放入到同一个的目录中),并且层次结构中没有挂载点(假如不能在保存目录中重命名,将导致延迟更新的文件将传输失败)。
批处理模式BATCH MODE
批处理模式Batch mode可以将更新文件以相同组的方式传输复制到其它很多远程主机中。想象下源文件有一些变更,这些变更将传输到其它主机上。Rsync可以运行在写批量处理模式(write-batch ),将源文件的变更传输到其中一个目的主机。write-batch 参数选项会让Rsync客户端存储“批处理文件”所有信息,也会让其它Rsync客户端做同样的操作。
当更新多个目的文件时,一次生成批处理文件相关信息无需多次执行文件状态,校验和,数据块生成(Generating the batch file once saves having to perform the file status, checksum, and data block generation more than once when updating multiple destination trees)。多播传输协议可用于一次将批量更新文件并行传输到许多主机,而不是单独向每个主机发送相同的数据(Multicast transport protocols can be used to transfer the batch update files in parallel to many hosts at once, instead of sending the same data to every host individually)。
read-batch参数,指定相同批处理文件名和目的主机路径,Rsync可以将记录的更改应用到其它的目的主机(To apply the recorded changes to another destination tree, run rsync with the read-batch option, specifying the name of the same batch file, and the destination tree)。Rsync使用批处理文件中存储的信息来更新目的树。
退出码 EXIT VALUES
0 - Success
1 - Syntax or usage error
2 - Protocol incompatibility
3 - Errors selecting input/output files, dirs
4 - Requested action not supported. Either:
an attempt was made to manipulate 64-bit files on a platform that cannot support them
an option was specified that is supported by the client and not by the server
5 - Error starting client-server protocol
6 - Daemon unable to append to log-file
10 - Error in socket I/O
11 - Error in file I/O
12 - Error in rsync protocol data stream
13 - Errors with program diagnostics
14 - Error in IPC code
20 - Received SIGUSR1 or SIGINT
21 - Some error returned by waitpid()
22 - Error allocating core memory buffers
23 - Partial transfer due to error
24 - Partial transfer due to vanished source files
25 - The --max-delete limit stopped deletions
30 - Timeout in data send/receive
35 - Timeout waiting for daemon connection
配置文件FILES
/etc/rsyncd.conf or rsyncd.conf