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

需求

把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. Unity3D获取Android平台的电量

    刚开始的时候以为这个应该不简单.我也开始百度,寻找获取手机的电量的方法.大概有俩种方式:一种是直接访问一个文件,意思是说Android手机的电量等信息保存到了这个文件中.但是我试验的时候没有访问出来, ...

  2. python的subprocess模块介绍

    一.subprocess以及常用的封装函数运行python的时候,我们都是在创建并运行一个进程.像Linux进程那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序.在Python ...

  3. Oralce 如何将查询结果中的0转成空的

    我们遇到过大多的情况的需求是查询结果中空转为0,这个可以通过oracle的NVL()函数就可以搞定. 之前做报表客户有个需求,查询出结果为0 要转成空的,不显示0 那么在oracle有没有现成函数能搞 ...

  4. (1)PyCharm开发工具安装Flask并创建helloworld程序

    一.环境描述 1.操作系统:windows7 2.编程语言:python3.6 下载地址:https://www.python.org/downloads/windows/ 3.虚拟化环境:virtu ...

  5. Java12新特性 -- JVM 常量 API

    Java 12 中引入 JVM 常量 API,用来更容易地对关键类文件 (key class-file) 和运行时构件(artefact)的名义描述 (nominal description) 进行建 ...

  6. Nginx记录-Proxy_pass多个应用配置(转载)

    1. 在http节点下,加入upstream节点. upstream linuxidc {       server 10.0.6.108:7080;       server 10.0.0.85:8 ...

  7. 【翻译】Flink Table Api & SQL —Streaming 概念 ——在持续查询中 Join

    本文翻译自官网 :  Joins in Continuous Queries   https://ci.apache.org/projects/flink/flink-docs-release-1.9 ...

  8. [LeetCode] 655. Print Binary Tree 打印二叉树

    Print a binary tree in an m*n 2D string array following these rules: The row number m should be equa ...

  9. nginx+consul-template+consul实现自动负载均衡

    所需工具:工具 下载地址 本文使用版本consul https://www.consul.io/downloads.html consul_1.0.7_linux_amd64.zipconsul-te ...

  10. 【视频开发】四大图像库:OpenCV/FreeImage/CImg/CxImage

    1.对OpenCV 的印象:功能十分的强大,而且支持目前先进的图像处理技术,体系十分完善,操作手册很详细,手册首先给大家补计算机视觉的知识,几乎涵盖了近10年内的主流算法: 然后将图像格式和矩阵运算, ...