1.架构备份服务概述介绍
作用说明:主要用于备份服务器中重要数据信息(系统配置文件 服务配置文件 服务日志文件)
备份数据:
- 本地备份 作为数据对比文件
- 远程备份 用于实现数据还原
#远程备份演示
#备份文件
[root@jiagou ~]# scp /etc/sysconfig/network-scripts/ifcfg-ens33 172.16.1.41:/backup/
The authenticity of host '172.16.1.41 (172.16.1.41)' can't be established.
ECDSA key fingerprint is SHA256:aB3Qv36oamgVDjSQxqhnLnsbyqT+18DrsJ0lq1w6+H4.
ECDSA key fingerprint is MD5:48:aa:80:55:f4:66:f9:3e:63:da:4f:ef:b2:32:d7:23.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.1.41' (ECDSA) to the list of known hosts.
root@172.16.1.41's password:
ifcfg-ens33 100% 328 271.1KB/s 00:00
#远程备份目录
scp -rp /etc/sysconfig/ 172.16.1.41:/backup/
#拉取数据的过程
scp -rp 172.16.1.41:/backup/ifcfg-ens33 /etc/sysconfig/network-scripts/
每次都要密码验证,过于繁琐
实现免密码传输
实现方式:rsync
rsync - a fast, versatile, remote (and local) file-copying tool
快速的 多功能的 远程(本地) 文件复制工具
2架构备份服务工作原理:rsync
数据传输备份原理:
1)需要建立网络连接:TCP三次握手
2)需要进行身份验证:客户端发送:用户/密码信息 服务端需要对比用户文件信息进行验证
3)数据传递后需要进行属主和属组的信息变化:客户端文件属性信息统一变为服务端的指定用户信息(rsync)
数据增量备份原理:
在数据传输之前需要进行数据比对
比对方式:2种
1)根据文件sha/md5算法进行比对 根据文件名称以及文件内容识别文件之间区别
2)根据文件属性信息进行比对 权限不一样 时间信息 大小信息
3.架构备份服务方式方法
定时备份数据:编写好备份数据脚本文件 —> 定时任务
实时备份数据:目录数据变化信息监控 —>rsync将变化的数据进行传递备份
4.架构备份服务部署安装
服务端部署过程:
第一个历程:安装部署软件程序
yum install -y rsync
第二个历程:创建管理备份目录以及数据用户信息
[root@backup ~]# useradd rsync -M -s /sbin/nologin
[root@backup ~]# id rsync
uid=1001(rsync) gid=1001(rsync) 组=1001(rsync)
[root@backup ~]# chown rsync.rsync /backup/
[root@backup ~]# ll -d /backup/
drwxr-xr-x 2 rsync rsync 25 3月 25 15:55 /backup/
useradd rsync -M -s /sbin/nologin
第三个历程:创建一个用户列表文件
[root@backup ~]# vim /etc/rsync.password
[root@backup ~]# cat /etc/rsync.password
rsync_backup:oldboy123
[root@backup ~]# chmod 600 /etc/rsync.password
[root@backup ~]# ll /etc/rsync.password
-rw------- 1 root root 23 3月 25 17:50 /etc/rsync.password
第四个历程:编写配置文件
[root@backup ~]# rpm -qc rsync
/etc/rsyncd.conf
#用vim修改/etc/rsyncd.conf 修改后如下:
uid = rsync #远端用户访问备份目录的账号为了安全不用root(管理用户基本统一为rsync)
gid = rsync #远端用户访问备份目录的组为了安全不用root(管理用户组基本统一为rsync)
use chroot = no #不使用chroot 安全配置参数
fake super = yes #将rsync虚拟用户伪装成为一个超级管理员用户
list = false #是否允许客户端查看所有模块
max connections = 200 # 最大连接数为200
strict modes = yes #是否检查口令文件的权限
timeout = 300 #超时时间(闲置状态)
port = 873 #指定服务端口(默认端口873)
pid file = /var/run/rsyncd.pid #(进程号)pid文件的存放位置 这三个文件如果没有可以手动创建
lock file = /var/run/rsync.lock #锁文件的存放位置(开发-网络编程)
log file = /var/log/rsyncd.log #日志记录文件的存放位置
ignore errors #可以忽略一些无关的异常错误
read only = false #指定备份数据目录是否是只读状态
hosts allow = 172.16.1.0/24 #允许主机(白名单)
hosts deny = 0.0.0.0/32 #禁止主机 allow和deny留一个(黑名单)
[backup_server] #模块名
path = /backup #要同步备份的路径
comment = test #模块注释说明 (注释可不写)
read only = no #只读
dont compress = *.gz *.bz2 *.zip *.tgz #不压缩哪些格式
auth users = rsync_backup #虚拟用户 用于远程连接的账号密码(不需要在系统中创建)
secrets file = /etc/rsync.password #账户文件位置
配置文件的补充:
use chroot: 安全配置参数
运维人员张三:数据可以存储到备份服务器 /backup
开发人员是李四:备份服务器上编写代码文件 /code/oldboy.py
第一个历程:客户端主机创建环境
#李四--客户端主机
mkdir /code/
echo lisi-oldboy >/code/oldboy.py
第二个历程:创建链接文件信息并进行传输
cd /data/
ln -s /code/oldboy.py /data/oldboy-link
rsync -avz /data/oldboy-link rsync_backup@172.16.1.41::backup
第三个历程:确认备份服务端chroot功能处于开启状态
检查接收的链接信息
ll /backup/
第四个历程:临时关闭chroot功能
在客户端可以尝试恢复文件信息
rsync -Lvz rsync_backup@172.16.1.41::backup/oldboy-link /data
说明:有可能吧备份目录链接文件所指向的其他目录中源文件进行传输
第五个历程:启动服务程序
#启动服务程序
[root@backup ~]# systemctl start rsyncd
#查看进程,确保服务程序的成功启动
[root@backup ~]# ps -ef|grep rsync
root 2675 1 0 18:08 ? 00:00:00 /usr/bin/rsync --daemon --no-detach
root 2682 1866 0 18:08 pts/0 00:00:00 grep --color=auto rsync
#另一种方法 查看系统网络服务状态信息
[root@backup ~]# netstat -lntup|grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 2675/rsync
tcp6 0 0 :::873 :::* LISTEN 2675/rsync
客户端部署过程:
交互式实现数据传递过程:
#将存储服务器上的文件传递给备份服务器(密码是前面定义的oldboy123)
rsync -azv /etc/hosts rsync_backup@172.16.1.41::backup
免交互实现数据传递过程:
两种方式:
方式一:在客户端创建一个密码文件
echo oldboy123 >/etc/rsync.password
chmod 600 /etc/rsync.password
rsync -avz /etc/selinux/config rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
方式二:配置环境
#加环境变量在备份服务端
echo 'export RSYNC_PASSWORD="oldboy123"' >>/etc/profile
tail -1 /etc/profile ---检查(输出文件最后一行信息)
PS:rsync服务在复制目录时和scp复制目录信息区别
1) 可以实现增量复制目录下面数据信息
2) 复制目录时,目录后面有/和没有/是有区别的
scp复制目录时,目录后加与不加/ 都只是将目录本身进行复制
rsync复制目录时,目录后面加/ 表示只将目录下面数据内容进行复制
rsync复制目录时,目录后面没/ 表示将目录及目录下面内容都进行复制 等价于scp