1、命令简介
rsync:更快、更灵活地替代RCP,可以根据需求使用各种选项来定制同步操作。
2、命令语法
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]... SRC
rsync [OPTION]... [USER@]HOST:SRC [DEST]
rsync [OPTION]... [USER@]HOST::SRC [DEST]
rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
3、命令描述
rsync
是一个行为方式与RCP基本相同的程序,但有更多的选项,并使用rsync
远程更新协议在更新目标文件时大大加快文件传输速度。
rsync
远程更新协议可以rsync
通过网络连接传输两组文件之间的差异,使用技术报告中描述的有效的校验和搜索算法。rsync
是一个与rcp非常相似的程序,但是有更多的选项,并且在更新目标文件时使用rsync
远程更新协议大大加快文件传输速度。
rsync
远程更新协议可以rsync
通过网络连接传输两组文件之间的差异,使用本包附带的技术报告中描述的有效校验和搜索算法。
4、命令选项
选项 | 描述 |
-v, --verbose | 提高详细性 |
--info=FLAGS | 精细粒度的信息详细性 |
--debug=FLAGS | 精细粒度的调试详细性 |
--msgs2stderr | 用于调试的特殊输出处理 |
-q, --quiet | 抑制非错误消息 |
--no-motd | 抑制守护进程模式的MOTD(参见手册页警告) |
-c, --checksum | 基于校验和跳过,而不是修改时间和大小 |
-a, --archive | 归档模式;等于
(不包括
) |
--no-OPTION | 关闭隐含的
) |
-r, --recursive | 递归进入目录 |
-R, --relative | 使用相对路径名 |
--no-implied-dirs | 使用
时不发送隐含的目录 |
-b, --backup | 创建备份(参见
和--backup-dir) |
--backup-dir=DIR | 在 DIR 指定的层次结构中创建备份 |
--suffix=SUFFIX | 设置备份后缀(默认为
) |
-u, --update | 跳过在接收方更新的文件 |
--inplace | 原地更新目标文件(参见手册页) |
--append | 将数据追加到较短的文件上 |
--append-verify | 类似于
,但包含文件中的旧数据校验和 |
-d, --dirs | 仅传输目录而不递归 |
-l, --links | 将符号链接复制为符号链接 |
-L, --copy-links | 将符号链接转换为引用文件/目录 |
--copy-unsafe-links | 仅转换“不安全”的符号链接 |
--safe-links | 忽略指向源树外部的符号链接 |
--munge-links | 修改符号链接以使其更安全(但无法使用) |
-k, --copy-dirlinks | 将指向目录的符号链接转换为引用目录 |
-K, --keep-dirlinks | 将接收方上的符号链接目录视为目录 |
-H, --hard-links | 保留硬链接 |
-p, --perms | 保留权限 |
-E, --executability | 保留文件的可执行性 |
--chmod=CHMOD | 影响文件和/或目录的权限 |
-A, --acls | 保留ACL(隐含
) |
-X, --xattrs | 保留扩展属性 |
-o, --owner | 保留文件拥有者(仅超级用户) |
-g, --group | 保留文件组 |
--devices | 保留设备文件(仅超级用户) |
--copy-devices | 将设备内容复制为普通文件 |
--specials | 保留特殊文件 |
-D | 等同于
|
-t, --times | 保留修改时间 |
-O, --omit-dir-times | 从
中省略目录 |
-J, --omit-link-times | 从
中省略符号链接 |
--super | 接收方尝试超级用户活动 |
--fake-super | 使用扩展属性存储/恢复特权属性 |
-S, --sparse | 高效处理稀疏文件 |
--preallocate | 在写入之前分配目标文件 |
-n, --dry-run | 进行试运行,不进行任何更改 |
-W, --whole-file | 完整复制文件(不使用增量传输算法) |
-x, --one-file-system | 不跨越文件系统边界 |
-B, --block-size=SIZE | 强制使用固定的校验和块大小 |
-e, --rsh=COMMAND | 指定要使用的远程shell |
--rsync-path=PROGRAM | 指定在远程机器上运行的 |
--existing | 跳过在接收方创建新文件 |
--ignore-existing | 跳过在接收方已存在的文件的更新 |
--remove-source-files | 发送方删除已同步的文件(非目录) |
--del | 等同于
的别名 |
--delete | 从目标目录中删除多余的文件 |
--delete-before | 在传输之前,接收方删除文件,而不是在传输过程中 |
--delete-during | 在传输过程中,接收方删除文件 |
--delete-delay | 在传输过程中查找删除项,传输后删除 |
--delete-after | 在传输之后,接收方删除文件,而不是在传输过程中 |
--delete-excluded | 也从目标目录中删除被排除的文件 |
--ignore-missing-args | 忽略丢失的源参数而不报错 |
--delete-missing-args | 从目标中删除丢失的源参数 |
--ignore-errors | 即使有I/O错误也删除 |
--force | 强制删除目录,即使目录不为空 |
--max-delete=NUM | 不删除超过 |
--max-size=SIZE | 不传输大于 |
--min-size=SIZE | 不传输小于 |
--partial | 保留部分传输的文件 |
--partial-dir=DIR | 将部分传输的文件放入DIR中 |
--delay-updates | 在传输结束时将所有更新的文件放入正确的位置 |
-m, --prune-empty-dirs | 从文件列表中删除空的目录链 |
--numeric-ids | 不使用用户名/组名映射 |
--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 | 并包含未更改文件的副本 |
--link-dest=DIR | 当文件未更改时,与DIR中的文件进行硬链接 |
-z, --compress | 在传输过程中压缩文件数据 |
--compress-level=NUM | 明确设置压缩级别 |
--skip-compress=LIST | 跳过列表中后缀的文件压缩 |
-C, --cvs-exclude | 以与CVS相同的方式自动忽略文件 |
-f, --filter=RULE | 添加一个文件过滤规则RULE |
-F | 等同于
|
--exclude=PATTERN | 排除与PATTERN匹配的文件 |
--exclude-from=FILE | 从FILE中读取排除模式 |
--include=PATTERN | 不排除与PATTERN匹配的文件 |
--include-from=FILE | 从 |
--files-from=FILE | 从 |
-0, --from0 | 所有
文件都以0分隔 |
-s, --protect-args | 不分割空格;仅使用通配符特殊字符 |
--address=ADDRESS | 绑定地址,用于到守护进程的出站套接字 |
--port=PORT | 指定双冒号备用端口号 |
--sockopts=OPTIONS | 指定自定义TCP选项 |
--blocking-io | 对远程shell使用阻塞I/O |
--stats | 给出一些文件传输统计信息 |
-8, --8-bit-output | 在输出中不转义高位字符 |
-h, --human-readable | 以人类可读的格式输出数字 |
--progress | 在传输过程中显示进度 |
-P | 等同于
|
-i, --itemize-changes | 输出所有更新的更改摘要 |
--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、行或块 |
--write-batch=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 | 显示此帮助(仅当单独使用时,
|
5、使用示例
1)将本地目录复制到远程主机
rsync -avz /本地路径/ 用户名@远程服务器IP地址:/远程路径/
2)从远程主机复制目录到本地:
rsync -avz 用户名@远程服务器IP地址:/远程路径/ /本地路径/
3)使用SSH协议进行远程复制
rsync -avz -e ssh 用户名@远程服务器IP地址:/远程路径/ /本地路径/
4)仅列出远程主机上的文件而不复制
rsync -avz --list-only 用户名@远程服务器IP地址:/远程路径/
5)使用rsync进行增量备份:
rsync -avz --delete /data/ /backup/
--delete
选项会删除 /backup
中那些在 /data
中不存在的文件,确保 /backup
是 /data
的一个精确镜像。
6)限制传输带宽
rsync -avz --bwlimit=1000 用户名@远程服务器IP地址:/远程路径/ /本地路径/
命令将限制 rsync
的传输速度为每秒 1000 KB
。
7)目录复制并预先分配目标文件的空间
rsync -avz --preallocate 用户名@远程服务器IP地址:/path/to/destination/ /path/to/source/