Ubuntu中GitLab备份与恢复方法
sudo gitlab-ctl status检查);/var/opt/gitlab/backups)。GitLab提供了gitlab-rake和gitlab-backup命令,可快速完成全量备份(包含仓库、数据库、用户、配置等):
sudo gitlab-rake gitlab:backup:create CRON=1(CRON=1表示跳过定时任务调度,立即执行);sudo gitlab-backup create,生成的备份文件默认存储在/var/opt/gitlab/backups目录,文件名格式为时间戳_版本_gitlab_backup.tar(如1714684800_16.0.0_gitlab_backup.tar)。若需更改备份存储位置,可编辑配置文件/etc/gitlab/gitlab.rb,添加或修改以下参数:
gitlab_rails['backup_path'] = '/your/custom/backup/path'
保存后执行sudo gitlab-ctl reconfigure使配置生效。
通过系统Cron定时任务实现每日自动备份,例如每天凌晨3点执行:
sudo crontab -e
添加以下行:
0 3 * * * /opt/gitlab/bin/gitlab-backup create CRON=1
保存退出后,Cron会自动执行备份任务。
结合rsync命令可实现增量备份(仅备份新增/修改的文件),减少存储占用:
sudo rsync -avz --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /var/opt/gitlab/ /path/to/incremental/backup/
此命令会同步/var/opt/gitlab目录到目标路径,排除无需备份的系统目录。
1714684800_16.0.0_gitlab_backup.tar)完整且未被损坏;执行以下命令停止关键服务(避免恢复过程中数据冲突):
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
/var/opt/gitlab/backups):sudo cp /path/to/backup/file.tar /var/opt/gitlab/backups/
sudo chmod 777 /var/opt/gitlab/backups/file.tar
BACKUP参数为备份文件的时间戳部分,如1714684800):sudo gitlab-backup restore BACKUP=1714684800
恢复过程中会提示“是否覆盖现有数据”,输入yes确认。若备份时单独备份了配置文件和SSL证书,需将其恢复到原路径:
sudo cp /path/to/backup/gitlab.rb /etc/gitlab/gitlab.rb
sudo cp -r /path/to/backup/ssl /etc/gitlab/
恢复完成后,重新配置并启动GitLab:
sudo gitlab-ctl reconfigure # 重新加载配置
sudo gitlab-ctl start # 启动所有服务
http://服务器IP),使用原账户登录;/var/log/gitlab/gitlab-rails/production.log)监控备份是否成功;