gitlab异地备份并验证MD5值
最近公司发生了蛮多事情的,唉,咱也不管问啊,好好干活吧
需求
把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值的更多相关文章
- mysql数据库binlog日志的异地备份
MySQL数据库的二进制日志binlog记录了对数据库的全量DDL和DML操作,对数据库的point to point灾难恢复起着无法替代的关键作用.因此,基于此类考虑,需要对生产环境产生的binlo ...
- md5sum 计算和校验文件的md5值
1. 命令功能 md5算法一般用于检查文件完整性, 2. 语法格式 md5sum [option] [file] 参数 参数说明 -b 以二进制模式读入文件 -t 以文本模式读入文件 -c 用来从 ...
- 下载文件的一致性验证之MD5值校验
前几天写脚本遇到下载功能校验,一时间不到怎么校验好? 于是请教大神,大神给出方案如下: 先去了解一下你们的产品针对这个下载功能有没有做什么功能设计...然后再针对这些功能设计去设计测试用例...比如 ...
- md5是哈希算法的改进加强,因为不同原始值可能hash结果一样,但md5则改善了用于验证消息完整性,不同md5值原始值也必将不一样
md5是哈希算法的改进加强,因为不同原始值可能hash结果一样,但md5则改善了用于验证消息完整性,不同md5值原始值也必将不一样
- python计算文件的md5值
前言 最近要开发一个基于python的合并文件夹/目录的程序,本来的想法是基于修改时间的比较,即判断文件有没有改变,比较两个文件的修改时间即可.这个想法在windows的pc端下测试没有问题. 但是当 ...
- asp.net和js读取文件的MD5值的方法
前言 文件的md5值,即文件签名,为了验证文件的正确性,是否被恶意篡改等.每个文件有一个唯一的md5值. 最近公司开发的app文件包的校验就有用到文件md5值. 一.asp.net获取 ①和上传文件一 ...
- C#计算文件的MD5值实例
C#计算文件的MD5值实例 MD5 是 Message Digest Algorithm 5(信息摘要算法)的缩写,MD5 一种散列(Hash)技术,广泛用于加密.解密.数据签名和数据完整性校验等方面 ...
- MD5值算法原理
MD5原理说明 一.MD5算法介绍. MD5,即“Message-Digest Algorithm 5(信息-摘要算法)”,从名字来看就知道它是从MD3.MD4发展而来的一种加密算法,其主要通过采集文 ...
- md5值计算
1.md5(Message Digest 5th/消息概要加密算法 第5版) REFER: MD5 On wikipedia 2.应用范围 ① 验证下载文件的完整性 ② 3.关于MD5的几个问题 ①只 ...
随机推荐
- 剑指offer:平衡二叉树
题目描述: 输入一棵二叉树,判断该二叉树是否是平衡二叉树. 思路分析: 首先要明确平衡二叉树的定义.平衡二叉是左右子树的高度差小于等于1,且左右子树都为平衡二叉树.这里就存在一个递归判断左右子树是否为 ...
- python简单的游戏场景代码
模拟英雄联盟游戏场景的简单场景 最后计算出英雄的战斗力 class Hero: def __init__(self, na, gen, age, fig): self.name = na self.g ...
- (转)scipy详解
原文:https://www.cnblogs.com/ws0751/p/8361353.html#top 登月图片消噪 scipy.fftpack模块用来计算快速傅里叶变换速度比传统傅里叶变换更快 ...
- [Kaggle] Online Notebooks
前言 Let's go to https://www.kaggle.com/ Kaggle Notebook 有实践记录的案例. 一.线性拟合噪声数据 [Sklearn] Linear regress ...
- Python中解决递归限制的问题
在做某些算法时,使用递归会出现类似下面的报错: RuntimeError: maximum recursion depth exceeded python默认的递归深度是很有限的,大概是900多的样子 ...
- python读取yaml文件,在unittest中使用
python读取yaml文件使用,有两种方式: 1.使用ddt读取 2,使用方法读取ddt的内容,在使用方法中进行调用 1.使用ddt读取 @ddt.ddt class loginTestPage(u ...
- JavaScript之 BOM 与 DOM
1. JavaScript 组成 2. DOM.DOCUMENT.BOM.WINDOW 区别 DOM 是为了操作文档出现的 API , document 是其的一个对象:BOM 是为了操作浏览器出现的 ...
- 【linux基础】ubuntu实现双屏显示
前言 之前博主没有使用NVIDIA时候已经可以实现双屏显示(拼接类型),但是,安装NVIDIA驱动使用CUDA之后这个功能就消失了,需要重新配置. 实现方式 1. 使用Intel集成显卡时实现双屏拼接 ...
- 没有索引导致的DIRECT PATH READ
5月20号下午4-5点,某项目组进行数据入库作业,作业人员反映入库速度很慢.在16:30和16:50分别采集了快照,并根据两个快照得到AWR报告. 直接看TOP 5 EVENTS,这是数据库问题诊断的 ...
- Windows中使用 Python 调用 Matlab 程序
https://ww2.mathworks.cn/help/matlab/matlab_external/system-and-configuration-requirements.html http ...