gitlab自动定时备份文件,备份失败发送邮件

gitlab · 浏览次数 : 0

小编点评

本文主要介绍了如何为Docker部署的GitLab提供定时备份和邮件提醒功能。文章分为以下几个步骤: 1. 备份命令准备: a. 创建一个名为gitlab_auto_backup.sh的脚本文件,用于执行GitLab备份命令。 b. 使用chmod +x命令为脚本文件添加可执行权限。 c. 在/etc/crontab文件中设置定时任务,每天凌晨2点执行gitlab_auto_backup.sh脚本。 2. 邮件发送配置: a. 安装sendmail服务,如果已安装则会提示已经安装,未安装则会自动安装。 b. 配置sendmail服务,设置发件人和收件人邮箱地址。 c. 测试邮件发送,包括直接发送内容和使用文件内容作为邮件内容。 3. 定时执行备份并发送邮件提醒: a. 使用gitlab_auto_backup.sh脚本执行备份命令。 b. 通过判断备份命令的返回值,判断备份是否成功。 c. 如果备份成功,发送“gitlab备份成功”的邮件;如果备份失败,发送“gitlab备份失败”的邮件。 通过以上步骤,可以实现为Docker部署的GitLab提供定时备份和邮件提醒功能,确保GitLab的稳定运行。

正文

一、需求

为预防gitlab出现故障,每天定时备份,备份完成后把之前的备份文件删除,备份成功或失败的时候自动发送邮件提醒,这里的gitlab为docker部署。

二、备份命令准备

1)备份命令

 创建一个 gitlab_auto_backup.sh文件,文件内容

#!/bin/bash

# 进入GitLab容器并执行备份 --gitlab为docker名称
docker exec -t gitlab gitlab-backup create

# 查找并删除1天前的备份文件 /home/gitlab/opt/backups/ 为docker挂载data的目录
find /home/gitlab/opt/backups/ -type f -mtime +1 -name "*.tar" -exec rm -rf {} \;

把gitlab_auto_backup.sh文件放到服务器上,这里放到目录  /home/gitlab/gitlab_auto_backup.sh

给权限

chmod +x /home/gitlab/gitlab_auto_backup.sh

2)让备份命令定时自动执行

使用linux的cron来定时执行上面创建的命令脚本文件,vi /etc/crontab 打开 crontab文件

每天零晨2点执行

 

3)linux服务器邮件发送配置

配置发送邮件服务

安装mailx sendmail,如果已安装会提示已经安装,没安装会自动安装

yum install -y mailx sendmail

查看Active的状态

systemctl status sendmail

如果active(running)正常,如果为dead则需要启动服务,启动命令

systemctl start sendmail

配置服务 /etc/mail.rc,以163邮箱为例

#打开配置文件
vi /etc/mail.rc

编辑配置文件增加配置

set from=xxxx@163.com #邮箱
set smtp=smtp.163.com #smtp地址
set smtp-auth-user=xxxx@163.com
set smtp-auth-password=授权码 #不是邮件的密码,是申请smpt发送邮件的授权码
set smtp-auth=login

邮件发送测试

1、直接发送内容

发送内容:test content

标题:test title

收件人:123456@qq.com

echo "test content" | mail -s "test title" 123456@qq.com

 

 2、使用文件内容作为邮件内容发送

把 /tmp/test.txt的内容作为邮件内容发送

mail -s "test title" 123456@qq.com < /tmp/test.txt

 4)备份成功失败发送邮件

修改备份命令,增加发送邮件。gitlab_auto_backup.sh完整内容替换为:

#!/bin/bash

# 进入GitLab容器并执行备份
docker exec -t gitlab gitlab-backup create

# $?符号显示上一条命令的返回值,如果为0则代表执行成功,其他表示失败,注间中括号前后有一个空格
if [ $? -eq 0 ];then
   echo "gitlab备份成功" | mail -s "gitlab备份成功" 123456@qq.com
else
   echo "gitlab备份失败" | mail -s "gitlab备份失败" 123456@qq.com
fi
# 查找并删除1天前的备份文件
find /home/gitlab/opt/backups/ -type f -mtime +1 -name "*.tar" -exec rm -rf {} \;

手动执行gitlab_auto_backup.sh文件测试效果

#执行备份命令
/home/gitlab/gitlab_auto_backup.sh

 完成!

 

与gitlab自动定时备份文件,备份失败发送邮件相似的内容:

gitlab自动定时备份文件,备份失败发送邮件

一、需求 为预防gitlab出现故障,每天定时备份,备份完成后把之前的备份文件删除,备份成功或失败的时候自动发送邮件提醒,这里的gitlab为docker部署。 二、备份命令准备 1)备份命令 创建一个 gitlab_auto_backup.sh文件,文件内容 #!/bin/bash # 进入Git

Git + Jenkins 自动化 NGINX 发布简易实现

概述 之前基于 GitLab + Jenkins 实现了简单的 NGINX 的自动化发布。 具体包含如下的组件: GitLab 包括 GItLab 的 WebHook; Jenkins 及其插件: Generic Webhook Trigger Publish Over SSH 🧠疑问: 为什么不

关于使用Gitlab CI-CD

# 关于使用 Gitlab CI/CD 如果是个人建议自己写脚本,手动运行,而不是使用 Gitlab CI/CD。 免费的 Runner 需要 Credit Card!

[SHOI2011]双倍回文 题解

# [SHOI2011]双倍回文 题解 > 看了一些写回文自动机的大佬的代码,我深感敬畏,于是我转身向Manacher走去 现在荣登最优解第一页…… ![](https://gitlab.com/jeefies/image-repo/raw/master/img/Screenshot%202023-

博客园众包平台:嵌入式开发任务悬赏5万,招募开发者接单

博客园众包平台是我们从今年5月开始的商业化突围项目,一边在以企业微信+自己搭建的GitLab简单运营众包业务,一边在融资投入平台系统的建设,当前已召集到1000多位合作开发者,多数是有多年开发经验的资深开发者。 万事开头难,虽然召集了这么多合作开发者,却一边面临僧多粥少的尴尬,一边面临有单无人接的难

在System身份运行的.NET程序中以指定的用户身份启动可交互式进程

今天在技术群里,石头哥向大家提了个问题:"如何在一个以System身份运行的.NET程序(Windows Services)中,以其它活动的用户身份启动可交互式进程(桌面应用程序、控制台程序、等带有UI和交互式体验的程序)"? 我以前有过类似的需求,是在GitLab流水线中运行带有UI的自动化测试程

博客园商业化之路-众包平台:继续召集早期合作开发者

会员、周边、广告是园子现在维持生存的主要收入来源,而众包平台是园子未来实现商业化规模增长的希望所在。 今年5月开始的众包平台建设是万里长征,不仅需要融资,还需要找到合伙人组建新的团队。虽然当前既没有钱又没人,但万里长征已经迈出了第一步,采用企业微信+自己搭建的 gitlab 以原始的方式运营,已经做

Gitlab搭建

目录Gitlab1. 使用docker部署gitlab2. 登录gitlab2.1 修改语言为中文2.3 修改密码3. 用户管理3.1 创建用户4. 配置ssh拉取代码4.1 添加ssh密钥4.2 测试拉取 Gitlab 1. 使用docker部署gitlab [root@master ~]# mk

如何从0-1了解 熟悉 精通gitlab

加入gitlab团队项目: 打开其他用户极狐邀请邮件; 点击接受紫色邀请按钮“accept invitation”; 选择免费试用90天saas服务; 使用邮箱注册进行邮箱验证【验证方式:邮箱验证码方式验证】; 绑定手机号码【验证手机号真实属于个人方式:10分钟有效期短信验证码】; 填写一些gitl

GitLab 管理 NuGet 包

GitLab 项目提供了上传 NuGet 包的途径,能够在组织内部轻松管理程序包依赖和产出,支持持续集成和发布。同时适合承载无法访问或不在 nuget.org 上的程序包。