GitLab在Linux系统中的备份与恢复
一 备份
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。备份内容包含仓库、数据库、用户与权限等核心数据。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。0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1(CRON=1 用于抑制非错误输出)。scp -P 22 /var/opt/gitlab/backups/*.tar root@192.0.2.10:/data/backup/。可配合日志与清理脚本实现全自动化。二 恢复
sudo cat /opt/gitlab/version-manifest.txt | grep "gitlab-ce"。sudo gitlab-ctl stop puma 与 sudo gitlab-ctl stop sidekiq(或一次性 sudo gitlab-ctl stop)。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 reconfiguregitlab-psql 删除扩展或调整属主后再恢复,恢复后必要时重建扩展。