目录
一、命令简介
rsync 是一个在 Linux 和其他 Unix-like 系统上一个非常强大的命令行工具,广泛使用的数据同步和文件传输工具。它的名字是 "remote sync" 的缩写,但它不仅仅用于远程同步,也可以用于本地文件和目录之间的同步。rsync 的主要优势在于其高效的增量传输方式,它只传输源和目标之间发生变化的文件块,而不是整个文件。
二、版权信息
rsync 由 Andrew Tridgell、Wayne Davison 以及其他开发者共同编写,并且维护着一个官方网站。
三、功能特性
rsync 支持 64 位文件处理、socket 对、硬链接、符号链接、IPv6、批处理文件、原地更新、追加数据、访问控制列表(ACLs)、扩展属性(xattrs)、字符编码转换(iconv)、符号链接时间戳、预分配文件空间等特性。
四、许可协议
rsync 软件没有任何形式的保证,这是一款免费软件,可以根据特定条件自由分发。具体的分发条件请参照 GNU 通用公共许可证(GPL)。
五、使用方法
用法:
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]
rsync 的使用方法非常灵活,可以通过多种方式进行文件同步,包括通过远程shell或rsync守护进程。
六、选项说明
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 设置备份后缀(默认为 ~,除非使用 --backup-dir)
-u, --update 跳过在接收方更新的文件
--inplace 原地更新目标文件(参见手册页)
--append 将数据追加到较短的文件上
--append-verify 类似于 --append,但包含文件中的旧数据校验和
-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(隐含--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 使用扩展属性存储/恢复特权属性
-S, --sparse 高效处理稀疏文件
--preallocate 在写入之前分配目标文件
-n, --dry-run 进行试运行,不进行任何更改
-W, --whole-file 完整复制文件(不使用增量传输算法)
-x, --one-file-system 不跨越文件系统边界
-B, --block-size=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-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 ... 并包含未更改文件的副本
--link-dest=DIR 当文件未更改时,与DIR中的文件进行硬链接
-z, --compress 在传输过程中压缩文件数据
--compress-level=NUM 明确设置压缩级别
--skip-compress=LIST 跳过列表中后缀的文件压缩
-C, --cvs-exclude 以与CVS相同的方式自动忽略文件
-f, --filter=RULE 添加一个文件过滤规则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
--stats 给出一些文件传输统计信息
-8, --8-bit-output 在输出中不转义高位字符
-h, --human-readable 以人类可读的格式输出数字
--progress 在传输过程中显示进度
-P 等同于 --partial –progress-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 设置输出缓冲为无、行或块
--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才等同于--help)
使用 "rsync --daemon --help" 来查看守护进程模式的命令行选项。
请查阅 rsync(1) 和 rsyncd.conf(5) 的手册页以获取完整的文档说明。
访问 rsync 以获取更新、错误报告和解答。
七、应用实例
rsync 是一个用于在本地和远程主机之间同步文件和目录的工具。下面介绍几个rsync 的常用实例。
1. 将本地目录复制到远程主机
rsync -avz /本地路径/ 用户名@远程服务器IP地址:/远程路径/ |
这个命令将本地的 /本地路径/ 目录(及其内容)复制到远程主机的 /远程路径/ 下。-a 表示归档模式(递归、保持文件属性等),-v 表示详细输出,-z 表示在传输过程中压缩数据。
2. 从远程主机复制目录到本地:
rsync -avz 用户名@远程服务器IP地址:/远程路径/ /本地路径/ |
这个命令将从远程主机的 /远程路径/ 目录(及其内容)复制到本地的 /本地路径/ 下。
3. 使用SSH协议进行远程复制
(这实际上是在默认使用SSH,因为 rsync 可以通过SSH进行加密传输)
rsync -avz -e ssh 用户名@远程服务器IP地址:/远程路径/ /本地路径/ |
-e ssh 明确指定使用SSH作为传输协议。
4. 仅列出远程主机上的文件而不复制
rsync -avz --list-only 用户名@远程服务器IP地址:/远程路径/ |
这个命令将列出远程主机上 /远程路径/ 下的所有文件和目录,但不会进行实际的复制操作。
5. 使用rsync进行增量备份:
假设你已经使用 rsync 将 /data 目录备份到 /backup,并且之后 /data 目录中有一些文件被修改或新增。你可以再次使用以下命令进行增量备份:
rsync -avz --delete /data/ /backup/ |
--delete 选项会删除 /backup 中那些在 /data 中不存在的文件,确保 /backup 是 /data 的一个精确镜像。
6. 限制传输带宽:
如果你不希望 rsync 占用全部的网络带宽,你可以使用 --bwlimit 选项来限制它:
rsync -avz --bwlimit=1000 用户名@远程服务器IP地址:/远程路径/ /本地路径/ |
这个命令将限制 rsync 的传输速度为每秒 1000 KB。
这些只是 rsync 的一些基本用法。实际上,rsync 提供了许多其他的选项和功能,可以满足各种复杂的同步和备份需求。
7、目录复制并预先分配目标文件的空间
假设你想将本地的 /path/to/source
目录复制到远程服务器上的 /path/to/destination
,并希望预先分配目标文件的空间,你可以使用以下命令:
rsync -avz --preallocate 用户名@远程服务器IP地址:/path/to/destination/ /path/to/source/
文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。