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是否备份成功了
  • 取最新的文件也很粗糙

 

转载于:https://www.cnblogs.com/uglyliu/p/11055610.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值