一、备份服务原理
1.增量备份数据原理
利用算法实现增量备份
根据checksum或者md5sum算法识别出增量数据,将增量数据进行传递
根据文件属性信息变化(修改时间/大小),进行数据传递
2.rsync守护进程方式备份数据原理
需要完成用户身份验证
需要将用户身份进行转换 rsync
需要将备份数据属主和属组进行改变 rsync
二、搭建流程
服务端:
1.确认软件是否安装 (yum -install rsync)
rpm -qa rsync
2.修改配置文件
cp /etc/rsyncd.conf /etc/rsyncd.conf.bak
vim /etc/rsyncd.conf
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 --- 当list参数配置为true时,客户端可以获取服务端所有模块列表信息
(用Enter可以打印出清单)
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 by oldboy" --- 模块注释说明
path = /backup --- 指定备份目录路径
3.创建备份目录管理用户
#创建一个虚拟用户
useradd -M -s /sbin/nologin rsync
#查看用户是否创建成功
id rsync
uid=1042(rsync) gid=1046(rsync) groups=1046(rsync)
4.创建一个备份目录并修改属主属组
mkdir /backup
chown rsync.rsync /backup
5.创建一个访问认证文件
vim /etc/rsync.password
rsync_backup:oldben
chmod 600 /etc/rsync.password
6.启动服务
systemctl start rsyncd
netstat -lntup|grep rsync
客户端:
rsync命令使用方法:
1.本地备份数据工作方式 (类似cp命令功能)
cp -r 备份数据信息 保存数据目录路径
rsync 【参数】 源文件 目标文件位置
2.远程备份数据工作方式 (类似scp命令功能)
拉取数据:客户端将数据进行下载 <-- 备份服务器 还原
rsync 参数 远程主机地址或者名称:拉取的数据信息 本地保存数据目录信息
rsync 172.16.1.41:/etc/hosts ./
推送数据:客户端将数据进行上传 --> 备份服务器 备份
rsync 参数 本地需要备份推送数据 远程主机地址或者名称:/备份数据路径信息
rsync /etc/hosts 172.16.1.41:/backup
#PS:rsync在推送目录数据时,目录后面有 / 和 没有/有本地区别
有 / 将目录下面数据内容进行推送传输
没有 / 将目录本身以及下面数据内容都进行推送传输
3.守护进程备份数据方式 (服务端/客户端)
拉取数据:
rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync 参数 认证用户名称@服务端主机名称或地址::模块信息 本地保存数据路径
rsync rsync_backup@172.16.1.41::backup/hosts ./
推送数据:
rsync 参数 本地需要推送数据 认证用户名称@服务端主机名或地址::模块信息
rsync -r /oldboy rsync_backup@172.16.1.41::backup
三、备份服务命令参数
rsync 常用参数 -avz
-z, --compress(压缩) compress file data during the transfer
将传输文件数据进行压缩处理
-v, --verbose increase verbosity
显示数据传输详细过程
-a, --archive archive mode; equals -rlptgoD
归档模式参数; -a参数等价于输入 -rlptgoD
-r, --recursive recurse into directories
远程传输目录信息
-l, --links copy symlinks as symlinks
是否可以将链接类型文件进行传输 (没有什么意义)
-p, --perms preserve permissions
保持权限信息不变
-t, --times preserve modification times
保持修改时间不变
-o, --owner preserve owner (super-user only)
保持文件属主信息不变
-g, --group preserve group
保持文件属组信息不变
-D same as --devices --specials
是否可以将设备文件进行传输
-L, --copy-links transform symlink into referent file/dir
将链接文件指向的源文件的真实数据进行传递
-P same as --partial --progress
显示数据传输进度信息
四、备份服务企业应用(白名单优先于黑名单)
1)备份服务多模块配置
需求:将开发人员 运维人员 数据库人员备份数据进行隔离
操作说明:
第一个历程:修改配置文件,添加多个模块信息
[sa_backup]
comment = "backup dir by oldboy"
path = /sa_backup
[dev_backup]
comment = "backup dir by oldboy"
path = /dev_backup
第二个历程:创建模块对应目录信息
mkdir /sa_backup /dev_backup
chown rsync.rsync /sa_backup /dev_backup
第三个历程:重启服务程序
systemctl restart rsyncd
2)备份服务模块目录中如何创建子目录
需求:将运维人员oldboy01数据 和 oldboy02数据进行区分
将不同主机数据进行区分
操作说明:
rsync -v init.sh rsync_backup@172.16.1.41::backup/init/
PS: 默认不支持创建多级目录
3)实现排除指定数据信息进行备份
环境准备:
mkdir oldboy{01..03}
touch oldboy{01..03}/{a..c}.txt
├── oldboy01
│?? ├── a.txt
│?? ├── b.txt
│?? └── c.txt
├── oldboy02
│?? ├── a.txt
│?? ├── b.txt
│?? └── c.txt
└── oldboy03
├── a.txt
├── b.txt
└── c.txt
需求1:不想让oldboy01中的,a.txt文件进行备份
--exclude --- 排除指定数据不要进行传输同步
rsync -r oldben01 oldben02 oldben03 --exclude=oldben01/a.txt rsync_backup@172.16.1.41::backup/oldben/
需求2:需要排除多个文件或者目录数据信息时
--exclude-from --- 加载一个文件可以实现排除多个数据信息
第一个历程:编写一个排除文件
oldboy01/a.txt
oldboy02/b.txt
oldboy03/c.txt
PS:排除数据信息写成相对路径, 相对于传输目录而言
第二个历程:执行排除数据命令
rsync -r oldben --exclude-from=1.txt rsync_backup@172.16.1.41::oldben/oldgirl/
4)备份数据采用无差异同步数据 (慎用)
实现客户端和服务端数据一致
rsync -r oldben/ rsync_backup@172.16.1.41::oldben/oldgirl/
意义:保证存储服务器用户数据信息和备份器数据信息高度一致
5)实现免交互自动备份数据功能
定时任务/实时同步
客户端操作:
第一个历程:创建密码文件
vim /etc/rsync.password
oldboy123
chmod 600 /etc/rsync.password
第二个历程:进行免密码传输数据测试
rsync -r oldben/ rsync_backup@172.16.1.41::oldben/oldgirl/ --password-file=/etc/rsync.passwd
6)实现数据备份访问控制功能
hosts allow = 172.16.1.0/24 白名单:允许哪些主机或网段进行传输
hosts deny = 0.0.0.0/32 黑名单:拒绝内些主机或网段进行传输
#企业应用: 只是选择一种名单即可, 不用白名单和黑名单同时存在
=========================================================================
备份范围全局配置和局部配置:
全局配置:配置文件中模块以外配置称为全局配置
影响所有模块功能
局部配置:配置文件中模块以内配置称为局部配置
只是影响指定模块功能 局部配置优先于全局配置
=========================================================================
7)数据传输限速功能
开发人员(家里) --- 互联网 -电信/联通/移动 100M- 路由器 ---- 网站备份服务器
网站用户 --- 互联网 ---- web服务器
--bwlimit=KBps limit socket I/O bandwidth
=========================================================================