1.全网数据备份需求
- 需要备份文件或目录重要文件内容(根据不同服务备份不同的文件内容):
/var/spool/cron/root 、/etc/rc.local、/apps/source - 每台服务器进行备份都先将所有的文件压缩到本地/backup目录下
- 每台服务器进行本地备份时,都备份到/backup下以本机局域网IP地址命令的目录下
- 本地打包的压缩文件名中需要包含执行当天的日期
- 本地服务器需要将超过7天的备份数据删除
- 存储服务器通过rsync daemon方式提供存储备份数据目录 /backup
- 存储备份服务器每天进行数据校验,并且将结果通过邮件方式将结果发送至管理员邮箱
- 存储备份服务器每天定时检查删除超过180天的备份数据,但备份文件以sava结尾的数据需要永久保留
2.实现环境
- 操作系统:
CentOS 6.7 - 备份服务器配置:
rsync daemon 模式,提供备份目录 /backup
可参考: https://blog.csdn.net/cen50958/article/details/89302236 进行配置
3.1本地服务器操作
3.1.1 命令行将备份目录打包
cd /
tar zcvfh /backup/backup_$(date +%F).tar.gz var/spool/cron/root etc/rc.local apps/source
3.1.2 命令行推送
rsync -avz /backup/ [email protected]::backup --password-file=/etc/rsync.password
3.1.3 命令行删除7天前数据
find /backup/ -type f -name “*.tar.gz” -mtime +7|xargs rm -f
3.1.4 获取本机IP地址
ifconfig eth0 |awk -F “[ :]+” ‘NR==2{print $4}’
3.1.5 根据命令行编写基础脚本执行语句
创建脚本存放路径:mkdir -p /server/scripts 操作规范
进入脚本目录:cd /server/scripts/
创建脚本:vim data_bak.sh基本功能脚本:
#进入根目录
cd / &&
#打包备份文件
tar zcfh /backup/backup_$(date +%F).tar.gz var/spool/cron/root etc/rc.local apps/source &&
#推送到服务器端
rsync -az /backup/ [email protected]::backup --password-file=/etc/rsync.password &&
#删除7天前数据
find /backup/ -type f -name “*.tar.gz” -mtime +7|xargs rm -f
但服务器端需要对文件做检查,需要对打包的文件对md5值记录,并且将md5值文件传给服务器端供服务器端数据校验
3.1.6 生成MD5标记文件,防止文件传输被串改
#进入根目录
cd / &&
#打包备份文件
tar zcfh /backup/backup_KaTeX parse error: Expected 'EOF', got '#' at position 69: …ps/source &&\ #̲生成md5校验码 md5sum…(date +%F).tar.gz > /backup/flag_$(date +%F).log &&
#推送到服务器端
rsync -az /backup/ [email protected]::backup --password-file=/etc/rsync.password &&
#删除7天前数据
find /backup/ -type f -name “*.tar.gz” -mtime +7|xargs rm -f
3.1.7 客户机打包到各自IP目录下
#取本机IP
IP=$(ifconfig eth0 |awk -F “[ :]+” ‘NR==2{print $4}’)
#本地目录
Path=/backup
#当前时间
Time=$(date +%F)
#创建IP目录
mkdir $Path/$IP/ -p
#进入根目录
cd / &&
#打包备份文件
tar zcfh $Path/$IP/backup_$Time.tar.gz var/spool/cron/root etc/rc.local apps/source &&
#生成md5校验码
md5sum $Path/$IP/backup_$Time.tar.gz > $Path/$IP/flag_$(date +%F).log &&
#推送到服务器端
rsync -az $Path/ [email protected]::backup --password-file=/etc/rsync.password &&
#删除7天前数据
find $Path/ -type f -name “*.tar.gz” -mtime +7|xargs rm -f
3.1.8每周一文件打包成需要保存文件(文件结尾-save命名)
#取本机IP
IP=$(ifconfig eth0 |awk -F “[ :]+” ‘NR==2{print $4}’)
#本地目录
Path=/backup
#当前时间
if [ $(date +%w) -eq 1 ]
then
Time=$(date +%F)’-save’
else
Time=$(date +%F)
fi
#创建IP目录
mkdir $Path/$IP/ -p
#进入根目录
cd / &&
#打包备份文件
tar zcfh $Path/$IP/backup_$Time.tar.gz var/spool/cron/root etc/rc.local apps/source &&
#生成md5校验码
md5sum $Path/$IP/backup_$Time.tar.gz > $Path/$IP/flag_$Time.log &&
#推送到服务器端
rsync -az $Path/ [email protected]::backup --password-file=/etc/rsync.password &&
#删除7天前数据
find $Path/ -type f -mtime +7 ( -name “.log" -o -name ".tar.gz” )|xargs rm -f
3.1.9 加入定时任务
crontab -e
#back data by silly at 20190414
00 00 * * * /bin/sh/server/scripts/data_bak.sh >/dev/null 2>&1
脚本文件路径下载地址: https://download.csdn.net/download/cen50958/11119294
3.2存储服务器命令
创建脚本存放路径:mkdir -p /server/scripts 操作规范
进入脚本目录:cd /server/scripts/
创建脚本:vim check_backdata_and_del.sh
脚本内容
脚本中的接收邮箱地址,需要填写为个人的邮箱地址
脚本内容:
Path=/backup
#当前时间
if [ $(date +%w) -eq 1 ]
then
Time=$(date +%F)’-save’
else
Time=$(date +%F)
fi
#md5比对后结果文件路径
PathResult=/var/backup/${Time}_result.log
#设置环境为英文
LANG=en
#验证文件是否被串改
find $Path/ -type f -name “${Time}.log" |xargs md5sum -c >> $PathResult
#发送邮件
mail -s “$Time server bak check result” [email protected] < $PathResult
#查找180天以前的文件
find $Path/ -type f -mtime +180 ! -name "-save.tar.gz” |xargs rm -f
脚本文件路径下载地址:
https://download.csdn.net/download/cen50958/11119312