完成备份项目部署
需求
01 所有服务器的备份目录必须都为/backup
02 要备份的系统配置文件包括但不限于:
a) 定时任务服务的配置文件 (/var/spool/cron/root) (适合web和nfs服务器)。
b) 开机自启动的配置文件 (/etc/rc.local) (适合web和nfs服务器)
c) 日常脚本的目录 (/server/scripts)。
d) 防火墙iptables的配置文件 (/etc/sysconfig/iptables)
03 Web服务器站点目录假定为(/var/html/www)。
04 Web服务器访问日志路径假定为(/app/logs)
05 Web服务器保留打包后的7天的备份数据即可(本地留存不能多于7天,因为太多硬盘会满)
06 备份服务器上,保留最近180天的备份数据,同时保留6个月内每周一的所有数据副本
07 备份服务器上,要按照备份数据服务器的内网IP为目录保存备份,备份的文件按照时间名字保存。
08 需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及
失败结果信息发给系统管理员邮箱中。
第一步:编写shell脚本
客户端
第一个里程碑:创建备份目录
[root@nfs01 ~]# mkdir -p /backup
第二个里程碑:找出需要备份的文件并打包
[root@nfs01 backup]# cd /
[root@backup /]# TIME=$(date +%F_week%w)
[root@backup /]# tar zchf /backup/system-$TIME.tar.gz ./etc/sysconfig/iptables ./etc/rc.local ./server/scripts ./etc/sysconfig/iptables
第三个里程碑:传输备份文件
[root@nfs01 backup]# IP=$(hostname -I|awk '{print $1}')
[root@nfs01 backup]# rsync -avz /backup/ rsync_backup@172.16.1.41::backup/$IP --password-file=/etc/rsync.password
第四个里程碑:将七天前的数据进行删除
[root@nfs01 backup]# find /backup -type -f -mtime +7 "system*.tar.gz*" -delete
第五个里程碑:生成MD5信息
[root@nfs01 backup]# find /backup -type f -name "system*-$TIME.tar.gz" |xargs md5sum >/backup/finger.txt
第六个里程碑:编写脚本
[root@nfs01 backup]# cat /server/scripts/everybackup.sh
#! /bin/bash
#everyday backup by dkai 20190116
TIME=$(date +%F_week%w)
IP=$(hostname -I|awk '{print $1}')
Backup_path="/backup/$IP"
#01. create backup dir
mkdir -p $Backup_path
#02. tar
cd /
tar zchf $Backup_path/system-$TIME.tar.gz ./etc/sysconfig/iptables ./etc/rc.local ./server/scripts ./etc/sysconfig/iptables
#03. del
find $Backup_path -type -f -mtime +7 "system*.tar.gz*" -delete
#04. md5
find $Backup_path -type f -name "system*-$TIME.tar.gz" |xargs md5sum >$Backup_path/finger.txt
#05. rsync
rsync -az $Backup_path/ rsync_backup@172.16.1.41::backup/$IP --password-file=/etc/rsync.password
[root@nfs01 backup]#
服务端:
第一个里程碑:创建备份目录
[root@backup backup]# mkdir -p /backup
第二个里程碑:找出需要删除的文件
[root@backup backup]# find /backup -type f -mtime +180 ! -name "system*1.tar.gz"|xargs rm
第三个里程碑:确认数据完整性
[root@backup backup]# find /backup -type f -name "finger.txt"|xargs md5sum -c >/tmp/check.txt
第四个里程碑:发送邮件通知管理员
配置邮箱
[root@backup backup]# vim /etc/mail.rc
最后一行添加
set from=邮箱地址@163.com smtp=smtp.163.com <- 邮件发送邮件服务器域名,此处为163邮箱的发送服务器域名
set smtp-auth-user=邮箱地址@163.com smtp-auth-password=oldboy123 smtp-auth=login
[root@backup backup]# systemctl restart postfix.service
第五个里程碑:编写脚本
[root@backup backup]# cat /server/scripts/mailevery.sh
#! /bin/bash
#mail every create by dkai 20190115
mkdir -p /backup
# 01.delete
find /backup -type f -mtime +180 ! -name "*week1*" |xargs rm -f
# 02. check
find /backup -name "finger.txt" |xargs md5sum -c >/tmp/check.txt
# 03.mail
mail -s "check info-$(date +%F)" 742359324@qq.com < /tmp/check.txt
第二步:设置定时任务
服务端
[root@backup backup]# crontab -l
#mail -c
00 08 * * * sh /server/scripts/mailevery.sh >>/dev/null 2>&1
注意:打包传输需要时间 所以服务端定时任务时间可以写为早上8点
客户端
[root@nfs01 backup]# crontab -l
#backup
40 14 * * * sh /server/scripts/backupeveryday.sh >>/dev/null 2>&1
补充:0点备份内容为前一日数据 所以脚本内日期还需完善