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

需求

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

实现思路

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

#!/bin/bash
gitlab_dir="/data/backups/gitlab"
file_name=`ls -tr $gitlab_dir|tail -n ` #get lastest gitlab file
port=""
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 [ $# != ] ; then
echo "需要2个参数,一个是邮件内容,一个是邮件主题"
exit ;
fi
echo "$1" |mail -s "$2" @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=
else
FLAG=
exit
fi
} function rsync_file(){
rsync -av --progress --bwlimit= -e "ssh -p$port" $gitlab_dir/$file_name $IP:$backup_dir
if [ $? -eq ];then
md5sum_file
if [ $FLAG == ];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
fi
} rsync_file

优化的地方

  • 发送邮件的函数太粗糙了
  • 没有判断源gitlab是否备份成功了
  • 取最新的文件也很粗糙

gitlab异地备份并验证MD5值的更多相关文章

  1. mysql数据库binlog日志的异地备份

    MySQL数据库的二进制日志binlog记录了对数据库的全量DDL和DML操作,对数据库的point to point灾难恢复起着无法替代的关键作用.因此,基于此类考虑,需要对生产环境产生的binlo ...

  2. md5sum 计算和校验文件的md5值

    1. 命令功能 md5算法一般用于检查文件完整性, 2. 语法格式 md5sum  [option]  [file] 参数 参数说明 -b 以二进制模式读入文件 -t 以文本模式读入文件 -c 用来从 ...

  3. 下载文件的一致性验证之MD5值校验

    前几天写脚本遇到下载功能校验,一时间不到怎么校验好? 于是请教大神,大神给出方案如下:  先去了解一下你们的产品针对这个下载功能有没有做什么功能设计...然后再针对这些功能设计去设计测试用例...比如 ...

  4. md5是哈希算法的改进加强,因为不同原始值可能hash结果一样,但md5则改善了用于验证消息完整性,不同md5值原始值也必将不一样

    md5是哈希算法的改进加强,因为不同原始值可能hash结果一样,但md5则改善了用于验证消息完整性,不同md5值原始值也必将不一样

  5. python计算文件的md5值

    前言 最近要开发一个基于python的合并文件夹/目录的程序,本来的想法是基于修改时间的比较,即判断文件有没有改变,比较两个文件的修改时间即可.这个想法在windows的pc端下测试没有问题. 但是当 ...

  6. asp.net和js读取文件的MD5值的方法

    前言 文件的md5值,即文件签名,为了验证文件的正确性,是否被恶意篡改等.每个文件有一个唯一的md5值. 最近公司开发的app文件包的校验就有用到文件md5值. 一.asp.net获取 ①和上传文件一 ...

  7. C#计算文件的MD5值实例

    C#计算文件的MD5值实例 MD5 是 Message Digest Algorithm 5(信息摘要算法)的缩写,MD5 一种散列(Hash)技术,广泛用于加密.解密.数据签名和数据完整性校验等方面 ...

  8. MD5值算法原理

    MD5原理说明 一.MD5算法介绍. MD5,即“Message-Digest Algorithm 5(信息-摘要算法)”,从名字来看就知道它是从MD3.MD4发展而来的一种加密算法,其主要通过采集文 ...

  9. md5值计算

    1.md5(Message Digest 5th/消息概要加密算法 第5版) REFER: MD5 On wikipedia 2.应用范围 ① 验证下载文件的完整性 ② 3.关于MD5的几个问题 ①只 ...

随机推荐

  1. CMU Database Systems - Distributed OLTP & OLAP

    OLTP scale-up和scale-out scale-up会有上限,无法不断up,而且相对而言,up升级会比较麻烦,所以大数据,云计算需要scale-out scale-out,就是分布式数据库 ...

  2. JVM探究之 —— Java内存区域

    1. 概述 对于从事C.C++程序开发的开发人员来说,在内存管理领域,他们既是拥有最高权力的“皇帝”又是从事最基础工作的“劳动人民”——既拥有每一个对象的“所有权”,又担负着每一个对象生命开始到终结的 ...

  3. 【curl】certificate is bad 问题解决

    参考:https://blog.scottlowe.org/2018/08/20/troubleshooting-tls-certificates/ 我最近正在写一篇博客文章,内容涉及使用TLS证书进 ...

  4. 系统运维工程师装逼完全指南(转载Mark)

    1.全球化的认证有助于提升逼格,什么OCM.CCIE.RHCA.CISSP等等能考都考,再不济,也要有一张系统架构设计师或者网络规划设计师的信产部认证.每过一个认证,逼格提升一档. 2.TCP/IP协 ...

  5. 扩展Redis的Jedis客户端,哨兵模式读请求走Slave集群

    原 扩展Redis的Jedis客户端,哨兵模式读请求走Slave集群 2018年12月06日 14:26:45 温故而知新666 阅读数 897   版权声明:本文为博主原创文章,遵循CC 4.0 b ...

  6. 【神经网络与深度学习】【计算机视觉】YOLO2

    YOLO2 转自:https://zhuanlan.zhihu.com/p/25167153?refer=xiaoleimlnote 本文是对 YOLO9000: Better, Faster, St ...

  7. docker安装+docker-compose

    1.docker安装 yum install -y yum-utils device-mapper-persistent-data yum-config-manager --add-repo http ...

  8. Linux下Python安装PyMySQL成功,但无法导入的问题

    今天使用 Nginx 部署 Django应用.安装python库都显示成功安装. 尝试启动 uwsgi 服务,竟然报错 Traceback (most recent call last): File ...

  9. PMBOK(第六版) PMP备考知识总汇!

    记录本人学习PMBOK第六版的学习笔记. 备考知识总汇! PMBOK序章 PMP备考指南之相关事项介绍 PMP备考指南之第一章:引论 PMP备考指南之第二章:项目运作环境 PMP备考指南之第三章:项目 ...

  10. 为了防止页面重新自动加载,可以给a标签设置href="javascript:void(0);"

    <a href="javascript:void(0);"></a> <!--按照格式要求,此处的0不能省略!! 虽然省略看上去也没什么影响.但是当发 ...