zoukankan      html  css  js  c++  java
  • gitlab异地备份并验证MD5值

    最近公司发生了蛮多事情的,唉,咱也不管问啊,好好干活吧

    需求

    把gitlab的备份文件异地备份一份,备份无论失败还是成功通知某邮箱

    实现思路

    先rsync文件过去,判断rsync这个步骤有没有成功,失败了直接发送备份失败的邮件,成功了的话,再判断源文件和备份的文件的md5值,相等发送备份成功,不相等,发送备份失败

    #!/bin/bash
    gitlab_dir="/data/backups/gitlab"
    file_name=`ls -tr $gitlab_dir|tail -n 1`     #get lastest gitlab file
    port="22"
    IP="192.168.129.212"
    backup_dir="/data/gitlab-backup-from-172.17.3.41"
    starttime=`date +'%Y-%m-%d %H:%M:%S'`
    
    
    function send_mail(){
       if [ $# != 2 ] ; then 
        echo "需要2个参数,一个是邮件内容,一个是邮件主题"
        exit 1; 
      fi 
       echo "$1" |mail -s "$2" 528634141@qq.com
    }
    
    function md5sum_file(){
       
       source_file_name_md5sum_value=`md5sum $gitlab_dir/$file_name|awk '{print $1}'`
       echo "$file_name" >/tmp/md5sum.txt
       scp /tmp/md5sum.txt $IP:/tmp
       back_file_name_md5sum_value=`ssh $IP 'sh /usr/local/shells/md5sum.sh'`
       echo $back_file_name_md5sum_value
       if [ $source_file_name_md5sum_value == $back_file_name_md5sum_value ];then
          FLAG=0
       else
          FLAG=1
          exit 1
       fi
    }
    
    function rsync_file(){
        rsync -av  --progress --bwlimit=1500 -e "ssh -p$port" $gitlab_dir/$file_name $IP:$backup_dir
        if [ $? -eq 0 ];then
          md5sum_file
          if [ $FLAG == 0 ];then
           
           endtime=`date +'%Y-%m-%d %H:%M:%S'`
           send_mail "研发源gitlab(172.17.3.41)-文件$file_name备份至世纪互联服务器$IP成功,md5值为:$back_file_name_md5sum_value,请确认! 开始时间:$starttime, 结束时间:$endtime" "Gitlab备份成功!"
          else
           send_mail "研发源gitlab(172.17.3.41)-文件验证md5值失败,$file_name备份失败,请确认!" "Gitlab备份失败!"
          fi
        else
          send_mail "rsync $file_name失败" "rsync $file_name失败"
          exit 1
        fi
    }
    
    rsync_file

    优化的地方

    • 发送邮件的函数太粗糙了
    • 没有判断源gitlab是否备份成功了
    • 取最新的文件也很粗糙
  • 相关阅读:
    电子书下载:Pro jQuery
    神鬼传奇小技巧:教你如何修改自己想要的时装
    用虚拟机玩游戏的方法!! 开3D加速!
    如何让DevExpress的DateEdit控件正确显示日期的周名
    SOAP Version 1.2
    Delphi中的容器类
    <神鬼传奇>客户端终极优化精简方法
    今日阅读20090102基本数据结构
    判断一个char[]里是否包含两个连续的\r\n
    蛙蛙推荐:改进同步等待的网络服务端应用
  • 原文地址:https://www.cnblogs.com/uglyliu/p/11055610.html
Copyright © 2011-2022 走看看