记录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 服务器邮件发送配置
1) 配置发送邮件服务
安装 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
2) 邮件发送测试
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动定时备份文件备份失败发送邮件功能的实现过程
![](https://media.mybj123.com/wp-content/uploads/2024/02/1706962282-d2a91681b352c3a.png)