man rsync翻译(rsync命令中文手册)

Posted 骏马金龙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了man rsync翻译(rsync命令中文手册)相关的知识,希望对你有一定的参考价值。


本文为命令rsync的man文档翻译,几乎所有的选项都翻译了,另外关于筛选规则部分只翻译了一部分。由于原文很多地方都比较啰嗦,所以译文中有些内容可能容易让国人疑惑,所以我个人在某些地方加上了注释。若有错误之处,盼请指出。

本人译作集合:http://www.cnblogs.com/f-ck-need-u/p/7048359.html

以下是rsync系列篇:

1.rsync(一):基本命令和用法

2.rsync(二):inotify+rsync详细说明和sersync

3.rsync算法原理和工作流程分析

4.rsync技术报告(翻译)

5.rsync工作机制(翻译)

6.man rsync翻译(rsync命令中文手册)


rsync(1)                                                                                           rsync(1)

名称
       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


       当仅有一个SRC或DEST参数时将列出源文件列表而不是复制文件。
       
描述
       Rsync是一个快速且功能非常丰富的文件拷贝工具。它可以在本地和远程之间通过shell或rsync
       服务互相拷贝文件。它提供了大量的选项来控制它各方面功能的行为,且在指定待拷贝文件方
       面非常有弹性。它以其增量拷贝算法而出名,只拷贝源和目标不同的文件部分,因此减少网络
       间要传输的数据。Rsync每天都被广泛用于做备份、镜像和当作升级版拷贝命令。

       Rsync使用"quick check"算法(默认)决定文件是否需要被传输,它会找出大小或最后修改时间
       (mtime)不同的文件。当"quick check"算法表明了文件不需要被更新时,任何其他保留属性(译
       者注:除大小和最后修改时间外的属性)都将直接在目标文件上修改。

       rsync的其他特性包括:

       o      支持拷贝链接文件、设备文件、所有权(即所有者和所属组)、属组以及权限

       o      支持类似于GNU tar命令的exclude和exclude-from选项

       o      支持CVS排除模式以忽略相同的文件(译者注:CVS是一种版本控制系统)

       o      可以使用任意透明的远程shell(remote shell),包括ssh或rsh

       o      不要求超级管理员权限

       o      以pipeline管道模型传输文件以便最小化降低成本

       o      支持匿名或可身份认证的rsync daemon模式(做镜像的理想方式)


一般特性
       Rsync在本地或远程主机之间拷贝文件(但不支持两个远程之间互相拷贝)。

       rsync有两种不同的方式联系远程主机:使用远程shell程序作为传输方式(如ssh或rsh)或直接通
       过TCP联系rsync守护进程。当命令行中指定的源或目标主机后使用了单个冒号(:)时将使用远程
       shell传输模式。当在命令行中指定的源或目标主机后使用双冒号(::)或使用了rsync://这种URL
       时将表示使用TCP联系rsync守护进程,但rsync://方式有一个例外,请参见下文"通过远程SHELL
       连接使用RSYNC-DAEMON特性"段落的内容。

       但有一个特殊情况,如果只给定了源地址没有给定目标地址,则将以类似于"ls -l"的格式输出文
       件列表。

       若给定的源地址和目标地址都不是远程地址,则在本机进行拷贝(见选项--list-only)。

       Rsync命令中,本地端总是扮演"client"角色,远程端总是扮演"server"角色。不要混淆"server"
       和rsync daemon,rsync daemon一定是一个"server",但是"server"可能是一个rsync daemon也可
       能是远程shell派生出来的进程。

安装
       请阅读README文件来查看安装说明。

       当安装完成后,你可以通过远程shell(也可以通过rsync daemon协议)让rsync与任意你能访问的主
       机进行交流。对于远程传输,现代rsync使用ssh与其他主机进行交流,但是可以配置其他默认的远
       程shell,如rsh或remsh。 

       你也可以通过命令行的"-e"选项或设置RSYNC_RSH环境变量来指定你想要使用的远程shell。

       rsync必须同时装在源主机和目标主机上。

用法
       rsync的使用方法和rcp一样。你必须指定源地址和目标地址,其中一个可能是远程地址。
       
       也许解释语法最好的方式是通过几个示例:

              rsync -t *.c foo:src/

       这将会把当前目录下所有能匹配*.c的文件传输到主机foo上的src目录下。如果远程主机上已经存在
       某些同名文件,rsync的远程更新(rsync-update)协议将会更新哪些有差异的文件。更详细的内容见
       技术报告。

              rsync -avz foo:src/bar /data/tmp

       这将会以递归方式把远程主机foo上的src/bar目录下的所有文件传输到本地主机的/data/tmp目录下。
       这些文件以归档(archive)模式传输,它保证在传输过程中保留符号链接、设备文件、属性、权限、
       所有者、所属组等。另外,在传输过程中会使用压缩功能以减少要传输的数据体积。

              rsync -avz foo:src/bar/ /data/tmp

       使用尾随斜线(/)改变了原本的行为,它避免了在目标地址创建一个额外的目录层次。带有尾随斜线
       时,你可以理解为"拷贝目录的内容"而不是拷贝"拷贝目录名"(译者注:即拷贝目录本身),但是这两
       种情况都会将目录中包含的文件传输到目标目录下。换句话说,下面两条命令都以相同的方式进行拷
       贝,包括/dest/foo的属性设置。

              rsync -av /src/foo /dest
              rsync -av /src/foo/ /dest/foo

       还需要注意的是,拷贝主机或引用模块的默认目录不需要尾随斜线。例如,下面的命令都拷贝远程
       (默认)目录的内容到本地的"/dest"。

              rsync -av host: /dest
              rsync -av host::module /dest

       你也可以仅使用rsync的仅本地(local-only)模式,此模式下的源地址和目标地址名称中都不需要冒号
       (:)。它行为类似于cp命令的升级版。

       最后,你可以通过移除模块名参数部分的方式列出rsync daemon中所有可用模块。

              rsync somehost.mydomain.com::

       更详细信息见下面段落。

高级用法
       请求从远程主机传输多个文件的语法是通过指定和第一个远程地址格式相同的多个远程地址参数,或
       者可以省略主机名部分。例如,下面的命令都会正常工作:
       (译者注:远程地址中省略主机名时,将取前一个远程地址的主机名作为它的主机名)

              rsync -av host:file1 :file2 host:file{3,4} /dest/
              rsync -av host::modname/file{1,2} host::modname/file3 /dest/
              rsync -av host::modname/file1 ::modname/file{3,4}

       老版本的rsync需要在SRC部分使用引号和空格,如下示例:

              rsync -av host:\'dir1/file1 dir2/file2\' /dest
              rsync host::\'modname/dir1/file1 modname/dir2/file2\' /dest

       这种方式在后续rsync版本中将继续(默认)有效,但是它没有第一种方式简便。

       如果你要传输一个文件名中包含了空白字符的文件,可以使用"--protect-args"("-s")选项,也可以
       使用转义符将空白字符转义。例如:

              rsync -av host:\'file\\ name\\ with\\ spaces\' /dest


连接RSYNC DAEMON
       rsync也可以不使用远程shell作为传输方式。这情况看下,将直接连接远程RSYNC守护进程,一般使
       用的是TCP的873端口。(显然,这要求远程的RSYNC守护进程必须是已运行的,见下文"启动RSYNC服务
       以接受连接请求")

       这种方式的rsync使用方式和远程shell方式一样,除了:

       o      需要使用双冒号"::"分隔主机名和路径,或者使用rsync://的URL格式。

       o      "path"部分的第一个词语是一个模块名(译者注:如hostname::modname/file)。

       o      远程RSYNC守护进程可能会输出你连接它的日期时间。

       o      如果没有指定远程rsync服务的路径名,将列出rsync服务主机上可访问的路径。

       o      如果没有指定本地目标地址,将列出远程rsync服务主机上指定的文件。

       o      必须不能指定"--rsh"("-e")选项。


       以下是拷贝远程模块名为"src"中的所有文件示例:

           rsync -av host::src /dest

       远程daemon上的某些模块可能需要身份验证。如果是这样,在连接时将会被询问输入密码。如果想要
       避免被询问,可以通过设置环境变量RSYNC_PASSWORD的值为你要使用的密码,或者使用选项
       "--password-file"。这非常适用于脚本中。
       
       警告:在某些系统上,环境变量是对所有用户可见的,此时建议使用"--password-file"选项。

       你可以通过web代理(web proxy)的方式与rsync daemon建立连接,只需设置环境变量RSYNC_PROXY的
       值为hostname:port指向你的web代理。但要注意,web代理的配置必须得支持与873端口的代理连接。

       你还可以使用代理程序与rsync daemon建立连接,只需设置环境变量RSYNC_CONNECT_PROG的值为你想
       要运行的命令来代替建立套接字连接。环境变量的值中可能会包含"%H",它代表rsync命令中所指定
       的主机名(因此如果想在值中包含一个"%"字符,需要使用"%%")。例如:

         export RSYNC_CONNECT_PROG=\'ssh proxyhost nc %H 873\'
         rsync -av targethost1::module/src/ /dest/
         rsync -av rsync:://targethost2/module/src/ /dest/

       上面的命令中使用ssh在proxyhost上运行了nc命令,它将会转发所有数据到目标主机(%H)的873端口。


通过远程SHELL连接使用RSYNC-DAEMON特性
       某些时候使用rsync daemon的各种特性(如可命名的模块)比允许任意套接字连接到系统上(除了真正
       需要使用远程shell的访问)更方便。rsync支持使用远程shell连接到主机上,它会派生出一个单用
       途(single-use)的"daemon"服务用于读取远程用户家目录下的配置文件。如果你想要加密
       daemon-sytle传输的数据,但由于daemon是被远程用户启动的,你无法通过这样的daemon使用像
       chroot这样的功能,也无法修改uid,这时使用远程shell是比较好的。(另一个加密daemon传输的方
       式是,使用ssh建立本地端口到远程主机的隧道,并且在远程主机上配置一个普通的rsync daemon只
       允许从"localhost"发起连接(译者注:其实就是配置ssh的端口转发))

       从用户角度来看,使用远程shell连接使用rsync daemon与连接普通rsync daemon的命令行语法几乎
       相同,唯一例外的是必须在命令行使用--rsh=COMMAND选项设置远程shell程序。(设置RSYNC_RSH环境
       变量不会打开此功能)例如:

           rsync -av --rsh=ssh host::module /dest

       如果需要指定不同用户的远程shell,一定要记住,host前缀"user@"设置的是rsync上的用户(即用于
       需要用户认证的模块)。这意味着必须在ssh命令中使用"-l user"选项来指定远程shell,下面的例子
       中使用了"--rsh"的短格式选项"-e":

           rsync -av -e "ssh -l ssh-user" rsync-user@host::module /dest

       "ssh-user"将在ssh上生效,而"rsync-user"将用于认证使用"module"模块。(译者注:对于连接目标
       非daemon时,"ssh -l user"和"user@"作用是一样的)
       
       (译者注:远程shell连接使用rsync daemon,和真正的守护进程rsync daemon是不同的,后者是配置
       好后永久监听在后台提供服务,而远程shell使用rsync daemon则是一种临时性单用途的daemon进程,
       虽然也会读取配置文件,但它是由远程shell进程fork出来的子进程,此次连接结束后,此daemon进
       程会自动消逝)

启动RSYNC服务以接受连接请求
       要连接到一个rsync daemon,远程系统上的rsync daemon必须已经运行(或者像inetd一样,已经配置
       了当特殊端口上有连接时会派生出rsync daemon)。关于如何启动一个能处理从套接字进来的连接的
       daemon的完整信息,请看rsyncd.conf(5),这是rsync daemon的配置文件,它包含如何运行daemon的
       非常详细的信息(包括独立模式(stand-alone)和inetd格式的配置)

       如果你使用的是某种远程shell传输方式,则没有手动启动rsync daemon的必要。

传输过程中的排序
       Rsync总是会在内部传输列表中对指定的文件名进行排序。这将会使得相同目录名的文件被合并在一
       起进行传输,这样一来,去除重复文件名就比较容易,但这可能会让一些人产生疑惑:文件传输时
       的顺序和命令行中给的顺序不一致。

       如果想要让那个某个特殊的文件比其他文件先传输,可以将它们分隔到不同的rsync命令上,或考虑
       使用"--delay-updates"选项(它不会影响传输时的排序,但会使得最后的文件更新(file-updating)
       阶段更迅速)。

示例
       以下是一些我使用rsync的示例。

       要备份包含了大量word文档和邮件文件夹的家目录,使用一个任务计划(cron job)运行:

              rsync -Cavz . arvidsjaur:backup

       每个晚上都将通过PPP连接到主机"arvidsjaur"上的backup目录。

       要同步samba源码树,使用下面的Makefile targets:

           get:
                   rsync -avuzb --exclude \'*~\' samba:samba/ .
           put:
                   rsync -Cavuzb . samba:samba/
           sync: get put

       这可以让我和连接另一端的CVS目录保持同步。然后再在远程主机上做一些CVS操作,这节省了我大
       量时间,因为远程CVS协议的效率并不高。

       我使用下面的命令在我的"old"和"new"ftp站点之间做一个镜像:

       rsync -az -e ssh --delete ~ftp/pub/samba nimbus:"~ftp/pub/tridge"

       由于设置了cron计划,每隔几小时它就登录一次。

选项汇总
       下面是rsync中可用的命令汇总,关于选项的完整描述,请看后文。

        -v, --verbose               increase verbosity
        -q, --quiet                 suppress non-error messages
            --no-motd               suppress daemon-mode MOTD (see caveat)
        -c, --checksum              skip based on checksum, not mod-time & size
        -a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)
            --no-OPTION             turn off an implied OPTION (e.g. --no-D)
        -r, --recursive             recurse into directories
        -R, --relative              use relative path names
            --no-implied-dirs       don\'t send implied dirs with --relative
        -b, --backup                make backups (see --suffix & --backup-dir)
            --backup-dir=DIR        make backups into hierarchy based in DIR
            --suffix=SUFFIX         backup suffix (default ~ w/o --backup-dir)
        -u, --update                skip files that are newer on the receiver
            --inplace               update destination files in-place
            --append                append data onto shorter files
            --append-verify         --append w/old data in file checksum
        -d, --dirs                  transfer directories without recursing
        -l, --links                 copy symlinks as symlinks
        -L, --copy-links            transform symlink into referent file/dir
            --copy-unsafe-links     only "unsafe" symlinks are transformed
            --safe-links            ignore symlinks that point outside the tree
        -k, --copy-dirlinks         transform symlink to dir into referent dir
        -K, --keep-dirlinks         treat symlinked dir on receiver as dir
        -H, --hard-links            preserve hard links
        -p, --perms                 preserve permissions
        -E, --executability         preserve executability
            --chmod=CHMOD           affect file and/or directory permissions
        -A, --acls                  preserve ACLs (implies -p)
        -X, --xattrs                preserve extended attributes
        -o, --owner                 preserve owner (super-user only)
        -g, --group                 preserve group
            --devices               preserve device files (super-user only)
            --copy-devices          copy device contents as regular file
            --specials              preserve special files
        -D                          same as --devices --specials
        -t, --times                 preserve modification times
        -O, --omit-dir-times        omit directories from --times
            --super                 receiver attempts super-user activities
            --fake-super            store/recover privileged attrs using xattrs
        -S, --sparse                handle sparse files efficiently
        -n, --dry-run               perform a trial run with no changes made
        -W, --whole-file            copy files whole (w/o delta-xfer algorithm)
        -x, --one-file-system       don\'t cross filesystem boundaries
        -B, --block-size=SIZE       force a fixed checksum block-size
        -e, --rsh=COMMAND           specify the remote shell to use
            --rsync-path=PROGRAM    specify the rsync to run on remote machine
            --existing              skip creating new files on receiver
            --ignore-existing       skip updating files that exist on receiver
            --remove-source-files   sender removes synchronized files (non-dir)
            --del                   an alias for --delete-during
            --delete                delete extraneous files from dest dirs
            --delete-before         receiver deletes before xfer, not during
            --delete-during         receiver deletes during the transfer
            --delete-delay          find deletions during, delete after
            --delete-after          receiver deletes after transfer, not during
            --delete-excluded       also delete excluded files from dest dirs
            --ignore-errors         delete even if there are I/O errors
            --force                 force deletion of dirs even if not empty
            --max-delete=NUM        don\'t delete more than NUM files
            --max-size=SIZE         don\'t transfer any file larger than SIZE
            --min-size=SIZE         don\'t transfer any file smaller than SIZE
            --partial               keep partially transferred files
            --partial-dir=DIR       put a partially transferred file into DIR
            --delay-updates         put all updated files into place at end
        -m, --prune-empty-dirs      prune empty directory chains from file-list
            --numeric-ids           don\'t map uid/gid values by user/group name
            --timeout=SECONDS       set I/O timeout in seconds
            --contimeout=SECONDS    set daemon connection timeout in seconds
        -I, --ignore-times          don\'t skip files that match size and time
            --size-only             skip files that match in size
            --modify-window=NUM     compare mod-times with reduced accuracy
        -T, --temp-dir=DIR          create temporary files in directory DIR
        -y, --fuzzy                 find similar file for basis if no dest file
            --compare-dest=DIR      also compare received files relative to DIR
            --copy-dest=DIR         ... and include copies of unchanged files
            --link-dest=DIR         hardlink to files in DIR when unchanged
        -z, --compress              compress file data during the transfer
            --compress-level=NUM    explicitly set compression level
            --skip-compress=LIST    skip compressing files with suffix in LIST
        -C, --cvs-exclude           auto-ignore files in the same way CVS does
        -f, --filter=RULE           add a file-filtering RULE
        -F                          same as --filter=\'dir-merge /.rsync-filter\'
                                    repeated: --filter=\'- .rsync-filter\'
            --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
            --files-from=FILE       read list of source-file names from FILE
        -0, --from0                 all *from/filter files are delimited by 0s
        -s, --protect-args          no space-splitting; wildcard chars only
            --address=ADDRESS       bind address for outgoing socket to daemon
            --port=PORT             specify double-colon alternate port number
            --sockopts=OPTIONS      specify custom TCP options
            --blocking-io           use blocking I/O for the remote shell
            --stats                 give some file-transfer stats
        -8, --8-bit-output          leave high-bit chars unescaped in output
        -h, --human-readable        output numbers in a human-readable format
            --progress              show progress during transfer
        -P                          same as --partial --progress
        -i, --itemize-changes       output a change-summary for all updates
            --out-format=FORMAT     output updates using the specified FORMAT
            --log-file=FILE         log what we\'re doing to the specified FILE
            --log-file-format=FMT   log updates using the specified FMT
            --password-file=FILE    read daemon-access password from FILE
            --list-only             list the files instead of copying them
            --bwlimit=KBPS          limit I/O bandwidth; KBytes per second
            --write-batch=FILE      write a batched update to FILE
            --only-write-batch=FILE like --write-batch but w/o updating dest
            --read-batch=FILE       read a batched update from FILE
            --protocol=NUM          force an older protocol version to be used
            --iconv=CONVERT_SPEC    request charset conversion of filenames
            --checksum-seed=NUM     set block/file checksum seed (advanced)
        -4, --ipv4                  prefer IPv4
        -6, --ipv6                  prefer IPv6
            --version               print version number
       (-h) --help                  show this help (see below for -h comment)


       Rsync以daemon方式运行时,还可以接受以下选项:

            --daemon                run as an rsync daemon
            --address=ADDRESS       bind to the specified address
            --bwlimit=KBPS          limit I/O bandwidth; KBytes per second
            --config=FILE           specify alternate rsyncd.conf file
            --no-detach             do not detach from the parent
            --port=PORT             listen on alternate port number
            --log-file=FILE         override the "log file" setting
            --log-file-format=FMT   override the "log format" setting
            --sockopts=OPTIONS      specify custom TCP options
        -v, --verbose               increase verbosity
        -4, --ipv4                  prefer IPv4
        -6, --ipv6                  prefer IPv6
        -h, --help                  show this help (if used after --daemon)


选项
       Rsync可以接受长格式选项和段格式选项,下面列出了所有可使用的选项。如果以多种方式指定同一
       个选项,则使用逗号分隔。某些选项只有长格式,没有短格式。如果选项要带参数,参数只能列在长
       格式选项后。如果要指定选项的参数,可以使用"--option=param"的格式,也可以使用空白字符替换
       "="。某些参数可能需要使用引号包围,避免被shell命令行解析。需要记住,文件名中的前导波浪号
       (~)是被shell替换的,因此"--option=~/foo"将不会从波浪号进入家目录(若要如此,将"="移除)


       --help 输出所有选项简短格式的帮助信息并退出。为了兼容老版本,当只使用一个"-h"选项时也会
       输出这些帮助信息。

       --version
              输出rsync的版本号并退出。

       -v, --verbose
              该选项增加了传输过程中的大量信息。默认情况下,rsync以静默(silent)模式工作。单个
              "-v"将给出哪些文件正在被传输的信息,还会在传输结束时给出一个简要总结信息。两个
              "-v"选项(-vv)将给出哪些文件被忽略,并且在传输结束时给出更详细的信息。超过两个
              "-v"选项一般只在调试过程中使用。

              需要注意的是,传输过程中输出的文件名是被"--out-format=%n%L"处理过的,它表示仅显
              示文件名,如果是软链接文件,则还显示它指向谁。当使用一个"-v"选项时,将不会告诉你
              文件的属性改变了。如果明确要列出改变了属性的文件列表(既可以使用"--itemize-change"
              也可以在"--out-format"中增加"%i"),(客户端)输出结果中将总是会增加所有已改变的条目
              清单。更详细信息见"--out-format"选项。

       -q, --quiet
              该选项将减少大量传输过程中的信息,但无法禁止从远程主机产生的信息。该选项适用于
              cron任务计划中。

       --no-motd
              此选项会影响客户端在守护程序传输开始时输出的信息。它会禁止motd信息,但是也会影响
              daemon对"rsync host::"请求显示模块列表的回应信息,因此如果想要请求daemon的模块列
              表,应该忽略该选项。

       -I, --ignore-times
              正常情况下,rsync会忽略文件大小相同且最后修改时间戳相同的文件,该选项关闭"quick 
              check"行为,使得所有的文件都会被更新。
              (译者注:即从增量拷贝变成全量拷贝)

       --size-only
              该选项将修改rsync查找需要被传输文件的"quick check"算法,默认该算法会找出所有大小
              或最后修改时间戳改变文件并传输,使用该选项将仅查找大小改变的文件并传输。在使用了
              某些镜像备份但没有保留精确时间戳的情况下,使用带有该选项的rsync将非常有帮助。

       --modify-window
              当比较时间戳时,rsync会把两者相差不超过该选项所指定的值时认为是相同的时间戳。正常
              情况下该选项的值为0(精确匹配),但在某些情况下,将此选项的值设置为非0将非常有用。
              特别是与Windows的FAT文件系统(此文件系统有2秒范围内的精确度差异)传输数据时,设置
              "--modify-window=1"将非常有用(允许文件时间戳有1秒的差异)。

       -c, --checksum
              此选项改变了rsync检查文件改变和决定是否要传输的方式。不使用该选项,rsync使用
              "quick check"(默认的)检查发送端和接收端两边文件的大小和最后一次修改时间是否改变。
              使用该选项,将对每个匹配了大小的文件比较128位的校验码。生成校验码意味着两端都会消
              耗大量的磁盘I/O以读取传输队列中文件的数据内容(传输队列早于读取文件数据,即先quick
              check,再生成和比较校验码),因此该选项会大幅度降低效率。

              发送端生成校验码的时刻是做文件系统扫描以生成可获取文件列表时。接收端生成校验码的
              时刻是在扫描哪些文件发生改变时,它会对那些与发送端文件大小相同的文件生成校验码。
              所以,该选项的结果是:只传输校验码改变或文件大小改变(意味着校验码也改变)的文件。

              注意,rsync默认总是在文件传输完成后再生成全部文件(whole-file)的校验码,并验证传输
              完成的文件是否正确重组。但是使用该选项,它隐含了在传输前做"该文件是否需要更新?"
              的检查,使得文件传输结束后不会自动去验证它们重组的正确性。

              从协议30版本开始(对应的rsync版本从3.0.0开始)使用的校验码是MD5格式的,更老的协议版
              本使用的校验码是MD4格式的。
              
              (译者注:即基于checksum来判断文件是否要同步,而不是基于quick check算法。在两个地
              方会计算checksum:sender端发送文件列表时,接收端的generator判断文件是否要传输时)

       -a, --archive
              该选项等价于"-rlptgoD"选项的组合。它表示使用归档模式并保留几乎所有属性(明显遗漏了
              "-H"选项)。上面的等价选项的唯一例外是指定了"--files-from"选项,它使得"-r"选项被强
              制忽略。

              注意,"-a"选项不保留硬链接属性,因为查找多个硬链接文件是非常昂贵的。若要保留硬链
              接属性,必须与"-a"分开独立使用"-H"选项。

       --no-OPTION
              在选项前面加上前缀"no-"表示关闭该选项的隐含选项功能。不是所有选项都能使用"no-"前
              缀:只有那些隐含了其他选项的选项(如--no-D,--no-perms)或者不同环境下有不同默认值的
              选项(如--no-whole-file,--no-blocking-io,--no-dirs)。"no-"后面即可以接短格式选项,
              也可以接长格式选项(如--no-R等价于--no-relative)

              例如:你想使用"-a"选项但不想使用它的隐含选项"-o"(--owner),即让"-a"等价于
              "-rlptgD",可以指定"-a --no-o"(或-a --no-owner)。

              选项的顺序是非常重要的:如果指定"--no-r -a",则最终会启用"-r"选项,与之相反的是
              "-a --no-r"。同样需要注意的是"--files-from"的副作用,它的位置顺序不重要,因为它影
              响了某些选项的默认行为,并轻微改变了"-a"的意义(见"--files-from"选项以获取更详细说
              明)。

       -r, --recursive
              此选项告诉rsync以递归模式拷贝目录。参见"--dirs"(-d)。

              从rsync 3.0.0开始,现在使用的递归算法是一种增量扫描,比以前少占用很多内存,并且在
              最初扫描完一些目录后就开始进行数据传输。增量扫描仅影响递归算法,不会改变非递归的
              传输类型。同样,只有传输两端的版本都高于3.0.0才会如此。

              某些选项要求rsync知道完整的文件列表,所以它们会禁用增量递归模式。这些选项包括:
              --delete-before,--delete-after,--prune-empty-dirs和--delay-updates。正因为如此,
              如果两端rsync版本都高于3.0.0时,指定"--delete"时的默认删除模式变为
              "--delete-during"(可以使用"--del"或"--del-during"来精确指定删除模式)。同样,选择
              使用"--delete-delay"选项比"--delete-after"会更好。 
              
              增量递归模式可以使用"--no-inc-recursive"(--no-i-r)选项来禁用。

       -R, --relative
              表示使用相对路径。这意味着会将命令行中指定的全路径名而非路径最尾部的文件名发送给
              服务端。当要一次性发送多个不同目录时该选项非常有用。例如,如果使用下面的命令:

                 rsync -av /foo/bar/baz.c remote:/tmp/

              这将会在远程主机上的/tmp/目录下创建一个baz.c文件。如果使用下面的命令:

                 rsync -avR /foo/bar/baz.c remote:/tmp/

              将会在远程主机的/tmp/目录下递归创建foo/bar/baz.c,它保留了命令行中指定的全路径。
              这些额外的路径元素被称为"隐含目录"(如上例中的foo和foo/bar)。

              从rsync 3.0.0开始,rsync总是会发送这些隐含目录作为文件列表中的真实的目录,即使发
              送端的某个路径元素是一个软链接。这使得拷贝全路径文件时,不用担心因为路径中包含了
              软链接而可能出现的非预期的问题(译者注:即链接追踪)。如果要复制服务端符号链接,请
              通过其路径来复制符号链接,并通过实际路径来复制器真实对象。如果rsync版本较老,可
              能需要使用"--no-implied-dirs"选项。

              也可以对所指定的路径限制发送时作为隐含目录的路径信息。从rsync 2.6.7版本开始,
              rsync可以在源路径插入一个点".",就像这样:

                 rsync -avR /foo/./bar/baz.c remote:/tmp/

              这将会在远程主机上创建/tmp/bar/baz.c。(注意点后面必须跟上斜线,因此"/foo/."将不会
              被缩写)对于更老版本的rsync,可能需要改变目录来限制源路径。例如,推送文件时:

                 (cd /foo; rsync -avR bar/baz.c remote:/tmp/)


              (注意,括号将把两个命令放入子shell中执行,因此cd改变目录不会影响未来的命令)如果使
              用老版本的rsync拉取文件,使用以下惯用格式(但只适用于非daemon的传输):

                 rsync -avR --rsync-path="cd /foo; rsync" \\
                     remote:bar/baz.c /tmp/


       --no-implied-dirs
              该选项影响"--relative"选项的默认行为。当指定该选项时,在传输时不会包含源文件的隐
              含目录。这意味着目标主机上对应路径元素会被保留不变(如果它们存在的话),并且缺少的
              隐含目录会以默认属性方式被创建。甚至允许目标主机上隐含路径元素和源地址的属性有非
              常大的区别,例如在接收端某文件可能是某个目录的符号链接。

              另外,当rsync要传输的文件为"path/foo/file"时,如果使用"--relative"选项,则目录
              "path"和"path/foo"是隐含目录。如果在目标主机上"path/foo"是一个指向"bar"文件的符号
              连接,接收端的rsync会删除"path/foo",并重建它为一个目录,然后将接收到的文件放入此
              新目录中。使用"--no-implied-dirs"选项,接收端使用已存在的路径元素更新
              "path/foo/file",意味着最终会在"path/bar"中创建file文件。另一个实现连接保留功能的
              方法是使用"--keep-dirlinks"选项(也将会使得后续的传输从符号链接定位到目录中)。

              当使用早于3.0.0版本的rsync拉取文件时,如果发送端的路径中包含了符号链接,并且希望
              隐含目录能以普通目录方式被传输时,可能需要使
              用该选项。

       -b, --backup
              当使用该选项时,如果目标路径中已存在需要被传输或需要被删除的文件时将重命名该文件。
              可以使用"--backup-dir"选项控制备份文件的保存路径,使用"--suffix"选项控制备份时追
              加在原文件名后的后缀。
              
              注意,如果不指定"--backup-dir"选项:(1)将隐含"--omit-dir-times"选项(2)如果
              "--delete"选项同时影响该文件,rsync将在排除规则的尾部添加一个起"保护"作用的筛选规
              则(例如,-f "P *~"),这会阻止之前备份的文件被删除。注意,如果你使用了自己定义的筛
              选规则,你可能需要手动插入你的exclude/include规则,并且保证其优先级较高防止被其他
              规则先匹配上而导致失效。

       --backup-dir=DIR
              结合"--backup"选项一起使用,这表示rsync在远端将存储所有备份文件到指定的目录下。这
              可用于增量备份。可以使用"--suffix"选项额外指定备份后缀(否则备份到指定目录的文件将
              使用原文件名)。

              需要注意如果拟制定了一个相对路径,备份目录将会相对到目标目录,因此你可能真正想要
              指定的是一个绝对路径或以"../"开头的路径。如果接收端是rsync daemon,备份目录将无法
              超出模块的路径层次结构,因此请特别注意不要将其删除或复制到其中。

       --suffix=SUFFIX
              该选项可自定义"--backup"(-b)选项的备份文件名后缀,如果没有指定"--backup-dir"选项,
              则默认后缀为"~",否则后缀为空字符串。

       -u, --update
              该选项将强制忽略在目标路径下已存在且修改时间比源文件更新的文件。(如果已存在的目标
              文件的修改时间和源文件相同,则只在文件大小不同时才会更新)

              注意该选项不会影响软链接或其他特殊文件的拷贝机制。而且,不管两端文件中的数据是否
              相同,考虑发送端和接收端不同的文件格式对于更新来说也是非常重要的。换句话说,如果
              源文件是一个目录,而目标已存在的同名文件却是一个普通文件,则rsync会直接忽略它们的
              时间戳。

              该选项是一种传输规则,不是排除规则,因此不会影响进入file-lists的文件,也因此不会影
              响删除。它仅会限制接收端请求传输的文件。

       --inplace
              该选项会改变当数据需要更新时,rsync传输文件的方式。默认情况下,rysnc会创建一个文件
              的新副本,当此文件传输完成时会将此副本移动到指定的路径下。使用此选项后,将直接把更
              新部分的数据写入到目标文件中。
               
              (译者注:此选项的拷贝机制可以理解为类似于drbd基于块的拷贝机制)
              
              这会带来以下几种影响:

              o      硬链接不会被破坏。这意味着通过其他硬链接文件可以直接访问到新数据。更进一步
                     说,尝试拷贝不同源文件到多重链接的目标文件时,将导致目标数据像"拔河"一样,
                     来来回回地变化。

              o      使用中的二进制程序不会被更新(操作系统会防止这样的事情发生,二进制程序自身也
                     会在尝试数据交换时崩溃)。

              o      在传输过程中,文件的数据会进入不一致状态,并且如果传输被中断或者更新失败时,
                     文件将继续不一致。

              o      rsync无法将数据写入一个无法被更新的文件中。虽然超级管理员可以更新任意文件,
                     但普通用户需要获取文件的写权限才能打开文件并向其中成功写入数据。

              o      如果目标文件中的数据在它被复制到某个位置之前被覆盖,则rsync的增量拷贝效率会
                     降低。如果使用了"--backup"则不会出现这样的问题,因为rsync足够智能,它会使用
                     备份文件作为传输的基准文件。

              警告:不能使用该选项对那些正被其他用户访问的文件,因此在选择使用此选项进行拷贝时需
              要小心谨慎。

              该选项适用于对于那些基于数据块(block-based)改变或向文件尾部追加了数据的大文件,也
              适用于那些安装在磁盘上而非网络上的系统。它也能有效帮助保持写时复制(copy-on-write)
              文件系统的快照。
              
              该选项隐含了"--partial"选项(因为传输中断不会删除文件),但和"--partial-dir"以及
              "--delay-udpates"选项冲突。

       --append
              该选项使得rsync以追加数据到文件尾部的方式来更新文件,它会假定接收端上已存在的文件
              和发送端文件的前段数据是一致的。如果接收端上文件的大小等于或大于发送端文件的大小,
              则此文件会被忽略。该选项不会干涉不被传输文件的非内容属性(non-content,如权限,所有
              者等),也不会影响对非普通文件(non-regular)的更新。隐含了"--inplace"选项,但是和
              "--sparse"选项不冲突(因为它总是扩充一个文件的长度)。
              
       --append-verify
              工作方式类似于"--append"选项,但是接收端已存在的数据在验证阶段会被包含在whole-file
              校验码中,如果最后验证阶段失败了,该文件会被传输(rsync将使用正常、非追加的
              "--inplace"模式重发文件)。

       -d, --dirs
              以不递归的方式拷贝目录本身,它不会拷贝目录中的文件。不像"--recursive"选项,只拷贝
              目录中的内容而不拷贝目录本身。除非目录名中使用了"."或者以斜线结尾(如".","dir/.",
              "dir/"等)。既不指定该选项,也不指定"--recursive"选项时,rsync将忽略所有遇到的目录
              (并会向输出这些影响信息)。如果同时指定了"--dirs"和"--recursive"选项,"--recursive"
              将优先生效。

              若未给定"--recursive"选项,"--files-from"或"--list-only"选项会隐含"--dirs"选项,此
              时在列表中能见到所有目录。要想关闭此功能,可以指定"--no-dirs"或"--no-d"选项。

              还有一个比较有用的向后兼容的选项:"--old-dirs"(--old-d)。它告诉rsync使用
              "-r --exclude=\'/*/*\'"仅列出目录而不递归。

       -l, --links
              当遇到符号链接时,将在目标路径重新创建符号链接。(译者注:即拷贝符号链接本身)

       -L, --copy-links
              使用该选项时,当遇到符号链接时将拷贝它所指向的目标而不是符号链接本身(译者加:但仅
              只是追踪了链接文件指向文件中的数据,文件名仍然是符号链接文件的文件名。举个例子,
              如果client端a文件-->b文件,则使用该选项拷贝a时,将在receiver端生成a文件,但a文件
              是一个普通文件,其中的数据来源是client端b文件的数据)。老版本的rsync使用该选项还会
              告诉接收端也追踪符号链接到其指向的目标中。在目前的rsync版本中,要实现这样的功能需
              要指定"--keep-dirlinks"(-K)选项。

       --copy-unsafe-links
              This tells rsync to copy the referent of symbolic links that point outside the 
              copied tree. Absolute symlinks are also treated like ordinary files, and so are 
              any symlinks in the source path itself when --relative is used. This option has 
              no additional effect if --copy-links was also specified.

       --safe-links
              This tells rsync to ignore any symbolic links which point outside the copied tree.
              All absolute symlinks are also ignored. Using this option in conjunction with 
              --relative may give unexpected results.

       -k, --copy-dirlinks
              该选项使得sender端将符号链接视为一个目录,就像它真的是一个目录一样。如果你不想让指
              向非目录的符号链接受到影响,可以使用该选项。

              Without this option, if the sending side has replaced a directory with a symlink 
              to a directory, the receiving side will delete anything that is in the way of the 
              new symlink, including a directory hierarchy (as long as --force or --delete is 
              in effect).

              See also --keep-dirlinks for an analogous option for the receiving side.

              --copy-dirlinks applies to all symlinks to directories in the source. If you want 
              to follow only a few specified  symlinks, a trick you can use is to pass them as 
              additional source args with a trailing slash, using --relative to make the paths 
              match up right.  For example:

              rsync -r --relative src/./ src/./follow-me/ dest/


              This works because rsync calls lstat(2) on the source arg as given, and the 
              trailing slash makes lstat(2) follow the symlink, giving rise to a directory in 
              the file-list which overrides the symlink found during the scan of "src/./".

       -K, --keep-dirlinks
              该选项使得receiver端将符号链接视为目录文件,就像它是真的目录一样,但只有它在sender
              端能匹配一个真实目录时才会如此。不使用该选项,receiver端的符号链接将被删除或替换为
              一个真实目录。
              
              例如,假设你要传输一个包含文件"file"的目录"foo",但是在receiver端上的"foo"是一个指
              向"bar"目录的符号链接。如果不使用该选项,receiver端将删除符号链接"foo",然后重建它
              为一个目录,然后接收"file"到此目录中。如果使用了该选项,receiver端将保留符号链接,
              然后将"file"存放到"bar"目录中去。
              (译注:上述示例的命令格式为"rsync -r foo user@host:/path",其中path下有个名为foo
              的链接文件)
              
              需要注意一点:如果使用了"--keep-dirlinks",你必须信任你所有拷贝中的链接文件。如果
              某个非信任用户要创建属于它自己的符号链接(指向某目录),在下一次传输过程中,可能会使
              用真实目录替换掉符号链接并影响链接文件所指向目录中的文件内容。对于备份拷贝,你最好
              是用mount的bind功能而不是使用符号链接来改变接收端的目录层次。
              
              参见"--copy-dirlinks"选项,它是在sender端上类似的选项。

       -H, --hard-links
              This tells rsync to look for hard-linked files in the source and link together 
              the corresponding files on the destination.   Without this option, hard-linked 
              files in the source are treated as though they were separate files.

              This option does NOT necessarily ensure that the pattern of hard links on the 
              destination exactly matches that on the source. Cases in which the destination 
              may end up with extra hard links include the following:

              o      If the destination contains extraneous hard-links (more linking than what 
                     is present in the source file list), the  copying
                     algorithm will not break them  explicitly. However, if one or more of the 
                     paths have content differences, the normal file-update process will break 
                     those extra links (unless you are using the --inplace option).

              o      If you specify a --link-dest directory that contains hard links, the 
                     linking of the destination files against the --link-dest files can  
                     cause some paths in the destination to become linked together due to  
                     the --link-dest associations.


              Note that rsync can only detect hard links between files that are inside the 
              transfer set.  If rsync updates a file that has extra hard-link connections to 
              files outside the transfer, that linkage will be broken. If you are tempted to 
              use the --inplace  option to avoid this breakage, be very careful that you know 
              how your files are being updated so that you are certain that no unintended 
              changes happen due to lingering hard links (and see the --inplace option for 
              more caveats).

              If incremental recursion is  active (see  --recursive),  rsync may transfer a 
              missing hard-linked file before it finds  that  another link for that contents 
              exists elsewhere in the hierarchy.  This does not  affect  the accuracy of the 
              transfer (i.e. which files are hard-linked together), just its efficiency (i.e. 
              copying the data for a new, early copy of  a hard-linked file  that could have 
              been found  later in the transfer in another member of the hard-linked set of 
              files).  One way to avoid this inefficiency is to disable incremental recursion 
              using the --no-inc-recursive option.

       -p, --perms
              该选项告诉receiver端的rsync,要将目标文件的权限值设置为何源文件一样(即权限保留)。
              (参见"--chmod"选项以获取rsync修改sender端权限的方式)

              当没有使用该选项时,将以如下方式设置权限值:

              o      已存在的文件继续保留它们的原有权限,尽管"--executability"选项可能会改变文
                     件的执行权限。

              o      对于新文件,将从源文件中获取普通权限值,再配合receiver端文件所在目录的默认
                     ACL权限或umask值决定文件的最终权限,并且会禁用它们的特殊权限位,除非新的目
                     录文件从其父目录中继承了sgid权限。

              因此,当"--perms"和"--executability"选项都被禁用时,rsync的行为和其它文件拷贝工具
              的行为一样,例如cp、tar。

              总结以下:要设置目标文件(包括新文件和已存在的旧文件)的权限值为源文件的权限值,使用
              "--perms"选项。要设置新的目标文件默认权限,请确保"--perms"选项是关闭的,然后使用
              "--chmod=ugo=rwX"(这将保证启用所有非掩码位权限)。如果想以更简单的方式实现后一种情
              况,你可能需要为其定义一个popt别名,例如将下面的命令行放入文件~/.popt中(下面的命令
              中定义了"-Z"选项,并使用了"--no-g"使得目标文件的所属组使用目标目录的默认组):

                 rsync alias -Z --no-p --no-g --chmod=ugo=rwX

              然后可以在命令行中使用新的选项,例如:

                 rsync -avZ src/ dest/

              (警告:请确保"-a"选项不是跟随在"-Z"后的,否则将重新启用上面已经定义的两个"--no-*"
              选项。)

       -E, --executability
              该选项使得rsync在未指定"--perms"选项时对普通文件保留文件的执行权限(或者不可执行权
              限)。普通文件上开启了"x"才认为有可执行权限。当目标文件已存在且和对应源文件的可执
              行权限值不一样时,rsync将采用如下方式修改权限:

              o      To make a file non-executable, rsync turns off all its ’x’ permissions.

              o      To make a file executable, rsync turns on each ’x’ permission that has a 
                     corresponding ’r’ permission enabled.

              如果指定了"--perms"选项,则该选项被忽略。

       -A, --acls
              使目标文件的ACL属性和源文件的ACL属性一致。该选项隐含了"--perms"选项。
              
       -X, --xattrs
              使目标文件的扩展属性和源文件的扩展属性保持一致。

       --chmod
              该选项使得rsync可以将目标文件的权限设定为此处所指定的权限值,让rsync以为这些指定
              的权限就是源文件的权限。也因此在未配合"--perms"一起使用时该选项无效。

              在chmod(1)的man文档中记录了普通的语法解析规则,你可以通过加上一个前缀"D"来指定该
              权限规则只对目录有效,或者加上前缀"F"指定该权限规则只对普通文件有效。例如,下面的
              例子保证了所有目录都标记了sgid权限,其它人对文件都不可写,所有者和所属组都可写,
              且所有人都有执行权限:

              --chmod=Dg+s,ug+w,Fo-w,+X

              可以指定多个使用逗号分隔的"--chomod"选项。

       -o, --owner
              该选项使得rsync将目标文件的所有者设置为和源文件一样(即保留所有者属性),但要求接收
              端的rsync是以super user身份运行的(或指定了"--no-super"选项)。如果不指定该选项,目
              标文件的所有者将设置为调用rsync的用户身份(译者注:例如rsync /src name1@host:/path,
              则目标文件的所有者为name1)。

              默认情况下,目标文件的所有者名称由uid匹配而来,但在某些环境下,可能会保留使用uid。
              (详细信息见"--numeric-ids"选项)
              
              (译者注:例如源文件的所有者为name1,其uid=1000,那么将在目标主机上寻找uid=1000所
              对应的用户名,如果能找到则所有者设置为用户名,否则设置为uid=1000)

       -g, --group
              此选项的意义完全同"--owner",所以不做对应翻译。

       --devices
              该选项使得rsync可以传输字符设备和块设备到目标主机上以重新创建这些设备。该选项要求
              接收端的rsync是以super user身份运行的(译者注:例如,root用户也算是super user,则
              rsync /devicename root@host:/path),否则该选项失效。(见"--super"和"--fake-super"
              选项)

       --specials
              该选项使得rsync可以传输特殊文件,如命名套接字,命名管道等。

       -D     该选项等价于"--devices --specials"选项组合。

       -t, --times
              该选项告诉rsync将mtime随文件一起传输给receiver,使得目标文件的mtime和源文件一样。
              千万注意,如果不指定该选项,原本排除那些mtime相同的文件而获得的性能提升将不再生
              效;换句话说,如果没有在rsync命令行中使用"-t"或"-a"选项,将导致下一次传输以类似于
              "-I"的方式进行,即更新所有文件(尽管在文件没有真正发生更改的情况下,rsync的增量传
              输算法可以让更新效率很高,但最好还是使用"-t")

       -O, --omit-dir-times
              该选项告诉rsync,当保留mtime(见"--times")时,将忽略目录。如果receiver端正在通过
              NFS共享目录,使用"-O"是一个不错的选择。若指定了"--backup"但未指定"--backup-dir",
              将隐含该选项。

       --super
              该选项告诉receiver端在进行某些操作时尝试使用super-user身份,尽管receiver端的rsync
              不是以super user身份运行的。这些操作包括:通过"--owner"保留文件所有者,通过
              "--groups"保留文件所属组(包括辅助组),通过"--devices"选项拷贝设备文件。在receiver
              端未以super user身份调用rsync时,这些选项很有用。如果要关闭super user选项功能,则
              使用"--no-super"

       --fake-super
              如果启用了该选项,rsync将通过对附加在每个文件上的扩展属性(根据实际需要)的保存/恢复
              来模拟super user。扩展属性包括:文件的owner、group、文件的设备信息(设备文件和特殊
              文件被创建为空文本文件)以及所有特殊权限位(suid/sgid/sbit)。

              在不使用super user备份数据时但又想保存ACL属性时,该选项很有用。
              
              "--fake-super"选项默认只影响命令发起端,如果想要通过远程shell影响远程端时,可以指
              定rsync的路径:

                rsync -av --rsync-path="rsync --fake-super" /src/ host:/dest/

              由于本地拷贝时,两端都在本地主机上,该选项将会同时影响本地的sender端和receiver端
              的文件。如果想要避免这样的情况,需要通过指定"localhost"的地址方式来实现拷贝,或者
              可能也可以使用"lsh"远程shell来完成。

              该选项会被"--super"以及"--no-super"选项覆盖。

              其他信息可以参见rsyncd.conf文件中的"fake super"。

       -S, --sparse
              尝试以高效率的方式处理稀疏文件,使得它们在目标主机上占用更少的空间。该选项不能和
              "--inplace"选项一起使用,因为"--inplace"不能向稀疏模式的文件中覆盖数据。

       -n, --dry-run
              该选项使得rsync仅测试运行(并生成和真正运行时几乎一样的输出信息)。该选项常和"-v"、
              "--verbose"、"-i"、"--itemize-changes"选项一起使用,以便查看rsync在这些选项下是如
              何工作的。

              配合"--itemize-changes"时的输出结果应该要和真正运行的结果完全一致(除非人为故意欺
              骗rsync或系统调用失败)。如果输出结果不一致,则出现了bug。配合其他几个选项时,输出
              结果除了在某些方面外应该保持几乎一致。尤其是,dry run不会真的发送数据,因此
              "--progress"将的结果将很可能异常。             

       -W, --whole-file
              使用该选项将使得rsync不再使用增量传输算法,而是传输所有文件。如果源和目标主机之间
              的带宽高于磁盘的带宽(特别是"磁盘"是网络文件系统时),则该选项比增量传输更有效。当
              源和目标都是本地时,该选项是默认的传输算法,但若受到write batch模式影响,则此算法
              不生效。

              (译者注:假设A主机和B主机之间的网络可以以1000MB/s的速度传输,而目标主机B上磁盘的
              带宽只有500MB/s,显然目标主机在文件重组时从basis file读取数据块的速度不如A发送给
              B快,所以在这种情况下,增量传输不如全量传输)

       -x, --one-file-system
              该选项告诉rsync不能跨文件系统递归(译者注:例如根目录下有mnt目录,mnt常用来做挂载
              点,则递归根目录时,不会递归到mnt里面)。该选项不会限制用户从多个文件系统指定拷贝
              项,仅只是限制rsync在每个目录下进行递归,同时也以类似的限制方式限制删除时receiver
              端递归。需要记住,使用mount命令的"bind"功能绑定了设备文件时,它也被认为是在同一个
              文件系统上。
              
              如果重复指定该选项,rsync将忽略client端所有的挂载点目录。否则,当遇到挂载点时将当
              作是空目录(这些空目录使用已挂载目录的属性,因为挂载点目录下的文件是无法访问的)。
              
              如果指定了"--copy-links"或"--copy-unsafe-links"选项使得rsync"瓦解"符号链接,则符
              号链接所指向的是另一个设备上的目录时将和挂载点一样对待。该选项不会影响指向非目录
              的符号链接。
              (译者注:翻译有点不标准,以下是原文)
              This tells rsync to avoid crossing a filesystem boundary when recursing. This does 
              not limit the user’s ability to specify items to copy from multiple filesystems, 
              just rsync’s recursion through the hierarchy of each  directory that  the  user 
              specified, and also the analogous recursion on the receiving side during deletion. 
              Also keep in mind that rsync treats a "bind" mount to the same device as being on 
              the same filesystem.

             If this option is repeated, rsync omits all mount-point directories from the copy. 
              Otherwise, it includes an empty directory at each mount-point it encounters 
              (using the attributes of the mounted directory because those of the underlying 
              mount-point directory are inaccessible).

              If rsync has been told to collapse symlinks (via --copy-links or 
              --copy-unsafe-links), a symlink to a directory on another device
              is treated like a mount-point.  Symlinks to non-directories are 
              unaffected by this option.

       --existing, --ignore-non-existing
              告诉rsync,如果目标主机上文件或文件所在目录还不存在,则不自动创建它们,即这些文件
              将不被传输。如果该选项和"--ignore-existing"选项一起使用,将不更新任何文件(如果你
              的目的是删除目标主机上的无关文件,这将非常有用)。
              
              (译者注:例如rsync --existing /etc/dhcp/* /tmp,由于/tmp下没有dhcp目录,所以dhcp
              目录和其中的文件都不会被传输到/tmp下)
              
              该选项属于一种transfer rule,而不是exclude rule,因此不会影响进入file list的文件,
              也因此不会影响删除操作。该选项仅对receiver所请求要传输的文件进行了限制。

       --ignore-existing
              该选项告诉rsync忽略对目标主机上已存在的文件的更新(不会忽略已存在的目录,或者什么
              也不做)。见"--existing"选项说明。

              该选项属于

以上是关于man rsync翻译(rsync命令中文手册)的主要内容,如果未能解决你的问题,请参考以下文章

第2章 rsync算法原理和工作流程分析

rsync简明手册

Linux下rsync命令用法

Linux系统备份还原工具4(rsync/数据同步工具)

rsync 服务快速部署手册

rsync 服务快速部署手册