备份
备份和恢复 Linux 软件包安装
建议在安全的地方保存一份 /etc/gitlab
或至少包含 /etc/gitlab/gitlab-secrets.json
的副本。如果您需要恢复极狐GitLab 应用程序备份,您还需要恢复 gitlab-secrets.json
。如果不这样做,使用双重身份验证的用户将无法访问您的极狐GitLab 服务器,并且存储在极狐GitLab CI 中的 “secure variables” 也将丢失。
不建议将配置备份与应用程序数据备份存储在同一位置,请参见下文。
Linux 软件包安装的所有配置都存储在 /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/
的单独位置。如果您必须执行完整的机器恢复,请务必同时备份和恢复这些密钥以避免中间人攻击警告。限制配置备份的备份生命周期(修剪旧备份)
可以使用用于极狐GitLab 应用程序备份用于极狐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)用户 secret (‘QR codes’)
- 极狐GitLab CI ‘secure variables’
如果将配置备份与应用程序数据备份分开,则可以减少加密的应用程序数据与解密所需的密钥一起丢失/泄露/被盗的可能性。
创建应用备份
要创建仓库和极狐GitLab 元数据的备份,请按照备份创建文档进行操作。
备份创建将在 /var/opt/gitlab/backups
中存储一个 tar 文件。
如果要将极狐GitLab 备份存储在不同的目录中,请将以下设置添加到 /etc/gitlab/gitlab.rb
并运行 sudo gitlab-ctl reconfigure
:
gitlab_rails['backup_path'] = '/mnt/backups'
在 Docker 容器中为极狐GitLab 实例创建备份
可以通过在命令前加上 docker exec -t <your container name>
来在主机上安排备份。
备份应用:
docker exec -t <your container name> gitlab-backup
备份配置和 secrets:
docker exec -t <your container name> /bin/sh -c 'gitlab-ctl backup-etc && cd /etc/gitlab/config_backup && cp $(ls -t | head -n1) /secret/gitlab/backups/'
-
/secret/gitlab/backups
。 -
/var/opt/gitlab
用于所有应用数据,包括备份。 -
/var/opt/gitlab/backups
(可选)。gitlab-backup
工具默认写入这个目录。 虽然这个目录嵌套在/var/opt/gitlab
中,Docker 对这些挂载进行排序,允许它们协调工作。开启此项配置后:
- 常规本地存储上的应用程序数据(通过第二次挂载)。
- 网络存储上的备份卷(通过第三次挂载)。
使用非打包数据库进行备份和恢复
如果您使用的是非打包数据库,请参阅使用非打包数据库的文档。
上传备份到远端(云端)存储
获取详细信息,查看备份文档。
手动管理备份目录
Linux 软件包安装使用 gitlab_rails['backup_path']
创建备份目录。该目录归运行极狐GitLab 的用户所有,并且它具有严格将权限设置为只有该用户可以访问。
该目录将保存备份档案,它们包含敏感信息。
在某些组织中,权限需要不同,例如,将备份存档发送到异地。
要禁用备份目录管理,在/etc/gitlab/gitlab.rb
中设置:
gitlab_rails['manage_backup_path'] = false
gitlab_rails['backup_path']
中指定的目录,并设置允许在 user['username']
中指定的用户具有正确访问权限的许可。否则将阻止极狐GitLab 创建备份存档。