实现备份服务的上传、校验、以及服务端e-mail的推送
全网备份项目部署说明
1) 项目需求分析文档 a 项目完成可以解决什么问题 b 简单编写项目实施方案
2) 项目实施阶段说明 a 项目开始完成阶段
项目完成任务信息
1. 所有服务器的备份目录必须都为/backup web01 nfs01 backup mkdir -p /backup ?
2. 要备份的系统配置文件包括但不限于:
a)定时任务服务的配置文件 (/var/spool/cron/root) (适合web和nfs服务器)。
b)开机自启动的配置文件 (/etc/rc.local) (适合web和nfs服务器)。
c)日常脚本的目录 (/server/scripts)。
d)防火墙iptables的配置文件 (/etc/sysconfig/iptables)。
需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发给系统管理员邮箱中。
a 如何进行数据完整性验证
验证文件指纹信息
1) 在本地生成指纹文件 (指纹编码 文件信息)
2) 将数据和指纹文件传输
3) 远程主机根据接收到的文件再次生成指纹信息
4) 用新的指纹信息和老的指纹信息做比对
5) 只要一致就是完整数据 如果不一致就是有损坏数据
生成指纹文件
md5sum 文件信息 > finger.txt
验证指纹文件
md5sum -c finger >/tmp/check_figer.txt
b 如何让系统发送邮件信息
foxmail --> 配置 --> QQ企业邮箱 --> 其他人发送邮件
linux --> 配置(账号 密码 授权码) --> QQ邮箱 --> 其他人发送邮件
第一个历程: 配置QQ邮箱
IMAP服务开启
邮箱授权码
邮箱服务地址: QQ: smtp.qq.com 163: smtp.163.com
第二个历程: 编写linux邮件服务配置文件
vim /etc/mail.rc
set from=17778058507@163.com
set smtp=smtp.163.com
set smtp-auth-user=17778058507@163.com
set smtp-auth-password=oldboy123
set smtp-auth=login
systemctl
一、在服务端的环境配置
第一步:在服务端安装rsync的软件包
yum install -y rsync
第二步:设置环境变量
uid = rsync #属主用户信息
gid = rsync #属组用户信息
port = 873 #端口号
fake super = yes #伪装超级管理员
use chroot = no #使用uix操作系统
max connections = 200 #最大连接数
timeout = 300 #超过300秒未连接自动断开
pid file = /var/run/rsyncd.pid #文件存放目录
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors #忽略错误提示
read only = false #只读false文件
list = false #不显示模块信息
hosts allow = 172.16.1.0/24 #允许172.16.1.0网段连接(白名单)
hosts deny = 0.0.0.0/32 #拒绝0.0.0.0网段连接(黑名单)
auth users = rsync_backup #用户信息为rsync_backup
secrets file = /etc/rsync.password #设置一个密码信息文件
[backup] #存储模块名称
comment = "backup dir by oldboy" #注释信息
path = /backup #存储路径在/backup下
第三步:创建一个虚拟用户
useradd -M -s /bin/nologin rsync
第四步:设置一个密码文件(其目的将密码信息存储到该文件中)
echo zgl123 >/etc/rsync.password
第五步:更改密码文件的权限(让其用户无法查看该文件内容)
chmod 600 /etc/rsync.password
第六步:设置储存文件属主 属组信息(要于配置文件中的信息一致)
chown rsync.rsync /backup
第七步:重启rsync服务
systemctl restart rsyncd
设计要求:
nfs01客户端的环境配置
1、设置一个备份目录(用来存储本地备份文件)
mkdir –p /backup/172.16.1.31_nfs01
2、临时创建一个压缩包存储文件(172.16.1.31文件用来备份存储服务器的内容)
mkdir -p /backup/172.16.1.31
3、将指定文件进行打包放入/backup/172.16.1.31/目录中
tar zchPf /backup/172.16.1.31/system_date_$(date +%F星期%w).tar.gz /var/spool/cron/root /etc/rc.local /server/scripts
4、进行文件的校验
① 创建一个指纹校验的文件(存放指纹信息)
mkdir /backup/172.16.1.31/finger.tst
② 将指纹校验消息的结果追加到上文件中
cat /backup/172.16.1.31/finger.txt
③ 查找文件中的信息的
find /backup/172.16.1.31-type f -mmin -15|xargs md5sum
>/backup/172.16.1.31/finger.txt (追加到finger.txt文件中)
5、将文件信息传输到备份服务器上
rsync -az /backup/172.16.1.31/ rsync_backup@172.16.1.41::backup/172.16.1.31/
--password-file=/etc/rsync.password (免交互)
6、查找7天以前的文件删除
find /backup –type f –mtime +7 -delete
总结将以上内容编写一个脚本
[root@nfs01 backup] # vim /server/scripts/nfs01.sh
#!/bin/bash
#01.设置变量信息
IP=$(hostname -i)
#02设置备份目录
mkdir -p /backup/$IP/
#03.备份数据信息(压缩备份)
tar zchPf /backup/$IP/system_date_$(date +%F星期%w).tar.gz /var/spo
oot /etc/rc.local /server/scripts
#04.生成指纹文件信息(此方式是增量备份)
find /backup/$IP -type f -mmin -15|xargs md5sum >/backup/$IP/finge
#05.将数据文件进行备份传输
rsync -az /backup/$IP/ rsync_backup@172.16.1.41::backup/$IP/ --pass
=/etc/rsync.password
#06.删除7天以前备份数据信息
find /backup -type f -mtime +7 -delete
定时任务编写
crontab -e
0 0 * * * /usr/bin/sh /servies/server/scripts/nfs01.sh
web01客户端环境配置
#!/bin/bash
#01.设置变量信息
IP=$(hostname -i)
#02设置备份目录
mkdir -p /backup/$IP/
#03.备份数据信息(压缩备份)
tar zchPf /backup/$IP/system_date_$(date +%F星期%w).tar.gz /var/spool/cron/root /etc/rc.local /server/scripts
mkdir -p /var/html/www
tar zchPf /backup/$IP/web01_date_$(date +%F星期%w).tar.gz /var/html/www
mkdir -p /app/logs
tar zchPf /backup/$IP/web01_log_$(date +%F星期%w).tar.gz /app/logs
#04.生成指纹文件信息
find /backup/$IP -type f -mmin -15 -name "*.tar.gz"|xargs md5sum >/backup/$IP/finger.txt
编写定时任务
crontab -e
0 0 * * * /usr/bin/sh /servies/server/scripts/web01.sh
服务端环境配置
1、验证数据备份数据完整性并将输出结果放在/tmp/check_finger.txt文件里
find /backup/-type f -name "finger.txt"|xargs md5sum >/tmp/check_finger.txt
2、将指纹文件验证结果发送给运维人员
前提是编辑一个邮件配置文件
vim /etc/mail.rc
set from=1347856467@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=1347856467@qq.com
set smtp-auth-password=qmdeufranwufiecd
set smtp-auth=login
将指纹验证的消息结果通过邮件信息发送给1347856467
mail -s "$(date +%F) data check" 1347856467@qq.com </tmp/check_finger.txt
总结以上命令编写一个脚本
#! /bin/bash
#01:验证备份数据完整性
find /backup/-type f -name "finger.txt"|xargs md5sum >/tmp/check_finger.txt
#02:将指纹文件验证结果发送给运维人员
mail -s "$(date +%F) data check" 1347856467@qq.com </tmp/check_finger.txt
#03:删除历史备份数据(180天前)除星期一以外的文件删除
find /backup -type f -mtime +180 ! -name "*星期1.tar.gz" -delete
编写定时任务
0 7 * * * /usr/bin/sh /servies/server/scripts/nfs01.sh