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

其中:

  • 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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值