GitLab在Linux系统中如何进行备份和恢复
导读:GitLab在Linux系统中的备份与恢复 一 备份 使用内置命令创建备份(Omnibus 包推荐) 执行:sudo gitlab-backup create(等效于 sudo gitlab-rake gitlab:backup:cre...
GitLab在Linux系统中的备份与恢复
一 备份
- 使用内置命令创建备份(Omnibus 包推荐)
- 执行:
sudo gitlab-backup create(等效于sudo gitlab-rake gitlab:backup:create)。备份默认生成在 /var/opt/gitlab/backups/,文件名形如:1750765308_2025_06_24_16.7.6_gitlab_backup.tar。建议同时备份配置文件:sudo tar -cf gitlab_conf.tar /etc/gitlab。备份内容包含仓库、数据库、用户与权限等核心数据。
- 执行:
- 修改备份目录与保留策略
- 编辑 /etc/gitlab/gitlab.rb:
gitlab_rails['manage_backup_path'] = truegitlab_rails['backup_path'] = "/data/gitlab/backups"gitlab_rails['backup_archive_permissions'] = 0644gitlab_rails['backup_keep_time'] = 604800(保留 7 天,单位为秒)
- 使配置生效:
sudo gitlab-ctl reconfigure。
- 编辑 /etc/gitlab/gitlab.rb:
- 定时与远程备份
- 定时任务示例(每天 02:00):
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1(CRON=1用于抑制非错误输出)。 - 远程备份示例(免密 SCP):在备份服务器放置公钥后,
scp -P 22 /var/opt/gitlab/backups/*.tar root@192.0.2.10:/data/backup/。可配合日志与清理脚本实现全自动化。
- 定时任务示例(每天 02:00):
二 恢复
- 版本与环境检查
- 恢复目标机的 GitLab 版本应与备份时一致或兼容(推荐相同版本)。查看版本:
sudo cat /opt/gitlab/version-manifest.txt | grep "gitlab-ce"。
- 恢复目标机的 GitLab 版本应与备份时一致或兼容(推荐相同版本)。查看版本:
- 停止关键服务
- 执行:
sudo gitlab-ctl stop puma与sudo gitlab-ctl stop sidekiq(或一次性sudo gitlab-ctl stop)。
- 执行:
- 放置备份文件
- 将备份 tar 包放到 /var/opt/gitlab/backups/(如使用自定义备份目录,请放到相应目录)。
- 执行恢复
- 执行:
sudo gitlab-backup restore BACKUP=1750765308_2025_06_24_16.7.6(只需填写时间戳前缀,命令会自动补全)。过程中会提示确认,输入 yes 继续。
- 执行:
- 启动与验证
- 启动:
sudo gitlab-ctl start;检查状态:sudo gitlab-ctl status。访问 Web 页面验证项目、用户、权限是否正常。
- 启动:
三 迁移与注意事项
- 迁移场景
- 将备份文件与配置文件一同迁移到新机器:
- 数据:
scp /var/opt/gitlab/backups/1750*.tar target:/var/opt/gitlab/backups/ - 配置:
scp gitlab_conf.tar target:~/ & & ssh target "sudo tar -xf gitlab_conf.tar -C /" & & sudo gitlab-ctl reconfigure
- 数据:
- 在新机器上按“恢复”步骤执行。
- 将备份文件与配置文件一同迁移到新机器:
- 重要注意事项
- 版本要求:恢复时 GitLab 版本需与备份时一致或兼容,避免对象/扩展不兼容。
- 服务停止:恢复前务必停止 Puma/Sidekiq,避免写入冲突。
- 配置文件与密钥:备份命令不会包含 /etc/gitlab/ 与 SSH 主机密钥,迁移时请单独备份与恢复。
- 数据库扩展:若恢复时报错如 “must be owner of extension pg_trgm/btree_gist”,可在恢复前用
gitlab-psql删除扩展或调整属主后再恢复,恢复后必要时重建扩展。 - 定期演练:定期在测试环境验证备份可用性,并校验仓库、LFS、Runner、Pages、Webhooks 等是否完整。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: GitLab在Linux系统中如何进行备份和恢复
本文地址: https://pptw.com/jishu/780024.html
