备份

备份和恢复 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 读取。

note运行 sudo gitlab-ctl backup-etc --backup-path <DIRECTORY> 会将备份放置在指定目录中。如果目录不存在,将创建该目录。推荐使用绝对路径。
note要创建每日应用程序备份,请编辑 root 用户的 cron 表:
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/
note确保 /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

note您的机器 SSH host 密钥存储在 /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

caution如果未提供任何参数,则默认值为 --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 创建备份存档。