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 [email protected] #邮箱
set smtp=smtp.163.com #smtp地址
set [email protected]
set smtp-auth-password=授权码 #不是邮件的密码,是申请smpt发送邮件的授权码
set smtp-auth=login

邮件发送测试

1、直接发送内容

发送内容:test content

标题:test title

收件人:[email protected]

复制代码
echo "test content" | mail -s "test title" [email protected]

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

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

mail -s "test title" [email protected] < /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备份成功" [email protected]
else
   echo "gitlab备份失败" | mail -s "gitlab备份失败" [email protected]
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

完成!

相关推荐
oceanweave1 小时前
【kind管理脚本-1】便捷使用 kind 创建、删除、管理集群脚本
docker·kubernetes·kind
小费的部落3 小时前
记 etcd 无法在docker-compose.yml启动后无法映射数据库目录的问题
数据库·docker·etcd
两点王爷4 小时前
docker 运行自定义化的服务-后端
运维·docker·容器
东风微鸣8 小时前
Grafana将弃用AngularJS-我们该如何迁移
docker·云原生·kubernetes·可观察性
亚林瓜子10 小时前
docker compose方式安装ClickHouse数据库
数据库·clickhouse·docker·mac·m1
开发小能手-roy11 小时前
在Ubuntu服务器上安装Docker(支持Ubuntu 20.04/22.04等版本):
linux·ubuntu·docker
Linux运维老纪11 小时前
GitLab之搭建(Building GitLab)
linux·mysql·云计算·gitlab·运维开发
细心的莽夫11 小时前
Docker学习笔记
运维·笔记·后端·学习·docker·容器
诗句藏于尽头12 小时前
BT面板docker搭建excalidraw遇到的问题
运维·docker·容器
弧襪12 小时前
解决 Docker Swarm 集群节点故障:从问题剖析到修复实战
docker·容器