定期清理gitlab的备份&监控gitlab备份

定期清理gitlab的备份&监控gitlab备份

1.如何备份gitlab

备份gitlab的命令是:gitlab-rake gitlab:backup:create 会将备份生成到默认目录下,/gitlab/data/backups/目录下,注意备份时,要手动copy两个文件。在config目录下的gitlab.rb以及gitlab-secrets.json文件。

如果gitlab是docker容器里的,在容器外或者脚本中执行命令:docker exec -it gitlab1114 /bin/bash -c '/opt/gitlab/bin/gitlab-rake gitlab:backup:create '

如果脚本要添加到计划任务crontab里,需要将上面命令中的-it参数去掉,因为crontab不能打开终端。

一般gitlab的备份是每天都要生成的,否则万一出点问题,备份丢失了那可就完犊子了。所以如果不定期清理之前的gitlab备份就又会不断生成备份,占用空间,于是决定写一个清理七天前的脚本来完成这个工作,每次只保留7个备份。

2.编写清理七天前备份的脚本

观察gitlab生成的备份不难看出一个规律,那就是生成备份的备份文件名都带有linux时间戳。例如:1639492444_2021_12_14_14.0.11_gitlab_backup.tar。

最前面的那串数字就是时间戳,那我们可以根据这个时间戳来判断哪些备份是七天前的备份。脚本如下

#!/bin/bash
# 最好建立一个日志目录,来记录什么时间清理了哪些备份,个人习惯,方便维护。
echo "=============================清理gitlab七天前备份文件==========================" >> /root/monitor/rm_gitlab_backups.log
echo "`date`" >> /root/monitor/rm_gitlab_backups.log
echo "rm -rf /home/data/gitlab-backups/*.log" >> /root/monitor/rm_gitlab_backups.log
rm -rf /home/data/gitlab-backups/*.log
# 定义一个数组来存放gitlab备份文件的时间戳信息,时间戳信息从备份文件的文件名入手。
declare -a ctime_list=(
    $(ls /home/data/gitlab-backups/*.tar | awk -F '_' '{print $1}' | awk -F '/' '{print $5}')
)
# 获取数组的长度
len=${#ctime_list[@]}
# 获取当前时间戳,用当前时间戳减去604800也就是7x86400秒,就是7天前的时间戳。
time=$((`date +%s` - 604800))
# echo $time
for ((i=0;i<$len;i++)); do
	# 与七天前的时间戳进行比较,小于该时间戳说明这个备份已经存在超过七天了,那么就可清理掉了。
    if [ $time -ge ${ctime_list[i]} ];  then
        echo "rm -rf /home/data/gitlab-backups/${ctime_list[i]}_*.tar" >> /root/monitor/rm_gitlab_backups.log
        rm -rf /home/data/gitlab-backups/${ctime_list[i]}_*.tar
    fi
done

3.监控gitlab备份

最近发现gitlab所在的服务器比较老,总出各种问题,docker服务莫名就崩了,导致gitlab服务出现问题,结果回过头来发现备份都没有了,那这个清理备份的脚本还有毛线的用?所以需要对gitlab的备份进行监控!!!万一真丢了,那就真的完犊子了。
根据上面清理备份时用到的时间戳的概念,很容就想到一个监控的思路,就根据时间戳判断,必须每天监控,只要有一天没有备份了,就发邮件报警!
这里发邮件的工具,我用的是比较OG的heirloom-mailx,注意要先apt-get install mailutils
配置文件一般是/etc/s-nail.rc,需要修改如下参数

# 设置发送者邮箱
set from="wozhendehaoshuai@qq.com"
# 配置smtp服务器和端口
set smtp="smtps://smtp.domain:port"
# 配置发送者用户名和第一项一致就行
set smtp-auth-user"=wozhendehaoshuai@qq.com"
# 配置授权码,腾讯企业邮箱肯定是有授权码的,其他的不知道,据说这也可以配置成邮箱密码
set smtp-auth-password="xxxxxxxxxxxxxxxxxxxxx"
# 配置认证方式
set smtp-auth=login

监控脚本如下:

#!/bin/bash
# 沿用上面脚本的数组来获取备份的时间戳
declare -a ctime_list=(
    $(ls /home/data/gitlab-backups/*.tar | awk -F '_' '{print $1}' | awk -F '/' '{print $5}')
)
len=${#ctime_list[@]}
# 因为数组元素是从0开始排序的,所以要从最后一个进行比较,最后一个元素的序号就是数组长度减一
last=$(($len-1))
time=$((`date +%s` - 86400))
# 判断,如果超过一天没备份,发送邮件
if [ $time -ge ${ctime_list[$last]} ];  then
    echo "已经一天没有gitlab备份文件了!!" | mail -s "gitlab-backups Warning!" wozhendehaoshuai@6666.com 
fi

4.设置计划任务定期执行脚本

执行crontab -e编辑计划任务

选择每周的周日0点执行清理脚本,每天的8点执行监控脚本

00 00 * * 7 bash /root/monitor/gitlab_backup_clear.sh
00 08 * * * bash /root/monitor/gitlab_backup_monitor.sh

注意:以上操作都是在root用户下执行的,实际使用的时候请根据用户权限决定!!!请勿滥用root哦

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值