rsync 是一个能够高效远程更新的文件传输程序,使用快速差分算法。
用法
rsync [OPTION]... SRC [SRC]... DEST
rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST
rsync [OPTION]... [USER@]HOST:SRC [DEST]
rsync [OPTION]... [USER@]HOST::SRC [DEST]
rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]':' 用法通过远程 shell 连接,而 '::' 和 'rsync://' 用法连接到 rsync 守护程序,并要求 SRC 或 DEST 以模块名称开头。
选项
-v,--verbose
详细模式
--info=FLAGS
细粒度的详细信息
--debug=FLAGS
细粒度的详细调试信息
--msgs2stderr
用于调试的特殊输出处理
-q,--quiet
不显示非报错信息
-c,--checksum
基于校验而不是修改时间和大小来跳转
-a,--archive
归档模式,等于 -rlptgoD(不是 -H,-A,-X)
--no-OPTION
关闭一个已使用的选项(例如 --no-D)
-r,--recursive
递归目录
-R,--relative
使用关联路径名
--no-implied-dirs
不使用 --relative 发送隐含目录
-b,--backup
创建备份(参考 --suffix 和 --backup-dir)
--backup-dir=DIR
创建备份 DIR
--suffix=SUFFIX
设置备份的后缀
-u,--update
接收端较新的文件不进行同步
--inplace
rsync 默认创建新副本,并在完成后放到新位置。但这个选项会直接将数据写到新 位置。
--append
使用将数据追加到文件末尾的方式更新文件,这是假设前边的数据都一致。如果 接收端的文件比发送端的大小更大或一样,则跳过这个文件。
--append-verify
和 --append 选项类似,但接收端的现有数据包含在完整文件校验和验证步骤中, 如果最终验证步骤失败,这将导致重新发送文件。
-d,--dirs
不递归目录。
-l,--links
将软链作为软链同步。
-L,--copy-links
同步软链指向的文件或目录,而不是软链本身。
--copy-unsafe-links
只同步“不安全的”软链。
--safe-links
忽略指向资源树以外的软链。
--munge-links
munge 软链接使它们更安全(但无法使用)。
-k,--copy-dirlinks
将指向目录的软链接转换为所指目录。
-K,--keep-dirlinks
将接收端的软链目录视为普通目录。
-H,--hard-links
保留硬链接。
-p,--perms
保留权限。
-E,--executability
保留文件的执行能力。
--chmod=CHMOD
影响文件和/或目录的权限。
-A,--acls
保留ACL(隐含 --perms)。
-X,--xattrs
保留扩展参数。
-o,--owner
保留属主(超级用户专享)。
-g,--group
保留属组。
--devices
保留设备文件(超级用户专享)。
--copy-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
使用此选项,不使用 rsync 的 delta-transfer 算法,而是按原样发送整个文件。
-x,--one-file-system
在当前文件系统中。
-B,--block-size=SIZE
强制固定的校验和的 block-size。
-e,--rsh=COMMAND
指定要使用的远程的 shell。
--rsync-path=PROGRAM
指定在远程机器上运行的 rsync。
--existing
不在接收端创建新文件。
--ignore-existing
不更新接收端存在的文件。
--remove-source-files
删除发送端的已同步的文件。
--del
--delete-during 的别名。
--delete
在接收端删除发送端没有的文件。
--delete-before
接收端在同步前删除。
--delete-during
接收端在同步时删除。
--delete-delay
在传输期间计算接收方的文件删除(如 --delete-during),然后在传输完成后删 除。
--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
不跳过匹配大小和修改时间的文件。
-M,--remote-option=OPTION
只把 OPTION 发给远端。
--size-only
跳过匹配大小的文件。
--modify-window=NUM
使用降低的精度比较修改时间。
-T,--temp-dir=DIR
在 DIR 目录中创建临时文件。
-y,--fuzzy
如果接收端找不到对应文件,找一个相似文件做基准。
--compare-dest=DIR
比较相对于 DIR 的接收端文件。
--copy-dest=DIR
类似 --compare-dest,包括将不变的文件从 DIR 拷贝到接收端目录。
--link-dest=DIR
类似 --copy-dest,包括将不变的文件从 DIR 硬链接到接收端目录。
-z,--compress
传输时压缩文件数据。
--compress-level=NUM
设置压缩等级。
--skip-compress=LIST
以 LIST 作为后缀的文件不压缩。
-C,--cvs-exclude
自动忽略和 CVS 相同算法的文件。
-f,--filter=RULE
设置文件过滤规则。
-F
等于 --filter='dir-merge /.rsync-filter',第二次使用等于 --filter='exclude .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
使用块 I/O 作为远程 shell。
--stats
设置文件传输 stats。
-8,--8-bit-output
使输出中的高位字符不转义。
-h,--human-readable
可读性好的方式输出数字。
--progress
展示传输进度。
-P
等于 --partial --progress
-i,--itemize-changes
输出一个源端和目的端的文件的区别的一个报告。有区别的文件会展示文件名和 一个11位的字符串(YXcstpoguax)标示出具体区别。
Y代表更新方式:
< 发送到远端
> 从远端发来
c 改变或创建
h 硬链接
. 未更新
* 列表其余部分包括一个消息
X代表文件类型:
f 文件
d 目录
L 软链
D 设备
S 特殊文件(命名套接字或管道)
其他位每位只有两个值,字母或'.':
c 表示常规文件具有不同的校验和(需要 --checksum)或符号链接、设备或 特殊文件具有更改的值。
s 表示常规文件的大小不同,将通过文件传输进行更新。
t 表示修改时间不同,正在更新为发送端的值(需要 --times)。t 的另一个 值意味着修改时间将设置为传输时间,这发生在没有 --times 的情况下更新文 件/符号链接/设备以及更改符号链接并且接收者无法设置其时间时。
p 表示权限不同,正在更新为发送端的值(需要 --perms)。
o 表示所有者不同并且正在更新为发送端的值(需要 --owner 和超级用户权 限)。
g 表示组不同并且正在更新为发送端的值(需要 --group 和设置组的权限)。
u 暂时用不到。
a 表示ACL信息发生了变化。
x 表示扩展参数信息发生了变化。
--out-format=FORMAT
使用格式 FORMAT 输出更新。
--log-file=FILE
输出日志到 FILE。
--log-file-format=FMT
使用格式 FMT 记录更新。
--password-file=FILE
从 FILE 中读取可访问传输守护进程的密码。
--list-only
只列出文件,不复制。
--bwlimit=RATE
限制套接字I/O带宽。
--outbuf=N|L|B
设置输出缓冲区为 None,Line或Block。
--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
打印版本号。
--help
展示帮助文档。
使用示例:
1. rsync -av
最常用的选项,表示递归模式,保留软链接、文件权限、修改时间戳、属主、属组、设备文件、特殊文件,详细显示执行过程。
2. rsync -avu
不覆盖已修改的文件。
3. rsync -dv
只同步目录结构。
4. rsync -av --progress
展示同步的进度。
5. rsync -av --delete
删除目的端存在,但远端不存在的内容。
6. rsync -av --existing
目的端不创建新内容,就是只同步目的端有的内容。
7. rsync -i
输出一个源端和目的端的文件的区别的一个报告。
8. rsync -av --include/--exclude '通配符'
包括或排除某些文件,使用通配符描述。