Amazon Best VPN GoSearch

OnWorks 网站图标

rsync - 云端在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管服务提供商中运行 rsync

这是 rsync 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


rsync - 一种快速、多功能、远程(和本地)文件复制工具

概要


本地:rsync [OPTION...] SRC... [DEST]

通过远程shell访问:
拉:rsync [OPTION...] [USER@]HOST:SRC... [DEST]
推送:rsync [OPTION...] SRC... [USER@]HOST:DEST

通过 rsync 守护进程访问:
拉:rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [选项...] rsync://[USER@]HOST[:PORT]/SRC...[DEST]
推送:rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [选项...] SRC... rsync://[USER@]HOST[:PORT]/DEST

只有一个 SRC arg 而没有 DEST arg 的用法将列出源文件而不是
复制。

商品描述


Rsync 是一种快速且非常通用的文件复制工具。 可以复制到本地,
通过任何远程 shell 到/从另一台主机,或到/从远程 rsync 守护程序。 它提供了一个
大量选项可以控制其行为的各个方面并允许非常灵活
要复制的文件集的规范。 它以三角洲转移而闻名
算法,它通过仅发送数据来减少通过网络发送的数据量
源文件与目标中现有文件之间的差异。 同步是
广泛用于备份和镜像以及作为日常使用的改进复制命令。

Rsync 使用“快速检查”算法查找需要传输的文件(默认)
查找大小或上次修改时间已更改的文件。 任何变化
其他保留的属性(根据选项的要求)在目标文件上进行
当快速检查表明文件的数据不需要更新时,直接执行。

rsync 的一些附加功能是:

o 支持复制链接、设备、所有者、组和权限

o 类似于 GNU tar 的 exclude 和 exclude-from 选项

oa 用于忽略 CVS 将忽略的相同文件的 CVS 排除模式

o 可以使用任何透明的远程 shell,包括 ssh 或 rsh

o 不需要超级用户权限

o 文件传输流水线以最小化延迟成本

o 支持匿名或经过身份验证的 rsync 守护进程(非常适合镜像)

一般


Rsync 将文件复制到远程主机或从远程主机复制文件,或在当前主机本地复制文件(它
不支持在两个远程主机之间复制文件)。

rsync 有两种不同的方式联系远程系统:使用远程外壳
程序作为传输(例如 ssh 或 rsh)或通过直接联系 rsync 守护程序
TCP。 只要源或目标路径包含远程外壳传输
主机规范后的单个冒号 (:) 分隔符。 联系 rsync 守护进程
当源或目标路径包含双冒号 (::) 时直接发生
主机规范后的分隔符,或指定 rsync:// URL 时(另请参阅
“通过远程外壳连接使用 RSYNC-DAEMON 功能”部分的例外情况
后一条规则)。

作为一种特殊情况,如果指定了没有目标的单个源 arg,则文件
以类似于“ls -l”的输出格式列出。

正如预期的那样,如果源路径或目标路径均未指定远程主机,则副本
发生在本地(另见 --仅列表 选项)。

Rsync 将本地端称为“客户端”,将远程端称为“服务器”。 别
将“服务器”与 rsync 守护程序混淆——守护程序始终是服务器,但服务器可以是
守护进程或远程外壳生成的进程。

设置


有关安装说明,请参阅文件 README。

安装后,您可以将 rsync 用于可以通过远程 shell 访问的任何机器
(以及您可以使用 rsync 守护进程模式协议访问的一些)。 对于远程
传输,现代 rsync 使用 ssh 进行通信,但它可能已配置
默认情况下使用不同的远程 shell,例如 rsh 或 remsh。

你也可以指定任何你喜欢的远程 shell,或者使用 -e 命令行
选项,或通过设置 RSYNC_RSH 环境变量。

请注意,源计算机和目标计算机上都必须安装 rsync。

用法


您可以像使用 rcp 一样使用 rsync。 您必须指定源和目标,
其中之一可能是远程的。

也许解释语法的最好方法是举一些例子:

rsync -t *.c foo:src/

这会将匹配模式 *.c 的所有文件从当前目录传输到
机器 foo 上的目录 src。 如果远程系统上已经存在任何文件
然后使用 rsync 远程更新协议通过仅发送
数据的差异。 注意命令行上通配符的扩展(*.c)
进入文件列表由外壳在运行 rsync 之前处理,而不是由 rsync 本身处理
(与所有其他 posix 风格的程序完全相同)。

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

这将递归地传输机器 foo 上目录 src/bar 中的所有文件
进入本地机器上的 /data/tmp/bar 目录。 文件被转移到
“归档”模式,确保符号链接、设备、属性、权限、
在转让中保留所有权等。 此外,压缩将用于
减少传输数据部分的大小。

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

源上的尾部斜杠更改此行为以避免创建额外的
目的地的目录级别。 您可以将源上的尾随 / 视为含义
“复制此目录的内容”而不是“按名称复制目录”,但在
在这两种情况下,包含目录的属性都被传输到包含
目的地目录。 换句话说,以下每个命令都会复制
文件以相同的方式,包括它们对 /dest/foo 属性的设置:

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

另请注意,主机和模块引用不需要尾部斜杠来复制
默认目录的内容。 例如,这两个复制远程目录的
“/dest”中的内容:

rsync -av 主机:/dest
rsync -av 主机::模块 /dest

您还可以在仅本地模式下使用 rsync,其中源和目标都没有
名称中有“:”。 在这种情况下,它的行为类似于改进的复制命令。

最后,您可以列出特定 rsync 守护进程可用的所有(可列出)模块
去掉模块名称:

rsync somehost.mydomain.com::

有关更多详细信息,请参阅以下部分。

⁠高级课程 用法


从远程主机请求多个文件的语法是通过指定
与第一个相同样式的其他远程主机参数,或省略主机名。
例如,所有这些工作:

rsync -av 主机:文件 1:文件 2 主机:文件 {3,4} /dest/
rsync -av 主机::modname/文件{1,2} 主机::modname/file3 /dest/
rsync -av 主机::modname/file1 ::modname/file{3,4}

旧版本的 rsync 需要在 SRC 中使用带引号的空格,例如以下示例:

rsync -av 主机:'dir1/file1 dir2/file2'/dest
rsync 主机::'modname/dir1/file1 modname/dir2/file2'/dest

这种分词在最新的 rsync 中仍然有效(默认情况下),但并不容易
用作第一种方法。

如果您需要传输包含空格的文件名,您可以指定
--保护参数 (-s) 选项,或者您需要以某种方式转义空格
远程外壳会理解。 例如:

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

连接中 TO AN RSYNC 达蒙


也可以在没有远程 shell 的情况下使用 rsync 作为传输。 在这种情况下
您将直接连接到远程 rsync 守护进程,通常使用 TCP 端口 873。(这
显然需要守护进程在远程系统上运行,因此请参阅 STARTING
一个 RSYNC 守护进程接受下面的连接部分的信息。)

以这种方式使用 rsync 与在远程 shell 中使用它是一样的,除了:

o 您要么使用双冒号 :: 而不是单个冒号来分隔主机名
从路径,或者您使用 rsync:// URL。

o “路径”的第一个单词实际上是一个模块名称。

o 远程守护程序可能会在您连接时打印当天的消息。

o 如果您在远程守护程序上未指定路径名,则可访问路径列表
在守护程序上将显示。

o 如果您未指定本地目的地,则在
提供远程守护进程。

o 您不得指定 --rsh (-e) 选项。

复制名为“src”的远程模块中的所有文件的示例:

rsync -av 主机::src /dest

远程守护程序上的某些模块可能需要身份验证。 如果是这样,您将收到一个
连接时提示密码。 您可以通过设置来避免密码提示
环境变量 RSYNC_PASSWORD 到您要使用的密码或使用
--密码文件 选项。 这在编写 rsync 脚本时可能很有用。

警告:在某些系统上,所有用户都可以看到环境变量。 在那些系统上
运用 --密码文件 被推荐。

您可以通过设置环境变量通过网络代理建立连接
RSYNC_PROXY 到主机名:端口对,指向您的 Web 代理。 请注意,您的网络
代理的配置必须支持到端口 873 的代理连接。

您还可以通过设置使用程序作为代理来建立守护程序连接
环境变量 RSYNC_CONNECT_PROG 到您希望运行的命令代替
直接套接字连接。 该字符串可能包含转义符“%H”来表示
在 rsync 命令中指定的主机名(因此,如果您需要单个“%”,请使用“%%”
细绳)。 例如:

导出 RSYNC_CONNECT_PROG='ssh 代理主机 nc %H 873'
rsync -av targethost1::module/src/ /dest/
rsync -av rsync:://targethost2/module/src/ /dest/

上面指定的命令使用 ssh 在代理主机上运行 nc (netcat),它转发所有
数据到目标主机 (%H) 上的端口 873(rsync 守护程序)。

使用 同步守护进程 特色 威盛 A 远程外壳 连接


有时使用 rsync 守护进程的各种功能(例如命名模块)很有用
实际上没有允许任何新的套接字连接到系统中(除了
已经需要允许远程外壳访问)。 Rsync 支持使用连接到主机
一个远程 shell,然后产生一个一次性的“守护进程”服务器,它希望读取它的
远程用户的主目录中的配置文件。 如果您想加密,这可能很有用
守护进程式传输的数据,但由于守护进程由远程重新启动
用户,您可能无法使用 chroot 等功能或更改用户使用的 uid
守护进程。 (对于加密守护进程传输的另一种方法,请考虑使用 ssh 隧道传输
本地端口到远程机器并在该远程主机上配置一个普通的 rsync 守护进程
只允许来自“localhost”的连接。)

从用户的角度来看,通过远程外壳连接的守护进程传输使用几乎
与普通 rsync-daemon 传输相同的命令行语法,唯一的例外
因为您必须在命令行上显式设置远程 shell 程序
--rsh=命令 选项。 (在环境中设置RSYNC_RSH不会开启这个
功能。)例如:

rsync -av --rsh=ssh 主机::模块/dest

如果您需要指定不同的远程外壳用户,请记住 user@ 前缀
在主机前面指定 rsync-user 值(对于需要
基于用户的身份验证)。 这意味着您必须为 ssh 提供“-l 用户”选项
指定远程外壳时,如本示例中使用的短版本
--rsh 选项​​:

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

“ssh-user”将在 ssh 级别使用; “rsync-user”将用于登录
“模块”。

开始 AN RSYNC 达蒙 TO 接受 连接


为了连接到 rsync 守护进程,远程系统需要已经有一个守护进程
正在运行(或者它需要配置类似 inetd 的东西来生成一个 rsync 守护进程
特定端口上的传入连接)。 有关如何启动守护程序的完整信息
将处理传入的套接字连接,请参阅 同步文件(5) 手册页——即
守护程序的配置文件,它包含有关如何运行守护程序的完整详细信息
(包括独立和 inetd 配置)。

如果您使用远程外壳传输之一进行传输,则无需
手动启动 rsync 守护进程。

已排序 TRANSFER 订单


Rsync 总是将指定的文件名分类到其内部传输列表中。 这处理
将同名目录的内容合并在一起,可以很容易地
删除重复的文件名,并且在文件以相同方式传输时可能会混淆某些人
与命令行中给出的顺序不同。

如果您需要在另一个文件之前传输特定文件,请将
文件转换成不同的 rsync 调用,或考虑使用 --延迟更新 (这不影响
排序的传输顺序,但确实使最终的文件更新阶段发生得更多
迅速)。

示例


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

备份我妻子的主目录,其中包含大型 MS Word 文件和邮件
文件夹,我使用运行的 cron 作业

rsync -Cavz 。 arvidsjaur:备份

每天晚上通过 PPP 连接到我的机器“arvidsjaur”上的重复目录。

为了同步我的 samba 源代码树,我使用以下 Makefile 目标:

得到:
rsync -avuzb --exclude '*~' samba:samba/ 。
放:
rsync -Cavuzb 。 桑巴:桑巴/
同步:获取

这允许我与连接另一端的 CVS 目录同步。 然后我做
远程机器上的CVS操作,作为远程​​CVS协议,节省了大量时间
效率不高。

我使用以下命令在我的“旧”和“新”ftp站点之间镜像一个目录:

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

这是每隔几个小时从 cron 启动的。

配置 概要


以下是 rsync 中可用选项的简短摘要。 请参考详细
下面的描述以获得完整的描述。

-v, --verbose 增加详细程度
--info=FLAGS 细粒度的信息冗长
--debug=FLAGS 细粒度的调试详细信息
--msgs2stderr 用于调试的特殊输出处理
-q, --quiet 抑制非错误消息
--no-motd 抑制守护进程模式 MOTD(见警告)
-c, --checksum 基于校验和跳过,而不是修改时间和大小
-a, --archive 归档模式; 等于 -rlptgoD(无 -H、-A、-X)
--no-OPTION 关闭隐含的 OPTION(例如 --no-D)
-r, --recursive 递归到目录
-R, --relative 使用相对路径名
--no-implied-dirs 不发送带有 --relative 的隐含目录
-b, --backup 进行备份(见 --suffix & --backup-dir)
--backup-dir=DIR 根据 DIR 将备份分成层次结构
--suffix=SUFFIX 备份后缀(默认 ~ w/o --backup-dir)
-u, --update 跳过接收器上较新的文件
--inplace 就地更新目标文件
--append 将数据附加到较短的文件中
--append-verify --append 文件校验和中的旧数据
-d, --dirs 不递归地传输目录
-l, --links 将符号链接复制为符号链接
-L, --copy-links 将符号链接转换为参考文件/目录
--copy-unsafe-links 只转换“不安全”的符号链接
--safe-links 忽略指向树外的符号链接
--munge-links munge 符号链接使它们更安全
-k, --copy-dirlinks 将指向 dir 的符号链接转换为引用 dir
-K, --keep-dirlinks 将接收器上的符号链接目录视为目录
-H, --hard-links 保留硬链接
-p, --perms 保留权限
-E, --executability 保持可执行性
--chmod=CHMOD 影响文件和/或目录权限
-A, --acls 保留 ACL(暗示 -p)
-X, --xattrs 保留扩展属性
-o, --owner 保留所有者(仅限超级用户)
-g, --group 保留组
--devices 保留设备文件(仅限超级用户)
--specials 保留特殊文件
-D 与 --devices --specials 相同
-t, --times 保留修改时间
-O, --omit-dir-times 从 --times 中省略目录
-J, --omit-link-times 从 --times 中省略符号链接
--super 接收者尝试超级用户活动
--fake-super 使用 xattrs 存储/恢复特权属性
-S, --sparse 有效处理稀疏文件
--preallocate 写入前分配目标文件
-n, --dry-run 执行试运行而不做任何更改
-W, --whole-file 复制整个文件(无 delta-xfer 算法)
-x, --one-file-system 不跨越文件系统边界
-B, --block-size=SIZE 强制固定校验和块大小
-e, --rsh=COMMAND 指定要使用的远程 shell
--rsync-path=PROGRAM 指定在远程机器上运行的 rsync
--现有跳过在接收器上创建新文件
--ignore-existing 跳过更新接收器上存在的文件
--remove-source-files 发送者删除同步文件(非目录)
--del --delete-during 的别名
--delete 从目标目录中删除无关文件
--delete-before 接收者在 xfer 之前删除,而不是在期间
--delete-during 接收者在传输过程中删除
--delete-delay 查找期间删除,之后删除
--delete-after 接收者在传输后删除,而不是在传输期间
--delete-excluded 也从目标目录中删除排除的文件
--ignore-missing-args 无误地忽略丢失的源参数
--delete-missing-args 从目标中删除丢失的源参数
--ignore-errors 删除即使有 I/O 错误
--force 强制删除目录,即使不是空的
--max-delete=NUM 不删除超过 NUM 个文件
--max-size=SIZE 不传输任何大于 SIZE 的文件
--min-size=SIZE 不传输任何小于 SIZE 的文件
--partial 保留部分传输的文件
--partial-dir=DIR 将部分传输的文件放入 DIR
--delay-updates 将所有更新的文件放在最后
-m, --prune-empty-dirs 从文件列表中修剪空目录链
--numeric-ids 不按用户/组名映射 uid/gid 值
--usermap=STRING 自定义用户名映射
--groupmap=STRING 自定义组名映射
--chown=USER:GROUP 简单的用户名/组名映射
--timeout=SECONDS 以秒为单位设置 I/O 超时
--contimeout=SECONDS 以秒为单位设置守护程序连接超时
-I, --ignore-times 不跳过匹配大小和时间的文件
--size-only 跳过大小匹配的文件
--modify-window=NUM 以降低的精度比较修改次数
-T, --temp-dir=DIR 在目录 DIR 中创建临时文件
-y, --fuzzy 如果没有目标文件,则查找类似文件作为基础
--compare-dest=DIR 还比较接收到的文件相对于 DIR
--copy-dest=DIR ... 并包含未更改文件的副本
--link-dest=DIR 在未更改时硬链接到 DIR 中的文件
-z, --compress 在传输过程中压缩文件数据
--compress-level=NUM 明确设置压缩级别
--skip-compress=LIST 跳过压缩后缀为 LIST 的文件
-C, --cvs-exclude 以与 CVS 相同的方式自动忽略文件
-f, --filter=RULE 添加文件过滤规则
-F 与 --filter='dir-merge /.rsync-filter' 相同
重复:--filter='- .rsync-filter'
--exclude=PATTERN 排除匹配 PATTERN 的文件
--exclude-from=FILE 从 FILE 中读取排除模式
--include=PATTERN 不排除匹配 PATTERN 的文件
--include-from=FILE 从 FILE 读取包含模式
--files-from=FILE 从 FILE 中读取源文件名列表
-0, --from0 所有 *from/filter 文件都以 0 分隔
-s, --protect-args 没有空间分割; 仅通配符
--address=ADDRESS 将传出套接字的地址绑定到守护程序
--port=PORT 指定双冒号备用端口号
--sockopts=OPTIONS 指定自定义 TCP 选项
--blocking-io 为远程 shell 使用阻塞 I/O
--outbuf=N|L|B 将缓冲设置为无、行或块
--stats 提供一些文件传输统计信息
-8, --8-bit-output 在输出中保留未转义的高位字符
-h, --human-readable 以人类可读的格式输出数字
--progress 显示传输过程中的进度
-P 与 --partial --progress 相同
-i, --itemize-changes 输出所有更新的变更摘要
-M, --remote-option=OPTION 仅将 OPTION 发送到远程端
--out-format=FORMAT 输出更新使用指定的 FORMAT
--log-file=FILE 记录我们对指定文件所做的事情
--log-file-format=使用指定 FMT 的 FMT 日志更新
--password-file=FILE 从 FILE 读取守护进程访问密码
--list-only 列出文件而不是复制它们
--bwlimit=RATE 限制套接字 I/O 带宽
--write-batch=FILE 将批量更新写入 FILE
--only-write-batch=FILE 类似于 --write-batch 但不更新目标
--read-batch=FILE 从 FILE 读取批量更新
--protocol=NUM 强制使用旧的协议版本
--iconv=CONVERT_SPEC 请求文件名的字符集转换
--checksum-seed=NUM 设置块/文件校验和种子(高级)
-4, --ipv4 首选 IPv4
-6, --ipv6 首选 IPv6
--version 打印版本号
(-h) --help 显示此帮助(请参阅下面的 -h 注释)

Rsync 也可以作为守护进程运行,在这种情况下,接受以下选项:

--daemon 作为 rsync 守护进程运行
--address=ADDRESS 绑定到指定地址
--bwlimit=RATE 限制套接字 I/O 带宽
--config=FILE 指定备用 rsyncd.conf 文件
-M, --dparam=OVERRIDE 覆盖全局守护程序配置参数
--no-detach 不与父级分离
--port=PORT 监听备用端口号
--log-file=FILE 覆盖“日志文件”设置
--log-file-format=FMT 覆盖“日志格式”设置
--sockopts=OPTIONS 指定自定义 TCP 选项
-v, --verbose 增加详细程度
-4, --ipv4 首选 IPv4
-6, --ipv6 首选 IPv6
-h, --help 显示此帮助(如果在 --daemon 之后使用)

配置


Rsync 接受长(双破折号 + 单词)和短(单破折号 + 字母)选项。
可用选项的完整列表如下所述。 如果可以指定一个选项
以不止一种方式,选项以逗号分隔。 有些选项只有很长
变体,不是短篇。 如果选项带参数,则该参数仅列在
多头变体,即使它也必须指定为空头。 当指定一个
参数,您可以使用形式 --option=param 或用空格替换“=”。
可能需要以某种方式引用该参数以使其在 shell 的
命令行解析。 请记住,文件名中的前导波浪号 (~) 被替换
通过你的外壳,所以 --option=〜/ foo 不会将波浪号更改为您的主目录
(为此删除“=”)。

- 帮帮我 打印一个简短的帮助页面,描述 rsync 中可用的选项并退出。 为了
向后兼容旧版本的 rsync,也将输出帮助
如果您使用 -h 没有任何其他参数的选项。

- 版
打印 rsync 版本号并退出。

-v, --详细
此选项会增加您在传输过程中获得的信息量。
默认情况下,rsync 静默工作。 一个 -v 会给你关于什么的信息
文件正在传输中,最后是一个简短的摘要。 二 -v 选项将
为您提供有关跳过哪些文件的信息以及更多信息
在末尾。 两个以上 -v 仅在调试时才应使用选项
同步。

在现代 rsync 中, -v option 等价于组的设置 - 信息
-调试 选项。 您可以选择使用这些较新的选项,或者
代替使用 --详细,因为任何细粒度的设置都会覆盖隐含的
的设置 -v。 两 - 信息-调试 有一种寻求帮助的方法可以告诉您
确切地说,每次增加详细程度都设置了哪些标志。

但是,请记住守护进程的“最大详细程度”设置将限制如何
可以在守护进程端设置各种单独的标志。 为了
例如,如果最大值为 2,则设置为更高的任何信息和/或调试标志
值比设置的值 -vv 将被降级为 -vv 级别
守护进程的日志记录。

--info=标志
此选项可让您对所需的信息输出进行细粒度控制
查看。 一个单独的标志名可以跟一个级别编号,0 表示
使该输出静音,1 是默认输出级别,更高的数字
增加该标志的输出(对于那些支持更高级别的标志)。 用
--info=帮助 查看所有可用的标志名称、它们输出的内容以及什么标志
详细级别的每次增加都会添加名称。 一些例子:

rsync -a --info=progress2 源/目标/
rsync -avv --info=stats2,misc1,flist0 src/dest/

需要注意的是 --info=名称的输出受 --输出格式
--逐项更改 (-i) 选项。 请参阅这些选项以获取有关什么的更多信息
输出和什么时候。

此选项已添加到 3.1.0,因此服务器端较旧的 rsync 可能会拒绝
您对细粒度控制的尝试(如果需要将一个或多个标志发送到
服务器和服务器太旧而无法理解它们)。 另见“最大
冗长”在处理守护进程时的警告。

--debug=标志
此选项可让您对想要的调试输出进行细粒度控制
看。 一个单独的标志名称可以跟一个级别编号,其中 0 表示
静音该输出,1 是默认输出级别,以及更高的数字
增加该标志的输出(对于那些支持更高级别的标志)。 用
--调试=帮助 查看所有可用的标志名称、它们输出的内容以及什么标志
详细级别的每次增加都会添加名称。 一些例子:

rsync -avvv --debug=none src/dest/
rsync -avA --del --debug=del2,acl src/dest/

请注意,某些调试消息仅在以下情况下才会输出 --msgs2stderr 被指定,
尤其是与 I/O 和缓冲区调试有关的那些。

此选项已添加到 3.1.0,因此服务器端较旧的 rsync 可能会拒绝
您对细粒度控制的尝试(如果需要将一个或多个标志发送到
服务器和服务器太旧而无法理解它们)。 另见“最大
冗长”在处理守护进程时的警告。

--msgs2stderr
此选项更改 rsync 以将其所有输出直接发送到 stderr 而不是发送到
通过协议向客户端发送消息(通常输出信息
通过标准输出的消息)。 这主要是为了调试,以避免
改变通过协议发送的数据,因为额外的协议数据可以改变
正在测试什么。 请记住,守护程序连接没有 stderr
将消息发送回客户端的通道,因此如果您正在执行任何操作
daemon-transfer 调试使用这个选项,你应该启动一个守护进程使用
--无分离 这样您就可以在守护进程端看到 stderr 输出。

此选项具有使 stderr 输出得到行缓冲的副作用,以便
3 个程序的输出合并以更具可读性的方式发生。

-q, - 安静的
此选项会减少您在传输过程中获得的信息量,
尤其是抑制来自远程服务器的信息消息。 这个选项是
从 cron 调用 rsync 时很有用。

--无模式
此选项影响客户端在开始时输出的信息
守护进程传输。 这会抑制当天消息 (MOTD) 文本,但它也会
影响守护进程响应“rsync host::”而发送的模块列表
请求(由于 rsync 协议的限制),所以如果你
想要从守护进程请求模块列表。

-一世, --忽略次
通常 rsync 会跳过任何已经相同大小和相同的文件
修改时间戳。 此选项关闭此“快速检查”行为,导致
要更新的所有文件。

--仅尺寸
这修改了 rsync 的“快速检查”算法,用于查找需要检查的文件
传输,将其从默认的传输文件更改为
更改大小或更改上次修改时间以仅查找具有
大小发生了变化。 在使用另一个之后开始使用 rsync 时,这很有用
可能无法准确保留时间戳的镜像系统。

--修改窗口
比较两个时间戳时,rsync 将时间戳视为相等,如果它们
相差不超过修改窗口值。 这通常是 0(对于一个精确的
匹配),但您可能会发现在某些情况下将其设置为更大的值很有用
情况。 尤其是在与 MS Windows FAT 之间传输时
文件系统(以 2 秒的分辨率表示时间), --修改窗口=1
很有用(允许时间相差最多 1 秒)。

-C, --校验和
这改变了 rsync 检查文件是否已更改并需要的方式
一个转移。 如果没有此选项,rsync 使用“快速检查”(默认情况下)
检查每个文件的大小和上次修改时间是否在发送者之间匹配
和接收器。 此选项更改此设置以比较每个文件的 128 位校验和
具有匹配的大小。 生成校验和意味着双方将
花费大量磁盘 I/O 读取传输中文件中的所有数据(和
这是在为传输更改的文件而进行的任何读取之前),所以这
可以显着减慢速度。

发送方在进行文件系统扫描时生成其校验和
构建可用文件的列表。 接收器生成其校验和
当它扫描更改的文件时,将对任何具有相同文件的文件进行校验和
大小作为相应的发件人的文件:具有更改大小或
选择更改的校验和进行传输。

请注意,rsync 始终验证每个 转移 文件正确
通过检查整个文件的校验和在接收端重建
文件传输时生成,但传输后自动生成
验证与此选项的传输前“是否执行此操作无关”
文件需要更新吗?”检查。

对于协议 30 及更高版本(在 3.0.0 中首次支持),使用的校验和是 MD5。
对于较旧的协议,使用的校验和是 MD4。

-一种, - 档案
这相当于 -rptgoD. 这是一种快速表达您想要递归和
想要保留几乎所有内容(-H 是一个明显的遗漏)。 唯一的
上述等价的例外是当 --文件来自 被指定,在这种情况下
-r 不是暗示。

需要注意的是 -a 而不去 保存 硬链接, 因为找到多重链接的文件是
昂贵的。 您必须单独指定 -H.

--无选项
您可以通过在选项名称前加上前缀来关闭一个或多个隐含选项
“不-”。 并非所有选项都可以以“no-”为前缀:只有隐含的选项
通过其他选项(例如 - 点头, --不烫发) 或在各种不同的默认值
情况(例如 --无整个文件, --无阻塞io, --无目录)。 您可以指定
“no-”前缀后的短选项名称或长选项名称(例如 - 也不
一样 --无亲属).

例如:如果你想使用 -a (- 档案) 但不想 -o (- 所有者), 反而
转换的 -a-rptgD,你可以指定 -a --不-o (或 -a --无所有者).

选项的顺序很重要:如果您指定 - 也不 -a-r 选项
最终会被打开,相反 -a - 也不。 另请注意
的副作用 --文件来自 选项不是位置性的,因为它会影响
几个选项的默认状态并稍微改变了的含义 -a (见
--文件来自 选项以获取更多详细信息)。

-r, -递归
这告诉 rsync 递归复制目录。 也可以看看 --目录 (-d).

从 rsync 3.0.0 开始,使用的递归算法现在是增量扫描
使用比以前少得多的内存并在扫描后开始传输
前几个目录已经完成。 仅此增量扫描
影响我们的递归算法,并且不会改变非递归传输。 它
也只有在传输的两端都至少是 3.0.0 版本时才有可能。

某些选项需要 rsync 才能知道完整的文件列表,因此这些选项禁用
增量递归模式。 这些包括: --删除之前, --删除之后,
--修剪空目录--延迟更新. 正因为如此,默认的删除模式
当你指定 - 删除 现在 --delete-期间 当连接的两端
至少为 3.0.0(使用 --删除 or --delete-期间 请求这个改进的删除
显式模式)。 另见 --删除延迟 比选择更好的选择
运用 --删除之后.

可以使用以下命令禁用增量递归 --no-inc-递归 选项或其
更短 --no-ir 别名。

-R, - 相对的
使用相对路径。 这意味着命令上指定的完整路径名
行被发送到服务器,而不仅仅是文件名的最后一部分。 这个
当您想发送几个不同的目录时特别有用
同时。 例如,如果您使用此命令:

rsync -av /foo/bar/baz.c 远程:/ tmp /

...这将创建一个名为 baz.c 的文件 / tmp / 在远程机器上。 如果相反
你用过

rsync -avR /foo/bar/baz.c 远程:/ tmp /

然后会在远程机器上创建一个名为 /tmp/foo/bar/baz.c 的文件,
保留其完整路径。 这些额外的路径元素被称为“隐含的
目录”(即上例中的“foo”和“foo/bar”目录)。

从 rsync 3.0.0 开始,rsync 总是将这些隐含的目录作为真实的
文件列表中的目录,即使路径元素实际上是
发送方。 这可以防止在复制完整内容时出现一些非常意外的行为
您没有意识到的文件的路径在其路径中有一个符号链接。 如果你想
复制服务器端符号链接,通过其路径包含符号链接,以及
通过其真实路径引用目录。 如果您正在处理较旧的 rsync
发送方,您可能需要使用 --无隐含目录 选项。

还可以限制隐含发送的路径信息量
您指定的每个路径的目录。 在发送端使用现代 rsync
(从 2.6.7 开始),你可以在源路径中插入一个点和一个斜杠,比如
这个:

rsync -avR /foo/./bar/baz.c 远程:/ tmp /

这将在远程机器上创建 /tmp/bar/baz.c。 (注意点必须是
后跟一个斜杠,所以“/foo/.” 不会缩写。)对于较旧的 rsync
版本,您需要使用 chdir 来限制源路径。 例如,
推送文件时:

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

(注意括号把这两个命令放到一个子shell中,这样“cd”
命令对以后的命令不再有效。)如果你正在拉文件
从较旧的 rsync 中,使用此习语(但仅用于非守护进程传输):

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

--无隐含目录
此选项会影响 - 相对的 选项。 几时
指定,来自源名称的隐含目录的属性不是
包括在转让中。 这意味着对应的路径元素
目标系统如果存在则保持不变,任何缺失都暗示
目录是使用默认属性创建的。 这甚至允许这些暗示
路径元素有很大的不同,例如作为一个目录的符号链接
接收方。

例如,如果命令行参数或文件来自条目告诉 rsync 传输
文件“path/foo/file”、目录“path”和“path/foo”在
- 相对的 用来。 如果“path/foo”是目标系统上“bar”的符号链接,
接收 rsync 通常会删除“path/foo”,将其重新创建为目录,
并将文件接收到新目录中。 和 --无隐含目录, 接收
rsync 使用现有的路径元素更新“path/foo/file”,这意味着
该文件最终在“路径/栏”中创建。 完成此链接的另一种方法
保存是使用 --保留目录链接 选项(这也会影响符号链接
到传输的其余部分中的目录)。

从 3.0.0 之前的 rsync 中提取文件时,您可能需要使用此选项
如果发送方在您请求的路径中有一个符号链接,并且您希望隐含
要作为普通目录传输的目录。

-b, --备份
使用此选项,预先存在的目标文件将重命名为每个文件
转移或删除。 您可以控制备份文件的位置和内容(如果
any) 后缀使用 --备份目录- 后缀 选项​​。

请注意,如果您不指定 --备份目录,(1) --省略目录时间 选项将
被暗示,以及 (2) 如果 - 删除 也有效(没有 --删除-排除),
rsync 将为备份后缀添加一个“保护”过滤规则到您所有文件的末尾
现有的排除(例如 -f "P *~”)。 这将防止以前备份的文件
从被删除。 请注意,如果您提供自己的过滤规则,您可以
需要在更高的位置手动插入您自己的排除/保护规则
列表,以便它具有足够高的优先级才能生效(例如,如果您的规则
指定尾随包含/排除 '*',自动添加的规则永远不会是
到达)。

--backup-dir=目录
结合 --备份 选项,这告诉 rsync 将所有备份存储在
接收方的指定目录。 这可以用于增量
备份。 您还可以使用 - 后缀 选项
(否则指定目录下备份的文件会保留原文件
文件名)。

请注意,如果指定相对路径,则备份目录将相对于
目标目录,因此您可能想要指定绝对路径
或以“../”开头的路径。 如果 rsync 守护进程是接收者,则备份
dir 不能超出模块的路径层次结构,所以要特别注意不要删除
它或复制到其中。

--suffix=后缀
此选项允许您覆盖与 --备份
(-b) 选项。 默认后缀是 ~ 如果没有 --备份目录 已指定,否则
它是一个空字符串。

-你, - 更新
这会强制 rsync 跳过目标上存在的任何文件并具有
比源文件更新的修改时间。 (如果现有的目标文件
有一个等于源文件的修改时间,如果大小将被更新
是不同的。)

请注意,这不会影响复制目录、符号链接或其他特殊
文件。 此外,发送方和接收方之间的文件格式差异始终是
被认为对更新足够重要,无论日期是什么
对象。 换句话说,如果源有一个目录,而目标有一个目录
文件,无论时间戳如何,传输都会发生。

此选项是传输规则,而不是排除规则,因此它不会影响
进入文件列表,因此它不会影响删除。 它只是限制了
接收方请求传输的文件。

- 到位
此选项更改 rsync 在需要更新数据时传输文件的方式:
而不是创建文件的新副本并将其移动到的默认方法
放置完成后,rsync 将更新的数据直接写入
目标文件。

这有几个影响:

o 硬链接没有断开。 这意味着新数据将通过
到目标文件的其他硬链接。 此外,试图复制
不同的源文件到多重链接的目标文件将导致
在“拉锯战”中,目的地数据来回变化。

o 无法更新使用中的二进制文件(操作系统会阻止更新)
正在发生,或者试图交换数据的二进制文件将行为不端或
碰撞)。

o 文件的数据在传输和传输过程中会处于不一致的状态
如果传输中断或更新失败,将保持这种状态。

o rsync 无法写入的文件无法更新。 虽然超级用户可以
更新任何文件,需要授予普通用户写入权限
打开文件以便写入成功。

o rsync 的 delta-transfer 算法的效率可能会降低,如果一些
目标文件中的数据在复制到
在文件中的稍后位置。 如果您使用,则这不适用 --备份回顾和整理笔记,因为
rsync 足够聪明,可以使用备份文件作为基础文件
转让。

警告:您不应使用此选项来更新正在访问的文件
其他的,所以在选择将其用于副本时要小心。

此选项对于传输具有基于块的更改的大文件或
附加数据,以及受磁盘限制而非网络限制的系统。 它可以
还有助于防止写时复制文件系统快照分散整个
仅具有微小更改的文件内容。

该选项意味着 - 部分的 (因为中断的传输不会删除
文件),但与 --部分目录--延迟更新. 在 rsync 2.6.4 之前
- 到位 也与 --比较目标--链接目的地.

- 附加
这会导致 rsync 通过将数据附加到文件末尾来更新文件,
假设接收方已经存在的数据是相同的
以发送方的文件开头。 如果需要传输文件
并且它在接收方的大小等于或大于发送方的大小,
文件被跳过。 这不会干扰文件非内容的更新
当文件不需要时的属性(例如权限、所有权等)
传输,也不影响任何非常规文件的更新。 暗示
- 到位,但不与 - 疏 (因为它总是扩展一个
文件的长度)。

--附加验证
这就像 - 附加 选项,但接收方的现有数据
side 包含在全文件校验和验证步骤中,这将导致
如果最终验证步骤失败,要重新发送文件(rsync 使用正常的、
非附加 - 到位 传输以重新发送)。

注意:在 rsync 3.0.0 之前, - 附加 选项像 --附加验证,所以如果
您正在与较旧的 rsync 交互(或者传输使用的是先前的协议)
到 30),指定任一附加选项将启动 --附加验证 转让。

-d, --目录
告诉发送方包括遇到的任何目录。 不像
-递归, 除非目录名称,否则不会复制目录的内容
指定的是“。” 或以斜杠结尾(例如“.”、“dir/.”、“dir/”等)。
如果没有此选项或 -递归 选项,rsync 将跳过它的所有目录
遇到(并为每个人输出一条消息)。 如果您同时指定
--目录-递归, -递归 优先。

- --目录 选项隐含在 --文件来自 选项还是 --仅列表 选项
(包括隐含的 --仅列表 用法)如果 -递归 没有指定(所以
在列表中可以看到目录)。 指定 --无目录 (或 - 点头) 如果你想
关掉这个。

还有一个向后兼容性助手选项, --旧目录 (或 --老-d那个
告诉 rsync 使用“-r --exclude='/*/*'” hack 来让旧的 rsync 列出一个
没有递归的单个目录。

-l, - 链接
当遇到符号链接时,在目标上重新创建符号链接。

-L, --复制链接
当遇到符号链接时,它们指向的项目(所指对象)是
复制,而不是符号链接。 在旧版本的 rsync 中,这个选项也有
告诉接收方遵循符号链接的副作用,例如符号链接
到目录。 在像这样的现代 rsync 中,您需要指定
--保留目录链接 (-K) 来获得这种额外的行为。 唯一的例外是当
将文件发送到太旧而无法理解的 rsync -K ——在那种情况下, -L
选项仍然会产生副作用 -K 在那个较旧的接收 rsync 上。

--复制不安全链接
这告诉 rsync 复制指向外部的符号链接的所指对象
复制的树。 绝对符号链接也被视为普通文件,因此
源路径本身中的任何符号链接 - 相对的 用来。 这个选项没有
附加效果如果 --复制链接 也被指定。

--安全链接
这告诉 rsync 忽略指向复制树之外的任何符号链接。
所有绝对符号链接也将被忽略。 结合使用此选项
- 相对的 可能会产生意想不到的结果。

--munge-链接
此选项告诉 rsync (1) 以某种方式修改接收方的所有符号链接
这使它们无法使用但可以恢复(见下文),或(2)取消符号链接
发送方已被存储在一个被修改的状态。 这很有用,如果你
不太相信数据的来源,不要试图将符号链接插入到
意想不到的地方。

rsync 禁用符号链接的方法是在每个符号链接前加上字符串
“/rsyncd-munged/”。 这可以防止链接被使用,只要
目录不存在。 启用此选项后,rsync 将拒绝运行,如果
该路径是一个目录或一个目录的符号链接。

该选项仅影响传输的客户端,因此如果您需要它
影响服务器,通过指定它 --远程选项. (请注意,在本地传输中,
客户端是发送方。)

这个选项对守护进程没有影响,因为守护进程配置它是否想要
通过其“munge symlinks”参数处理符号链接。 另见“munge-symlinks”
源代码支持目录中的 perl 脚本。

-k, --复制目录链接
此选项会导致发送方将指向目录的符号链接视为
是一个真正的目录。 如果您不希望符号链接
非目录受到影响,因为他们将使用 --复制链接.

如果没有这个选项,如果发送方已经用符号链接替换了一个目录
一个目录,接收方将删除任何新的
符号链接,包括目录层次结构(只要 - 力量 or - 删除
影响)。

参见 --保留目录链接 对于接收方的类似选项。

--复制目录链接 适用于源中目录的所有符号链接。 如果你想
要仅遵循几个指定的符号链接,您可以使用的一个技巧是将它们作为
带有斜杠的附加源参数,使用 - 相对的 制作路径
匹配正确。 例如:

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

这是有效的,因为 rsync 调用 统计(2) 在给定的源 arg 上,以及
尾部斜线使 统计(2) 按照符号链接,在
覆盖在“src/./”扫描期间找到的符号链接的文件列表。

-K, --保留目录链接
此选项会导致接收方将指向目录的符号链接视为
它是一个真实的目录,但前提是它与来自发件人的真实目录匹配。
如果没有这个选项,接收者的符号链接将被删除并替换为
真正的目录。

例如,假设您传输包含文件“file”的目录“foo”,
但是“foo”是接收器上目录“bar”的符号链接。 没有
--保留目录链接,接收方删除符号链接“foo”,将其重新创建为目录,
并将文件接收到新目录中。 和 --保留目录链接, 收件人
保留符号链接,“文件”以“bar”结尾。

一个注意事项:如果您使用 --保留目录链接,您必须信任所有符号链接
在副本中! 如果不受信任的用户可以创建自己的符号链接
到任何目录,用户可以(在后续副本上)替换符号链接
使用真实目录并影响符号链接的任何目录的内容
参考。 对于备份副本,最好使用诸如绑定之类的东西
安装而不是符号链接来修改您的接收层次结构。

参见 --复制目录链接 对于发送方的类似选项。

-H, --硬链接
这告诉 rsync 在源中查找硬链接文件并将
目标上的相应文件。 如果没有这个选项,硬链接文件在
源文件被视为单独的文件。

此选项不一定确保硬链接的模式
目标与源上的完全匹配。 目的地可能的情况
最终得到额外的硬链接包括以下内容:

o 如果目标包含无关的硬链接(比实际链接更多
存在于源文件列表中),复制算法不会破坏它们
明确地。 但是,如果一个或多个路径存在内容差异,
正常的文件更新过程会破坏那些额外的链接(除非你是
使用 - 到位 选项)。

o 如果您指定一个 --链接目的地 包含硬链接的目录,链接
目标文件的 --链接目的地 文件可能会导致一些路径
在目的地连接在一起,因为 --链接目的地
关联。

请注意,rsync 只能检测内部文件之间的硬链接
转移集。 如果 rsync 更新具有额外硬链接连接的文件
传输之外的文件,该链接将被破坏。 如果您想使用
这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 - 到位 避免这种破损的选项,要非常小心,你知道你的
正在更新文件,以便您确定不会发生意外更改
由于挥之不去的硬链接(并参阅 - 到位 更多注意事项的选项)。

如果增量递归处于活动状态(请参阅 -递归),rsync 可能会传输丢失的
硬链接文件,然后才发现该内容的另一个链接存在
层次结构中的其他地方。 这不影响传输的准确性
(即哪些文件被硬链接在一起),只是它的效率(即复制
硬链接文件的新的早期副本的数据,该副本可以在以后找到
在硬链接文件集的另一个成员中传输)。 一种方式
避免这种低效率是使用
--no-inc-递归 选项。

-p, --烫发
此选项导致接收 rsync 将目标权限设置为
与源权限相同。 (另见 --chmod 修改方式的选项
rsync 认为是源权限。)

当这个选项是 折扣,权限设置如下:

o 现有文件(包括更新的文件)保留其现有权限,
虽然 --可执行性 选项可能只更改执行权限
用于文件。

o 新文件将它们的“正常”权限位设置为源文件的
使用接收目录的默认权限屏蔽的权限
(接收进程的 umask,或通过
目标目录的默认 ACL),以及它们的特殊权限位
禁用,除非新目录继承了 setgid 位
它的父目录。

因此,当 --烫发--可执行性 都被禁用,rsync 的行为是
与其他文件复制实用程序相同,例如 cp(1)和 焦油(1)。

总之:给目标文件(旧的和新的)源权限,
使用 --烫发. 为新文件授予目标默认权限(同时离开
现有文件不变),请确保 --烫发 选项关闭并使用
--chmod=ugo=rwX (这确保所有非屏蔽位都被启用)。 如果你愿意
注意使后一种行为更易于键入,您可以为
它,例如将这一行放在文件中 〜/.popt (以下定义了 -Z
选项,并包括 --no-g 以使用目标目录的默认组):

rsync 别名 -Z --no-p --no-g --chmod=ugo=rwX

然后,您可以在这样的命令中使用这个新选项:

rsync -avZ 源/目标/

(警告:确保 -a 不遵循 -Z, 否则它会重新启用这两个
上面提到的“--no-*”选项。)

在新创建的目录上保留目标的 setgid 位
--烫发 在 rsync 2.6.7 中添加了关闭。 较旧的 rsync 版本错误
为新创建的文件保留三个特殊权限位 --烫发
已关闭,同时覆盖新创建的目标的 setgid 位设置
目录。 默认 ACL 遵守已添加到 rsync 2.6.7 的 ACL 补丁中,因此
即使存在默认 ACL,较旧的(或未启用 ACL 的)rsync 也使用 umask。
(请记住,影响这些的是接收 rsync 的版本
行为。)

-和, --可执行性
此选项使 rsync 保留其可执行性(或不可执行性)
常规文件时 --烫发 未启用。 常规文件被认为是
如果在其权限中至少打开了一个“x”,则可执行。 当一个现有
目标文件的可执行性与相应源文件的可执行性不同
文件,rsync 修改目标文件的权限如下:

o 为了使文件不可执行,rsync 关闭其所有“x”权限。

o 为了使文件可执行,rsync 打开每个具有
相应的“r”权限已启用。

If --烫发 启用时,此选项将被忽略。

-一种, --acls
此选项会导致 rsync 将目标 ACL 更新为与
源 ACL。 该选项还暗示 --烫发.

对于此选项,源系统和目标系统必须具有兼容的 ACL 条目
正常工作。 见 --假超级 备份和恢复 ACL 的方法的选项
不兼容。

-X, --xattrs
此选项导致 rsync 将目标扩展属性更新为
和源码一样。

对于支持扩展属性命名空间的系统,副本由
超级用户复制除 system.* 之外的所有命名空间。 普通用户只复制
user.* 命名空间。 能够正常备份和恢复非用户命名空间
用户,请参阅 --假超级 选项。

请注意,此选项不会复制 rsyncs 特殊的 xattr 值(例如
--假超级) 除非您重复该选项(例如 -XX)。 这种“复制所有 xattrs”模式
不能与 --假超级.

--chmod
此选项告诉 rsync 将一种或多种逗号分隔的“chmod”模式应用于
传输中文件的权限。 结果值被视为
这是发送方为文件提供的权限,这意味着
这个选项似乎对现有文件没有影响,如果 --烫发 是不是
启用。

除了在中指定的正常解析规则 CHMOD(1) 联机帮助页,您可以
通过在目录前加上“D”来指定仅应用于目录的项目,
或者通过在文件前加上“F”来指定只应应用于文件的项目。
例如,以下将确保所有目录都被标记为 set-gid,
没有文件是其他可写的,都是用户可写和组可写的,
并且两者在所有位上都具有一致的可执行性:

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

也允许使用八进制模式数:

--chmod=D2775,F664

指定多个也是合法的 --chmod 选项,因为每个附加选项都是
刚刚附加到要进行的更改列表中。

查看 --烫发--可执行性 产生的权限值如何的选项
可以应用于传输中的文件。

-o, - 所有者
此选项导致 rsync 将目标文件的所有者设置为与
源文件,但前提是接收 rsync 以超级用户身份运行
(另请参见 - 极好的--假超级 选项)。 如果没有这个选项,所有者
新的和/或传输的文件被设置给接收方的调用用户。

默认情况下,所有权的保留将关联匹配的名称,但可能
在某些情况下回退到使用 ID 号(另请参阅 --数字 ID
进行全面讨论的选项)。

-G, - 团体
此选项导致 rsync 将目标文件的组设置为与
源文件。 如果接收程序没有以超级用户身份运行(或者如果
--无超级 被指定),只有在接收方调用用户的组
是将被保留的成员。 如果没有此选项,组将设置为
接收方调用用户的默认组。

组信息的保存默认会关联匹配的名字,但是
在某些情况下可能会回退到使用 ID 号(另请参阅
--数字 ID 进行全面讨论的选项)。

- 设备
此选项导致 rsync 将字符和块设备文件传输到远程
系统来重新创建这些设备。 如果接收 rsync
不以超级用户身份运行(另请参阅 - 极好的--假超级 选项)。

--特价
此选项会导致 rsync 传输特殊文件,例如命名套接字和 fifos。

-D - -D 选项相当于 - 设备 --特价.

-t, --倍
这告诉 rsync 传输修改时间以及文件和更新
他们在远程系统上。 请注意,如果不使用此选项,则优化
排除未修改的文件无效; 其他
话,一个失踪 -t or -a 将导致下一次传输的行为就像它使用的一样 -I,
导致所有文件被更新(尽管 rsync 的增量传输算法将使
如果文件实际上没有改变,更新相当有效,你很
最好使用 -t).

-O, --省略目录时间
这告诉 rsync 在保留修改时间时省略目录(请参阅
--倍)。 如果 NFS 在接收方共享目录,这是一个很好的
使用的想法 -O. 如果您使用,则推断此选项 --备份 也完全不需要 --备份目录.

此选项还具有避免在以下位置过早创建目录的副作用
增量递归副本。 默认的 --inc-递归 复制通常会
为父目录中的所有子目录提前创建传递
以便能够立即设置父目录的修改时间(无需
不得不延迟直到一堆递归复制完成)。 这个
如果目录修改时间不长,则不需要早创建习惯用法
保留,所以它被跳过。 由于早期创建的目录没有准确的
mode、mtime 或所有权,当有人想要
避免这些部分完成的目录。

-J, --省略链接时间
这告诉 rsync 在保留修改时间时省略符号链接(请参阅
--倍).

- 极好的
这告诉接收方尝试超级用户活动,即使
接收 rsync 不是由超级用户运行的。 这些活动包括:保存
用户通过 - 所有者 选项,保留所有组(不仅仅是当前用户的
组)通过 --组 选项,并通过复制设备 - 设备 选项。
这对于允许此类活动而不是超级用户的系统很有用,
并确保如果接收方不在,您会收到错误
以超级用户身份运行。 要关闭超级用户活动,超级用户可以使用
--无超级.

--假超级
启用此选项后,rsync 通过以下方式模拟超级用户活动
通过特殊的扩展属性保存/恢复特权属性
附加到每个文件(根据需要)。 这包括文件的所有者和组(如果它
不是默认值),文件的设备信息(设备和特殊文件被创建为
空文本文件),以及我们不允许在
真实文件(例如,真实文件让我们、gs、ot 安全)或会限制
所有者的访问权限(因为真正的超级用户总是可以访问/更改文件,
我们创建的文件始终可以由创建用户访问/更改)。 这个选项
还处理 ACL(如果 --acls 已指定)和非用户扩展属性(如果
--xattrs 被指定)。

这是一种无需使用超级用户即可备份数据和存储 ACL 的好方法
来自不兼容的系统。

- --假超级 option 仅影响使用该选项的一侧。 影响
远程外壳连接的远程端,使用 --远程选项 (-M) 选项:

rsync -av -M--fake-super /src/ 主机:/dest/

对于本地副本,此选项会影响源和目标。 如果你
希望本地副本仅为目标文件启用此选项,请指定
-M--假超级. 如果您希望本地副本仅为源启用此选项
文件,合并 --假超级 - -M--超级.

此选项被两者覆盖 - 极好的--无超级.

另请参阅守护程序的 rsyncd.conf 文件中的“假超级”设置。

-S, - 疏
尝试有效地处理稀疏文件,以便它们占用更少的空间
目的地。 与 - 到位 因为不可能覆盖数据
以稀疏的方式。

--预分配
这告诉接收者将每个目标文件分配到其最终大小
在将数据写入文件之前。 Rsync 只会使用真正的文件系统级别
Linux 提供的预分配支持 错误定位(2) 系统调用或 Cygwin 的
posix_fallocate(3),不是将零字节写入的慢glibc实现
每个块。

如果没有这个选项,较大的文件可能不会在文件系统上完全连续,
但是使用此选项 rsync 可能会复制得更慢。 如果目的地是
不是一个支持扩展的文件系统(例如 ext4、xfs、NTFS 等),这个选项
可能根本没有正面影响。

-n, --试运行
这使 rsync 执行不进行任何更改的试运行(并产生
与实际运行的输出大致相同)。 它最常用于组合
-v, --详细-一世, --逐项更改 查看 rsync 的选项
命令将在实际运行之前执行。

输出 --逐项更改 应该在试运行时完全相同,并且
随后的实际运行(除非故意欺骗和系统调用失败); 如果
不是,那是bug。 其他输出应该基本保持不变,但可能会有所不同
一些地区。 值得注意的是,试运行不会发送文件传输的实际数据,
so - 进展 没有效果,“发送的字节数”、“接收的字节数”、“文字数据”、
和“匹配数据”统计太少,“加速”值等价
到不需要文件传输的运行。

-W, --整个文件
使用此选项时,不使用 rsync 的增量传输算法,整个文件是
改为按原样发送。 如果在以下情况下使用此选项,传输速度可能会更快
源机器和目的机器之间的带宽高于带宽
到磁盘(特别是当“磁盘”实际上是一个网络文件系统时)。 这是
当源和目标都被指定为本地路径时的默认值,但是
仅当没有批量写入选项有效时。

-X, --一个文件系统
这告诉 rsync 在递归时避免跨越文件系统边界。 这确实
不限制用户指定要从多个文件系统复制的项目的能力,
只是 rsync 通过用户指定的每个目录的层次结构的递归
指定,以及在删除期间接收方的类似递归。
还要记住,rsync 将“绑定”挂载到同一设备视为打开
相同的文件系统。

如果重复此选项,rsync 会从副本中省略所有挂载点目录。
否则,它在遇到的每个挂载点都包含一个空目录(使用
挂载目录的属性,因为底层挂载点的属性
目录无法访问)。

如果 rsync 被告知折叠符号链接(通过 --复制链接 or
--复制不安全链接),指向另一个设备上的目录的符号链接被视为
挂载点。 指向非目录的符号链接不受此选项的影响。

- 现存的, --忽略不存在
这告诉 rsync 跳过创建不存在的文件(包括目录)
还没到目的地。 如果此选项与 --忽略现有
选项,不会更新任何文件(如果您想做的只是
删除无关文件)。

此选项是传输规则,而不是排除规则,因此它不会影响
进入文件列表,因此它不会影响删除。 它只是限制了
接收方请求传输的文件。

--忽略现有
这告诉 rsync 跳过更新目标上已经存在的文件(这
而不去 忽略现有目录,否则什么也做不了)。 也可以看看
- 现存的.

此选项是传输规则,而不是排除规则,因此它不会影响
进入文件列表,因此它不会影响删除。 它只是限制了
接收方请求传输的文件。

此选项对于使用 --链接目的地 选项什么时候
他们需要继续进行中断的备份运行。 由于一个 --链接目的地 运行
被复制到一个新的目录层次结构中(当它被正确使用时),使用 - 忽略
现有 将确保已经处理的文件不会被调整(这避免了
硬链接文件的权限更改)。 这确实意味着这个选项
只查看目标层次结构本身中的现有文件。

--删除源文件
这告诉 rsync 从发送方删除文件(意思是
非目录)作为传输的一部分并已成功
在接收方复制。

请注意,您应该只对静止的源文件使用此选项。 如果
您正在使用它来将显示在特定目录中的文件移动到
另一个主机,确保完成的文件被重命名为源文件
目录,而不是直接写入其中,因此 rsync 不可能传输
尚未完全写入的文件。 如果您不能先​​将文件写入
不同的目录,您应该使用让 rsync 避免的命名习惯用法
传输尚未完成的文件(例如,将文件命名为“foo.new”时
写完,写完后重命名为“foo”,然后使用选项
--exclude='*.new' 用于 rsync 传输)。

从 3.1.0 开始,rsync 将跳过发送方删除(并输出错误)
如果文件的大小或修改时间没有保持不变。

- 删除
这告诉 rsync 从接收方删除无关的文件(那些
不在发送方),但仅适用于正在发送的目录
同步。 您一定已经要求 rsync 发送整个目录(例如“dir”或
“dir/”)而不使用目录内容的通配符(例如“dir/*”),因为
通配符被 shell 扩展,因此 rsync 收到传输请求
单个文件,而不是文件的父目录。 排除在外的文件
除非您使用
--删除-排除 选项或将规则标记为仅在发送方匹配
(请参阅过滤规则部分中的包含/排除修饰符)。

在 rsync 2.6.7 之前,此选项无效,除非 -递归
启用。 从 2.6.7 开始,删除时也会发生 --目录 (-d)是
已启用,但仅适用于正在复制其内容的目录。

如果使用不当,此选项可能会很危险! 首先是一个很好的主意
尝试使用 --试运行 选项 (-n) 以查看将要生成的文件
删除。

如果发送方检测到任何 I/O 错误,则删除发送方的任何文件
目的地将被自动禁用。 这是为了防止临时文件系统
发送端的故障(例如 NFS 错误)导致大量删除
目标文件的数量。 您可以使用 --忽略错误
选项。

- - 删除 选项可以与 --delete-WHEN 选项之一结合,而无需
冲突,以及 --删除-排除. 但是,如果没有 --delete-WHEN
选项被指定,rsync 将选择 --delete-期间 说话时的算法
到 rsync 3.0.0 或更新版本,以及 --删除之前 与老年人交谈时的算法
同步。 也可以看看 --删除延迟--删除之后.

--删除之前
请求在传输之前完成接收方的文件删除
开始。 看 - 删除 (这是隐含的)有关文件删除的更多详细信息。

如果文件系统空间紧张且在传输前删除会很有帮助
删除无关文件将有助于使传输成为可能。 然而,它
在传输开始之前确实引入了延迟,并且这种延迟可能会导致
转移到超时(如果 - 暂停 被指定)。 它还强制 rsync 使用
旧的非增量递归算法需要 rsync 扫描所有
中的文件立即传输到内存中(请参阅 -递归).

--删除期间, --删除
请求接收方的文件删除以增量方式完成
转移发生。 每个目录的删除扫描在每个目录之前完成
检查目录是否有更新,因此它的行为更有效
--删除之前,包括在任何每个目录过滤器之前进行删除
正在更新的文件。 此选项最初是在 rsync 版本 2.6.4 中添加的。 看
- 删除 (这是隐含的)有关文件删除的更多详细信息。

--删除延迟
请求在接收方的文件删除过程中计算
转移(如 --delete-期间),然后在传输完成后删除。
这在与 --延迟更新- 模糊,而且更
比使用更有效 --删除之后 (但可以表现不同,因为
--删除之后 在所有更新完成后,在单独的通道中计算删除
完毕)。 如果删除的文件数量溢出内部缓冲区,则临时
文件将在接收方创建以保存名称(它在
打开,所以你不应该在传输过程中看到它)。 如果创建
临时文件失败,rsync 将尝试回退到使用 --删除之后 (它
不能做如果 -递归 正在进行增量扫描)。 看 - 删除 (是的
暗示)有关文件删除的更多详细信息。

--删除之后
请求在传输后完成接收方的文件删除
已经完成。 如果您将新的每个目录合并文件作为
转移的一部分,您希望他们的排除对删除生效
当前转移的阶段。 它还强制 rsync 使用旧的,
需要 rsync 扫描所有文件的非增量递归算法
立即转移到内存中(见 -递归)。 看到 - 删除 (是的
暗示)有关文件删除的更多详细信息。

--删除-排除
除了删除接收端不在发送端的文件
方面,这告诉 rsync 还删除接收方的任何文件
排除(见 - 排除)。 请参阅过滤规则部分了解如何制作
个别排除在接收器上以这种方式表现,并以一种方式保护
从文件 --删除-排除。 看 - 删除 (这是暗示)有关更多详细信息
文件删除。

--忽略缺失参数
当 rsync 第一次处理显式请求的源文件时(例如
命令行参数或 --文件来自 条目),通常是一个错误,如果
找不到文件。 此选项会抑制该错误,并且不会尝试
传输文件。 这不会影响后续消失的文件错误,如果文件
最初被发现存在,后来不再存在。

--删除缺失参数
此选项采用(隐含的)的行为 --忽略缺失参数 选择一个步骤
更进一步:每一个缺失的arg都会成为对应的删除请求
接收方的目标文件(如果存在)。 如果目标文件
是一个非空目录,只有在 --force 或
--delete 生效。 除此之外,此选项独立于任何其他
删除处理的类型。

丢失的源文件由特殊的文件列表条目表示,这些条目显示
作为“*missing”条目中的 --仅列表 输出。

--忽略错误
告诉 - 删除 即使出现 I/O 错误,也可以继续删除文件。

- 力量
此选项告诉 rsync 在要替换非空目录时删除它
通过非目录。 这仅在删除不活跃时才相关(请参阅
- 删除 了解详细信息)。

旧版 rsync 的注意事项: - 力量 使用时仍然需要使用
--删除之后, 它曾经是非功能性的,除非 -递归 选项是
也启用。

--max-delete=NUM 个
这告诉 rsync 不要删除超过 NUM 个文件或目录。 如果那个限制
超过,所有进一步的删除都将跳过传输结束。 在
最后,rsync 输出警告(包括跳过删除的计数)和
以错误代码 25 退出(除非一些更重要的错误条件也
发生了)。

从 3.0.0 版开始,您可以指定 --最大删除=0 被警告任何
目标中的无关文件而不删除任何文件。 老客户
将此解释为“无限”,因此如果您不知道客户端是什么版本,
你可以使用不太明显的 --max-删除=-1 作为向后兼容的方式
指定不允许删除(尽管真正的旧版本没有警告何时
超出限制)。

--max-size=大小
这告诉 rsync 避免传输任何大于指定的文件
尺寸。 SIZE 值可以以字符串为后缀来表示大小乘数,
并且可能是一个小数值(例如“--最大尺寸=1.5m“)。

此选项是传输规则,而不是排除规则,因此它不会影响
进入文件列表,因此它不会影响删除。 它只是限制了
接收方请求传输的文件。

后缀如下:“K”(或“KiB”)是千比字节(1024),“M”(或“MiB”)是
一个兆字节(1024*1024),而“G”(或“GiB”)是一个千兆字节(1024*1024*1024)。 如果你
想要乘数为 1000 而不是 1024,请使用“KB”、“MB”或“GB”。 (笔记:
所有值也接受小写。)最后,如果后缀以任何一个结尾
“+1”或“-1”,该值将在指示的方向上偏移一个字节。

示例:--max-size=1.5mb-1 是 1499999 字节,--max-size=2g+1 是 2147483649
个字节。

请注意,3.1.0 之前的 rsync 版本不允许 --最大尺寸=0.

--最小尺寸=尺寸
这告诉 rsync 避免传输任何小于指定的文件
SIZE,这有助于不传输小的垃圾文件。 见 --最大尺寸
用于描述 SIZE 和其他信息的选项。

请注意,3.1.0 之前的 rsync 版本不允许 --最小尺寸=0.

-B, --block-size=块大小
这会强制 rsync 的增量传输算法中使用的块大小固定为
价值。 它通常是根据正在更新的每个文件的大小来选择的。 看
详情请见技术报告。

-e, --rsh=命令
这个选项允许你选择一个替代的远程 shell 程序来用于
rsync 的本地和远程副本之间的通信。 通常,rsync 是
默认情况下配置为使用 ssh,但您可能更喜欢在本地网络上使用 rsh。

如果此选项与 [用户@] 主机::模块/路径,然后是远程shell 指挥
将用于在远程主机上运行 rsync 守护进程,并且所有数据都将被
通过该远程外壳连接传输,而不是通过直接
到远程主机上正在运行的 rsync 守护程序的套接字连接。 见章节
上面的“通过远程外壳连接使用 RSYNC-DAEMON 功能”。

COMMAND 中允许使用命令行参数,前提是提供了 COMMAND
rsync 作为单个参数。 您必须使用空格(不是制表符或其他空格)
将命令和参数彼此分开,您可以使用单个和/或
双引号以保留参数中的空格(但不是反斜杠)。 注意
在单引号字符串中加倍单引号会给你一个单引号;
对于双引号也是如此(尽管您需要注意哪些引号是您的
shell 正在解析,哪个引用 rsync 正在解析)。 一些例子:

-e 'ssh -p 2234'
-e 'ssh -o "ProxyCommand nohup ssh firewall nc -w1 %h %p"'

(请注意,ssh 用户可以交替自定义站点特定的连接选项
他们的 .ssh/config 文件。)

也可以选择使用RSYNC_RSH环境的远程shell程序
变量,它接受与 -e.

另见 --阻塞-io 受此选项影响的选项。

--rsync-path=程序
使用它来指定要在远程机器上运行的程序来启动
同步。 通常在 rsync 不在默认远程 shell 的路径中时使用(例如
--rsync-path=/usr/local/bin/rsync)。 请注意,PROGRAM 是在帮助下运行的
shell,所以它可以是你想运行的任何程序、脚本或命令序列,所以
只要它不破坏 rsync 用于的标准输入和标准输出
通信。

一个棘手的例子是在远程机器上设置不同的默认目录
- 相对的 选项。 例如:

rsync -avR --rsync-path="cd /a/b && rsync" 主机:c/d /e/

-M, --remote-option=选项
此选项用于更高级的情况,您希望某些效果
仅限于转移的一侧。 例如,如果你想通过
--log-file=文件--假超级 到远程系统,像这样指定它:

rsync -av -M --log-file=foo -M--fake-super src/ dest/

如果你想让一个选项只影响传输的本地端,当它
通常影响双方,将其否定发送到远程端。 像这样:

rsync -av -x -M--no-x src/ dest/

使用这个要小心,因为有可能切换会导致 rsync 的选项
对接下来通过套接字预期的数据有不同的想法,并且
会使它以一种神秘的方式失败。

注意最好使用单独的 --远程选项 对于您想要的每个选项
经过。 这使您的使用与 --保护参数 选项。 如果说
选项关闭,远程选项中的任何空格都将被远程外壳分割
除非您采取措施保护它们。

执行本地传输时,“本地”端是发送方,“远程”端
一侧是接收器。

请注意,某些版本的 popt 选项解析库中有一个错误,即
防止您在短选项旁边使用具有相等的相邻 arg
字母(例如 -M--log-file=/tmp/foo。如果此错误影响您的 popt 版本,您
可以使用 rsync 中包含的 popt 版本。

-C, --cvs-排除
这是一个有用的速记,用于排除您经常使用的各种文件
不想在系统之间转移。 它使用类似于 CVS 的算法来
确定是否应忽略文件。

排除列表初始化为排除以下项目(这些初始项目
被标记为易腐烂——见过滤规则部分):

RCS SCCS CVS CVS.adm RCSLOG cvslog.* 标签 TAGS .make.state .nse_depinfo *~
#* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj
*.so *.exe *.Z *.elc *.ln 核心 .svn/ .git/ .hg/ .bzr/

然后,将 $HOME/.cvsignore 中列出的文件添加到列表中,并且列出的所有文件
在 CVSIGNORE 环境变量中(所有 cvsignore 名称都由
空格)。

最后,如果任何文件与 .cvsignore 文件在同一目录中,则忽略任何文件
并匹配其中列出的模式之一。 与 rsync 的过滤器/排除不同
文件,这些模式在空白处分割。 见 CVS(1) 手册更多
信息。

如果你结合 -C 用你自己的 - 筛选 规则,你应该注意这些 CVS
excludes 附加在您自己的规则的末尾,无论 -C
放在命令行上。 这使它们的优先级低于您的任何规则
明确规定。 如果您想控制插入这些 CVS 排除项的位置
在您的过滤规则中,您应该省略 -C 作为命令行选项并使用
的组合 --过滤器=:C--过滤器=-C (在您的命令行上或通过
将 ":C" 和 "-C" 规则与其他规则一起放入过滤器文件中)。 这
第一个选项打开 .cvsignore 文件的按目录扫描。 这
第二个选项是一次性导入上面提到的 CVS 排除项。

-F, --过滤器=规则
此选项允许您添加规则以有选择地从
要传输的文件列表。 这在结合使用时最有用
递归传输。

您可以使用尽可能多的 - 筛选 命令行上的选项,如您所愿
要排除的文件列表。 如果过滤器包含空格,请务必引用
它使 shell 将规则作为单个参数提供给 rsync。 下面的文字
还提到您可以使用下划线来替换分隔
从它的 arg 统治。

有关此选项的详细信息,请参阅过滤规则部分。

-F - -F option 是添加两个的简写 - 筛选 你的命令的规则。 这
第一次使用是这个规则的简写:

--filter='dir-merge /.rsync-filter'

这告诉 rsync 查找每个目录的 .rsync-filter 文件。
散布在层次结构中并使用它们的规则来过滤
转移。 如果 -F 重复,这是此规则的简写:

--filter='exclude .rsync-filter'

这会从传输中过滤掉 .rsync-filter 文件本身。

有关这些选项如何工作的详细信息,请参阅过滤规则部分。

--exclude=模式
此选项是 - 筛选 默认为排除的选项
规则并且不允许正常过滤规则的完整规则解析语法。

有关此选项的详细信息,请参阅过滤规则部分。

--exclude-from=文件
该选项与 - 排除 选项,但它指定了一个文件
包含排除模式(每行一个)。 文件中的空行和行
从...开始 ';' 或 '#' 被忽略。 如果 文件 is -, 列表将从
标准输入。

--include=模式
此选项是 - 筛选 默认为包含的选项
规则并且不允许正常过滤规则的完整规则解析语法。

有关此选项的详细信息,请参阅过滤规则部分。

--include-from=文件
该选项与 - 包括 选项,但它指定了一个文件
包含包含模式(每行一个)。 文件中的空行和行
从...开始 ';' 或 '#' 被忽略。 如果 文件 is -, 列表将从
标准输入。

--files-from=文件
使用此选项可让您指定要传输的文件的确切列表(如
从指定的 FILE 或 - 标准输入)。 它还调整了默认值
rsync 仅传输指定文件和目录的行为
更轻松:

o - 相对的 (-R) 选项是隐含的,它保留了路径信息
为文件中的每个项目指定的(使用 --无亲属 or - 也不 if
你想把它关掉)。

o --目录 (-d) 选项是隐含的,它将创建指定的目录
在目的地的列表中,而不是嘈杂地跳过它们(使用
--无目录 or - 点头 如果你想关闭它)。

o - 档案 (-a) 选项的行为并不意味着 -递归 (-r),所以
如果需要,请明确指定它。

o 这些副作用改变了 rsync 的默认状态,因此
--文件来自 命令行上的选项与其他选项的方式无关
被解析(例如 -a 在之前或之后工作相同 --文件来自,也一样
- 也不 和所有其他选项)。

从 FILE 读取的文件名都是相对于源目录的——任何
删除前导斜杠,并且不允许“..”引用高于
源目录。 例如,执行以下命令:

rsync -a --files-from=/tmp/foo 在/ usr 远程:/备份

如果 /tmp/foo 包含字符串“bin”(甚至“/箱“), 这 / usr / bin 目录将
在远程主机上创建为 /backup/bin。 如果它包含“bin/”(注意
尾部斜杠),目录的直接内容也将被发送
(无需在文件中明确提及——这从版本开始
2.6.4)。 在这两种情况下,如果 -r 选项已启用,该目录的整个层次结构
也将被转移(请记住, -r 需要明确指定
- --文件来自,因为它没有被暗示 -a)。 还要注意效果
(默认启用) - 相对的 选项是仅复制路径信息
从文件中读取——它不会强制复制源规范路径
(在/ usr 在这种情况下)。

此外,该 --文件来自 可以从远程主机而不是从远程主机读取文件
本地主机,如果您在文件前面指定“主机:”(主机必须匹配一个
传输结束)。 作为捷径,您可以仅指定前缀“:”来表示
“使用传输的远程端”。 例如:

rsync -a --files-from=:/path/file-list src://tmp/copy

这将复制 /path/file-list 文件中指定的所有文件
位于远程“src”主机上。

如果 --iconv--保护参数 选项被指定,并且 --文件来自
文件名正在从一台主机发送到另一台主机,文件名将被翻译
从发送主机的字符集到接收主机的字符集。

注意:对 --files-from 输入中的文件列表进行排序有助于 rsync 更多
高效,因为它将避免重新访问之间共享的路径元素
相邻条目。 如果输入未排序,则某些路径元素(隐含
目录)最终可能会被多次扫描,而 rsync 最终会
在它们变成文件列表元素后取消它们的重复。

- 0, --从0
这告诉 rsync 它从文件中读取的规则/文件名由
null ('\0') 字符,不是 NL、CR 或 CR+LF。 这会影响 --排除从,
--包含-来自, --文件来自, 以及在 a 中指定的任何合并文件 - 筛选 规则。
它不影响 --cvs-排除 (因为从 .cvsignore 文件中读取的所有名称都是
在空白处拆分)。

-是的, --保护参数
此选项将所有文件名和大多数选项发送到远程 rsync,而无需
允许远程 shell 解释它们。 这意味着空间不会被分割
在名称中,并且不会翻译任何非通配符特殊字符(例如 ~、$、
;, &, 等等。)。 通配符在远程主机上由 rsync(而不是
壳做它)。

如果您将此选项用于 --iconv,与远程端相关的参数也将
从本地字符集转换为远程字符集。 翻译发生
在扩展通配符之前。 另见 --文件来自 选项。

您还可以通过 RSYNC_PROTECT_ARGS 环境变量控制此选项。
如果此变量具有非零值,则默认情况下将启用此选项,
否则将默认禁用。 任一状态都被手动覆盖
指定此选项的正面或负面版本(注意 --不-s
--无保护参数 是负面版本)。 由于此选项是第一个
在 3.0.0 中引入,如果你需要,你需要确保它被禁用
与比它更旧的远程 rsync 交互。

Rsync 也可以(在构建时)配置为默认启用此选项
(with 被环境和命令行覆盖)。 这个选项
最终将在某个尚未确定的时间点成为新的默认设置
未来。

-T, --temp-dir=目录
此选项指示 rsync 在创建时使用 DIR 作为暂存目录
在接收方传输的文件的临时副本。 默认的
行为是在与关联的目录相同的目录中创建每个临时文件
目标文件。 从 rsync 3.1.1 开始,里面的临时文件名
指定的 DIR 不会以额外的点为前缀(尽管它们仍然会有一个
添加随机后缀)。

此选项最常用于接收磁盘分区没有
足够的可用空间来保存传输中最大文件的副本。 在这种情况下
(即当暂存目录在不同的磁盘分区上时),rsync 不会
能够在相关联的顶部重命名每个收到的临时文件
目标文件,但必须将其复制到位。 Rsync 通过复制来做到这一点
文件在目标文件的顶部,这意味着目标
在此复制过程中,文件将包含截断的数据。 如果这不是这样做的
(即使目标文件首先被删除,数据在本地复制到
目标目录中的临时文件,然后重命名到位)它会
旧文件有可能继续占用磁盘空间(如果有人拥有它
打开),因此可能没有足够的空间来容纳磁盘上的新版本
在相同的时间。

如果您出于磁盘空间不足以外的原因使用此选项,您
不妨将它与 --延迟更新 选项,这将确保所有
复制的文件被放入目标层次结构的子目录中,等待
传输结束。 如果您没有足够的空间来复制所有到达的
目标分区上的文件,另一种告诉 rsync 你不是
过度关注磁盘空间是使用 --部分目录 选项与
相对路径; 因为这告诉 rsync 可以隐藏一个
目标层次结构中子目录中的单个文件,rsync 将使用
将partial-dir作为暂存区带过来复制的文件,然后重命名
从那里到位。 (指定一个 --部分目录 使用绝对路径不会
有这个副作用。)

-y, - 模糊
这个选项告诉 rsync 它应该为任何目的地寻找一个基础文件
丢失的文件。 当前算法在与
具有相同大小和修改时间的文件的目标文件,或
一个类似名称的文件。 如果找到,rsync 使用模糊基础文件来尝试加速
上转移。

如果选项重复,模糊扫描也将在任何匹配
通过指定的备用目标目录 --比较目标,
--复制目标--链接目的地.

请注意,使用 - 删除 选项可能会摆脱任何潜在的模糊匹配
文件,所以要么使用 --删除之后 或根据需要指定一些文件名排除项
为了防止这种情况。

--compare-dest=目录
此选项指示 rsync 使用 DIR 在目标机器上作为附加
将目标文件与传输进行比较的层次结构(如果文件是
在目标目录中丢失)。 如果在其中找到文件 DIR 那是相同的
到发件人的文件,文件将不会传输到目的地
目录。 这对于创建仅具有以下文件的稀疏备份很有用
从较早的备份更改。 此选项通常用于复制到
空(或新创建的)目录。

从 2.6.4 版本开始,多个 --比较目标 可以提供目录,
这将导致 rsync 按照指定的确切顺序搜索列表
比赛。 如果找到仅属性不同的匹配项,则制作本地副本
并更新了属性。 如果未找到匹配项,则来自其中一个的基础文件
DIRs 将被选中以尝试加快传输速度。

If DIR 是相对路径,它是相对于目标目录的。 也可以看看
--复制目标--链接目的地.

注意:从 3.1.0 版本开始,rsync 将从非空文件中删除文件
如果在比较目标之一中找到完全匹配,则目标层次结构
层次结构(使最终结果更接近于新副本)。

--copy-dest=目录
此选项的行为类似于 --比较目标, 但 rsync 也会复制未更改的文件
在发现 DIR 使用本地副本复制到目标目录。 这对
在保持现有文件不变的情况下传输到新目的地,然后
成功传输所有文件后进行快速切换。

--复制目标 可能会提供目录,这将导致 rsync 搜索
按为未更改文件指定的顺序的列表。 如果未找到匹配项,则
来自其中之一的基础文件 DIRs 将被选中以尝试加快传输速度。

If DIR 是相对路径,它是相对于目标目录的。 也可以看看
--比较目标--链接目的地.

--link-dest=目录
此选项的行为类似于 --复制目标,但未更改的文件是硬链接的 DIR
到目标目录。 所有保留的文件必须相同
属性(例如权限,可能的所有权),以便文件
联系在一起。 一个例子:

rsync -av --link-dest=$PWD/prior_dir 主机:src_dir/new_dir/

如果文件未链接,请仔细检查它们的属性。 还要检查是否有一些
属性被强制超出 rsync 的控制,这样的挂载选项
将 root 压缩到单个用户,或安装具有通用所有权的可移动驱动器
(例如 OS X 的“忽略此卷的所有权”选项)。

从 2.6.4 版本开始,多个 --链接目的地 可以提供目录,其中
将导致 rsync 按照为完全匹配指定的顺序搜索列表。 如果
找到仅属性不同的匹配项,制作本地副本并
属性更新。 如果未找到匹配项,则来自其中一个的基础文件 DIRs
将被选中以尝试加快传输速度。

此选项在复制到空目标层次结构时效果最佳,如
现有文件可能会调整其属性,这可能会影响替代
目标文件通过硬链接。 此外,逐项列出更改可能会有点
糊涂了。 请注意,在 3.1.0 版之前,备用目录完全匹配
当目标文件
已经存在。

请注意,如果将此选项与 --忽略次, rsync 不会链接任何
文件在一起,因为它只将相同的文件链接在一起作为替代
传输文件,从不作为文件更新后的额外检查。

If DIR 是相对路径,它是相对于目标目录的。 也可以看看
--比较目标--复制目标.

请注意,2.6.1 之前的 rsync 版本有一个错误,可能会阻止 --链接目的地
当非超级用户正常工作时 -o 被指定(或暗示)
-a)。 您可以通过避免 -o 发送到旧的选项时
同步。

-z - 压缩
使用此选项,rsync 会在文件数据发送到目标时对其进行压缩
机器,它减少了传输的数据量——这就是
在慢速连接中很有用。

请注意,此选项通常可实现更好的压缩比
通过使用压缩远程 shell 或压缩传输来实现,因为它
利用匹配数据块中的隐含信息
没有通过连接明确发送。 这种匹配数据压缩来自
但是,CPU 的成本,并且可以通过重复 -z 选项,但前提是
双方至少是3.1.1版本。

请注意,如果您的 rsync 版本是使用外部 zlib(而不是
与 rsync 一起打包的 zlib)那么它将不支持旧式
压缩,只有新式(重复选项)压缩。 未来这
新式压缩可能会成为默认值。

客户端 rsync 通过
--新压缩 选项,因此如果您看到该选项被拒绝,则意味着服务器
不够新,无法支持 -Z Z. Rsync 也接受 --旧压缩 选项
新式压缩成为默认的未来时间。

查看 --跳过压缩 默认文件后缀列表的选项,不会
被压缩。

--压缩级别=NUM
显式设置要使用的压缩级别(请参阅 - 压缩) 而不是让它
默认。 如果 NUM 非零,则 - 压缩 选项是隐含的。

--skip-compress=列表
覆盖不会被压缩的文件后缀列表。 这 清单 应该
由斜杠 (/) 分隔的一个或多个文件后缀(不带点)。

您可以指定一个空字符串来指示不应跳过任何文件。

支持简单的字符类匹配:每个都必须包含一个列表
方括号内的字母(例如没有特殊的类,例如“[:alpha:]”,
支持,并且“-”没有特殊含义)。

字符星号 (*) 和问号 (?) 没有特殊含义。

这是一个指定要跳过的 6 个后缀的示例(因为 1 个规则中的 5 个匹配
2个后缀):

--skip-compress=gz/jpg/mp[34]/7z/bz2

不会被压缩的默认后缀列表是这个(在这个版本中
rsync):

7z 高手 AVI bz2 DEB GPG gz JPEG JPG lz 伊兹玛 伊佐 MOV mp3 mp4 OGG PNG RAR 压缩包
tbz g TLZ x xz z 拉链

此列表将替换为您的 --跳过压缩 除了一种情况外,列出所有情况:a
从守护进程 rsync 复制会将您跳过的后缀添加到其列表中
非压缩文件(其列表可能被配置为不同的默认值)。

--数字 ID
使用此选项 rsync 将传输数字组和用户 ID,而不是使用
用户名和组名,并在两端映射它们。

默认情况下 rsync 将使用用户名和组名来确定所有权
给文件。 特殊 uid 0 和特殊组 0 永远不会通过以下方式映射
用户/组名称,即使 --数字 ID 未指定选项。

如果用户或组在源系统上没有名称或在源系统上没有匹配
目标系统,则使用来自源系统的数字 ID。
另请参阅 rsyncd.conf 联机帮助页中有关“使用 chroot”设置的注释
有关 chroot 设置如何影响 rsync 查找名称的能力的信息
的用户和组以及您可以做些什么。

--usermap=字符串, --groupmap=字符串
这些选项允许您指定应映射到其他用户和组
接收方的值。 这 STRING 是一个或多个 :TO 值对
被逗号隔开。 任意匹配 来自发件人的值被替换为 TO
接收方的价值。 您可以指定用户名或用户 ID TO
值,以及 value 也可能是一个通配符字符串,它将被匹配
针对发件人的姓名(通配符与 ID 号不匹配,但请参阅
下面是为什么 '*' 匹配所有内容的原因)。 您可以改为指定一个 ID 范围
通过包含范围的数字:LOW-HIGH。 例如:

--usermap=0-99:无人,wayne:admin,*:正常 --groupmap=usr:1,1:usr

列表中的第一个匹配项是使用的匹配项。 你应该指定你所有的
使用单个用户映射 --用户地图 选项,和/或您使用的所有组映射
--组图 选项。

请注意,0 用户和组的发件人名称不会传输到
接收器,因此您应该使用 0 匹配这些值,或者使用中的名称
对接收方的影响(通常是“根”)。 所有其他 名字匹配那些
在发送端使用。 全部 TO 名称与接收方使用的名称相匹配。

任何在发送端没有名称的 ID 都被视为有一个空的
名称用于匹配。 这允许它们通过“*”或
使用空名称。 例如:

--usermap=:无人 --groupmap=*:无人

当。。。的时候 --数字 ID 选项被使用,发件人不发送任何名字,所以所有
这些 ID 被视为具有空名称。 这意味着您将需要
指定数字 如果要将这些无名 ID 映射到不同的值
值。

如报名参加 --用户地图 有任何效果的选项, -o (- 所有者) 选项必须使用
(或暗示),并且接收器需要以超级用户身份运行(另请参见
这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 --假超级 选项)。 为了 --组图 有任何效果的选项, -g
(--组) 选项必须被使用(或暗示),并且接收者需要有
设置该组的权限。

--chown=用户:组
此选项强制所有文件归 USER 组为 GROUP。 这是一个
比使用更简单的界面 --用户地图--组图 直接,但它是
在内部使用这些选项实现,所以你不能混合它们。 如果任一
USER 或 GROUP 为空,不会发生省略的用户/组的映射。 如果 GROUP
为空时,可以省略尾随冒号,但如果 USER 为空,则前导冒号
必须提供。

如果指定“--chown=foo:bar,这与指定
“--usermap=*:foo --groupmap=*:bar”,更简单。

--超时=超时
此选项允许您以秒为单位设置最大 I/O 超时。 如果没有数据
传输指定的时间然后 rsync 将退出。 默认值为 0,即
意味着没有超时。

--超时
这个选项允许你设置 rsync 等待它的时间
连接到 rsync 守护进程才能成功。 如果达到超时,rsync 退出
有错误。

- 地址
默认情况下,当连接到 rsync 时,rsync 将绑定到通配符地址
守护进程。 这 - 地址 选项允许您指定特定的 IP 地址(或
主机名)绑定到。 另请参阅 --守护进程 模式部分。

--port=端口
这指定了要使用的备用 TCP 端口号,而不是默认值 873。
仅当您使用双冒号 (::) 语法连接时才需要这样做
一个 rsync 守护进程(因为 URL 语法有一种方法可以将端口指定为
网址)。 另请参阅 --守护进程 模式部分。

--sockopts
这个选项可以为喜欢调整系统的人提供无尽的乐趣
最大程度。 您可以设置各种可能进行传输的套接字选项
更快(或更慢!)。 有关详细信息,请阅读 setsockopt() 系统调用的手册页
在您可以设置的某些选项上。 默认情况下没有特殊的套接字选项
设置。 这只会影响到远程 rsync 守护进程的直接套接字连接。
该选项也存在于 --守护进程 模式部分。

--阻塞-io
这告诉 rsync 在启动远程 shell 传输时使用阻塞 I/O。 如果
远程 shell 是 rsh 或 remsh,rsync 默认使用阻塞 I/O,
否则默认使用非阻塞 I/O。 (注意 ssh 更喜欢
非阻塞 I/O。)

--outbuf=模式
这将设置输出缓冲模式。 模式可以是无(又名无缓冲)、行、
或阻止(又名完整)。 您可以为模式指定一个字母,
并使用大写或小写。

此选项的主要用途是在以下情况下将 Full buffering 更改为 Line buffering
rsync 的输出将发送到文件或管道。

-一世, --逐项更改
请求对每个文件所做更改的简单逐项列表,
包括属性变化。 这与指定完全相同
--out-format='%i %n%L'. 如果重复该选项,未更改的文件也将
输出,但前提是接收 rsync 至少是 2.6.7 版(您可以使用 -vv
使用旧版本的 rsync,但这也会打开其他详细的输出
消息)。

"%i" 转义有一个 11 个字母长的神秘输出。 一般格式
就像字符串 黄花菜,其中 Y 被更新的类型所取代
完成, X 由文件类型替换,其他字母代表属性
如果它们被修改,可能会输出。

替换的更新类型 Y 如下面所述:

Ø < 意味着文件正在传输到远程主机(发送)。

Ø > 意味着文件正在传输到本地主机(接收)。

Ø c 表示该项目正在发生本地更改/创建(例如
创建目录或更改符号链接等)。

Ø h 表示该项目是到另一个项目的硬链接(需要
--硬链接).

Ø . 意味着该项目没有被更新(尽管它可能有
正在修改的属性)。

Ø * 意味着分项输出区域的其余部分包含一条消息(例如
“删除”)。

替换的文件类型 X 是: f 对于一个文件,一个 d 对于目录,一个 L
一个符号链接,一个 D 对于一个设备,一个 S 对于特殊文件(例如命名套接字和
先进先出)。

上面字符串中的其他字母是实际输出的字母,如果
项目的关联属性正在更新或“。” 因为没有变化。
三个例外是:(1) 新创建的项目将每个字母替换为
“+”,(2) 相同的项目用空格替换点,以及 (3) 未知
属性用“?”替换每个字母(这可能发生在与年长的人交谈时
rsync)。

与每个字母关联的属性如下:

Ø c 意味着常规文件具有不同的校验和(需要
--校验和) 或者符号链接、设备或特殊文件具有更改的值。
请注意,如果您将文件发送到 3.0.1 之前的 rsync,则此更改
标志将只存在于校验和不同的常规文件中。

Ø s 意味着常规文件的大小不同,将由
文件传输。

Ø t 表示修改时间不同,正在更新
发件人的价值(需要 --倍)。 的替代值 T 表示
修改时间将设置为传输时间,这发生在
文件/符号链接/设备更新时没有 --倍 当符号链接改变时
并且接收器无法设置其时间。 (注意:当使用 rsync 3.0.0
客户,您可能会看到 s 标志结合 t 而不是适当的 T
此时间设置失败的标志。)

Ø p 意味着权限不同并且正在更新到
发件人的价值(需要 --烫发).

o 表示所有者不同并且正在更新为发件人的值
(需要 - 所有者 和超级用户权限)。

Ø g 表示该组不同并且正在更新为发件人的值
(需要 - 团体 和设置组的权限)。

o u 插槽保留供将来使用。

o a 表示 ACL 信息已更改。

o x 表示扩展属性信息发生了变化。

另一种输出是可能的:删除文件时,“%i”将输出字符串
正在删除的每个项目的“*删除”(假设您正在与
最近足够的 rsync 它记录删除而不是将它们作为详细输出
信息)。

--out-format=格式
这允许您准确指定 rsync 客户端向用户输出的内容
每次更新的基础。 格式是包含嵌入单字符的文本字符串
以百分比 (%) 字符为前缀的转义序列。 默认格式为
“%n%L”被假定为 --info=名称 or -v 被指定(这告诉你只是
文件的名称,如果项目是链接,则它指向的位置)。 完整列表
可能的转义字符,请参阅 rsyncd.conf 中的“日志格式”设置
联机帮助页。

指定 --输出格式 选项意味着 --info=名称 选项,这将
提及以重要方式更新的每个文件、目录等(传输的
文件、重新创建的符号链接/设备或触摸目录)。 此外,如果
itemize-changes 转义 (%i) 包含在字符串中(例如,如果
--逐项更改 选项被使用),名称的记录增加以提及任何
以任何方式更改的项目(只要接收方至少是 2.6.4)。
查看 --逐项更改 用于描述“%i”输出的选项。

Rsync 将在文件传输之前输出格式外的字符串,除非
请求传输统计转义,在这种情况下,日志记录在
文件传输结束。 当此延迟记录生效并且 - 进展
也指定了,rsync 也会输出正在传输的文件名
在其进度信息之前(当然,在输出格式输出之后)。

--log-file=文件
这个选项会导致 rsync 将它正在做的事情记录到一个文件中。 这类似于
守护进程所做的日志记录,但可以为客户端和/或
服务器端的一个非守护进程传输。 如果指定为客户端选项,则传输
将使用“%i %n%L”的默认格式启用日志记录。 见
--日志文件格式 选项,如果你想覆盖它。

这是一个示例命令,它请求远程端记录正在发生的事情:

rsync -av --remote-option=--log-file=/tmp/rlog src/dest/

如果您需要调试连接意外关闭的原因,这将非常有用。

--log-file-format=格式
这使您可以准确指定将每次更新日志记录到文件中的内容
由指定 --日志文件 选项(也必须为此选项指定
有任何影响)。 如果指定空字符串,则不会更新文件
日志文件中提到。 有关可能的转义字符的列表,请参阅
rsyncd.conf 联机帮助页中的“日志格式”设置。

使用的默认 FORMAT 如果 --日志文件 已指定并且此选项不是 '%i
%n%L'。

--统计
这告诉 rsync 在文件传输上打印一组详细的统计信息,
允许您了解 rsync 的增量传输算法对您的效果如何
数据。 这个选项相当于 --信息=统计2 如果与 0 或 1 组合 -v
选项,或 --信息=统计3 如果结合 2 个或更多 -v 选项​​。

目前统计如下:

o 联系电话 of 是所有“文件”(一般意义上)的计数,即
包括目录、符号链接等。总计数后跟一个
按文件类型列出的计数列表(如果总数非零)。 例如:“(注册:
5, dir: 3, link: 2, dev: 1, special: 1)" 列出常规文件的总数,
目录、符号链接、设备和特殊文件。 如果任何一个值为 0,它
从列表中完全省略。

o 联系电话 of 创建 是多少“文件”的计数(通用意义)
被创建(而不是更新)。 总计数之后将是一个
按文件类型列出的计数列表(如果总数非零)。

o 联系电话 of 删除 是多少“文件”的计数(通用意义)
被创建(而不是更新)。 总计数之后将是一个
按文件类型列出的计数列表(如果总数非零)。 注意这一行
仅在删除生效时输出,并且仅当协议 31 正在执行时
使用(rsync 3.1.x 的默认值)。

o 联系电话 of 定期 转移 是正常文件的数量
通过 rsync 的 delta-transfer 算法更新,该算法不包括目录,
符号链接等。请注意,rsync 3.1.0 将“常规”一词添加到此
标题。

o 合计 文件 尺寸 是传输中所有文件大小的总和。 这个
不计算目录或特殊文件的任何大小,但包括
符号链接的大小。

o 合计 转移 文件 尺寸 是所有文件大小的总和
传输的文件。

o 字面 data 是我们必须发送多少不匹配的文件更新数据
接收器以重新创建更新的文件。

o 匹配 data 是接收者在重新创建时在本地获得的数据量
更新的文件。

o 文件 名单 尺寸 是发件人将文件列表数据发送到时文件列表数据的大小
收件人。 这比文件列表的内存大小要小
当 rsync 发送列表时对重复数据进行一些压缩。

o 文件 名单 是发送者花费的秒数
创建文件列表。 这需要发送端的现代 rsync
为了这个存在。

o 文件 名单 转让 是发送者花费的秒数
将文件列表发送给接收方。

o 合计 字节 发送 是 rsync 从
客户端到服务器端。

o 合计 字节 收到 是 rsync 的所有非消息字节的计数
客户端从服务器端接收。 “非消息”字节表示
我们不计算服务器发送到的详细消息的字节数
我们,这使统计数据更加一致。

- 8, --8位输出
这告诉 rsync 在输出中保留所有未转义的高位字符
尝试测试它们以查看它们在当前语言环境中是否有效并转义
无效的。 所有控制字符(但不是制表符)总是被转义,
无论此选项的设置如何。

从 2.6.7 开始的转义习惯用法是输出一个文字反斜杠 (\) 和一个
哈希 (#),后跟正好 3 个八进制数字。 例如,换行符会输出
如“\#012”。 文件名中的文字反斜杠不会被转义,除非它是
后跟一个散列和 3 位数字 (0-9)。

-H, --人类可读
以更易于阅读的格式输出数字。 有 3 个可能的级别:(1)
输出数字,每组 3 位数字之间有一个分隔符(逗号或
句点,取决于小数点是用句点还是逗号表示);
(2) 以 1000 为单位的输出数字(更大的单位带有字符后缀——
见下文); (3) 以 1024 为单位的输出数。

默认值为人类可读级别 1。每个 -h 选项将级别增加一级。
您可以通过指定将级别降低到 0(将数字输出为纯数字)
这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 --没有人类可读的 (--不-h) 选项。

2、3级附加的单位字母是:K(千)、M(兆)、G
(giga) 或 T (tera)。 例如,一个 1234567 字节的文件将输出为 1.23M
级别 2(假设句点是您的本地小数点)。

向后兼容性说明:3.1.0 之前的 rsync 版本不支持
人类可读的级别 1,它们默认为级别 0。因此,指定一两个
-h 选项将在旧版本和新版本中以类似的方式运行,只要
你没有指定一个 --不-h 一个或多个之前的选项 -h 选项。 见
--仅列表 一种差异的选择。

- 部分的
默认情况下,rsync 将删除任何部分传输的文件,如果传输是
中断了。 在某些情况下,更希望部分保留
传输的文件。 使用 - 部分的 选项告诉 rsync 保留部分文件
这应该会使文件其余部分的后续传输速度更快。

--partial-dir=目录
一种比保留部分文件更好的方法 - 部分的 选项是指定一个 DIR
将用于保存部分数据(而不是将其写出到
目标文件)。 在下一次传输时,rsync 将使用在此目录中找到的文件
作为数据以加快恢复传输,然后在传输完成后将其删除
达到了它的目的。

请注意,如果 --整个文件 指定(或暗示),任何部分目录文件
为正在更新的文件找到的将被简单地删除(因为 rsync 是
发送文件而不使用 rsync 的增量传输算法)。

Rsync 将创建 DIR 如果它丢失(只是最后一个目录——而不是整个目录
小路)。 这使得使用相对路径变得容易(例如
"--partial-dir=.rsync-partial") 让 rsync 在
需要时删除目标文件的目录,然后在部分删除时再次删除它
文件被删除。

如果partial-dir 值不是绝对路径,rsync 将在
所有现有排除的结束。 这将阻止发送任何
发送方可能存在的部分目录文件,也将阻止
接收方不合时宜地删除部分目录项。 一个例子:
以上 --部分目录 选项将添加相当于“-f '-p .rsync-部分/'“在
任何其他过滤规则的结尾。

如果您提供自己的排除规则,则可能需要添加自己的
部分目录的排除/隐藏/保护规则,因为 (1) 自动添加的规则可能
在您的其他规则结束时无效,或 (2) 您可能希望覆盖
rsync 的排除选项。 例如,如果你想让 rsync 清理任何
可能存在的剩余部分目录,您应该指定 --删除之后
并添加一个“风险”过滤规则,例如 -f 'R .rsync-部分/'. (避免使用
--删除之前 or --delete-期间 除非您不需要 rsync 来使用任何
当前运行期间剩余的部分目录数据。)

重要提示: --部分目录 不应该被其他用户写入,或者它是一个
安全风险。 例如避免“/ tmp目录".

您还可以在 RSYNC_PARTIAL_DIR 环境变量中设置部分目录值。
在环境中设置此项不会强制 - 部分的 被启用,而是
它会影响部分文件的去向 - 部分的 被指定。 例如,
而不是使用 --partial-dir=.rsync-tmp 随着 - 进展,你可以设置
RSYNC_PARTIAL_DIR=.rsync-tmp 在您的环境中,然后只需使用 -P 选项
打开使用 .rsync-tmp 目录进行部分传输。 唯一的一次
这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 - 部分的 选项不查找此环境值是 (1) 时
- 到位 被指定(因为 - 到位 与...发生冲突 --部分目录) 和 (2)
,尤其是 --延迟更新 被指定(见下文)。

出于守护进程配置的“拒绝选项”设置的目的, --部分目录
而不去 意味着 - 部分的. 这是为了拒绝 - 部分的 选项可以是
用于禁止通过部分传输覆盖目标文件,
同时仍然允许由提供的更安全的习语 --部分目录.

--延迟更新
此选项将每个更新文件中的临时文件放入一个保留目录
直到传输结束,此时所有文件都被重命名到位
快速连续。 这试图使文件的更新多一点
原子。 默认情况下,文件被放置在每个名为“.~tmp~”的目录中。
文件的目标目录,但如果您已指定 --部分目录 选项,
将改为使用该目录。 看评论里的 --部分目录 部分
讨论如何将“.~tmp~”目录排除在传输之外,以及
如果您希望 rsync 清除可能在撒谎的旧“.~tmp~”目录,您可以做什么
大约。 与 - 到位- 附加.

此选项在接收端使用更多内存(每个文件传输一位)
并且还需要接收方有足够的可用磁盘空间来容纳
所有更新文件的附加副本。 另请注意,您不应使用
绝对路径 --部分目录 除非 (1) 没有机会出现在
具有相同名称的传输(因为所有更新的文件都将放入
单个目录(如果路径是绝对路径)和 (2) 目录中没有挂载点
层次结构(因为如果不能重命名延迟更新将失败
地方)。

另请参阅“支持”子目录中的“atomic-rsync”perl 脚本以获取更新
更原子的算法(它使用 --链接目的地 和一个平行的层次结构
文件)。

-米, --修剪空目录
此选项告诉接收方 rsync 从
文件列表,包括没有非目录子级的嵌套目录。 这个
对于避免创建一堆无用的目录很有用
发送 rsync 是使用递归扫描文件层次结构
包含/排除/过滤规则。

请注意使用传输规则,例如 --最小尺寸 选项,不影响
进入文件列表的内容,因此不会使目录为空,即使
目录中没有文件符合传输规则。

因为文件列表实际上正在被修剪,所以这个选项也会影响什么
当删除处于活动状态时,目录将被删除。 但是,请记住
排除的文件和目录可以防止现有项目由于以下原因被删除
排除隐藏源文件和保护目标文件。 见
用于避免这种情况的易腐烂过滤规则选项。

您可以通过以下方式阻止从文件列表中修剪某些空目录
使用全局“保护”过滤器。 例如,此选项将确保
目录“emptydir”保存在文件列表中:

--filter '保护空目录/'

这是一个复制层次结构中所有 .pdf 文件的示例,仅创建
必要的目标目录来保存 .pdf 文件,并确保任何
目标中多余的文件和目录被删除(注意隐藏
正在使用的非目录过滤器而不是排除):

rsync -avm --del --include='*.pdf' -f '隐藏,! */' 源/目标

如果您不想删除多余的目标文件,那么历史悠久
选项“--include='*/' --排除='*'" 可以很好地代替
隐藏过滤器(如果这对您来说更自然)。

- 进展
此选项告诉 rsync 打印显示传输进度的信息。
这给了无聊的用户一些观看的东西。 使用现代 rsync,这是相同的
如指定 --info=flist2,名称,进度, 但任何用户提供的设置
信息标志优先(例如“--info=flist0 --progress”)。

当 rsync 正在传输一个常规文件时,它会更新一个看起来像
喜欢这个:

782448 63% 110.64kB/秒 0:00:04

在这个例子中,接收者重建了 782448 个字节或发送者的 63%
文件,以每秒 110.64 KB 的速度重建,以及
如果当前速率保持不变,则传输将在 4 秒内完成
结束。

如果使用 rsync 的增量传输算法,这些统计数据可能会产生误导。
例如,如果发件人的文件由基础文件和附加文件组成
数据,当接收器到达时,报告的速率可能会急剧下降
字面数据,并且传输可能需要更长的时间才能完成
接收器估计它正在完成文件的匹配部分。

文件传输完成后,rsync 将进度行替换为摘要
看起来像这样的行:

1,238,099 100% 146.38kB/s 0:00:08(xfr#5,to-chk=169/396)

在这个例子中,文件的总长度为 1,238,099 字节,平均速率为
在 146.38 秒内,整个文件的传输速度为 8 KB/秒
完成了,这是当前常规文件的第 5 次传输
rsync 会话,还有 169 个文件供接收方检查(看看是否
它们是否是最新的)在文件列表中的 396 个文件中剩余。

在增量递归扫描中,rsync 不会知道
文件列表直到它到达扫描结束,但因为它开始传输
在扫描文件期间,它会显示一行带有文本“ir-chk”(对于
增量递归检查)而不是“to-chk”,直到它知道
列表的完整大小,此时它将切换到使用“to-chk”。 因此,
看到“ir-chk”让你知道文件列表中的文件总数是
仍然会增加(每次增加时,剩下要检查的文件数
将增加添加到列表中的文件数)。

-P - -P 选项相当于 - 部分的 - 进展. 它的目的是使
为可能需要的长时间传输指定这两个选项要容易得多
打断了。

还有一个 --info=进度2 基于整体输出统计数据的选项
传输,而不是单个文件。 使用此标志而不输出
文件名(例如避免 -v 或指定 --info=名称0 如果你想看看如何转移
无需滚动带有很多名称的屏幕即可。 (你不需要
指定 - 进展 选项以使用 --info=进度2.)

--password-file=文件
此选项允许您提供密码以通过以下方式访问 rsync 守护程序
文件或通过标准输入,如果 文件 is -. 该文件应仅包含密码
在第一行(所有其他行都被忽略)。 如果出现以下情况,Rsync 将退出并显示错误
文件 是世界可读的,或者如果 root-run rsync 命令找到非 root 拥有的文件。

此选项不会为远程 shell 传输(例如 ssh)提供密码; 到
要了解如何做到这一点,请查阅远程 shell 的文档。 当访问一个
rsync 守护进程使用远程 shell 作为传输,此选项仅适用于
远程 shell 完成其身份验证后的效果(即,如果您还
在守护程序的配置文件中指定了密码)。

--仅列表
此选项将导致源文件被列出而不是传输。 这个
如果存在单个源 arg 且未指定目标,则推断选项,因此
它的主要用途是: (1) 将包含目标 arg 的复制命令转换为
文件列表命令,或 (2) 能够指定多个源参数
(注意:一定要包括目的地)。 注意:请记住,源
带有通配符的 arg 被 shell 扩展为多个 args,所以它永远不会
尝试在不使用此选项的情况下列出此类 arg 是安全的。 例如:

rsync -av --仅列出 foo* dest/

从 rsync 3.1.0 开始,输出的大小 --仅列表 受...的影响
--人类可读 选项。 默认情况下,它们将包含数字分隔符,但更高
可读性级别将输出带有单位后缀的大小。 还要注意的是
所有尺寸输出的列宽从 11 个字符增加到 14 个字符
人类可读的水平。 用 --不-h 如果您只想要尺寸中的数字,并且
旧列宽 11 个字符。

兼容性说明:当从 rsync 请求远程文件列表时
是 2.6.3 或更低版本,如果您要求
非递归列表。 这是因为文件列表意味着 --目录 选项
w / o -递归,而较旧的 rsync 没有该选项。 为了避免这个问题,
要么指定 --无目录 选项(如果您不需要扩展目录的
content),或者开启递归并排除子目录的内容: -r
--exclude='/*/*'.

--bwlimit=速率
此选项允许您指定发送的数据的最大传输速率
以每秒单位指定的套接字。 RATE 值可以后缀为
表示大小乘数的字符串,可能是一个小数值(例如
"--bwlimit=1.5m"). 如果没有指定后缀,则假定该值在
1024 字节的单位(好像附加了“K”或“KiB”)。 见 --最大尺寸
用于描述所有可用后缀的选项。 零值指定
没有限制。

出于向后兼容的原因,速率限制将四舍五入到最接近的
KiB 单位,因此不可能小于每秒 1024 字节的速率。

rsync 以块为单位通过套接字写入数据,此选项都限制了大小
rsync 写入的块,并尝试将平均传输速率保持在
要求限制。 在 rsync 写出一块
数据,然后休眠以使平均速率符合要求。

由于数据的内部缓冲, - 进展 选项可能不准确
反映数据发送的速度。 这是因为有些文件可以显示
当数据被快速缓冲时显示为快速发送,而其他可以显示
当刷新输出缓冲区时非常慢。 这可能会在一个
未来版本。

--write-batch=文件
记录以后可以应用到另一个相同目标的文件
--读取批处理. 有关详细信息,请参阅“批处理模式”部分,以及
--仅写入批次 选项。

--only-write-batch=文件
--写批处理,除了在目标系统上没有进行更新
创建批次时。 这使您可以将更改传输到目的地
系统通过一些其他方式,然后通过应用更改 --读取批处理.

请注意,您可以随意将批处理直接写入某些便携式媒体:如果
此媒体在传输结束前已满,您可以直接申请
部分转移到目的地并重复整个过程以获得
其余更改(只要您不介意部分更新的目的地
多更新周期发生时的系统)。

另请注意,仅在将更改推送到远程系统时才能节省带宽
因为这允许将批处理数据从发送方转移到批处理中
文件而不必通过电线流到接收器(拉动时,发送器
是远程的,因此无法写入批处理)。

--read-batch=文件
应用存储在 FILE 中的所有更改,该文件以前由
--写批处理。 如果 文件 is -,批处理数据将从标准输入中读取。 看
有关详细信息,请参阅“批处理模式”部分。

--协议=NUM
强制使用较旧的协议版本。 这对于创建批处理很有用
与旧版本的 rsync 兼容的文件。 例如,如果 rsync
2.6.4 正在与 --写批处理 选项,但 rsync 2.6.3 将是什么
用于运行 --读取批处理 选项,您应该在创建时使用“--protocol=28”
批处理文件强制在批处理文件中使用旧的协议版本
(假设您无法升级阅读系统上的 rsync)。

--iconv=CONVERT_SPEC
Rsync 可以使用此选项在字符集之间转换文件名。 用一个
"." 的 CONVERT_SPEC 告诉 rsync 通过语言环境查找默认字符集
环境。 或者,您可以通过给出一个完全指定要执行的转换
按顺序用逗号分隔的本地和远程字符集 --iconv=本地,远程,
例如 --iconv=utf8,iso88591. 此顺序可确保选项保持不变
无论您是推送还是拉取文件。 最后,您可以指定
--无图标 或“-”的 CONVERT_SPEC 以关闭任何转换。 默认的
此选项的设置是特定于站点的,也可以通过
RSYNC_ICONV 环境变量。

有关本地 iconv 库支持的字符集名称的列表,您可以运行
“图标 - 列表”。

如果您指定 --保护参数 选项 (-s), rsync 将翻译文件名
您在发送到远程主机的命令行上指定。 也可以看看
这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 --文件来自 选项。

请注意,rsync 不会对过滤器文件中的名称进行任何转换(包括
包含/排除文件)。 由您来确保您指定匹配
可以在传输双方匹配的规则。 例如,您可以指定
如果两侧存在文件名差异,则额外的包含/排除规则
需要考虑。

当你通过一个 --iconv 允许它的 rsync 守护进程的选项,守护进程使用
在其“charset”配置参数中指定的字符集,无论
您实际通过的远程字符集。 因此,您可以随意指定
守护进程传输的本地字符集(例如 --iconv=utf8).

- 4, --ipv4 or - 6, --ipv6
在创建套接字时告诉 rsync 首选 IPv4/IPv6。 这只影响套接字
rsync 有直接控制权,比如直接输出套接字时
联系 rsync 守护进程。 另请参阅 --守护进程 模式部分。

如果在不支持 IPv6 的情况下遵守 rsync,则 --ipv6 选项将没有
影响。 的 - 版 输出将告诉您是否是这种情况。

--checksum-seed=NUM
将校验和种子设置为整数 NUM。 这个 4 字节校验和种子包含在
每个块和 MD4 文件校验和计算(更现代的 MD5 文件校验和
不要使用种子)。 默认情况下,校验和种子由服务器生成,并且
默认为当前 time() 。 此选项用于设置特定的校验和
种子,这对于需要可重复块校验和的应用程序很有用,或者
用户想要更随机的校验和种子的情况。 将 NUM 设置为 0 原因
rsync 使用 time() 的默认值作为校验和种子。

达蒙 配置


启动 rsync 守护进程时允许的选项如下:

--守护进程
这告诉 rsync 它将作为守护进程运行。 您开始运行的守护进程可能
使用 rsync 客户端访问 主机::模块 or rsync://主机/模块/
语法。

如果标准输入是套接字,则 rsync 将假定它是通过以下方式运行的
inetd,否则会脱离当前终端成为后台
守护进程。 守护进程将在每次连接时读取配置文件 (rsyncd.conf)
客户端并相应地响应请求。 见 同步文件(5) 手册页
更多细节。

- 地址
默认情况下,当作为守护进程运行时,rsync 将绑定到通配符地址
--守护进程 选项。 该 - 地址 选项允许您指定特定的 IP 地址
(或主机名)绑定到。 这使得虚拟主机成为可能
这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 --配置 选项。 另请参阅 rsyncd.conf 中的“地址”全局选项
联机帮助页。

--bwlimit=速率
此选项允许您为守护进程指定数据的最大传输速率
通过套接字发送。 客户端仍然可以指定一个较小的 --bw限制 价值,但
不允许有更大的值。 请参阅此选项的客户端版本(以上)
一些额外的细节。

--config=文件
这指定了一个替代配置文件而不是默认配置文件。 这只是相关的
,尤其是 --守护进程 被指定。 默认是 /etc/rsyncd.conf 除非守护进程是
运行在远程shell程序上并且远程用户不是超级用户; 在
在这种情况下,当前目录(通常为 $HOME)中的默认值为 rsyncd.conf。

-M, --dparam=覆盖
此选项可用于在启动 rsync 时设置 daemon-config 参数
守护进程模式。 相当于在全局末尾添加参数
第一个模块定义之前的设置。 参数名称可以是
如果您愿意,可以指定不带空格。 例如:

rsync --daemon -M pidfile=/path/rsync.pid

--无分离
作为守护进程运行时,此选项指示 rsync 不分离自身并
成为后台进程。 作为服务运行时需要此选项
Cygwin,当 rsync 由诸如
守护进程 或 AIX 的 系统 更多相关资源 控制器. --无分离 也推荐
当 rsync 在调试器下运行时。 如果从 rsync 运行此选项无效
inetd 或 sshd。

--port=端口
这指定了守护程序侦听的备用 TCP 端口号,而不是
默认值为 873。另请参阅 rsyncd.conf 联机帮助页中的“端口”全局选项。

--log-file=文件
这个选项告诉 rsync 守护进程使用给定的日志文件名而不是使用
配置文件中的“日志文件”设置。

--log-file-format=格式
这个选项告诉 rsync 守护进程使用给定的 FORMAT 字符串而不是使用
配置文件中的“日志格式”设置。 它还启用“传输日志记录”
除非字符串为空,在这种情况下传输日志记录被关闭。

--sockopts
这将覆盖 插座 选项 rsyncd.conf 文件中的设置和具有相同的
语法。

-v, --详细
此选项会增加守护程序在启动期间记录的信息量
阶段。 客户端连接后,守护进程的详细级别将被控制
通过客户端使用的选项和模块中的“最大详细程度”设置
配置部分。

- 4, --ipv4 or - 6, --ipv6
在创建 rsync 的传入套接字时,告诉 rsync 更喜欢 IPv4/IPv6
守护进程将用于侦听连接。 可能需要这些选项之一
旧版本的 Linux 可以解决内核中的 IPv6 错误(如果您看到
“地址已在使用中”错误,当没有其他人使用该端口时,请尝试指定
--ipv6 or --ipv4 启动守护进程时)。

如果在不支持 IPv6 的情况下遵守 rsync,则 --ipv6 选项将没有
影响。 的 - 版 输出将告诉您是否是这种情况。

-H, - 帮帮我
之后指定时 --守护进程, 打印一个描述选项的简短帮助页面
可用于启动 rsync 守护进程。

FILTER 规则


过滤规则允许灵活选择要传输(包含)的文件和
要跳过(排除)哪些文件。 规则要么直接指定包含/排除模式
或者他们指定了一种获取更多包含/排除模式的方法(例如从
文件)。

随着要传输的文件/目录列表的构建,rsync 检查每个名称是否为
依次针对包含/排除模式列表进行传输,并且第一个匹配
模式作用于:如果是排除模式,则跳过该文件; 如果它是一个
包含模式,则不会跳过该文件名; 如果没有找到匹配的模式,那么
不会跳过文件名。

Rsync 按照命令行中的指定构建过滤规则的有序列表。 筛选
规则具有以下语法:

规则 [PATTERN_OR_FILENAME]
规则,修改器 [PATTERN_OR_FILENAME]

您可以选择使用短规则名称或长规则名称,如下所述。 如果你
使用短命名规则,分隔规则和修饰符的“,”是可选的。 这
后面的 PATTERN 或 FILENAME(如果存在)必须跟在单个空格或
下划线 (_)。 以下是可用的规则前缀:

排除, - 指定排除模式。
包括, + 指定包含模式。
合并, . 指定要读取更多规则的合并文件。
目录合并, : 指定每个目录的合并文件。
隐藏, H 指定从传输中隐藏文件的模式。
显示, S 匹配模式的文件不会被隐藏。
保护, P 指定保护文件不被删除的模式。
风险, R 匹配模式的文件不受保护。
明确, ! 清除当前的包含/排除列表(不带参数)

从文件中读取规则时,将忽略空行,以及注释行
以“#”开头。

请注意 - 包括/- 排除 命令行选项不允许完整范围的规则
如上所述解析——它们只允许包含/排除的规范
图案加一个“!” 清除列表的令牌(以及规则时的正常注释解析
从文件中读取)。 如果模式不以“-”(破折号、空格)或“+”(加号、
空格),则规则将被解释为“+”(对于包含选项)或“-”(对于
排除选项)被添加到字符串的前缀。 一个 - 筛选 选项,另一方面,
必须始终在规则的开头包含短规则名称或长规则名称。

还要注意的是 - 筛选, - 包括- 排除 选项每个都采用一个规则/模式。
要添加多个,您可以重复命令行上的选项,使用合并文件
的语法 - 筛选 选项,或 --包含-来自/--排除从 选项​​。

包含/排除 模式 规则


您可以通过使用“+”、“-”等过滤器指定模式来包含和排除文件
规则(如上文过滤规则部分所述)。 每个包含/排除规则
指定一个与将要添加的文件名匹配的模式
转移。 这些模式可以采用多种形式:

o 如果模式以 / 开头,则它被锚定到
文件的层次结构,否则与路径名的末尾匹配。 这
类似于正则表达式中的前导 ^。 因此“/foo”将匹配一个名称
在“传输的根”(对于全局规则)或
合并文件的目录(对于每个目录规则)。 一个不合格的“foo”会
匹配树中任何位置的“foo”名称,因为应用了该算法
从上到下递归; 它的行为就好像每个路径组件都在转弯
是文件名的结尾。 即使是未锚定的“sub/foo”也会匹配任何
在名为“sub”的目录中找到“foo”的层次结构中的点。 看
有关锚定包含/排除模式的部分,以充分讨论如何
指定在传输的根匹配的模式。

o 如果模式以 / 结尾,那么它只会匹配一个目录,而不是一个常规的
文件、符号链接或设备。

o rsync 通过检查在简单的字符串匹配和通配符匹配之间进行选择
如果模式包含以下三个通配符之一: '*'、'?' 和 '[' 。

oa '*' 匹配任何路径组件,但它在斜线处停止。

o 使用“**”来匹配任何东西,包括斜线。

哦'?' 匹配除斜杠 (/) 之外的任何字符。

oa '[' 引入了一个字符类,例如 [az] 或 [[:alpha:]]。

o 在通配符模式中,反斜杠可用于转义通配符,但
当不存在通配符时,它按字面匹配。 这意味着有一个
当模式包含通配符时,额外的反斜杠删除级别
与没有的模式相比。 例如,如果您向“foo\bar”添加通配符
(与反斜杠匹配)您需要使用“foo\\bar*”来避免“\b”
变成只是“b”。

o 如果模式包含 /(不包括尾随的 /)或“**”,则它是
与完整路径名匹配,包括任何前导目录。 如果
模式不包含 / 或“**”,那么它只与最终匹配
文件名的组成部分。 (请记住,该算法是递归应用的,因此
“完整文件名”实际上可以是起始目录中路径的任何部分
下来。)

oa 尾随“dir_name/***”将匹配两个目录(就像“dir_name/”已经
指定)和目录中的所有内容(好像“dir_name/**”已经
指定的)。 此行为是在 2.6.7 版中添加的。

请注意,当使用 -递归 (-r) 选项(由 -a), 每一个
从上到下访问每个路径的子组件,因此包含/排除模式得到
递归地应用于每个子组件的全名(例如,包含“/foo/bar/baz”
不能排除子组件“/foo”和“/foo/bar”)。 排除模式实际上
当 rsync 找到要发送的文件时,使目录遍历阶段短路。 如果一个
模式排除特定的父目录,它可以呈现更深的包含模式
无效,因为 rsync 没有通过层次结构的排除部分下降。
这在使用尾随 '*' 规则时尤为重要。 例如,这不会
工作:

+ /some/path/这个文件将找不到
+ /文件包含
- *

这失败是因为父目录“some”被 '*' 规则排除,所以 rsync 永远不会
访问“some”或“some/path”目录中的任何文件。 一种解决方案是询问
使用单个规则包含层次结构中的所有目录:“+ */”(把它
在“- *”规则之前的某个地方),也许使用 --修剪空目录 选项。 其他
解决方案是为所有需要访问的父目录添加特定的包含规则。
例如,这组规则工作正常:

+ /一些/
+ /一些/路径/
+ /some/path/找到此文件
+ /文件也包括在内
- *

以下是排除/包含匹配的一些示例:

o "- *.o" 将排除所有匹配 *.o 的名称

o "- /foo" 将排除 transfer-root 中名为 foo 的文件(或目录)
目录

o "- foo/" 将排除任何名为 foo 的目录

o "- /foo/*/bar" 将排除任何名为 bar 的文件,该文件位于 a 下两个级别
transfer-root 目录中名为 foo 的目录

o "- /foo/**/bar" 将排除任何名为 bar 的文件低于一个
transfer-root 目录中名为 foo 的目录

o "+ */"、"+ *.c" 和 "- *" 的组合将包括所有目录和 C
源文件,但仅此而已(另请参阅 --修剪空目录 选项​​)

o "+ foo/"、"+ foo/bar.c" 和 "- *" 的组合将仅包括 foo
目录和 foo/bar.c(必须明确包含 foo 目录,否则它会
被“*”排除)

在“+”或“-”之后接受以下修饰符:

Ø / 指定包含/排除规则应该与绝对匹配
当前项目的路径名。 例如, ”-/ / etc / passwd文件" 将排除
passwd 文件任何时候传输从“/等" 目录,以及
当 "-/ subdir/foo" 位于名为 "subdir" 的目录中时,它总是会排除 "foo",即使
如果“foo”是当前传输的根。

Ø ! 指定如果模式失败,包含/排除应该生效
比赛。 例如,“-! */”将排除所有非目录。

Ø C 用于指示应将所有全局 CVS 排除规则插入为
排除代替“-C”。 不应遵循任何 arg。

s 用于表示该规则适用于发送方。 当一个规则
影响发送方,它阻止文件被传输。 默认是
对双方都有影响的规则,除非 --删除-排除 被指定,其中
case 默认规则仅变为发送方。 另见隐藏 (H) 和显示 (S)
规则,这是指定发送方包含/排除的另一种方式。

r 用于表示规则适用于接收方。 当一个规则
影响接收方,它可以防止文件被删除。 见 s
修饰符以获取更多信息。 另请参阅保护 (P) 和风险 (R) 规则,它们是
指定接收方包含/排除的替代方法。

Ø p 表示规则易腐烂,这意味着它在目录中被忽略
正在被删除。 例如, -C 选项的默认规则排除
诸如“CVS”和“*.o”之类的东西被标记为易腐烂的,并且不会阻止
在源上删除的目录不会在目标上被删除。

合并文件 FILTER 规则


您可以通过指定合并 (.) 或
dir-merge (:) 过滤规则(如上面过滤规则部分所述)。

有两种合并文件——单实例 ('.') 和每个目录 (':')。 一个
单实例合并文件被读取一次,它的规则被合并到
过滤器列表代替“.” 规则。 对于每个目录的合并文件,rsync 将扫描
它为命名文件遍历的每个目录,当文件出现时合并其内容
存在于当前的继承规则列表中。 这些每个目录的规则文件必须是
在发送方创建,因为它是正在扫描的发送方
要传输的可用文件。 这些规则文件可能还需要转移到
接收方,如果您希望它们影响哪些文件不会被删除(请参阅 PER-DIRECTORY
规则并在下面删除)。

一些例子:

合并/etc/rsync/default.rules
。 /etc/rsync/default.rules
目录合并 .per-dir-filter
目录合并,n- .non-inherited-per-dir-excludes
:n- .non-inherited-per-dir-排除

在合并或目录合并规则后接受以下修饰符:

Ø - 指定文件应该只包含排除模式,没有其他
规则解析,文件内注释除外。

Ø + 指定文件应该只包含包含模式,没有其他
规则解析,文件内注释除外。

Ø C 是一种指定应以 CVS 兼容方式读取文件的方法。
这会打开 'n'、'w' 和 '-',但也允许列表清除标记 (!)
指定的。 如果未提供文件名,则假定为“.cvsignore”。

Ø e 将从传输中排除合并文件名; 例如“目录合并,e .rules”
就像“dir-merge .rules”和“- .rules”。

n 指定规则不被子目录继承。

Ø w 指定规则是在空格上分词而不是正常的
分线。 这也会关闭评论。 注意:分隔的空间
规则中的前缀被特殊处理,因此“- foo + bar”被解析为两条规则
(假设前缀解析也没有被禁用)。

o 您还可以按顺序为“+”或“-”规则(以上)指定任何修饰符
将从文件中读取的规则默认为具有该修饰符
设置(除了 ! 修饰符,这没有用)。 例如,
"merge,-/ .excl" 会将 .excl 的内容视为绝对路径排除,而
"dir-merge,s .filt" 和 ":sC" 都会使它们的每个目录规则都适用
仅在发送方。 如果合并规则指定要影响的边(通过 s
or r 修饰符或两者),则文件中的规则不得指定边(通过
修饰符或规则前缀,例如 隐藏).

每个目录的规则在目录的所有子目录中继承
除非使用“n”修饰符,否则找到合并文件。 每个子目录的规则是
以从其父级继承的每个目录规则为前缀,这给出了最新的
规则的优先级高于继承的规则。 整套目录合并规则是
在指定合并文件的位置组合在一起,因此可以
通过先前在全局列表中指定的规则覆盖目录合并规则
规则。 当从每个目录的文件中读取列表清除规则(“!”)时,它只会
清除当前合并文件的继承规则。

防止继承目录合并文件中的单个规则的另一种方法是
用前导斜线锚定它。 每个目录合并文件中的锚定规则是相对的
到合并文件的目录,所以模式“/foo”只会匹配文件“foo”
找到 dir-merge 过滤器文件的目录。

这是您通过指定的示例过滤器文件 --过滤器=“。 文件”:

合并 /home/user/.global-filter
- *.gz
目录合并.rules
+ *.[频道]
- *.o

这将合并 /home/user/.global-filter 文件开头的内容
list 并将“.rules”文件名转换为每个目录的过滤器文件。 所有规则
在目录扫描开始之前读入遵循全局锚定规则(即
传输根处的前导斜线匹配)。

如果每个目录的合并文件指定的路径是该目录的父目录
第一个传输目录,rsync 将从该起点扫描所有父目录到
指定的每个目录文件的传输目录。 例如,这里有一个
普通过滤器(见 -F):

--filter=': /.rsync-filter'

该规则告诉 rsync 从根目录开始扫描所有目录中的文件 .rsync-filter
在正常开始之前通过传输的父目录向下
作为传输的一部分发送的目录中文件的目录扫描。
(注意:对于 rsync 守护进程,根始终与模块的“路径”相同。)

这种针对每个目录文件的预扫描的一些示例:

rsync -avF /src/path/ /dest/dir
rsync -av --filter=': ../../.rsync-filter' /src/path/ /dest/dir
rsync -av --filter=': .rsync-filter' /src/path/ /dest/dir

上面的前两个命令将在“/”和“/src”之前查找“.rsync-filter”
正常扫描开始在“/src/path”及其子目录中查找文件。 最后
命令避免了父目录扫描,只在每个文件中查找“.rsync-filter”文件
作为传输一部分的目录。

如果你想在你的模式中包含“.cvsignore”的内容,你应该使用
规则 ":C",它创建 .cvsignore 文件的目录合并,但在一个
CVS 兼容方式。 您可以使用它来影响 --cvs-排除 (-C) 选项
通过将每个目录的 .cvsignore 文件包含在您的规则中
":C" 在过滤规则中的任何位置。 没有这个,rsync 会添加目录合并
所有其他规则末尾的 .cvsignore 文件规则(给它一个较低的
优先于您的命令行规则)。 例如:

猫 <
+ foo.o
:C
- *。老的
EOT
rsync -avC --include=foo.o -f :C --exclude='*.old' a/ b

上述两个 rsync 命令是相同的。 每一个都将合并所有每个目录
.cvsignore 规则在列表的中间而不是末尾。 这让他们
特定于目录的规则取代遵循 :C 而不是屈从的规则
你所有的规则。 要影响其他 CVS 排除规则(即默认列表
排除、$HOME/.cvsignore 的内容和 $CVSIGNORE 的值)你应该省略
这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 -C 命令行选项,而是在过滤规则中插入“-C”规则; 例如
"--过滤器=-C".

清单清除 FILTER 规则


您可以使用“!”清除当前的包含/排除列表。 过滤规则(如介绍
在上面的过滤规则部分)。 “当前”列表是规则的全局列表
(如果在解析过滤器选项时遇到规则)或一组 per-directory
规则(在它们自己的子列表中继承,因此子目录可以使用它来清除
出父母的规则)。

锚固 包含/排除 模式


如前所述,全局包含/排除模式锚定在“
transfer”(与每个目录模式相反,后者锚定在合并文件的
目录)。 如果您将传输视为正在发送的名称的子树
发送者到接收者,传输根是树开始在
目标目录。 此根控制以 / 匹配开头的模式的位置。

因为匹配是相对于传输根的,改变一个尾部的斜杠
源路径或更改您对 - 相对的 选项会影响您需要使用的路径
在您的匹配中(除了更改文件树在
目标主机)。 下面的例子证明了这一点。

假设我们要匹配两个源文件,其中一个的绝对路径为
“/home/me/foo/bar”,一个路径为“/home/you/bar/baz”。 以下是各种
2 源传输的命令选择不同:

示例 cmd:rsync -a /home/me /home/you /dest
+/- 模式:/me/foo/bar
+/- 模式:/you/bar/baz
目标文件:/dest/me/foo/bar
目标文件:/dest/you/bar/baz

示例 cmd:rsync -a /home/me/ /home/you/ /dest
+/- 模式:/foo/bar(注意缺少“我”)
+/- 模式:/bar/baz(注意缺少“你”)
目标文件:/dest/foo/bar
目标文件:/dest/bar/baz

示例 cmd:rsync -a --relative /home/me/ /home/you /dest
+/- 模式:/home/me/foo/bar(注意完整路径)
+/- 模式:/home/you/bar/baz(同上)
目标文件:/dest/home/me/foo/bar
目标文件:/dest/home/you/bar/baz

示例 cmd:cd /主页; rsync -a --relative me/foo you//dest
+/- 模式:/me/foo/bar(从指定路径开始)
+/- 模式:/you/bar/baz(同上)
目标文件:/dest/me/foo/bar
目标文件:/dest/you/bar/baz

查看您应该过滤的名称的最简单方法是在以下情况下查看输出
运用 --详细 并在名称前面放一个 /(使用 --试运行 如果你不是,请选择
尚未准备好复制任何文件)。

按目录 规则 AND 删除


如果没有删除选项,每个目录的规则仅与发送方相关,因此您
可以随意排除合并文件本身而不影响传输。 到
让这变得简单,'e' 修饰符为你添加了这个排除,如这两个所示
等效命令:

rsync -av --filter=': .excl' --exclude=.excl 主机:src/dir /dest
rsync -av --filter=':e .excl' host:src/dir /dest

但是,如果您想在接收方进行删除并且希望将某些文件
排除在删除之外,您需要确保接收方知道什么
要排除的文件。 最简单的方法是将每个目录的合并文件包含在
转让和使用 --删除之后,因为这样可以确保接收方获得所有
在尝试删除任何内容之前,与发送方相同的排除规则:

rsync -avF --delete-after 主机:src/dir /dest

但是,如果合并文件不是传输的一部分,则您需要指定
一些全局排除规则(即在命令行上指定),或者您需要维护
您自己的每个目录合并文件在接收方。 第一个例子是这个
(假设远程 .rules 文件排除自身):

rsync -av --filter=': .rules' --filter='。 /my/extra.rules'
--删除主机:src/dir /dest

在上面的例子中,extra.rules 文件可以影响传输的双方,但是(在
发送方)规则服从于从 .rules 文件合并的规则
因为它们是在每个目录合并规则之后指定的。

在最后一个示例中,远程端将 .rsync-filter 文件从
传输,但我们想使用我们自己的 .rsync-filter 文件来控制什么被删除
接收方。 为此,我们必须专门排除每个目录的合并文件
(这样它们就不会被删除)然后将规则放入本地文件中以控制什么
否则不应该被删除。 就像这些命令之一:

rsync -av --filter=':e /.rsync-filter' --delete \
主机:源代码/目录/目标
rsync -avFF --delete 主机:src/dir /dest

批量 MODE


批处理模式可用于将同一组更新应用到许多相同的系统。 认为
一个有一个在许多主机上复制的树。 现在假设有一些变化
已对此源树进行了更改,并且需要将这些更改传播到其他主机。
为了使用批处理模式执行此操作,使用 write-batch 选项运行 rsync 以应用
将源树更改为目标树之一。 写批处理
选项导致 rsync 客户端将所有需要的信息存储在“批处理文件”中
对其他相同的目标树重复此操作。

生成批处理文件一次就不必执行文件状态、校验和和数据
更新多个目标树时,块生成不止一次。 组播
传输协议可用于将批量更新文件并行传输到许多
主机一次,而不是分别向每个主机发送相同的数据。

要将记录的更改应用到另一个目标树,请使用 read-batch 运行 rsync
选项,指定同一个批处理文件的名称和目标树。 同步
使用存储在批处理文件中的信息更新目标树。

为方便起见,使用 write-batch 选项时还会创建一个脚本文件:
它将与附加了“.sh”的批处理文件同名。 这个脚本文件
包含适用于使用关联的更新目标树的命令行
批处理文件。 它可以使用 Bourne(或 Bourne-like)shell 执行,可选择传递
在备用目标树路径名中,然后使用该路径名代替原始路径名
目的地路径。 当当前主机上的目标树路径
与用于创建批处理文件的不同。

例子:

$ rsync --write-batch=foo -a 主机:/source/dir/ /adest/dir/
$ scp foo* 远程:
$ ssh 远程 ./foo.sh /bdest/dir/

$ rsync --write-batch=foo -a /source/dir/ /adest/dir/
$ ssh 远程 rsync --read-batch=- -a /bdest/dir/

在这些示例中,rsync 用于从 /source/dir/ 更新 /adest/dir/ 和
重复此操作的信息存储在“foo”和“foo.sh”中。 主机“远程”
然后使用进入目录 /bdest/dir 的批处理数据进行更新。 这
这两个示例之间的差异揭示了您在如何
处理批次:

o 第一个例子表明初始副本不必是本地的——你可以
使用 remote-shell 语法或从远程主机推送或拉取数据
rsync 守护程序语法,根据需要。

o 第一个示例使用创建的“foo.sh”文件来获取正确的 rsync 选项
在远程主机上运行 read-batch 命令时。

o 第二个示例通过标准输入读取批处理数据,以便批处理文件
不需要先复制到远程机器上。 这个例子避免了
foo.sh 脚本,因为它需要使用一个修改过的 --读取批处理 选项,但你
如果您想使用它,可以编辑脚本文件(请确保没有
另一个选项是尝试使用标准输入,例如“--排除-从=-"
选项)。

注意事项:

read-batch 选项期望它正在更新的目标树与
用于创建批处理更新文件集的目标树。 当有差异
在目标树之间遇到更新可能会被丢弃并发出警告
(如果文件看起来已经是最新的)或者可以尝试文件更新并且
然后,如果文件无法验证,则更新会因错误而被丢弃。 这意味着它
如果命令被中断,重新运行读取批处理操作应该是安全的。 如果你
希望强制总是尝试批量更新,而不管文件的大小和
日期,使用 -I 选项(读取批次时)。 如果发生错误,目标
树可能处于部分更新状态。 在这种情况下,rsync 可以用于其
常规(非批处理)操作模式来修复目标树。

在所有目标上使用的 rsync 版本必须至少与以前使用的版本一样新
生成批处理文件。 如果协议版本在
批处理文件太新,批处理读取 rsync 无法处理。 另见 - 协议
一种让创建 rsync 生成一个较旧的 rsync 可以的批处理文件的方法的选项
理解。 (注意批处理文件在 2.6.3 版本中改变了格式,所以混合版本
比新版本旧的将无法使用。)

读取批处理文件时,rsync 会强制某些选项的值与数据匹配
如果您没有将它们设置为与批处理写入命令相同,则在批处理文件中。 其他
选项可以(并且应该)改变。 例如 --写批处理 改变为 --读取批处理,
--文件来自 被丢弃,并且 - 筛选/- 包括/- 排除 不需要选项
除非其中之一 - 删除 选项被指定。

创建 BATCH.sh 文件的代码将任何过滤器/包含/排除选项转换为
作为“此处”文档附加到 shell 脚本文件的单个列表。 先进的
如果删除的内容发生更改,用户可以使用它来修改排除列表 - 删除
是需要的。 普通用户可以忽略这个细节,只需使用 shell 脚本作为一个简单的
运行适当的方法 --读取批处理 批处理数据的命令。

rsync 中的原始批处理模式是基于“rsync+”的,但最新版本使用了新的
实施。

符号 链接


当 rsync 遇到源中的符号链接时,可能出现三种基本行为
目录。

默认情况下,根本不传输符号链接。 一条消息“跳过非常规”
为存在的任何符号链接发出文件。

If - 链接 指定,然后使用相同的目标重新创建符号链接
目的地。 注意 - 档案 暗示 - 链接.

If --复制链接 被指定,然后符号链接通过复制它们的引用来“折叠”,
而不是符号链接。

Rsync 还可以区分“安全”和“不安全”符号链接。 一个例子
可能使用的是一个网站镜像,它希望确保 rsync 模块是
复制不包括符号链接 / etc / passwd文件 在网站的公共部分。
运用 --复制不安全链接 将导致任何链接被复制为它们指向的文件
目的地。 使用 --安全链接 将导致完全省略不安全的链接。
(注意必须指定 - 链接 --安全链接 有任何影响。)

如果符号链接是绝对符号链接(以 /), 空的,
或者如果它们包含足够的“..”组件以从被复制的目录上升。

这是如何解释符号链接选项的摘要。 该列表是按顺序排列的
优先级,因此如果未提及您的选项组合,请使用第一行
您选项的完整子集:

--复制链接
将所有符号链接转换为普通文件(不为任何其他选项留下符号链接)
影响)。

- 链接 --复制不安全链接
将所有不安全的符号链接转换为文件并复制所有安全的符号链接。

--复制不安全链接
将所有不安全的符号链接转换为文件,嘈杂地跳过所有安全的符号链接。

- 链接 --安全链接
复制安全符号链接并跳过不安全的符号链接。

- 链接
复制所有符号链接。

诊断


rsync 偶尔会产生看起来有点神秘的错误消息。 那个
似乎引起最多混乱的是“协议版本不匹配——你的外壳干净吗?”。

此消息通常是由您的启动脚本或远程 shell 工具产生的
rsync 用于其传输的流上不需要的垃圾。 诊断方法
这个问题是像这样运行你的远程shell:

ssh 远程主机 /bin/真 > 过时

然后看看out.dat。 如果一切正常,那么 out.dat 应该为零
长度文件。 如果您从 rsync 收到上述错误,那么您可能会发现
out.dat 包含一些文本或数据。 查看内容并尝试弄清楚是什么
生产它。 最常见的原因是错误配置的 shell 启动脚本(例如
作为 .cshrc 或 .profile) 包含非交互式登录的输出语句。

如果您在调试过滤器模式时遇到问题,请尝试指定 -vv 选项。
在这个级别的详细 rsync 将显示为什么每个单独的文件被包含或
排除在外。

退出 王斌金璟閣的價值觀


0 成功

1 语法或使用错误

2 协议不兼容

3 选择输入/输出文件、目录时出错

4 不支持请求的操作:试图在一个计算机上操作 64 位文件
无法支持它们的平台; 或指定了支持的选项
客户端而不是服务器。

5 启动客户端-服务器协议时出错

6 守护进程无法附加到日志文件

10 套接字 I/O 错误

11 文件 I/O 错误

12 rsync 协议数据流中的错误

13 程序诊断错误

14 IPC 代码错误

20 收到 SIGUSR1 或 SIGINT

21 waitpid() 返回的一些错误

22 分配核心内存缓冲区时出错

23 由于错误而部分转移

24 由于源文件消失而导致部分传输

25 --max-delete 限制停止删除

30 数据发送/接收超时

35 等待守护进程连接超时

环境 变数


简历签名
CVSIGNORE 环境变量补充了 .cvsignore 中的任何忽略模式
文件。 见 --cvs-排除 选项了解更多详情。

RSYNC_ICONV
指定默认值 --iconv 使用此环境变量进行设置。 (首先支持
在3.0.0中。)

RSYNC_PROTECT_ARGS
如果需要,请指定一个非零数值 --保护参数 选择是
默认情况下启用,或零值以确保默认情况下禁用它。
(在 3.1.0 中首次支持。)

RSYNC_RSH
RSYNC_RSH 环境变量允许您覆盖用作
rsync 的传输。 命令后允许命令行选项
名字,就像在 -e 选项。

RSYNC_PROXY
RSYNC_PROXY 环境变量允许您将 rsync 客户端重定向到
连接到 rsync 守护进程时使用网络代理。 您应该将 RSYNC_PROXY 设置为
主机名:端口对。

同步密码
将 RSYNC_PASSWORD 设置为所需的密码允许您运行经过身份验证的
rsync 连接到 rsync 守护程序,无需用户干预。 请注意,这确实
不向远程 shell 传输(例如 ssh)提供密码; 学习如何做
那,请查阅远程 shell 的文档。

USER or 日志名称
USER 或 LOGNAME 环境变量用于确定默认值
发送到 rsync 守护进程的用户名。 如果两者都没有设置,则用户名默认为
“没有人”。

主页 HOME 环境变量用于查找用户的默认 .cvsignore 文件。

使用 onworks.net 服务在线使用 rsync


免费服务器和工作站

下载 Windows 和 Linux 应用程序

Linux 命令

Ad




×
广告
❤️在这里购物、预订或购买——免费,有助于保持服务免费。