Debian系统中GitLab的备份与恢复方法
备份前建议停止GitLab的关键服务(如unicorn、sidekiq),避免数据写入导致备份不完整。执行以下命令停止服务:
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
使用GitLab内置的rake命令生成备份文件,默认存储路径为/var/opt/gitlab/backups,文件名为TIMESTAMP_gitlab_backup.tar(如1714567890_gitlab_backup.tar)。命令如下:
sudo gitlab-rake gitlab:backup:create
若需更改备份存储路径,编辑配置文件/etc/gitlab/gitlab.rb,添加或修改以下参数:
gitlab_rails['backup_path'] = '/data/gitlab/backups'
修改完成后,执行sudo gitlab-ctl reconfigure使配置生效。
通过cron设置定时任务,实现每日自动备份。例如,创建备份脚本/var/opt/gitlab/backups/gitlabbak.sh,内容如下:
#!/bin/bash
/opt/gitlab/bin/gitlab-rake gitlab:backup:create
sleep 10
find /var/opt/gitlab/backups -name "*.tar" -type f -mtime +7 -exec rm -rf {} \; # 删除7天前的备份
赋予脚本执行权限:sudo chmod +x /var/opt/gitlab/backups/gitlabbak.sh
添加cron任务(每日凌晨2点执行):
0 2 * * * /bin/sh /var/opt/gitlab/backups/gitlabbak.sh > /dev/null 2>&1
手动备份GitLab的关键配置文件和敏感数据,避免恢复时遗漏:
sudo cp /etc/gitlab/gitlab.rb /data/gitlab/backups/
sudo cp /etc/gitlab/gitlab-secrets.json /data/gitlab/backups/
sudo cp -r /etc/ssl/gitlab /data/gitlab/backups/ssl
sudo gitlab-ctl stop unicornsudo gitlab-ctl stop sidekiq将备份文件(如1714567890_gitlab_backup.tar)复制到目标服务器的gitlab_rails['backup_path']目录下(如/var/opt/gitlab/backups)。
使用gitlab-rake命令恢复指定备份文件(BACKUP参数为备份文件名去掉扩展名的部分):
sudo gitlab-rake gitlab:backup:restore BACKUP=1714567890
恢复过程中需输入两次yes确认操作。
恢复完成后,启动GitLab所有服务:
sudo gitlab-ctl start
或重启单个服务(如unicorn):
sudo gitlab-ctl restart unicorn
http://your_server_ip);