备份服务概念
Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具
全量:将目录中所有数据都进行传输备份(可以包含已经备份过的数据)
增量:将目录中新增的数据进行传输备份(可以不用包含已经备份的数据,提高数据传输效率)
本地:相当于cp备份数据 将数据从一个目录备份到另一个目录(在一台主机上进行)
远程:相当于scp备份数据
作用说明
1) 避免数据丢失或者损坏
2) 将数据进行汇总管理(数据分析)
rsync 的三种工作方式
1) 本地备份数据的工作方式(类似cp命令功能)
2) 远程备份数据的工作方式(类似scp命令功能)
3) 守护进程备份数据的方式(服务端/客户端)
rsync 的选项
-z, --compress --- 将传输文件数据进行压缩处理
-v, --verbose --- 显示数据传输详细过程
-a, --archive --- 归档模式参数; 表示以递归方式传输文件, 并保持所有文件属性, 等价于输入 -rlptgoD
-r, --recursive --- 远程传输目录信息
-l, --links --- 是否可以将链接类型文件进行传输
-p, --perms --- 保持权限信息不变
-t, --times --- 保持修改时间不变
-o, --owner --- 保持文件属主信息不变
-g, --group --- 保持文件属组信息不变
-D --- 是否可以将设备文件进行传输
-L, --copy-links --- 将链接文件指向的源文件的真实数据进行传递
-P --- 显示数据传输进度信息
-q, --quiet --- 精简输出模式
-c, --checksum --- 打开校验开关, 强制对文件传输进行校验
-R, --relative --- 使用相对路径信息
-H, --hard-links --- 保留硬链结
-h, --help --- 显示帮助信
备份服务原理
增量备份数据原理
利用算法实现增量备份
1) 根据checksum算法识别出增量数据,将增量数据进行传递
2) 根据文件属性信息变化(修改时间/大小), 进行数据传递
rsync 守护进程方式备份数据原理
1) 需要完成用户身份验证
2) 需要将用户身份进行转换 rsync
3) 需要将备份数据属主和属组进行改变 rsync
备份服务搭建过程
服务端配置过程
第一步: 安装软件
yum install -y rsync
第二步: 编写配置文件
vi /etc/rsyncd.conf
#rsync_config
#created by HQ at 2017
##rsyncd.conf start##
uid = rsync --- 指定转换用户身份/备份目录管理用户
gid = rsync --- 指定转换用户组身份/备份目录管理用户组
port = 873 --- 指定服务端口
fake super = yes --- 是否伪装成一个超级用户(rsync)
保证文件权限信息不变/不再显示 chgrp 命令错误提示
use chroot = no --- 实现远程传输安全配置
max connections = 200 --- 最大连接数
timeout = 300 --- 连接超时时间
pid file = /var/run/rsyncd.pid --- 记录服务进程号码 只有服务启动才会有进程文件
lock file = /var/run/rsync.lock --- 控制最大连接数量
log file = /var/log/rsyncd.log --- rsync备份服务日志文件
ignore errors --- 忽略错误功能 保证传输数据效率
read only = false --- 针对于备份目录是否是只读
list = false --- 是否可以列出模块名
hosts allow = 172.16.1.0/24 --- 允许哪个主机地址或者网段可以和备份服务器建立连接(白名单)
hosts deny = 0.0.0.0/32 --- 拒绝哪个主机地址或者网段可以和备份服务器建立连接(黑名单)
auth users = rsync_backup --- 指定认证用户
secrets file = /etc/rsync.password --- 指定认证密码文件
[backup] --- 模块名称
comment = "backup dir" --- 模块注释说明
path = /backup --- 指定备份目录路径
#rsync_config
#created by HQ at 2017
##rsyncd.conf start##
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
comment = "backup dir"
path = /backup
第三步: 创建备份目录管理用户
useradd rsync -M -s /sbin/nologin
id rsync
uid=1042(rsync) gid=1046(rsync) groups=1046(rsync)
第四个历程:创建一个备份数据目录
mkdir /backup
chown rsync.rsync /backup
第五个历程:创建一个访问认证文件
vim /etc/rsync.password
rsync_backup:test123
chmod 600 /etc/rsync.password
第六个历程:启动备份服务程序
systemctl restart rsyncd
systemctl enable rsyncd
netstat -lntnp|grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 23955/rsync
tcp6 0 0 :::873 :::* LISTEN 23955/rsync
客户端配置过程
yum install -y rsync
操作过程
本地备份数据工作方式(类似cp命令功能)
rsync 参数 备份数据信息 保存数据目录路径
远程备份数据工作方式(类似scp命令功能)
拉取数据: 客户端将数据进行下载
rsync 参数 远程主机地址或者名称:拉取的数据信息 本地保存数据目录信息
推送数据:客户端将数据进行上传
rsync 参数 本地需要备份推送数据 远程主机地址或者名称:备份数据路径信息
注意: rsync在推送目录数据时, 目录后面有 / 和 没有 / 有本地区别
有 / 将目录下面数据内容进行推送传输
没有 / 将目录本身以及下面数据内容都进行推送传输
守护进程备份数据方式(服务端/客户端)
拉取数据
rsync 参数 认证用户名称@服务端主机名称或地址::模块信息 本地保存数据路径
推送数据
rsync 参数 本地需要推送数据 认证用户名称@服务端主机名或地址::模块信息
企业应用
1. 备份服务多模块配置
需求: 将开发人员 运维人员 数据库人员备份数据进行隔离
操作说明
第一步: 修改配置文件, 添加多个模块信息
[sa_backup]
comment = "backup dir"
path = /sa_backup
[dev_backup]
comment = "backup dir"
path = /dev_backup
第二步: 创建模块对应目录信息
mkdir /sa_backup /dev_backup
chown rsync.rsync /sa_backup /dev_backup
第三步: 重启服务程序
systemctl restart rsyncd
2. 备份服务模块目录中如何创建子目录
需求: 将不同主机数据进行区分
操作说明
rsync -avz /etc/hosts rsync_backup@172.16.1.41::sa_backup/172.16.1.31/
注:
默认不支持创建多级目录
3.实现排除指定数据信息进行备份
环境准备
mkdir /test/test{01..03} -p
touch /test/test{01..03}/{a..c}.txt
需求1:不想让test01中a.txt文件进行备份
- - exclude - - - 排除指定数据不要进行传输同步
rsync -avz /test/ --exclude=/test01/a.txt rsync_backup@172.16.1.41::sa_backup
需求2:需要排除多个文件或者目录数据信息时test01/a.txt、test02/b.txt、test03/c.txt
- - exclude-from - - - 加载一个文件可以实现排除多个数据信息
第一步: 编写一个排除文件
vim /test.txt
test01/a.txt
test02/b.txt
test03/c.txt
注:排除数据信息写成相对路径, 相对于传输目录而言
第二步: 执行排除数据命令
rsync -avz /test/ --exclude-from=/aaa.txt rsync_backup@172.16.1.41::sa_backup
4. 备份数据采用无差异同步数据 (慎用)
实现客户端和服务端数据一致
- - delete ---- 使目标目录内容和源保持目录一致, 删除不同的文件
rsync -avz /test/ --delete rsync_backup@172.16.1.41::sa_backup
注:保证存储服务器用户数据信息和备份器数据信息高度一致, 客户端里有什么服务端就有什么
5. 实现免交互自动备份数据功能
客户端操作
第一个历程: 创建密码文件
vim /etc/rsync.password
test23
chmod 600 /etc/rsync.password
第二个历程: 进行免密码传输数据测试
rsync -avz /test/ rsync_backup@172.16.1.41::sa_backup --password-file=/etc/rsync.password
6. 实现数据备份访问控制功能
hosts allow = 172.16.1.0/24 白名单:允许哪些主机或网段进行传输
hosts deny = 0.0.0.0/32 黑名单:拒绝内些主机或网段进行传输
企业应用: 只是选择一种名单即可, 不用白名单和黑名单同时存在
备份范围全局配置和局部配置
全局配置:
配置文件中模块以外配置称为全局配置
影响所有模块功能
局部配置:
配置文件中模块以内配置称为局部配置
只是影响指定模块功能 局部配置优先于全局配置
7. 数据传输限速功能
- - bwlimit ---- 限制传输速度
开发人员(家里) — 互联网 -电信/联通/移动 100M- 路由器 ---- 网站备份服务器
网站用户 — 互联网 ---- web服务器
–bwlimit=KBps limit socket I/O bandwidth
补充:配置文件中list参数
当list参数配置为true时, 客户端可以获取服务端所有模块注释说明
rsync rsync_backup@172.16.1.41::
sa_backup "backup dir"
dev_backup "backup dir"