GitLab在Debian上的数据恢复方法
这是GitLab官方推荐的恢复方式,适用于需要恢复整个GitLab实例(包括项目、CI/CD配置、用户数据等)的场景。
/var/opt/gitlab/backups目录下的备份文件(格式为YYYY-MM-DD-HH-mm-ss.tar)复制到新服务器的相同路径下(需提前创建目录并设置正确权限)。gitlab-rake工具指定备份编号(即备份文件名去掉.tar后的部分)进行恢复,例如:sudo gitlab-ctl stop unicorn # 停止数据写入服务
sudo gitlab-ctl stop sidekiq
sudo gitlab-rake gitlab:backup:restore BACKUP=2025-11-10-08-30-00 # 替换为实际备份编号
执行过程中需输入两次yes确认恢复操作。sudo gitlab-ctl restart
打开浏览器访问GitLab Web界面,检查项目、仓库、用户权限等数据是否完整恢复。若仅需恢复单个项目(如误删除项目、特定项目数据损坏),可通过指定项目ID和备份文件的方式进行精准恢复。
<your_access_token>和<project_name>):PROJECT_ID=$(curl --header "PRIVATE-TOKEN: <your_access_token>" "http://<your_gitlab_instance>/api/v4/projects" | jq -r '.[] | select(.name == "<project_name>") | .id')
<backup_file_name>和<project_id>):BACKUP_FILE="/var/opt/gitlab/backups/<backup_file_name>.tar" # 如2025-11-10-08-30-00.tar
sudo gitlab-rake gitlab:backup:restore BACKUP=$BACKUP_FILE PROJECT_ID=$PROJECT_ID
此命令会仅恢复指定项目的数据,不影响其他项目。若GitLab通过Docker容器运行,恢复过程更侧重数据目录的挂载与容器重建。
docker stop gitlab # 替换为实际容器名
docker rm gitlab
/data/gitlab/config(配置)、/data/gitlab/logs(日志)、/data/gitlab/data(数据)目录挂载到新容器,确保数据一致性:docker run -d -p 8443:443 -p 8090:8090 -p 8022:22 --name gitlab --restart always \
-v /data/gitlab/config:/etc/gitlab \
-v /data/gitlab/logs:/var/log/gitlab \
-v /data/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
容器启动后会自动读取挂载目录中的备份数据,无需额外执行恢复命令。gitlab-ctl status查看当前版本。/etc/gitlab/gitlab.rb(配置文件)、/etc/gitlab/gitlab-secrets.json(敏感信息,如数据库密码)等文件,恢复后需将这些文件复制到新服务器的相同路径,并执行sudo gitlab-ctl reconfigure重载配置。