全网备份项目

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34646546/article/details/86506913

需求
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点备份内容为前一日数据 所以脚本内日期还需完善

猜你喜欢

转载自blog.csdn.net/qq_34646546/article/details/86506913