gitlab的定时数据备份与恢复
一、主机部署的gitlab的定时数据备份
1、执行命令crontab -e,将定时任务添加后保存;
#crontab -e
2、添加如下配置,时间可更改,保存配置;
* * * * * command
分 时 日 月 周 命令
其中,
第1列表示分钟,1~59,每分钟用*表示
第2列表示小时,1~23,(0表示0点)
第3列表示日期,1~31
第4列表示月份,1~12
第5列表示星期,0~6(0表示星期天)
第六列表示要运行的命令。
比如每天13:00、16:00生成:
0 13 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
0 16 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
3、重启crontab
#systemctl restart crond
4、验证备份数据
#cd var/opt/gitlab/backups
#ls
5、查看备份过程
#cat /var/spool/mail/root
6、保留一定时间的备份数据
比如15天:15*3600*24
#vim /etc/gitlab/gitlab.rb
#gitlab_rails['backup_keep_time'] = 1296000
#gitlab-ctl reconfigure
二、docker部署的gitlab的定时数据备份
1、编写脚本"gitlab.sh"
#!/bin/sh
gitlab=$(sudo docker ps -aqf 'name=gitlab_gitlab_1')
sudo docker exec $gitlab gitlab-rake gitlab:backup:create
2、给执行权限
#chmod +x gitlab.sh
3、#crontab -e
0 2 * * * /root/./gitlab.sh
4、重启
#systemctl restart crond
5、验证备份数据
#cd /gitlab-data/data/backups
#ls
6、如果报错sudo: 没有终端存在,且未指定 askpass 程序
在/etc/sudoers下添加
用户名 ALL=(ALL) NOPASSWD: ALL
三、容器数据恢复
1、进入gitlab容器内部
docker exec -it gitlab_gitlab_1 bash
2、恢复数据
(1)将原服务器上已备份好的数据…/data/backups/xxx.tar导入当前服务器的相同目录,为防止恢复数据时权限不足的问题,将权限修改为777
chmod 777 xxx.tar
(2)执行数据恢复指令
gitlab-rake gitlab:backup:restore RAILS_ENV=production BACKUP=xxx