章工运维 章工运维
首页
  • linux
  • windows
  • 中间件
  • 监控
  • 网络
  • 存储
  • 安全
  • 防火墙
  • 数据库
  • 系统
  • docker
  • 运维工具
  • other
  • elk
  • K8S
  • ansible
  • Jenkins
  • GitLabCI_CD
  • 随笔
  • 面试
  • 工具
  • 收藏夹
  • Shell
  • python
  • golang
友链
  • 索引

    • 分类
    • 标签
    • 归档
    • 首页 (opens new window)
    • 关于我 (opens new window)
    • 图床 (opens new window)
    • 评论 (opens new window)
    • 导航栏 (opens new window)
周刊
GitHub (opens new window)

章工运维

业精于勤,荒于嬉
首页
  • linux
  • windows
  • 中间件
  • 监控
  • 网络
  • 存储
  • 安全
  • 防火墙
  • 数据库
  • 系统
  • docker
  • 运维工具
  • other
  • elk
  • K8S
  • ansible
  • Jenkins
  • GitLabCI_CD
  • 随笔
  • 面试
  • 工具
  • 收藏夹
  • Shell
  • python
  • golang
友链
  • 索引

    • 分类
    • 标签
    • 归档
    • 首页 (opens new window)
    • 关于我 (opens new window)
    • 图床 (opens new window)
    • 评论 (opens new window)
    • 导航栏 (opens new window)
周刊
GitHub (opens new window)
  • linux

    • rsync

      • rsync用法及参数详解
        • rsync
      • rsync服务实现推送,拉取
    • dns

    • sed、awk、grep、find四剑客

    • LVM管理
    • sudo权限规划
    • linux修改网卡为eth0的两种方法
    • Logrotate入门了解及生产实践
    • linux中用dd命令来测试硬盘读写速度
    • linux 阿里云盘挂载错误
    • CentOS7安装Android SDK
    • centos7安装更新git
    • linux启动顺序
    • centos7升级openssl
    • expect工具的安装和使用方法
    • linux下使用v2ray
    • centos7安装java环境的两种方式
    • linux-centos7系统设置时区及同步时间
    • rsyslog日志系统:rsyslog配置文件
    • rsyslog的安装、使用、详解
    • safe-rm防止删除重要的文件
    • linux如何获取打开文件和文件描述符数量
    • LVS集群-DR模式
    • linux服务器安装ffmpeg
    • linux服务器安装samba
    • 使用openssl创建自签发证书
    • linux服务器部署next.js服务
    • linux服务器ionice命令使用方式
    • linux服务器curl命令常用操作
  • windows

  • 中间件

  • 网络

  • 安全

  • 存储

  • 防火墙

  • 数据库

  • 系统

  • docker

  • other

  • 监控

  • 运维
  • linux
  • rsync
章工运维
2022-12-09
目录

rsync用法及参数详解

# rsync

rsync的目的是实现本地主机和远程主机上的文件同步(包括本地推到远程,远程拉到本地两种同步方式),也可以实现本地不同路径下文件的同步,但不能实现远程路径1到远程路径2之间的同步(scp可以实现)。

不考虑rsync的实现细节,就文件同步而言,涉及了源文件和目标文件的概念,还涉及了以哪边文件为同步基准。例如,想让目标主机上的文件和本地文件保持同步,则是以本地文件为同步基准,将本地文件作为源文件推送到目标主机上。反之,如果想让本地主机上的文件和目标主机上的文件保持同步,则目标主机上的文件为同步基准,实现方式是将目标主机上的文件作为源文件拉取到本地。当然,要保持本地的两个文件相互同步,rsync也一样能实现,这就像Linux中cp命令一样,以本地某文件作为源,另一文件作为目标文件,但请注意,虽然rsync和cp能达到相同的目的,但它们的实现方式是不一样的。

既然是文件同步,在同步过程中必然会涉及到源和目标两文件之间版本控制的问题,例如是否要删除源主机上没有但目标上多出来的文件,目标文件比源文件更新(newer than source)时是否仍要保持同步,遇到软链接时是拷贝软链接本身还是拷贝软链接所指向的文件,目标文件已存在时是否要先对其做个备份等等。

rsync同步过程中由两部分模式组成:决定哪些文件需要同步的检查模式以及文件同步时的同步模式。

(1).检查模式是指按照指定规则来检查哪些文件需要被同步,例如哪些文件是明确被排除不传输的。**默认情况下,rsync使用"quick check"算法快速检查源文件和目标文件的大小、mtime(修改时间)是否一致,如果不一致则需要传输。**当然,也可以通过在rsync命令行中指定某些选项来改变quick check的检查模式,比如"--size-only"选项表示"quick check"将仅检查文件大小不同的文件作为待传输文件。rsync支持非常多的选项,其中检查模式的自定义性是非常有弹性的。

(2).同步模式是指在文件确定要被同步后,在同步过程发生之前要做哪些额外工作。例如上文所说的是否要先删除源主机上没有但目标主机上有的文件,是否要先备份已存在的目标文件,是否要追踪链接文件等额外操作。rsync也提供非常多的选项使得同步模式变得更具弹性。

相对来说,为rsync手动指定同步模式的选项更常见一些,只有在有特殊需求时才指定检查模式,因为大多数检查模式选项都可能会影响rsync的性能。

rsync 的命令格式(用法)为:

1)本地使用:


rsync [OPTION...] SRC... [DEST]


2)通过远程 Shell 使用:



拉: rsync [OPTION...] [USER@]HOST:SRC... [DEST]



推: rsync [OPTION...] SRC... [USER@]HOST:DEST


3)访问 rsync 服务器:


拉: rsync [OPTION...] [USER@]HOST::SRC... [DEST]



推: rsync [OPTION...] SRC... [USER@]HOST::DEST



拉: rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]



推: rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

其中:

  • SRC: 是要复制的源位置

  • DEST: 是复制目标位置

  • 若本地登录用户与远程主机上的用户一致,可以省略 USER@

  • 使用远程 shell 同步时,主机名与资源之间使用单个冒号“:”作为分隔符

  • 使用 rsync 服务器同步时,主机名与资源之间使用两个冒号“::”作为分隔符

  • 当访问 rsync 服务器时也可以使用 rsync:// URL

  • “拉”复制是指从远程主机复制文件到本地主机

  • “推”复制是指从本地主机复制文件到远程主机

  • 当进行“拉”复制时,若指定一个 SRC 且省略 DEST,则只列出资源而不进行复制

    下面列出常用选项:

    选项 说明
    -a, ––archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等价于 -rlptgoD (注意不包括 -H)
    -r, ––recursive 对子目录以递归模式处理
    -l, ––links 保持符号链接文件
    -H, ––hard-links 保持硬链接文件
    -p, ––perms 保持文件权限
    -t, ––times 保持文件时间信息
    -g, ––group 保持文件属组信息
    -o, ––owner 保持文件属主信息 (super-user only)
    -D 保持设备文件和特殊文件 (super-user only)
    -z, ––compress 在传输文件时进行压缩处理
    ––exclude=PATTERN 指定排除一个不需要传输的文件匹配模式
    ––exclude-from=FILE 从 FILE 中读取排除规则
    ––include=PATTERN 指定需要传输的文件匹配模式
    ––include-from=FILE 从 FILE 中读取包含规则
    ––copy-unsafe-links 拷贝指向SRC路径目录树以外的链接文件
    ––safe-links 忽略指向SRC路径目录树以外的链接文件(默认)
    ––existing 仅仅更新那些已经存在于接收端的文件,而不备份那些新创建的文件
    ––ignore-existing 忽略那些已经存在于接收端的文件,仅备份那些新创建的文件
    -b, ––backup 当有变化时,对目标目录中的旧版文件进行备份
    ––backup-dir=DIR 与 -b 结合使用,将备份的文件存到 DIR 目录中
    ––link-dest=DIR 当文件未改变时基于 DIR 创建硬链接文件
    ––delete 删除那些接收端还有而发送端已经不存在的文件
    ––delete-before 接收者在传输之前进行删除操作 (默认)
    ––delete-during 接收者在传输过程中进行删除操作
    ––delete-after 接收者在传输之后进行删除操作
    ––delete-excluded 在接收方同时删除被排除的文件
    -e, ––rsh=COMMAND 指定替代 rsh 的 shell 程序
    ––ignore-errors 即使出现 I/O 错误也进行删除
    ––partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输
    ––progress 在传输时显示传输过程
    -P 等价于 ––partial ––progress
    ––delay-updates 将正在更新的文件先保存到一个临时目录(默认为 “.~tmp~”),待传输完毕再更新目标文件
    -v, ––verbose 详细输出模式
    -q, ––quiet 精简输出模式
    -h, ––human-readable 输出文件大小使用易读的单位(如,K,M等)
    -n, ––dry-run 显示哪些文件将被传输
    ––list-only 仅仅列出文件而不进行复制
    ––rsyncpath=PROGRAM 指定远程服务器上的 rsync 命令所在路径
    ––password-file=FILE 从 FILE 中读取口令,以避免在终端上输入口令,通常在 cron 中连接 rsync 服务器时使用
    -4, ––ipv4 使用 IPv4
    -6, ––ipv6 使用 IPv6
    ––version 打印版本信息
    ––help 显示帮助信息
  • 若使用普通用户身份运行 rsync 命令,同步后的文件的属主将改变为这个普通用户身份。

  • 若使用超级用户身份运行 rsync 命令,同步后的文件的属主将保持原来的用户身份。

摘自:

https://www.cnblogs.com/noxy/p/8986164.html

http://www.cnblogs.com/f-ck-need-u/p/7220009.html

https://blog.csdn.net/woshiji594167/article/details/83860993

微信 支付宝
#rsync
上次更新: 2025/04/03, 13:50:05

rsync服务实现推送,拉取→

最近更新
01
shell脚本模块集合
05-13
02
生活小技巧(认知版)
04-29
03
生活小技巧(防骗版)
04-29
更多文章>
Theme by Vdoing | Copyright © 2019-2025 | 点击查看十年之约 | 鄂ICP备2024072800号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式