linux命令-rsync命令详细解释

目录

一、命令简介

二、版权信息

三、功能特性

四、许可协议

五、使用方法

六、选项说明

七、应用实例

1. 将本地目录复制到远程主机        

2. 从远程主机复制目录到本地:

3. 使用SSH协议进行远程复制

4. 仅列出远程主机上的文件而不复制

5. 使用rsync进行增量备份:

6. 限制传输带宽:

7、目录复制并预先分配目标文件的空间


一、命令简介

        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 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。


  • 10
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值