全网备份

全网备份

一、全网备份项目环境准备

三台服务器准备完毕

二、完成项目需求

1)所有服务器的备份目录必须都为/backup web01 nfs01 backup

2)要备份的系统配置文件包括但不限于: a.定时任务服务的配置文件(/var/spool/cron/root)(适合web和nfs服务器) b.开机自启动的配置文件(/etc/rc.local)(适合web和nfs服务器) c.日常脚本的目录(/server/scripts)。 d.防火墙iptables的配置文件(/etc/iptables-configs) e.自己思考下还有什么需要备份呢?

 tar zchf /backup/system_backup_$(date +%F_week%w).tar.gz ./var/spool/cron/root ./etc/rc.local ./server/scripts ./etc/iptables-configs   ---压缩需要备份的文件

3)Web服务器站点目录假定为(/var/html/www) 4)Web服务器A访问日志路径假定为(/app/logs)

 
 tar zchf /backup/www_backup_$(date +%F_week%w).tar.gz ./var/html/www
 
 tar zchf /backup/www_log_backup_$(date +%F_week%w).tar.gz ./app/logs

tar命令用法 -h, --dereference follow symlinks; archive and dump the files they point to 将链接文件所指向的原文件进行保存备份

5)Web服务器保留打包后的7天的备份数据即可(本地留存不能多于7天,因为太多硬盘会满)

     find /backup -type f  -mtime +7|xargs rm  --找出并删除七天前的数据

6)备份服务器上,保留每周一的所有数据副本,数据要保留6个月的数据副本。(服务端) 部署好rsync守护进程服务

     find /backup/ -type f -mtime +180 ! -name "*week1.tar.gz"|xargs rm --删除180天的数据,只保留周一的数据

7)备份服务器上要按照备份数据服务器的内网IP为目录保存备份,备份的文件按照时间名字保存

在客户端服务器,创建10.0.0.*的文件

 tar zchf /backup/system_backup_$(date +%F_week%w).tar.gz ./var/spool/cron/root ./etc/rc.local ./server/scripts ./etc/iptables-configs   ---压缩需要备份的文件

8)需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发给系统管理员邮箱中

客户端操作

find /backup/ -type f -mtime -1 ! -name "finger.txt"|xargs md5sum >/backup/10.0.0.7/finger.txt --找到当天数据并且帮文件生成一个指纹信息,传入到指纹文件中,且finger.txt的不写入

服务端操作

find /backup/ -type f -name "finger.txt"|xargs md5sum -c >/tmp/check.txt --通过指纹文件与传入的信息指纹对比是否一致,一致则表示数据完整

 

备份客户端要完成的工作 mkdir -p /backup/10.0.0.31/

 cd /
 tar zchf /backup/system_backup_$(date +%F_week%w).tar.gz ./var/spool/cron/root ./etc/rc.local ./server/scripts ./etc/sysconfig/iptables
 
 tar zchf /backup/www_backup_$(date +%F_week%w).tar.gz ./var/html/www
 
 tar zchf /backup/www_log_backup_$(date +%F_week%w).tar.gz ./app/logs
 
 find /backup -type f -mtime +7|xargs rm
 
 find /backup/ -type f -mtime -1 ! -name "finger*"|xargs md5sum >/backup/10.0.0.31/finger.txt
 
 rsync -avz /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

 

备份服务端要完成的工作

 find /backup/ -type f -mtime +180 ! -name "*week1.tar.gz"
 
 find /backup/ -type f -name "finger.txt"|xargs md5sum -c >/tmp/check.txt
 
 mail -s "邮件测试" 330882721@qq.com </tmp/check.txt

 

补充说明:

1、如何验证数据完整性 利用md5算法进行验证数据完整性 #md5sum -c 指纹文件命令执行原理

第一个历程: 打开一个指纹文件,将信息记录到缓存中

第二个历程: 根据指纹文件的路径信息,生成md5数值信息

第三个历程: 将新生成md5数值和原有指纹文件中的数值进行比较

第四个历程: 如果相同显示结果为ok,如果不同显示failed

2、如何实现发送邮件 a 配置163企业邮箱 b 编写linux服务邮件相关配置文件 vim /etc/mail.rc set from=19178355273@163.com smtp=smtp.163.com set smtp-auth-user=19178355273@163.com smtp-auth-password=VFQKVKBBZFKCOLPJ smtp-auth=login systemctl restart postfix.service c 发送邮件测试 echo "邮件发送测试"|mail -s "邮件测试" 330882721@qq.com

标题 内容 要发送的目标邮箱

mail -s "邮件测试" 330882721@qq.com </etc/hosts --把host文件发送到邮箱

标题 要发送的目标邮箱 发送的文件

4、编写全网备份脚本 客户端脚本: nfs01服务器备份脚本:

     #!/bin/sh
 
 Backup_dir="/backup"
 IP_info=$(hostname -i)
 
 #创建备份目录
 mkdir -p $Backup_dir/$IP_info
 
 #压缩打包需要备份的系统配置文件
 cd /
 
 tar zchf $Backup_dir/$IP_info/system_backup_$(date +%F_week%w).tar.gz ./var/spool/cron/root ./etc/rc.local ./server/scripts ./etc/iptables-configs
 
 #只保留七天内数据
 find $Backup_dir -type f -mtime +7|xargs rm 2>/dev/null
 
 
 #验证数据完整
 find $Backup_dir -type f -mtime -1 ! -name "finger*"|xargs md5sum >$Backup_dir/$IP_info/finger.txt
 
 #推送数据到备份服务器
 rsync -az $Backup_dir/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsyncd.password

web01服务器备份脚本:

 #!/bin/sh
 
 Backup_dir="/backup"
 IP_info=$(hostname -i)
 
 #创建备份目录
 mkdir -p $Backup_dir/$IP_info
 
 #压缩打包需要备份的系统配置文件
 cd /
 
 tar zchf $Backup_dir/$IP_info/system_backup_$(date +%F_week%w).tar.gz ./var/spool/cron/root ./etc/rc.local ./server/scripts ./etc/iptables-configs ./var/html ./app/logs
 
 #只保留七天内数据
 find $Backup_dir -type f -mtime +7|xargs rm 2>/dev/null
 
 
 #验证数据完整
 find $Backup_dir -type f -mtime -1 ! -name "finger*"|xargs md5sum >$Backup_dir/$IP_info/finger.txt
 
 #推送数据到备份服务器
 rsync -az $Backup_dir/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsyncd.password

~

服务端脚本:

 #!/bin/sh
 
 #删除180天之前所有数据,只保留周一的
 find /backup -type f -mtime +180 ! -name "*week1.tar.gz" |xargs rm 2>/dev/null
 
 #验证指纹信息完整性
 find /backup -type f -name "finger.txt"|xargs md5sum -c >/tmp/check.txt
 
 #发送以邮件
 mail -s "check info for $(date +%F)" 1837971372@qq.com </tmp/check.txt

 

  1. 实现自动完成全网数据备份(定时任务) 客户端定时任务: crontab -e

    backup data

    0 0 * * * /bin/sh /server/scripts/backup.sh &>/dev/null

    服务端定时任务

    check backup data

    0 5 * * * /bin/sh /server/scripts/backup_server.sh &>/dev/null

posted @ 2022-01-08 16:49  Yusir-SRE  阅读(92)  评论(0编辑  收藏  举报