Ubuntu系统GitLab备份恢复方法
备份前需停止GitLab核心服务,确保数据一致性:
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
使用gitlab-rake命令备份仓库、数据库、用户及配置等信息,备份文件默认存储在/var/opt/gitlab/backups目录:
sudo gitlab-rake gitlab:backup:create
若需立即执行(而非等待定时任务),可添加CRON=1参数:
sudo gitlab-rake gitlab:backup:create CRON=1
修改/etc/gitlab/gitlab.rb配置文件,自定义备份存储路径(如/data/backups/gitlab)和保留时长(如7天):
sudo vim /etc/gitlab/gitlab.rb
添加/修改以下内容:
gitlab_rails['backup_path'] = "/data/backups/gitlab"
gitlab_rails['backup_keep_time'] = 604800 # 单位:秒(7天)
保存后重新加载配置并重启GitLab:
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
通过crontab设置每日凌晨2点自动执行备份任务:
sudo crontab -e
添加以下行:
0 2 * * * /usr/bin/gitlab-rake gitlab:backup:create
使用rsync同步备份目录到远程服务器或本地其他磁盘,排除临时文件:
sudo rsync -avz --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /var/opt/gitlab/ /path/to/remote/backup/
恢复前需停止GitLab相关服务,避免数据冲突:
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
将备份文件(如gitlab_backup_1679122231_2024_06_41_13.9.7.tar)复制到备份目录(如/var/opt/gitlab/backups),并赋予可执行权限:
sudo cp /path/to/backup/file.tar /var/opt/gitlab/backups/
sudo chmod 777 /var/opt/gitlab/backups/file.tar
执行恢复命令,指定备份文件名(无需.tar扩展名):
sudo gitlab-rake gitlab:backup:restore BACKUP=1679122231_2024_06_41_13.9.7
若之前备份了配置文件(/etc/gitlab/gitlab.rb)和SSL证书(/etc/gitlab/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 start
通过GitLab Web界面登录,检查仓库、用户、权限等数据是否完整,确保实例正常运行。