-
根据全网备份需求解决问题
-
根据全网备份需求编写脚本
-
根据全网备份部署进行完善项目
1.全网备份项目部署说明
第一个里程:对工作任务进行确认(笔记、录音等记录)
第二个里程:根据需求编写文档资料(部署步骤规划、人员规划、简单部署方案)
第三个里程:和领导进行开会(相关人员进行召集)
第四个里程:根据规划完成任务(阶段性汇报)
第五个里程:任务完成后进行项目文档总结(项目总结会议、人员培训)
2.全网备份需求完成阶段
1.所有服务器的备份目录必须都为/backup
mkdir /backup -p
2.要备份的系统配置文件包括但不限于:
a) 定时任务服务的配置文件(/var/spool/cron/root) (适合web和nfs服务器)
b) 开机自启动的配置文件 (/etc/rc.local) (适合web和nfs服务器)
c) 日常脚本的目录 (/etc/sysconfig/iptables)
d) 防火墙iptables的配置文件 (/etc/sysconfig/iptables)
e) 自己思考下还有什么需要备份呢?
mkdir -p /server/scripts
touch /etc/sysconfig/iptables
方法一:压缩数据----绝对路径
tar zcvhPf /backup/system_backup$(date +%F_%A).tar.gz /var/spool/cron/root /etc/rc.local /server/scripts /etc/sysconfig/iptables
方法二:压缩数据----相对路径
tar zcvhf /backup/system_backup$(date +%F_%A).tar.gz ./var/spool/cron/root ./etc/rc.local ./server/scripts ./etc/sysconfig/iptables
3.web服务器站点目录假定为(/var/html/www)
mkdir -p /var/html/www/
tar zcvPhf /backup/web_info_backup$(date +%F_%A).tar.gz /var/html/www/
4.web服务器访问日志路径假定为(/app/logs)
mkdir -p /app/logs
tar zcvPhf /backup/web_log_backup$(date +%F_%A).tar.gz /app/logs/
5.web服务器保留打包7天的备份数据即可(本地留存不能对于7天,因为太多硬盘会满)
find /backup -type f -name "*.tar.gz" -mtime +7 -delete
6.备份服务器上,保留6个月之内数据,同时保留6个月之前每周一的所有数据副本
find /backup -type f -name "*.tar.gz" -mtime +180 -delete
两种方法:保留周一数据信息
方法一:根据文件名称信息进行保留
date +%F_%w
date +%F_%a
date +%F_%A
find /backup -type f -name "*.tar.gz" -mtime +180 ! -iname "_monday.tar.gz" -delete
方法二:可以将每周一数据进行单独保存
find /backup -type f -iname "*_monday.tar.gz" | xargs mv -t /backup_monday
find /backup -type f -name "*.tar.gz" -mtime +180 -delete
7.备份服务器上,要按照备份数据服务器的内网IP为目录保存备份,备份的文件按照时间名字保存
方法一:在备份客户端主机上,backup目录中创建有IP地址信息子目录
cd /
tar zcvhf /backup/172.16.1.31/system_backup_$(date +%F_%A).tar.gz ./var/spool/cron/root ./etc/rc.local ./server/scripts ./etc/sysconfig/iptables
rsync -avz /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
方法二:
rsync -avz /backup/ rsync_backup@172.16.1.41::backup/172.16.1.31/ --password-file=/etc/rsync.password
8.需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发给系统管理员邮箱中
a.验证数据传输完整性
第一个步骤:客户端生成文件指纹信息
md5sum system_backup_2019-08-19_Monday.tar.gz
8b771973e1a6ca8069e4240d1ee239a7 system_backup_2019-08-19_Monday.tar.gz
生成指纹信息
find /backup/ -type f -name "*.tar.gz" | xargs md5sum >/backup/172.16.1.31/finger.txt
第二个步骤:服务端对文件指纹信息进行比对
find /back/ -type f -name "finger.txt" | xargs md5sum -c >/tmp/check_data.txt
b.对验证结果进行邮件告知运维人员
Linux系统发送邮件原理
邮件服务客户端 -----> 邮件服务端 ----->QQ邮箱
foxmail ----->QQ企业邮箱 ---->发送邮件
Linux postfix ----> QQ/163邮箱 -----> 其他人发送邮件
第一个里程:配置邮箱信息:163、QQ
QQ:授权码:xxxxxxxxxx 开启QQ邮箱中IMAP/SMTP服务
163:授权码:xxxxxxxxx 开启IMAP/SMTP服务
第二个里程:Linux系统中进行邮件配置
vim /etc/mail.rc
set from=邮箱地址@qq.com <----连接邮箱名称信息
set smtp=smtp.qq.com <----设置邮箱服务地址信息
set smtp-auth-user=邮箱地址@qq.com
set smtp-auth-password= <-----邮箱授权码
set smtp-auth=login <----指定进行远程登录连接
例:
#QQ Mail config
set from=1149597677@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=1149597677@qq.com
set smtp-auth-password=xxxxxxxxx
set smtp-auth=login
#163 Mail config
set from=17778058507@163.com
set smtp=smtp.163.com
set smtp-auth-user=17778058507@163.com
set smtp-auth-password=xxxxxxxxx
set smtp-auth=login
第三个里程:重启系统邮件服务
systemctl restart postfix.service
第四个里程:进行邮件发送测试
mail -s "backup_data_notify" 1149597677@qq.com </tmp/check_data.txt
echo oldboy63 | mail -s "test_mail" 1149597677@163.com
以文件方式发送多行信息:
mail -s "test_mail" 1149597677@qq.com </etc/hosts
3.全网备份脚本编写过程
nsf01:
备份服务客户端脚本:
#!/bin/bash
Backup_Dir="/backup/"
Backup_IP="$(hostname -i)"
# 00. create dir info
mkdir $Backup_Dir/$Backup_IP -p
mkdir -p /server/scripts
touch /etc/sysconfig/iptables
# 01. compress data
tar zchPf $Backup_Dir/$Backup_IP/system_backup$(date +%F_%A).tar.gz /var/spool/cron/root /etc/rc.local /server/scripts /etc/sysconfig/iptables
# 02. create finger file
find $Backup_Dir/ -type f -name "*.tar.gz" | xargs md5sum >$Backup_Dir/$Backup_IP/finger.txt
# 03. push data info
rsync -az $Backup_Dir/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
# 04. delete 7 day ago
find $Backup_Dir/ -type f -name "*.tar.gz" -mtime +7 -delete
备份服务服务端脚本:
#!/bin/bash
#01. check data info
find /back/ -type f -name "finger.txt" | xargs md5sum -c >/tmp/check_data.txt
#02. sent notify mail
mail -s "backup_data_notify" 1149597677@qq.com </tmp/check_data.txt
#03. delete 180 day ago
find /backup -type f -name "*.tar.gz" -mtime +180 ! -iname "_monday.tar.gz" -delete
4.编写定时任务注意事项
客户端时间晚于客户端备份时间