全网备份项目实战

 

3 企业案例全网备份数据

3.1 案列要求

3.1.1 服务器准备

服务器

nfs(存储)服务器

web服务器

backup(备份)服务器

主机名

nfs01

web01

backup

外网地址

10.0.0.31

10.0.0.7

10.0.0.41

内网地址

172.16.1.31

172.16.1.7

172.16.1.41

 

3.1.2 需求

3.1.2.1 上级要求

  • 将系统中的重要文件和目录进行打包
  • 传输到备份目录,并且验证下数据的完整性
  • 每天晚上0点备份nfs和web服务器上面打包的数据
  • 把备份目录里面大于180天的数据就删除(移动到其他目录),并且周一的我也要

3.1.2.2 自己理解的上级要求

3.1.2.2.1 将系统中的重要文件和目录进行打包

目录:

  • /var/html/www/
  • /app/logs/
  • /etc/sysconfig/network-scripts/
  • /var/log/

文件:

  • /etc/hosts
  • /etc/fstab
  • /etc/rc.d/rc.local
  • /var/spool/cron/root
  • /etc/sysconfig/iptables
  • /etc/profile(4个环境变量文件)
3.1.2.2.2 传输到备份目录,并且检验数据的完整性
  • 使用rsync将数据传输到备份目录上面
  • 在本地生成指纹信息,在传输过去以后,在备份目录里面进行比较
3.1.2.2.3 使用定时任务设定时间进行备份
  • 编写配置文件
  • 由于是0点0分进行备份的数据,所以备份的数据是昨天的,这个是不行的
  1. 自己以后记住备份的数据是昨天的
  2. 使用date命令-d参数来减一天来进行备份
3.1.2.2.4 备份服务器需要将180天以前的数据删除,并且周一的保留
  • 查找出来删除180天数据 -mtime +180
  • 在打包的时候在时间上面加上星期信息,这样删除的时候可以指定名称是周一的数据不删除

3.2 案列拓扑图

 

3.3 案列的具体实现步骤

3.3.1 web01客户端上面文件和目录进行打包

3.3.1.1 打包重要的文件

[root@web01 ~] # tar -zcPhf /backup/web01_main_file_$(date +%F'Today'%w)_backup.tar.gz /var/spool/cron/root /etc/hosts /etc/fstab /etc/rc.d/rc.local /etc/sysconfig/iptables             打包

 

[root@web01 ~] # ll /backup/                查看打包的文件

-rw-r--r-- 1 root root 1184 Oct 24 12:45 web01_main_file_2019-10-24Today4_backup.tar.gz

3.3.1.2 打包/var/html/www/app/logs/目录

[root@web01 ~] # tar -zcPhf /backup/web01_html_$(date +%F'Today'%w)_backup.tar.gz /var/html/www 打包

[root@web01 ~] # tar -zcPhf /backup/web01_logs_$(date +%F'Today'%w)_backup.tar.gz /app/logs/     打包

You have new mail in /var/spool/mail/root

[root@web01 ~] # ll /backup                    查看打包的文件

total 16

-rw-r--r-- 1 root root 117 Oct 24 12:50 web01_html_2019-10-24Today4_backup.tar.gz    

-rw-r--r-- 1 root root 114 Oct 24 12:50 web01_logs_2019-10-24Today4_backup.tar.gz

[root@web01 ~] #

3.3.2 nfs01客户端上面的文件进行打包

[root@nfs01 ~] # tar -zcPhf /backup/nfs01_main_file_$(date +%F'Today'%w)_backup.tar.gz /var/spool/cron/root /etc/hosts /etc/fstab /etc/rc.d/rc.local /etc/sysconfig/iptables            打包

You have new mail in /var/spool/mail/root

[root@nfs01 ~] # ll /backup                                    查看压缩包

-rw-r--r-- 1 root root 1182 Oct 24 12:55 nfs01_main_file_2019-10-24Today4_backup.tar.gz

[root@nfs01 ~] #

3.3.3 2台客户端的数据发送过去

3.3.3.1 nfs客户端数据的发送

[root@nfs01 ~] # rsync -avz /backup/nfs01_main_file_2019-10-24Today4_backup.tar.gz rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password        将压缩包传送到备份服务器

sending incremental file list

nfs01_main_file_2019-10-24Today4_backup.tar.gz

 

sent 1,319 bytes received 43 bytes 2,724.00 bytes/sec

total size is 1,182 speedup is 0.87

[root@nfs01 ~] #

 

 

[root@backup backup] # ll                        在备份服务器查看压缩包

-rw-r--r-- 1 rsync rsync 1182 Oct 24 13:02 nfs01_main_file_2019-10-24Today4_backup.tar.gz

3.3.3.2 web客户端数据的发送

[root@web01 ~] # rsync -avz /backup/web* rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password                将压缩包传送到备份服务器

sending incremental file list

web01_html_2019-10-24Today4_backup.tar.gz

web01_logs_2019-10-24Today4_backup.tar.gz

web01_main_file_2019-10-24Today4_backup.tar.gz

 

sent 1,731 bytes received 81 bytes 3,624.00 bytes/sec

total size is 1,415 speedup is 0.78

[root@web01 ~] #

 

 

[root@backup backup] # ll                            在备份服务器查看压缩包

-rw-r--r-- 1 rsync rsync 117 Oct 24 12:50 web01_html_2019-10-24Today4_backup.tar.gz

-rw-r--r-- 1 rsync rsync 114 Oct 24 12:50 web01_logs_2019-10-24Today4_backup.tar.gz

-rw-r--r-- 1 rsync rsync 1184 Oct 24 12:45 web01_main_file_2019-10-24Today4_backup.tar.gz

[root@backup backup] #    

3.3.4 服务器端验证数据

3.3.4.1 怎么验证数据的完整性

使用指纹对比来验证,命令为md5sum

3.3.4.2 指纹怎么来完成数据的完整性验证

3.3.4.2.1 在本地将数据压缩好,并且使用md5sum来进行验证

[root@nfs01 backup] # md5sum nfs01_main_file_2019-10-24Today4_backup.tar.gz > finger.txt        将验证的指纹信息保存到finger.txt文件中

[root@nfs01 backup] # ll

-rw-r--r-- 1 root root 81 Oct 24 13:14 finger.txt

-rw-r--r-- 1 root root 1182 Oct 24 13:02 nfs01_main_file_2019-10-24Today4_backup.tar.gz

[root@nfs01 backup] #

3.3.4.2.2 将指纹信息和数据发送到远程备份服务器上

[root@nfs01 backup] # rsync -avz /backup/{nfs01_main_file_2019-10-24Today4_backup.tar.gz,finger.txt} rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password         传输到远程备份服务器数据

sending incremental file list

finger.txt

nfs01_main_file_2019-10-24Today4_backup.tar.gz

 

sent 1,463 bytes received 62 bytes 3,050.00 bytes/sec

total size is 1,263 speedup is 0.83

[root@nfs01 backup] #

3.3.4.2.3 在远程验证指纹信息

[root@backup backup] # md5sum -c finger.txt

nfs01_main_file_2019-10-24Today4_backup.tar.gz: OK            证明数据完整,没有损坏

[root@backup backup] #

3.3.5 怎么将180天的数据删除,并且将周一的数据保留

  • 将180天之前的数据找出来
  • 找出来发现打包里面有Today+num(num表示星期几)
  • 有这个标识,可以通过名称来查找,在做排除操作,则可

3.3.6 将完整数据的信息发送给sa

3.3.6.1 配置邮件服务器

3.3.6.1.1 打开邮箱,点击设置,选择账户

3.3.6.1.2 选择IMAP/SMTP是开启状态,并且生成授权码

3.3.6.1.3 在linux服务器上面配置邮件信息

[root@backup backup] # cat /etc/mail.rc

………………………………

………………………………

set from=460523471@qq.com                     此处填你的qq邮箱地址

set smtp=smtp.qq.com                            此处填你的smtp服务,只有访问这个服务,你才能连通

set smtp-auth-user=460523471@qq.com             此处填你的qq邮箱地址

set smtp-auth-password=enoncgdkvjhlbjbd            此处填你生成的授权码信息(你的密码信息)

set smtp-auth=login

 

set from=460523471@qq.com

set smtp=smtp.qq.com

set smtp-auth-user=460523471@qq.com

set smtp-auth-password=enoncgdkvjhlbjbd

set smtp-auth=login

3.3.6.1.4 重启postfix服务

[root@backup backup] # systemctl restart postfix

You have new mail in /var/spool/mail/root

[root@backup backup] #

3.3.6.1.5 验证服务是否已经配置好

[root@backup backup] # echo 123456 | mail -s "wode" 460523471@qq.com        邮件内容不多的时候

[root@backup backup] #

 

[root@backup backup] # mail -s "wode" 460523471@qq.com </etc/fstab        邮件内容多的时候,可以将文件里面的内容重定向输入到命令中,让执行

[root@backup backup] #

发送成功:

3.3.6.2 将指纹信息的结构发送给sa

md5sum -c finger.txt > finger_true.txt                将数据指纹信息的验证结构重定向到finger_true.txt

 

[root@backup backup] # mail -s "运维人员数据完整性测试" 460523471@qq.com </backup/finger_true.txt             发送邮件给sa

You have new mail in /var/spool/mail/root

[root@backup backup] #

 

3.3.7 编写定时任务

3.3.7.1 客户端编写定时任务

#每天晚上0点备份

0 0 * * * /bin/sh /server/scripts/backup_nfs01.sh

 

3.3.7.2 服务端编写定时任务

#每天晚上020同步

20 0 * * * /bin/sh /server/scripts/backup_server.sh

注:服务端的定时任务是需要明天sa运维人员能看见结果就可以,不需要0:20,我这里写的是

3.4 使用脚本来实现

3.4.1 客户端脚本编写

3.4.1.1 web01服务器编写

[root@web01 scripts] # cat backup_web01.sh

#!/bin/bash

##author:liangyuxing

##date:20191024

##things:Practice of network wide backup project

 

#set variables

DIR="/backup"

IP_INFO=`hostname -i`

 

#create main directory

mkdir $DIR/$IP_INFO -p

 

#create /app/logs directory

mkdir /app/logs/ -p

 

#create /etc/sysconfig/iptables file

touch /etc/sysconfig/iptables

 

#create /var/html/www directory

mkdir /var/html/www -p

 

#packages /app/logs/ directory

tar -zchPf $DIR/$IP_INFO/web_01_app_logs_$(date +%F'Today'%w -d "-1 day")_backup.tar.gz /app/logs

 

#packages important file

tar -zchPf $DIR/$IP_INFO/web_01_main_file_$(date +%F'Today'%w -d "-1 day")_backup.tar.gz /var/spool/cron/root /etc/rc.local /etc/sysconfig/iptables /server/scripts/

 

#packages /var/html/www directory

tar -zchPf $DIR/$IP_INFO/web_01_iptables__$(date +%F'Today'%w -d "-1 day")_backup.tar.gz /var/html/www

 

#Local latest package generation fingerprint information

find $DIR -type f -name "*.tar.gz" -mmin -20 | xargs md5sum >$DIR/$IP_INFO/finger.txt

 

#dump local data to backup computer

rsync -azL $DIR/$IP_INFO/ rsync_backup@172.16.1.41::backup/$IP_INFO --password-file=/etc/rsync.password

 

#find data 7 day before for delete

find $DIR -type f -name "*.tar.gz" -mtime +7 -delete

3.4.1.2 nfs01服务器的编写

[root@nfs01 scripts] # cat backup_nfs01.sh

#!/bin/bash

##author:liangyuxing

##date:20191024

##things:Practice of network wide backup project

 

#set variables

DIR="/backup"

IP_INFO=`hostname -i`

 

#create main directory

mkdir $DIR/$IP_INFO -p

 

#create /etc/sysconfig/iptables file

touch /etc/sysconfig/iptables

 

#packages important file

tar -zchPf $DIR/$IP_INFO/nfs_01_main_file_$(date +%F'Today'%w -d "-1 day")_backup.tar.gz /var/spool/cron/root /etc/rc.local /etc/sysconfig/iptables /server/scripts/

 

#Local latest package generation fingerprint information

find $DIR -type f -name "*.tar.gz" -mmin -20 | xargs md5sum >$DIR/$IP_INFO/finger.txt

 

#dump data to backup conputer

rsync -azL $DIR/$IP_INFO/ rsync_backup@172.16.1.41::backup/$IP_INFO --password-file=/etc/rsync.password

 

#find data 7 day before for delete

find $DIR -type f -name "*.tar.gz" -mtime +7 -delete

3.4.2 服务端脚本编写

3.4.2.1 backup_server服务器编写

[root@backup scripts] # cat backup_server.sh

#!/bin/bash

##author:liangyuxing

##date:20191024

##things:Determine whether the information data generated by the fingerprint is complete, and send the log to the operation and maintenance personnel

 

#set variables

DIR="/backup"

 

#Create the final verification directory for storing fingerprint

mkdir -p $DIR/true_finger/

 

#Save the final fingerprint information to a file

find $DIR -type f -name "finger.txt" | xargs md5sum -c > $DIR/true_finger/finger_$(date +%F).txt

 

#send mail to sa

mail -s "$(date +%F'Today'%w -d "-1 day") dump data is sucess" 460523471@qq.com < $DIR/true_finger/finger_$(date +%F).txt

 

#find 180 day ago for delete

find $backup -type f ! -name "*Today1_*.tar.gz" -mtime +180 -delete

posted @ 2019-11-30 16:07  HXX-LYX  阅读(491)  评论(0编辑  收藏  举报