任务需求
整体思路
服务器上的数据 先打包放到指定的目录 远程推送至备份服务器上
给文件创建一个校验码 传输后校验值是否正确 是否丢包
写入定时任务
凌晨一点 数据打包推送至备份服务器
凌晨二点 检验数据 邮箱通知
客户端要求:
1.客户端每天凌晨1点在服务器本地打包备份(系统配置文件\日志文件\其他目录\应用配置等文件)
2.客户端备份的数据必须存放至以主机名_ip地址_当前时间命名的目录中
3.客户端最后通过rsync推送本地已经打包好的备份文件至backup服务器
4.客户端服务器本地保留最近7天的数据,避免浪费磁盘空间
服务端要求:
1.服务端部署 rsync,用于接收客户端推送过来的备份数据
2.服务端需要每天校验客户端推送过来的数据是否完整
3.服务端需要每天校验的结果通知给管理员
4.服务端仅保留 6 个月的备份数据,其余的全部删除
注意:所有服务器的备份目录必须都为/backup
1.备份文件:
/var/log/message
2.对文件打包备份
tar zcf /backup/nfs_172.16.1.31_2020-02-21/messages.tar.gz /var/log/
3.要求存储格式:主机名+ip+日期
/backup/nfs_172.16.1.31_2020-02-21/messages.tar.gz
1)取主机名
root@nfs ~#: hostname
nfs
2)取ip
root@nfs ~#: ifconfig eth1|awk 'NR==2{print $2}'
172.16.1.31
3)取时间
root@nfs ~#: date +%F
2020-02-21
拼接命令为:
root@nfs ~#: echo "/backup/$(hostname)_$(ifconfig eth1|awk 'NR==2{print $2}')_$(date +%F)"
/backup/nfs_172.16.1.31_2020-02-21
4.添加校验文件
root@nfs nfs_172.16.1.31_2020-02-21#: ls
messages.tar.gz
root@nfs nfs_172.16.1.31_2020-02-21#: md5sum messages.tar.gz >md5.log
5.校验文件
root@nfs nfs_172.16.1.31_2020-02-21#: md5sum -c md5.log
/backup/nfs_172.16.1.31_2020-02-21/messages.tar.gz: 确定
6.rsync推送至backup服务器
rsync -avz /backup/ rsync@172.16.1.41::backup --password-file=/etc/rsync.password
7.客户端服务器本地保留最近7天的数据,避免浪费磁盘空间
find /backup/ -mtime +7 |xargs rm -fr
8.定时任务
# 凌晨一点定时备份
00 01 * * * /bin/sh /server/scripts/backup.sh
服务端要求
1.服务端部署 rsync,用于接收客户端推送过来的备份数据
2.服务端需要每天校验客户端推送过来的数据是否完整
md5sum -c /backup/nfs_172.16.1.31_2020-02-21/md5.log
实现命令
root@backup ~#: find /backup/nfs_172.16.1.31_2020-02-21 -type f -name "md5.log"|xargs md5sum -c
/backup/nfs_172.16.1.31_2020-02-21/messages.tar.gz: 确定
3.服务端需要每天校验的结果通知给管理员
安装邮件服务
yum install mailx -y
修改配置文件
set from=xxxxxxxxx@qq.com // QQ邮箱
set smtp=smtps://smtp.qq.com:465 // QQ邮箱DNS默认
set smtp-auth-user=xxxxxxxxx@qq.com // QQ邮箱
set smtp-auth-password=xxxxxxxxxx // 第三方16位数的授权码
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
要使用邮件服务,需要去qq邮箱更改设置
第一步
第二步
第三步
默认是关闭状态,开启前两个,需要手机验证或者qq动态码,开启后,在生成授权码,复制授权码到centos的配置文件中
1.进行测试:
echo "test"|mail -s "test" xxxxxxx@qq.com &>/dev/null
2.测试加密文件然后通知管理员
find /backup/nfs_172.16.1.31_2020-02-21 -name "md5.log" |xargs md5sum -c |mail -s "check_status" xxxxxxx@qq.com
3.服务端仅保留 6 个月的备份数据,其余的全部删除
find /backup/ -mtime +180 -exec rm {} \;
4.写入定时任务
# 凌晨二点检验
00 02 * * * /bin/sh /server/scripts/chack.sh
脚本汇总
客户端脚本
#!/bin/bash
#Author:ajie
#Time:2020-02-21 11:45:15
# 指定环境变量
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
# 定义变量
NAME=`hostname`
IP=`ifconfig eth1|awk 'NR==2{print $2}'`
DATE=`date +%F`
DIR=/backup
DEST=${NAME}_${IP}_$DATE
# 创建备份目录
mkdir -p $DIR/$DEST/
# 备份数据
tar zcf /$DIR/$DEST/messages.tar.gz /var/log/ &>/dev/null
# 加密文件
md5sum $DIR/$DEST/messages.tar.gz > $DIR/$DEST/md5.log
# 远程传输
rsync -zva $DIR/ rsync@172.16.1.41::backup --password-file=/etc/rsync.password
# 删除七天前的数据
find /backup/ -mtime +7 |xargs rm -fr
服务端脚本
#!/bin/bash
#Author:ajie
#Time:2020-02-21 16:54:25
# 指定环境变量
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
# 定义变量
DATE=`date +%F`
DIR=/backup
IP=nfs_172.16.1.31_$DATE
# 校验数据
find $DIR/$IP/ -name "md5.log" |xargs md5sum -c > /$DIR/check.txt
# 发邮件通知管理员
echo `md5sum -c $DIR/$IP/md5.log`|mail -s "check_status" xxxxxxxx@qq.com &>/dev/null
# 删除180天前的内容
find $DIR/ -mtime +180 |xargs rm -fr