前言
使用shell脚本+md5sum算法实现对客户端数据的备份并且生成文件独有校验码。再通过Rsync将其推送至备份服务器上,利用md5sum算法再次生成校验码,比较两次校验码,检查备份结果是否正常,最后通过mail将相关备份信息发送至指定邮箱。通过邮箱文件,管理员可以实时的知道备份进度,减少工作量,提高工作效率。
【企业案例】:
某公司里有一台Web服务器,里面的数据很重要,但是如果硬盘坏了,数据就会丢失,现在领导要求你 把数据在其他机器上做一个周期性定时备份。要求如下:
每天晚上00点整在Web服务器A上打包备份网站程序目录并通过rsync命令推送到服务器B上备份保存 (备份思路可以是先在本地按日期打包,然后再利用rsync推送到备份服务器上)。
1)rsync服务的socket方式传递,(客户端,服务端(web))
2)web服务器站点目录为(/var/www/html)
3)归档压缩web目录内容为日期格式,(例如:/backup/www.20190915.tar.gz),web服务器本地仅 保留7天内的备份。
4)备份服务器上检查备份结果是否正常(对比大小(服务文件—客户端文件对比)md5sum 生成校验码,使用校验码对比),并将每天的备份结果发给管理员信箱(自学)。
5)备份保留180天。
socket是一种进程方式,是rsync的特性。
1.脚本文件
#!/bin/bash
cd /var/www #进入到/var/www目录下
date=`date +%F` #记录当前时间
tar -zcf /backup/www.$date.tar.gz html #打包html目录
tar_name=/backup/www.$date.tar.gz #备份文件名
tar_md5sum=`md5sum $tar_name` #验证码
rsync -avz --delete /backup/ rsync_backup@192.168.150.128::backup --password-file=/etc/rsync.password #将本地打包好的文件推到192.168.150.128指定目录下,密码采用从本地文件中读取
cp_tar_md5sum=`ssh root@192.168.150.128 "md5sum $tar_name"` #登录服务端进行采集校验码,文件内容未改变校验码是相同的,也就确保数据未丢失,这里我已经搭建了ssh服务,所以是免密登录。
if [[ $tar_md5sum == $cp_tar_md5sum ]]
then
echo "文件打包同步一切正常!" | mail -s "tile" 2748677868@qq.com
else
echo "文件打包同步异常!" | mail -s "tile" 2748677868@qq.com
# 简单的输出,将内容发送到我的邮箱
fi
邮件配置参考https://www.runoob.com/w3cnote/centos-mail-command-sendmail.html
2.执行结果
3.客户端
4.服务器端
5.客户端定时任务
6。服务器端定时任务
备份保留180天通过crontab实现