Rsync 服务部署与参数详解

rsync 是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。Rsync软件适用于unix/linux/windows等多种操作系统平台。

传统的 scp 和 cp 工具拷贝每次均为完整拷贝,而rsync除了可以完整拷贝外,还具备增量拷贝功能。因此,从同步数据的性能及效率上,Rsync工具更胜一筹。

官网地址:

https://download.samba.org/pub/rsync/rsync.html
# 或者
https://www.samba.org/ftp/rsync/rsync.html

版本查看

[yun@backup ~]$ rsync --version
rsync  version 3.1.2  protocol version 31
Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others.
Web site:
Capabilities:
    64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
    append, ACLs, xattrs, iconv, symtimes, prealloc

rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
are welcome to redistribute it under certain conditions.  See the GNU
General Public Licence for details.

Rsync 增量复制的原理

Rsync 通过 “quick check” 算法 (默认情况) 找到要传输的文件,该算法会查找大小已改变或最后修改时间已改变的文件。

当 “quick check” 指示不需要更新文件的数据 (即:文件的内容) 时,会直接在目标文件上更改其他属性(如权限信息、属主属组信息、时间戳信息)「根据相应的选项参数」。

rsync2.x对比方法,把所有文件比对一遍,然后进行同步。

rsync3.x对比方法,一边比对差异,一边对差异的部分进行同步。

Rsync 软件功能介绍

rsync == cp

1 # 拷贝 /etc/rpm 目录
2 [root@back ~]# cp -a /etc/rpm /tmp/
3 # 等价于
4 [root@back ~]# rsync -a /etc/rpm /tmp/

注意:cp -a 的参数意义和 rsync -a 的参数意义不一样。

rsync == scp

1 [yun@back tmp]$ scp -pr yun@172.16.1.182:/etc/xml /tmp/
2 # 等价于
3 [yun@back tmp]$ rsync -pr yun@172.16.1.182:/etc/xml /tmp/

rsync == rm
删除 /tmp/yum/ 目录下的所有文件和目录。【千万不要搞错目录】

1 [yun@back tmp]$ rm -fr /tmp/yum/*
2 # 等价于
3 [yun@back tmp]$ rsync -r --delete /tmp/zhang/ /tmp/yum/

其中 /tmp/zhang/ 目录下无任何文件

rsync == ls -l

1 [yun@backup tmp]$ ls -l /tmp/xml/catalog
2 -rw-r--r-- 1 yun yun 1171 Sep 18 16:08 /tmp/xml/catalog
3 # 类似于
4 [yun@backup tmp]$ rsync /tmp/xml/catalog
5 -rw-r--r--          1,171 2019/09/18 16:08:41 catalog

Rsync 特性介绍

1、支持拷贝特殊文件。如链接文件、设备等。
2、可以排除指定文件或目录的同步功能,相当于打包tar的排除功能。
3、可以做到保持源文件或目录的权限、时间、软链接、属主、属组等所有属性均不改变。
4、可实现增量同步。既只同步发生变化的数据,因此传输效率很高,tar -N。
5、可以使用 rcp、rsh、ssh 等方式来配合传输文件(rsync本身不对数据加密)。
6、可以通过socket(进程方式)传输文件和数据(服务端和客户端)【重点掌握】。
7、支持匿名或认证(无需系统用户)的进程传输,可以实现方便安全的进行数据备份及镜像。

Rsync 运用场景

数据备份

使用方式:cron + rsync 比如数据库备份,除了本地需要备份外,还需要通过 rsync 在专门的备份服务器上备份一份。

实时同步

使用方式:rsync + inotify 或 sersync 比如为了缓解服务器压力,我们需要将用户上传的图片放在多台服务器上【如果没有上 CDN】,这样高并发访问的时候可以分发到多台机器,减轻服务器压力。

又比如敏感数据不能丢失,那必须做实时备份。

Rsync 使用说明

Rsync 传输方式分三种

1、单个主机本地内部之间的数据传输(此时类似于 cp 的功能)

2、借助rcp,ssh等通道来传输数据(此时类似于 scp 的功能)

3、以守护进程方式传输数据(rsync 自身的重要功能)

# 本地数据同步方式
Local:  rsync [OPTION...] SRC... [DEST]

# 远程数据同步方式
Access via remote shell:
 Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
 Push: rsync [OPTION...] SRC... [USER@]HOST:DEST

# 守护进程方式同步数据
Access via rsync daemon:
 Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
      rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
 Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
      rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

源目录后面无 “/“ 和有 “/“ 的区别

将 /etc/yum 目录复制到 /tmp/zhang/ 目录下。

1 # 源目录后面无 "/"
2 [yun@backup ~]$ rsync -avz /etc/yum  /tmp/zhang/
3 [yun@backup ~]$ ll /tmp/zhang/
4 total 0
5 drwxr-xr-x 6 yun yun 100 Nov 14  2018 yum

将 /etc/yum/ 目录下的所有文件和目录,复制到 /tmp/zhang/ 目录下。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/5ba557188e87b4a7ed7057e8fa3fc7b9.html