备份
备份和恢复 Omnibus GitLab 配置
建议在安全的地方保存一份 /etc/gitlab
或至少包含 /etc/gitlab/gitlab-secrets.json
的副本。如果您需要恢复极狐GitLab 应用程序备份,您还需要恢复 gitlab-secrets.json
。如果不这样做,使用双重身份验证的用户将无法访问您的极狐GitLab 服务器,并且存储在 GitLab CI 中的 “secure variables” 也将丢失。
不建议将配置备份与应用程序数据备份存储在同一位置,请参见下文。
Omnibus GitLab 的所有配置都存储在 /etc/gitlab
中。要备份您的配置,只需运行 sudo gitlab-ctl backup-etc
。它将在 /etc/gitlab/config_backup/
中创建一个 tar 存档。目录和备份文件只能被 root 读取。
sudo gitlab-ctl backup-etc --backup-path <DIRECTORY>
会将备份放置在指定目录中。如果目录不存在,将创建该目录。推荐使用绝对路径。sudo crontab -e -u root
cron 表将出现在编辑器中。
输入命令创建一个包含 /etc/gitlab/
内容的tar文件。例如,将备份安排在工作日之后的每个早晨,星期二(第 2 天)到星期六(第 6 天)运行:
15 04 * * 2-6 gitlab-ctl backup-etc && cd /etc/gitlab/config_backup && cp $(ls -t | head -n1) /secret/gitlab/backups/
/secret/gitlab/backups/
存在。您可以按如下方式提取 tar 文件。
# Rename the existing /etc/gitlab, if any
sudo mv /etc/gitlab /etc/gitlab.$(date +%s)
# Change the example timestamp below for your configuration backup
sudo tar -xf gitlab_config_1487687824_2017_02_21.tar -C /
记得在恢复配置备份后运行 sudo gitlab-ctl reconfigure
。
/etc/ssh/
的单独位置。如果您必须执行完整的机器恢复,请务必同时备份和恢复这些密钥以避免中间人攻击警告。限制配置备份的备份生命周期(修剪旧备份)
13.12 版本中引入。
可以使用用于 GitLab 应用程序备份的相同 backup_keep_time
设置来修剪 GitLab 配置备份。
要使用此设置,请编辑 /etc/gitlab/gitlab.rb
:
## Limit backup lifetime to 7 days - 604800 seconds
gitlab_rails['backup_keep_time'] = 604800
默认的 backup_keep_time
设置为 0
- 保留所有 GitLab 配置和应用程序备份。
一旦设置了 backup_keep_time
- 您可以运行 sudo gitlab-ctl backup-etc --delete-old-backups
来修剪所有早于当前时间减去 backup_keep_time
的备份。
如果要保留所有现有备份,可以提供参数 --no-delete-old-backups
。
--delete-old-backups
,如果 backup_keep_time
大于 0,它将删除任何早于当前时间减去 backup_keep_time
的备份。分离配置备份与应用程序数据
不要将 GitLab 应用程序备份(Git 仓库、SQL 数据)与配置备份 (/etc/gitlab
) 存储在同一位置。gitlab-secrets.json
文件(可能还有 gitlab.rb
文件)包含数据库加密密钥以保护 SQL 数据库中的敏感数据:
- GitLab 双重身份验证(2FA)用户 secrets (‘QR codes’)
- GitLab CI ‘secure variables’
如果将配置备份与应用程序数据备份分开,则可以减少加密的应用程序数据与解密所需的密钥一起丢失/泄露/被盗的可能性。
手动管理备份目录
Omnibus GitLab 使用 gitlab_rails['backup_path']
创建备份目录。该目录归运行极狐GitLab 的用户所有,并且它具有严格将权限设置为只有该用户可以访问。
该目录将保存备份档案,它们包含敏感信息。
在某些组织中,权限需要不同,例如,将备份存档发送到异地。
要禁用备份目录管理,在/etc/gitlab/gitlab.rb
中设置:
gitlab_rails['manage_backup_path'] = false
gitlab_rails['backup_path']
中指定的目录,并设置允许在 user['username']
中指定的用户具有正确访问权限的许可。否则将阻止 GitLab 创建备份存档。