首页 技术杂谈正文

【GitLab】GitLab数据自动备份、删除旧备份

By无邪 技术杂谈 2020-02-05 19:02:40 275 0

NAS

Gitlab

备份


    由于昨天想起来Gitlab是安装在固态的,固态太垃圾了,又不知道怎么移动docker,我就干脆重装了,当然数据全丢,好在本地还有,经过这次重装想到了让gitlab备份,这样就算重装了也是可以恢复数据的,但是Gitlab只能在终端手动运行,这就不好了,还好宿主机基于linux。


1、GitLab默认备份目录为/var/opt/gitlab/backups,可以修改/etc/gitlab/gitlab.rb里面的默认存放备份文件目录,这里使用默认备份目录:

gitlab_rails['backup_path'] = '/var/opt/gitlab/backups'

2、使用下面的命令手动备份数据,命令完成/var/opt/gitlab/backups目录下会多一个**.tar`的备份文件:

gitlab-rake gitlab:backup:create

缺点:必须是gitlab系统正常运行时,手动执行命令才会备份。如果gitlab系统崩溃,则无法进行备份。所以,最好的方式是让系统自动帮我们备份。 可以使用linux的crontab定时任务工具来实现自动备份机制

GitLab数据自动备份

如果没有/etc/crontab定时任务配置文件,执行crontab -e命令生成该配置文件;但是我这个容器只是集成了有用的linux组件,居然没有定时任务,好在容器可以编写脚本,我就把备份命令写进了脚本,通过在宿主机无缝执行docker容器脚本来执行备份:

docker exec -it 容器ID /bin/bash -c  文件路径或目录

容器的ID 可以用 这个命令:docker ps

这样就把所有容器的ID显示出来了;

在我用命令终端手动运行的时候正常备份了,但是添加了计划任务后,报错了:

the input device is not a TTY

why?????原来用定时任务执行docker命令的脚本的时候报错,tty(终端设备的统称): tty一词源于Teletypes,或 teletypewriters。这个的意思是说后台linux执行的时候没有终端设备。我们一般执行docker里的命令时候都喜欢加上  -it 这个参数,这里的-it 就是表示终端设备。所以,如果我们docker执行后台运行的任务或者程序直接去除 -it 这个参数就不会出现这个报错了!之前是因为我在宿主机的终端执行的,所以存在终端设备,后台执行的时候没有终端。

现在也设置了邮件通知,不管备份成功不成功都会发邮件通知我。

GitLab历史备份数据自动删除

一直备份下去太浪费空间了,虽然现在代码不多,但是机制要设置好,所以添加了自动删除备份的命令。

当上面的操作完成以后,我们已经完成了自动备份的功能,但是每天备份一次,太占用磁盘空间。所以我们需要添加删除过期文件的功能。 
首先我们要查找出备份目录下面过期的文件,然后在删除,指令如下:

find "/var/opt/gitlab/backups" -name "*.tar" -ctime +1 -type f -exec rm -rf {} \;

上面指令的意思就是查找备份目录下面后缀名是tar的所有普通文件,判断他们的创建时间,如果是1天前创建的,那么就删除。


创建一个auto_delete.sh文件,把上面一行命令放进这个文件中。然后在配置一个定时任务,实现每天自动删除之前gitlab备份数据得功能,只保留最新备份。


GitLab数据双备份机制

双重备份很简单,由于我基于NAS系统,本就有与公有云同步的功能,所以我只要添加了备份文件夹,就自动上传到百度云了,对于完全服务器搭建了来说只能用命令了:通过scp /var/opt/gitlab/backups/[当天备份数据] root@[另外一台服务器ip]:[备份目录]命令把当天的备份数据拷贝到另一台服务器,另一台服务器向上文描述的一样配置自动删除任务,保留最新的备份即可。 

本文标题:【GitLab】GitLab数据自动备份、删除旧备份
本文链接:https://dingqidong.com/?id=132
作者授权:除特别说明外,本文由 By无邪 原创编译并授权 无邪-blog 刊载发布。
版权声明:本文使用「署名-非商业性使用-相同方式共享 4.0 国际」创作共享协议,转载或使用请遵守署名协议。

评论

关于我们
个人博客
关注本站微信号,享受更多服务!
联系方式
电话:
地址:
Email:
邮编:
Copyright ©2019-2020.Powered by©本站隶属于黎明工作室 鲁ICP备19054880号-1

鲁公网安备 37098302000619号

本站已安全运行:
召唤伊斯特瓦尔