Linux63期day34

全网备份项目部署说明

第一个里程: 对工作任务进行确认             笔记记录      录音记录
第二个里程: 根据需求编写文档资料           部署步骤规划  时间规划(2个月) 人员规划  简单部署方案
第三个里程: 和领导开会(相关人员进行召集)  
第四个里程: 根据规划完成任务               阶段汇报  
第五个里程: 任务完成后项目文档总结         项目总结会议  人员培训

全网备份需求完成阶段

1) 所有服务器的备份目录必须都为/backup
   mkdir /backup -p

2) 要备份的系统配置文件包括但不限于:
   a) 定时任务服务的配置文件       (/var/spool/cron/root)  (适合web和nfs服务器)。
   b) 开机自启动的配置文件            (/etc/rc.local)         (适合web和nfs服务器)。
   c) 日常脚本的目录               (/server/scripts)。
   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
   方法二: 压缩数据---相对路径
   cd /
   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
  1. 备份服务器上,要按照备份数据服务器的内网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命令创建子目录功能
    rsync -avz /backup/ rsync_backup@172.16.1.41::backup/172.16.1.31/ --password-file=/etc/rsync.password

  2. 需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发给系统管理员邮箱中。
    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 /backup/ -type f -name "finger.txt"|xargs md5sum -c >/tmp/check_data.txt
   
   
    对验证结果进行邮件告知运维人员
   linux系统发送邮件原理  
   邮件服务客户端  --->  邮件服务服务端 ---> QQ邮箱
   foxmail         --->  QQ企业邮箱     ---> 发送邮件
   linux postfix   --->  QQ邮箱 163邮箱 ---> 其他人发送邮件
   
   第一个里程: 配置邮箱信息: 163 QQ
   QQ:  授权码: izpcjhqnzqvvbhfi  开启IMAP/SMTP服务
   163: 授权码: oldboy123         开启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=330882721@qq.com
   set smtp=smtp.qq.com                 
   set smtp-auth-user=330882721@qq.com
   set smtp-auth-password=izpcjhqnzqvvbhfi
   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=oldboy123
   #set smtp-auth=login

   第三个里程: 重启系统邮件服务
   systemctl restart postfix.service 
   
   第四个里程: 进行邮件发送测试
   echo oldboy63|mail -s "test_mail" 17778058507@163.com 
   mail -s "test_mail" 17778058507@163.com </etc/hosts

   mail -s "backup_data_notify" 17778058507@163.com </tmp/check_data.txt
  1. 全网备份脚本编写过程:
    备份服务客户端脚本:
    [root@nfs01~]#vim /server/scripts/backup.sh
nfs01: 初始化备份脚本
#!/bin/bash
# 00. create dir info
mkdir /backup -p
mkdir -p /server/scripts
touch /etc/sysconfig/iptables

# 01. compress data
tar zcvhPf /backup/172.16.1.31/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/ -type f -name "*.tar.gz"|xargs md5sum >/backup/172.16.1.31/finger.txt

# 03. push date info
rsync -avz /backup  rsync_backup@172.16.1.41::backup  --password-file=/etc/rsync.password

# 04. delete 7 day ago
find /backup/ -type f -name "*.tar.gz" -mtime +7 -delete

完善之后脚本:
[root@nfs01 backup]# cat /server/scripts/backup.sh 
#!/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 date 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 /backup/ -type f -name "finger.txt"|xargs md5sum -c >/tmp/check_data.txt

#02. sent notify mail
mail -s "backup_data_notify" 17778058507@163.com </tmp/check_data.txt

#03. delete 180 day ago
find /backup -type f -name "*.tar.gz" -mtime +180  ! -iname "*_monday.tar.gz"  -delete
  1. 编写定时任务:
    客户端定时任务时间 00:00
    服务端定时任务时间 07:00
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • (1)以下操作都是在backup服务器 1安装 [root@backup ~]# rsync --version ...
    喂00阅读 3,008评论 0 0
  • 1. 实践排除复制: NFS01: [root@nfs01 ~]# mkdir /data -p [root@nf...
    轨_迹阅读 1,774评论 0 0
  • 实践排除复制: NFS01: [root@nfs01 ~]# mkdir /data -p [root@nfs01...
    E的彼岸阅读 988评论 0 0
  • rsync备份项目 实践排除复制: NFS01: [root@nfs01 ~]# mkdir /data -p [...
    高博666阅读 903评论 0 0
  • Socket是网络编程的一个抽象概念。通常我们用一个Socket表示“打开了一个网络链接”,而打开一个Socket...
    XYZ7阅读 1,345评论 0 0