2.服务器间数据的自动备份服务

使用工具VMware 17.0
Xshell 7.0
CentOS 7.0
参考资料
  1. 服务器间数据的自动备份服务的项目背景
    ● 需求可能来自于老大的一句话, “欧阳, 网站数据需要备份,你去做一下。”
    ● 那么接下来的内容就需要我们自己规划,备份什么内容? 如何备份? 如何收集备份(统一存放备份)? 保留多长时间? 都是什么系统? 什么系统的版本?
     ○ 备份什么? → 数据、配置文件、脚本、代码、日志
     ○ 如何备份? → 打包压缩+定时任务
     ○ 如何收集? → rsync 服务收集备份

  2. 服务器间数据的自动备份服务的项目步骤
    (1) rsync 服务端并调试 : 服务端配置 /backup/ 目录
    (2) rsync 客户端节点配置脚本 (备份) : 备份、推送、清理
    (3) 其他节点匹配值定时任务 : 定时运行脚本
    (4) 在备份服务器上检查并发送结果邮件
    在这里插入图片描述

  3. 确认是否完成服务器间数据的手动备份服务?

  4. 确认是否通过模板虚拟机克隆出 web 服务器 (IP地址为10.0.0.7, 主机名为xuxouy007) ?

  5. 在服务端 (10.0.0.41) rsyncd.conf 文件末尾追加自动备份的备份路径

    vim /etc/rsyncd.conf
    --------------------------------------------------
    # 末尾追加如下内容
    [backup]
    # 备注内容: 收集备份
    comment = gather backups
    # 备份的存放路径
    path = /backup/
    --------------------------------------------------
    :wq
    

    在这里插入图片描述

  6. 在服务端 (10.0.0.41) 准备自动备份的目录并修改相应的权限

    # 创建备份文件夹并修改权限后查看
    mkdir -p /backup/
    chown -R rsync.rsync /backup/
    ll -d /backup/
    
    # 重启 rsyncd 服务并查看
    systemctl restart rsyncd
    systemctl status rsyncd
    

    在这里插入图片描述

  7. 在客户端 (10.0.0.31) 测试数据能否通过 rsync 服务传输备份到服务器

    rsync -av /etc/hostname rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.client
    

    在这里插入图片描述

  8. 在客户端 (10.0.0.31) 书写备份脚本

    vim /server/scripts/bak_conf.sh
    --------------------------------------------------
    #!/bin/bash
    # author: xuxouy
    # desc: 备份服务器的配置文件
    
    # 1.变量
    ip=`hostname -I |awk '{print $2}'`
    backup_dir=/backup/${ip}
    time=`date +%F_%w`
    backup_file=conf-${time}.tar.gz
    backup_server=172.16.1.41 # 备份服务器地址
    
    # 2.备份命令
    mkdir -p ${backup_dir}
    tar zcfP ${backup_dir}/${backup_file} /etc/ /var/spool/cron/
    
    # 3.推送命令
    rsync -a ${backup_dir} rsync_backup@${backup_server}::backup --password-file=/etc/rsync.client
    
    # 4.删除旧的备份 
    find ${backup_dir} -type f -name "*.tar.gz" -mtime +7 | xargs rm -f
    --------------------------------------------------
    :wq
    

    在这里插入图片描述

    # 执行 bak_conf.sh 脚本查看是否生效
    sh /server/scripts/bak_conf.sh
    

    在这里插入图片描述

  9. 在客户端 (10.0.0.31) 将备份脚本写入定时任务

    # 编写定时任务
    crontab -e
    --------------------------------------------------
    # [xuxouy031] in [2023-11-15] --> [每天24点整备份一次]
    00 00 * * * sh /server/scripts/bak_conf.sh &>/dev/null
    --------------------------------------------------
    :wq
    
    # 查看已有的定时任务
    crontab -l
    

    在这里插入图片描述

  10. 在客户端 (10.0.0.31) 将编写好的脚本和配置文件通过 scp 命令传输到客户端 (10.0.0.7)

    # 全量传输脚本文件
    scp /server/scripts/bak_conf.sh 10.0.0.7:/server/scripts/
    # 全量传输免密登陆配置文件
    scp /etc/rsync.client 10.0.0.7:/etc/
    # 全量传输定时任务文件
    scp /var/spool/cron/root 10.0.0.7:/var/spool/cron/
    # 查看脚本、免密登陆文件、定时任务文件是否传输成功
    head -30 /server/scripts/bak_conf.sh /etc/rsync.client /var/spool/cron/root
    

    在这里插入图片描述

    # 执行一次 bak_conf.sh 脚本
    sh /server/scripts/bak_conf.sh
    

    在这里插入图片描述

  11. 在服务端 (10.0.0.41) 编写检查备份并发送邮件的脚本

    # 编写脚本
    vim /server/scripts/check.sh
    --------------------------------------------------
    #!/bin/bash
    # author: xuxouy
    # desc: 检查备份, 清理旧的备份
    
    # 0.清理旧的备份
    find /backup -type f -name ".tar.gz" -mtime +180 | xargs rm -f
    
    # 1.统计备份结果
    find /backup/ -type f -name "*.tar.gz" | xargs \
    ls -lhd | \
    awk -F '[ /]+' 'BEGIN{print "IP地址","备份文件名","文件大小"} {print $(NF-1),$NF,$5}' | \
    column -t > /server/scripts/result.txt
    
    # 2.发送邮件
    mail -s "每日备份结果" 3249512370@qq.com < /server/scripts/result.txt
    --------------------------------------------------
    :wq
    

    在这里插入图片描述

  12. 将服务端 (10.0.0.41) 检查备份并发送邮件的脚本加入到定时任务当中

    # 编写定时任务
    crontab -e
    --------------------------------------------------
    # [xuxouy041] in [2023-11-10] --> [每天24点整定时运行检查脚本]
    00 00 * * * sh /server/scripts/check.sh &>> /tmp/check.log
    --------------------------------------------------
    :wq
    
    # 查看当前已有的定时任务 
    crontab -l
    
    # 执行一次 check.sh 脚本
    sh /server/scripts/check.sh
    

    在这里插入图片描述
    在这里插入图片描述

  13. 将客户端 (10.0.0.7) 备份脚本增加校验功能

    # 将 bak_conf.sh 脚本修改为以下内容
    vim /server/scripts/bak_conf.sh
    --------------------------------------------------
    #!/bin/bash
    # author: xuxouy
    # desc: 备份服务器的配置文件
    
    # 1.变量
    ip=`hostname -I |awk '{print $2}'`
    backup_dir=/backup/${ip}
    time=`date +%F_%w`
    backup_file=conf-${time}.tar.gz
    backup_server=172.16.1.41
    
    # 2.备份命令
    mkdir -p ${backup_dir}
    tar zcfP ${backup_dir}/${backup_file} /etc/ /var/spool/cron/
    
    # 2.5 md5 校验
    md5sum ${backup_dir}/${backup_file} >${backup_dir}/fingerprint.md5
    
    # 3.推送命令
    rsync -a ${backup_dir} rsync_backup@${backup_server}::backup --password-file=/etc/rsync.client
    
    # 4.删除旧的备份 
    find ${backup_dir} -type f -name "*.tar.gz" -mtime +7 | xargs rm -f
    --------------------------------------------------
    :wq
    

    在这里插入图片描述

    # 执行一次脚本
    sh /server/scripts/bak_conf.sh
    

    在这里插入图片描述

  14. 将客户端 (10.0.0.31) 备份脚本增加校验功能

    # 将 bak_conf.sh 脚本修改为以下内容
    vim /server/scripts/bak_conf.sh
    --------------------------------------------------
    #!/bin/bash
    # author: xuxouy
    # desc: 备份服务器的配置文件
    
    # 1.变量
    ip=`hostname -I |awk '{print $2}'`
    backup_dir=/backup/${ip}
    time=`date +%F_%w`
    backup_file=conf-${time}.tar.gz
    backup_server=172.16.1.41
    
    # 2.备份命令
    mkdir -p ${backup_dir}
    tar zcfP ${backup_dir}/${backup_file} /etc/ /var/spool/cron/
    
    # 2.5 md5 校验
    md5sum ${backup_dir}/${backup_file} >${backup_dir}/fingerprint.md5
    
    # 3.推送命令
    rsync -a ${backup_dir} rsync_backup@${backup_server}::backup --password-file=/etc/rsync.client
    
    # 4.删除旧的备份 
    find ${backup_dir} -type f -name "*.tar.gz" -mtime +7 | xargs rm -f
    --------------------------------------------------
    :wq
    

    在这里插入图片描述

    # 执行一次脚本
    sh /server/scripts/bak_conf.sh
    

    在这里插入图片描述

  15. 将客户端 (10.0.0.41) 检查脚本增加校验功能

    vim /server/scripts/check.sh
    --------------------------------------------------
    #!/bin/bash
    # author: xuxouy  
    # desc: 检查备份, 清理旧的备份
    
    result_file=/server/scripts/result.txt
    
    # 0.清理旧的备份
    find /backup -type f -name ".tar.gz" -mtime +180 | xargs rm -f
    
    # 1.统计备份结果
    find /backup/ -type f -name "*.tar.gz" | xargs \
    ls -lhd | \
    awk -F '[ /]+' 'BEGIN{print "IP地址","备份文件名","文件大小"} {print $(NF-1),$NF,$5}' | \
    column -t > ${result_file}
    
    # 1.5 MD5校验检查
    echo "# 下列信息为备份的MD5校验信息" >> ${result_file}
    find /backup/ -name "fingerprint.md5" | xargs md5sum -c >> ${result_file}
    
    # 2.发送邮件
    mail -s "每日备份结果" 3249512370@qq.com < ${result_file}
    --------------------------------------------------
    :wq
    

    在这里插入图片描述

    # 执行一次脚本
    sh /server/scripts/check.sh
    

    在这里插入图片描述

    在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值