GitLab在Linux上如何备份
导读:Linux上备份GitLab的完整做法 一 备份范围与准备 备份对象应包含两部分: 应用数据(仓库、数据库、上传文件、CI变量等),由内置 rake 任务导出为 tar 包; 配置与密钥(位于 /etc/gitlab/,尤其是 gitl...
Linux上备份GitLab的完整做法
一 备份范围与准备
- 备份对象应包含两部分:
- 应用数据(仓库、数据库、上传文件、CI变量等),由内置 rake 任务导出为 tar 包;
- 配置与密钥(位于 /etc/gitlab/,尤其是 gitlab-secrets.json 与 gitlab.rb),需单独离线保存,避免与加密数据一同丢失。
- 建议将配置与备份分开放置,并妥善保护密钥文件。必要时一并备份 /etc/ssh/ 下的主机密钥,避免机器恢复后出现中间人告警。
二 手动创建备份
- 应用数据备份(推荐):执行内置任务,备份包默认生成在 /var/opt/gitlab/backups。
命令:sudo gitlab-rake gitlab:backup:create
如需自定义备份目录,在 /etc/gitlab/gitlab.rb 中设置:
gitlab_rails[‘backup_path’] = ‘/your/backup/path’
修改后执行:sudo gitlab-ctl reconfigure - 配置文件备份:使用专用命令导出 /etc/gitlab 为 tar 归档。
命令:sudo gitlab-ctl backup-etc
可指定目录:sudo gitlab-ctl backup-etc --backup-path /secret/gitlab/backups
归档默认仅 root 可读写,安全性更高。
三 自动化与保留策略
- 定时备份应用数据(示例:每天 02:00 执行):
编辑 root 的 crontab:sudo crontab -e -u root
添加:0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create - 定时备份配置(示例:每周二至周六 04:15 执行):
15 04 * * 2-6 gitlab-ctl backup-etc & & cd /etc/gitlab/config_backup & & cp $(ls -t | head -n1) /secret/gitlab/backups/ - 备份保留时间:在 /etc/gitlab/gitlab.rb 中设置保留秒数(如 7 天 = 604800):
gitlab_rails[‘backup_keep_time’] = 604800
清理过期配置备份:sudo gitlab-ctl backup-etc --delete-old-backups
说明:配置备份的保留时间同样受 backup_keep_time 控制。
四 备份文件校验与异地容灾
- 校验要点:
- 查看备份目录是否生成 .tar 文件:ls -l /var/opt/gitlab/backups
- 定期做恢复演练,确保备份可用;备份文件含敏感信息,需限制访问权限并加密存储。
- 异地/离线拷贝示例(在备份完成后执行):
- 拷贝最新备份到远程:
scp /var/opt/gitlab/backups/$(ls -t /var/opt/gitlab/backups | head -n1) user@backup-server:/path/to/backup/ - 远程按时间清理旧备份(示例保留 3 天):
find /path/to/backup/ -type f -mtime +3 -name ‘.tar’ -delete
提示:也可在脚本中结合 find、scp、日志轮转实现全自动本地+异地备份与清理。
- 拷贝最新备份到远程:
五 恢复要点与常见注意事项
- 恢复前准备:
- 目标实例的 GitLab 版本需与备份时相同或更高;
- 为保证一致性,先停止相关进程:sudo gitlab-ctl stop unicorn & & sudo gitlab-ctl stop sidekiq。
- 执行恢复:
- 将备份文件放到 /var/opt/gitlab/backups(或已配置的 backup_path);
- 执行:sudo gitlab-rake gitlab:backup:restore BACKUP=<
时间戳前缀>
例如:BACKUP=1687460936_2023_06_22_14.3.3(不要带 “_gitlab_backup.tar” 后缀); - 恢复完成后启动服务:sudo gitlab-ctl start(或 restart)。
- 重要提醒:
- 仅备份 rake 包不包含 /etc/gitlab 与 gitlab-secrets.json;恢复后若缺失密钥,2FA 与 Secure Variables 将不可用;
- 恢复后建议执行:sudo gitlab-ctl reconfigure;
- 若使用容器/PgBouncer/Patroni,备份命令与挂载卷策略不同,需按官方说明调整。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: GitLab在Linux上如何备份
本文地址: https://pptw.com/jishu/768893.html
