美文网首页
36-综合架构-rsync全网备份

36-综合架构-rsync全网备份

作者: 杨丶子 | 来源:发表于2019-05-27 16:33 被阅读0次

    企业实战项目:rsync全网备份的过程

    image
    image

    某公司里有一台Web服务器,里面的数据很重要,但是如果硬盘坏了,数据就会丢失,现在领导要求你把数据在其他机器上做一个周期性定时备份。要求如下:

    1.每天晚上12点整在Web服务器A(web01 )上打包备份网站程序目录并通过rsync命令推送到服务器B(backup)上备份保留
    (备份思路可以是先在本地按日期打包,然后再利用rsync推到备份服务器上)。
    rsync守护进程模式 
    定时任务 (脚本)
    
    具体要求如下:
    1)Web服务器A和备份服务器B的备份目录必须都为/backup。
    #扩展要求/backup/ip地址命名目录中
    2)Web服务器站点目录假定为(/var/www/html)。
    3)Web服务器本地仅保留7天内的备份。
    4)备份服务器上每周六的数据都保留,其他备份仅保留180天备份。
    5)备份服务器上检查备份结果是否正常(备份内容变?),并将每天的备份结果发给管理员信箱。
    
    发邮件:    
    1.注册一个163的邮箱    
    2.保证 postfix 邮件服务运行
    
    

    首先准备俩台机器
    web01 10.0.0.7
    backup 10.0.0.41
    配置rsync守护进程模式并测试
    让服务端和客户端可以实现推拉


    然后我们来完成全网备份的任务:

    一、首先是下面四步:

    客户端web01

    1.取ip地址,并在/backup/下以ip地址为目录
    2.打包备份/etc/ /var/www/html 到/backup/172.16.1.7,压缩包命名为conf-2019-05-20-1.tar.gz
    3.把备份推送到backup服务器的backup模块中
    4.制作md5校验
    5.删除7天之前的备份

    1.取ip地址,并在/backup/下以ip地址为目录

    [15:48 root@web01 ~]# hostname -I
    10.0.0.7 172.16.1.7 
    [15:48 root@web01 ~]# hostname -I|awk '{print $NF}'
    172.16.1.7
    [15:49 root@web01 ~]# IP=$(hostname -I|awk '{print $NF}')
    [15:49 root@web01 ~]# echo $IP
    172.16.1.7
    [15:49 root@web01 ~]# mkdir -p /backup/$IP
    [15:50 root@web01 ~]# ll /backup/
    total 0
    drwxr-xr-x 2 root root 38 May 21 15:48 172.16.1.7
    
    

    2.打包备份/etc/ /var/www/html 到/backup/172.16.1.7

    压缩包命名为conf-2019-05-20-1.tar.gz
    创建一个/var/www/html目录

    [6:01 root@web01 ~]# mkdir -p /var/www/html
    [16:01 root@web01 ~]# echo $IP
    172.16.1.7
    [16:01 root@web01 ~]# mkdir -p /backup/$IP
    [16:01 root@web01 ~]# tar zcf /backup/$IP/conf-$(date +%F-%w).tar.gz /etc/ /var/www/html
    tar: Removing leading `/' from member names
    [16:01 root@web01 ~]# tree /backup/
    /backup/
    └── 172.16.1.7
        └── conf-2019-05-21-2.tar.gz
    
    

    3.把备份推送到backup服务器的backup模块中

    [16:34 root@web01 ~]# rsync -avz /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password 
    sending incremental file list
    ./
    172.16.1.7/
    172.16.1.7/conf-2019-05-21-2.tar.gz
    
    sent 10,016,822 bytes  received 54 bytes  6,677,917.33 bytes/sec
    total size is 10,214,680  speedup is 1.02
    
    

    服务端看一下:

    [16:35 root@backup ~]# tree /backup/
    /backup/
    └── 172.16.1.7
        └── conf-2019-05-21-2.tar.gz
    
    1 directory, 1 file
    
    

    4. 制作md5校验信息

    [19:51 root@web01 ~]# find /backup/ -type f -name "*.tar.gz"|xargs md5sum 
    37f059ed20b843ed23b212b42a8a63f2  /backup/172.16.1.7/conf-2019-05-21-2.tar.gz
    [19:52 root@web01 ~]# find /backup/ -type f -name "*.tar.gz"|xargs md5sum >/backup/*/*.md5
    [19:52 root@web01 ~]# cat /backup/*/*.md5
    37f059ed20b843ed23b212b42a8a63f2  /backup/172.16.1.7/conf-2019-05-21-2.tar.gz
    
    

    5.删除7天之前的备份

    find /backup/ -type f -name "*.tar.gz" -mtime +7|xargs rm -rf
    
    

    以上4步完成后把/backup下的测试文件删除掉

    6.然后我们就可以写入脚本文件了

    [16:45 root@web01 ~]# vim /server/scripts/rsync_backup.sh 
    #!/usr/bin/bash
    . /etc/profile
    #定义变量
    IP=$(hostname -I|awk '{print $NF}')
    HOSTNAME=$(hostname)
    #创建目录
    mkdir -p /backup/$IP
    #打包压缩
    tar zcf /backup/$IP/conf-$(date +%F-%w).tar.gz /etc/ /var/www/html
    #md5校验
    find /backup/ -type f -name "*.tar.gz"|xargs md5sum >/backup/$IP/$HOSTNAME.md5
    #推送
    rsync -az /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
    #删除7天之前的
    find /backup/ -type f -name "*.tar.gz" -mtime +7|xargs rm -rf
    
    

    md5sum校验信息在下文中

    7.执行一下脚本并查看目录是否创建成功

    [17:48 root@web01 ~]# tree /backup/
    /backup/
    └── 172.16.1.7
        ├── conf-2019-05-21-2.tar.gz
        └── web01.md5
    
    1 directory, 2 files
    
    1 directory, 1 file
    
    

    8.写入定时任务测试是否成功然后修改规定时间

    每天晚上12点备份

    [17:02 root@web01 ~]# crontab -e
    #rsync_backup
    00 00 * * * sh /server/scripts/rsync_backup.sh  >/dev/null 2>&1
    
    

    二、接着我们去backup服务器上配置

    我们为了方便测试,可以先创建6个从周一到周6的备份文件
    忽略180天,环境中没有

    [17:12 root@backup ~]# touch /backup/172.16.1.7/conf-2019-05-21-{0..6}.tar.gz 
    [17:13 root@backup ~]# find /backup/ -type f -name "*.tar.gz"
    /backup/172.16.1.7/conf-2019-05-21-2.tar.gz
    /backup/172.16.1.7/conf-2019-05-21-0.tar.gz
    /backup/172.16.1.7/conf-2019-05-21-1.tar.gz
    /backup/172.16.1.7/conf-2019-05-21-3.tar.gz
    /backup/172.16.1.7/conf-2019-05-21-4.tar.gz
    /backup/172.16.1.7/conf-2019-05-21-5.tar.gz
    /backup/172.16.1.7/conf-2019-05-21-6.tar.gz
    
    

    1.备份服务器上的每周六的数据都保留,其他备份仅保留180天备份

    先测试一下如何保留周六的数据

    [17:14 root@backup ~]# find /backup/ -type f -name "*.tar.gz" ! -name "*-6.tar.gz"
    /backup/172.16.1.7/conf-2019-05-21-2.tar.gz
    /backup/172.16.1.7/conf-2019-05-21-0.tar.gz
    /backup/172.16.1.7/conf-2019-05-21-1.tar.gz
    /backup/172.16.1.7/conf-2019-05-21-3.tar.gz
    /backup/172.16.1.7/conf-2019-05-21-4.tar.gz
    /backup/172.16.1.7/conf-2019-05-21-5.tar.gz
    
    

    然后删除掉

    [17:20 root@backup ~]# find /backup/ -type f -name "*.tar.gz" ! -name "*-6.tar.gz"|xargs rm -rf
    [17:21 root@backup ~]# ll /backup/172.16.1.7/
    total 0
    -rw-r--r-- 1 root root 0 May 21 17:13 conf-2019-05-21-6.tar.gz
    
    

    2.检查备份结果是否正常(备份内容是否改变?)

    md5sum检验信息

    [17:21 root@backup ~]# tree /backup/
    /backup/
    └── 172.16.1.7
        └── conf-2019-05-21-6.tar.gz
    
    1 directory, 1 file
    [17:22 root@backup ~]# find /backup/ -type f -name "*.tar.gz" |xargs md5sum
    d41d8cd98f00b204e9800998ecf8427e  /backup/172.16.1.7/conf-2019-05-21-6.tar.gz
    [17:22 root@backup ~]# find /backup/ -type f -name "*.tar.gz" |xargs md5sum >/backup/172.16.1.7/web01.md5
    [17:23 root@backup ~]# md5sum -c /backup/172.16.1.7/web01.md5 
    /backup/172.16.1.7/conf-2019-05-21-6.tar.gz: OK
    
    

    校验md5信息的几种方法

    [17:42 root@backup ~]# cp -a /backup/172.16.1.7/ /backup/172.16.1.8
    [17:42 root@backup ~]# cp -a /backup/172.16.1.7/ /backup/172.16.1.9
    [17:42 root@backup ~]# cp -a /backup/172.16.1.7/ /backup/172.16.1.10
    [17:42 root@backup ~]# find /backup/ -type f -name "*.md5"|xargs md5sum -c
    /backup/172.16.1.7/conf-2019-05-21-2.tar.gz: OK
    /backup/172.16.1.7/conf-2019-05-21-2.tar.gz: OK
    /backup/172.16.1.7/conf-2019-05-21-2.tar.gz: OK
    /backup/172.16.1.7/conf-2019-05-21-2.tar.gz: OK
    /backup/172.16.1.7/conf-2019-05-21-2.tar.gz: OK
    /backup/172.16.1.7/conf-2019-05-21-2.tar.gz: OK
    /backup/172.16.1.7/conf-2019-05-21-2.tar.gz: OK
    [17:42 root@backup ~]# md5sum -c /backup/\*/\*.md5   \\撬棍无意义
    /backup/172.16.1.7/conf-2019-05-21-2.tar.gz: OK
    /backup/172.16.1.7/conf-2019-05-21-2.tar.gz: OK
    /backup/172.16.1.7/conf-2019-05-21-2.tar.gz: OK
    /backup/172.16.1.7/conf-2019-05-21-2.tar.gz: OK
    
    

    3.将校验信息写入文件中

    先创建一个文件/backup/md5.txt

    [18:48 root@backup ~]# find /backup/ -type f -name "*.md5"|xargs md5sum -c 
    /backup/172.16.1.7/conf-2019-05-21-2.tar.gz: OK
    [18:51 root@backup ~]# find /backup/ -type f -name "*.md5"|xargs md5sum -c >/backup/md5.txt 
    [18:52 root@backup ~]# cat /backup/md5.txt 
    /backup/172.16.1.7/conf-2019-05-21-2.tar.gz: OK
    
    

    4.发送邮件

    1.注册一个163的邮箱

    记得添加配置邮箱的授权码,不然邮箱会被屏蔽掉了

    2.保证 postfix 邮件服务运行

    [17:47 root@backup ~]# systemctl restart postfix.service 
    [17:50 root@backup ~]# systemctl is-active postfix.service 
    active
    [17:50 root@backup ~]# systemctl is-enabled postfix.service 
    enabled
    
    

    3.配置邮箱配置文件

    默认没有安装
    yum install -y mailx

    配置/etc/mail.rc最后一行加入:

    [17:56 root@backup ~]# vim /etc/mail.rc 
    ....
    set from=lichenxing0430@163.com
    set smtp=smtp.163.com
    set smtp-auth-user=lichenxing0430
    set smtp-auth-password=\\邮箱密码,这里不方便写入
    set smtp‐auth=login
    
    

    执行一下发送邮件的命令

    mail -s:指定邮件的主题
    
    
    mail -s " Rsync Backup 完成" lichenxing0430@163.com </backup/md5.txt
    
    

    稍等几秒钟...

    image image

    5.以上完成后我们就可以将命令写到脚本里了

    [19:02 root@backup ~]# vim /server/scripts/backup.sh 
    #!/bin/bash
    . /etc/profile
    #校验md5信息
    find /backup/ -type f -name "*.md5"|xargs md5sum -c >/backup/md5.txt
    #删除180天前的
    find /backup/ -type f -name "*.tar.gz" ! -name "*-6.tar.gz" -mtime +180|xargs rm -rf
    #发送邮件
    mail -s " Rsync Backup 完成" 245684979@qq.com </backup/md5.txt
    
    

    6.书写定时任务

    [19:06 root@backup ~]# crontab -e
    #backup.sh
    00 06 * * *  sh /server/scripts/check_backup.sh >/dev/null 2>&1
    
    

    今天的知识点看似很多其实不多,要理解客户端和服务端的每一条脚本命令的作用。

    相关文章

      网友评论

          本文标题:36-综合架构-rsync全网备份

          本文链接:https://www.haomeiwen.com/subject/gnxqtctx.html