1. Rsync概念特性

rsync可实现全量(全部备份)及增量(差异化备份对更新的部分备份)的本地或者远程数据同步的的工具
rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能 类似于ssh带的scp命令
scp每次都是全量拷贝,rsync可以增量拷贝.。还可以在本地主机之间不同分区或者目录之间全量及增量的复制数据
类似于cp命令,cp每次都是全量拷贝,rsync可以实现增量拷贝
rsync还可以删除文件和目录的功能 rsync有cp,scp,rm的功能还要优于他们

1.1 rsync备份的7大特性

1.支持拷贝普通文件与特殊文件如连接文件,设备等
2.支持排除指定文件或目录同步的功能,类似于tar命令的排除功能
3.支持保持源文件或目录的所有属性信息不变
4.支持增量同步,只同步变化的数据,提升数据传输效率
5.支持使用rcp,rsh,ssh等方式来配合进行隧道加密传输文件
6.支持sockte(守护进程方式)传输文件或者目录数据信息
7.支持用户认证方式传输数据,提升数据同步的安全性

2. rsync命令应用

2.1 rsync参数介绍

-a:归档模式,表示以递归方式传输文件,并保持所有文件属性  相当于rtopgl
-v:显示详细的信息
-z:传输时进行压缩
-r: 对子目录以递归模式处理
-t:保持文件时间属性
-o:保持文件的属主信息
-g:保持文件的数组信息
-p: 保持文件权限
-D:保持设备文件信息
-l:保持软连接
-P:显示同步过程及传输时的进度信息
-e: “ssh“  以什么隧道链接
--delete:删除那些DST中SRC没有的文件 
--exclude=file 排除某些文件{a,d}{a..d}
--exclude-from=FILE 排除FILE中指定模式的文件  写相对路径 ,一行一个文件

2.2 rsync等价于cp,scp,

[root@backup ~]# rsync -a /etc/hosts /tmp
[root@backup ~]# ll /tmp/
total 8
-rw-r--r--. 1 root root  317 Oct 23 19:04 hosts

rsync=====scp
[root@backup ~]# rsync -rp /tmp/  172.16.1.31:/tmp/
root@172.16.1.31's password: 
[root@backup ~]# ssh 172.16.1.31
root@172.16.1.31's password: 
Last login: Wed Oct 23 16:26:13 2019 from 10.0.0.1
[root@nfs01 ~]# tree /tmp
/tmp
├── hosts
├── hsperfdata_root
│   └── 2350
├── vmware-root_848-2697663887
├── vmware-root_851-4022177747
├── vmware-root_856-2731086721
├── vmware-root_859-3988752861
├── vmware-root_861-3988621786
├── vmware-root_865-3980167289
└── yum_save_tx.2019-10-16.14-39.cUq64v.yumtx

7 directories, 3 files

说明:同步数据时,/tmp/目录后有/时,表示同步文件下的所有内容,没有/时,表示同步目录和目录下的所有内容

2.3 rsync等价于rm,ls

[root@nfs01 ~]# mkdir /null
[root@nfs01 ~]# rsync -r --delete /null/ /tmp/
[root@nfs01 ~]# tree /tmp/
/tmp/

0 directories, 0 files
2.4rsync====ls
[root@nfs01 ~]# ls -l /etc/hosts
-rw-r--r--. 1 root root 317 Oct 23 19:04 /etc/hosts
[root@nfs01 ~]# rsync /etc/hosts
-rw-r--r--            317 2019/10/23 19:04:25 hosts

3 rsync数据传输同步的原理

在同步备份数据时,默认情况下,rsync通过独特的quick check算法,它仅同步大小或者最后修改时间发生变化的文件或者目录,当然也可根据权限属主等属性变化同步,但需要指定相应的参数,甚至可以实现自同步一个文件里有变化的内容部分,所以可以实现快速的同步备份数据,即采用增量辅助的方法进行同步

3.1 rsync工作方式

第一种工作方式:本地传输模式
采用这种方式类似于cp命令

Local:  rsync [OPTION...] SRC... [DEST]
rsync  ----数据备份传输的命令
option  -----参数
src	-----要传输备份的文件
dest	-----将数据备份到什么位置

第二种工作方式:远程shell数据传输模式
类似于scp命令

Access via remote shell:
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
rsync		需要备份传输的命令
option		参数
[user]@host	需要指定什么用户身份登录到远程主机,省略就表示以当前身份登录
src		需要传输的数据
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
[USER@]HOST::		--指定远程链接的认证用户
src			        --指定相应的模块信息

`

4 Rsync服务端部署的流程

1.确认软件是否安装

[root@backup ~]# rpm -qa|grep rsync
rsync-3.1.2-6.el7_6.1.x86_64

2.进行软件服务的配置

[root@backup ~]# vim /etc/rsyncd.conf
##rsyncd.conf start##
gid = rsync                     	#用户gid
use chroot = no         			#安全相关
max connections = 200  			    #最大连接数
fake super = yes					#这允许存储文件的完整属性,而不必让守护进程以根用户身份实际运行。
timeout = 300             	        #超时时间(单位/s)
pid file = /var/run/rsyncd.pid  	#进程号对应的文件
lock file = /var/run/rsyncd.lock    #锁文件,防止文件不一致,当达到最大连接数就禁止继续访问
log file = /var/log/rsyncd.log  	#日志文件
[backup]                       	    #模块名称
path = /backup         				#共享的目录
ignore errors                   	#忽略错误
read only = false               	#可写
list = false                    	#不让查看列表(相当于不让ls)
hosts allow = 172.16.1.0/24     	#允许的网段
#hosts deny = 0.0.0.0/32        	#拒绝的网段
auth users = rsync_backup       	#连接的虚拟用户,非系统用户
secrets file = /etc/rsync.password  #虚拟用户账号密码文件
##rsync________________end

3.创建备份目录管理用户

[root@backup ~]# useradd -M -s /sbin/nologin rsync

4.创建备份目录,并授权

[root@backup ~]# mkdir /backup
[root@backup ~]# chown -R rsync:rsync  /backup/
[root@backup ~]# ll -d /backup/
drwxr-xr-x. 2 rsync rsync 6 Oct 25 16:00 /backup/

5.创建认证用户授权密码,并对密码文件进行授权

[root@backup ~]# vim /etc/rsync.password
rsync_backup:123456
[root@backup ~]# chmod 600 /etc/rsync.password

6.启动程序服务

[root@backup ~]# rsync --daemon
[root@backup ~]# netstat -lntup|grep 873
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      4592/rsync

配置多模块

守护进程的访问控制设置

1.只有白名单,只允许白名单访问,其余拒绝
2.只有黑名单,拒绝黑名单的网段,其余允许
3.即有白名单又有黑名单,白名单允许,黑名单拒绝,其余允许。白名单优先于黑名单