在Debian上备份GitLab数据的完整步骤
确保已安装GitLab且服务正常运行(可通过sudo gitlab-ctl status检查)。备份前建议停止相关服务(如unicorn、sidekiq),避免数据不一致:
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
GitLab提供gitlab-rake命令实现数据备份,执行以下命令生成备份文件:
sudo gitlab-rake gitlab:backup:create
备份文件默认保存在/var/opt/gitlab/backups目录,文件名格式为TIMESTAMP_gitlab_backup.tar(如1714567890_2025_05_01_15.0.0_gitlab_backup.tar)。
若需修改备份路径或保留时间,编辑配置文件/etc/gitlab/gitlab.rb:
sudo vim /etc/gitlab/gitlab.rb
添加或修改以下参数:
gitlab_rails['backup_path'] = "/data/gitlab/backups" # 自定义备份路径(需提前创建目录)
gitlab_rails['backup_keep_time'] = 604800 # 备份保留时间(单位:秒,此处为7天)
修改后需重载配置使生效:
sudo gitlab-ctl reconfigure
通过crontab实现定时备份,例如每天凌晨2点执行备份:
sudo crontab -e
添加以下内容(使用绝对路径确保命令正确执行):
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
保存后cron会自动加载任务,可通过sudo crontab -l查看已配置的任务。
find命令删除超过保留时间的备份文件(如保留7天):find /var/opt/gitlab/backups -name "*.tar" -type f -mtime +7 -exec rm -rf {} \;
user@remote_ip:/backup/path),可使用scp命令:scp /var/opt/gitlab/backups/*.tar user@remote_ip:/backup/path/
若需恢复数据,需先安装相同版本的GitLab并启动基础服务(如postgresql、redis),然后执行以下命令:
# 停止相关服务
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
# 恢复备份(替换BACKUP为备份文件名,如1714567890_2025_05_01_15.0.0_gitlab_backup.tar)
sudo gitlab-rake gitlab:backup:restore BACKUP=1714567890_2025_05_01_15.0.0
# 启动GitLab服务
sudo gitlab-ctl start
恢复后需验证数据完整性(如登录Web界面检查仓库、项目是否存在)。