数据的备份和恢复前都需要停止 gitlab 的两个服务 unicorn,sidekiq(高级版本中,unicorn已经被puma所替代),以确保没有数据的写入。
gitlab-ctl stop unicorn
gitlab-ctl stop puma
gitlab-ctl stop sidekiq
1. 数据备份
使用gitlab-rake gitlab:backup:create
命令就可以很轻松的备份几乎整个 gitlab 的数据,包括代码,仓库设置,用户,组,个人设置等。
注意:**etc/gitlab**
目录下的**gitlab.rb**
和**gitlab-secrets.json**
这两个文件需要手动进行备份,**gitlab.rb**
是 gitlab 的主配置文件,而**gitlab-secrets.json**
存放着数据库一些加密信息 key,这两个文件很重要,迁移 gitlab 的时候会用到,一定也要记得进行备份。
# 生成备份
[root@ubuntu1804:~]# gitlab-rake gitlab:backup:create
#备份文件格式为`时间戳 + gitlab版本号 + _gitlab_backup.tar`。
[root@ubuntu1804:~]# ls
1610454809_2021_01_12_13.7.1_gitlab_backup.tar
# 备份完成后启动Gitlab
[root@ubuntu1804:~]# gitlab-ctl start
2. 数据恢复
恢复时只需要指定备份文件的时间即可,Gitlab 会自动补全后缀。
[root@ubuntu1804:~]# gitlab-rake gitlab:backup:restore BACKUP=1610454809_2021_01_12_13.7.1
3. 备份脚本
#!/bin/bash
BACKUP_DIR=/data/gitlab/backups/
BACKUP_OLD=/data/gitlab/backup-old/
gitlab-rake gitlab:backup:create
find ${BACKUP_DIR} -type f -name "*.tar" -mtime +2|xargs -i mv {} ${BACKUP_OLD}
find ${BACKUP_OLD} -type f -name "*.tar" -mtime +5 -exec rm -f {} \;