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

你可能感兴趣的:(基础运维)