GitLab 仓库备份恢复 (使用 Docker)
背景
备份了某个版本的gitlab仓库,现在需要还原看一下内容,服务器的git版本太新,利用docker重建一个同样版本来恢复仓库
准备工具
docker
123456789_2021_02_29_11.10.0-pre_gitlab_backup.tardocker
- 确定备份文件gitlab版本,在文件名中
11.10.0-pre就为gitlab的版本 - 去 https://hub.docker.com/r/gitlab/gitlab-ce/tags 中查找对应版本

- 如果找到对应版本运行安装,直接看下一章节。没有找到就继续本章节。
- 没找到
11.10.0-pre就使用[11.10.0-ce.0]。 - 运行安装
docker pull gitlab/gitlab-ce:11.10.0-ce.0 - 启动docker容器
docker run -itd -p 9980:80 -p 9922:22 --name gitlab 84a0020a3b4b
参数说明(可参考Docker相关文档了解详情):
-i,-t: 交互模式运行并分配伪输入终端。-d: 后台运行容器。--name gitlab: 设置容器名称。gitlab/gitlab-ce: 使用的GitLab CE镜像。
- 复制文件到容器内
docker cp 123456789_2021_02_29_11.10.0-pre_gitlab_backup.tar gitlab:/var/opt/gitlab/backups- 进入容器
## 进入容器
docker exec -it gitlab /bin/bash- (可选)处理备份文件与Docker镜像版本不一致的问题
- 如果备份文件(如
11.10.0-pre)和下载的Docker镜像版本(如11.10.0-ce.0)不完全匹配,可能需要修改备份文件中的版本信息。如果版本一致,请跳过此步骤。 - 以下是在Docker容器内部进行的操作:
- 如果备份文件(如
cd /var/opt/gitlab/backups
mkdir backup
mv 123456789_2021_02_29_11.10.0-pre_gitlab_backup.tar backup
cd backup
tar -xvf 123456789_2021_02_29_11.10.0-pre_gitlab_backup.tar
## 解压完成以后
vi backup_information.yml
## 将 :gitlab_version: 11.10.0-pre
## 换 :gitlab_version: 11.10.0
## 版本改完后
rm -rf 123456789_2021_02_29_11.10.0-pre_gitlab_backup.tar
tar cf 123456789_2021_02_29_11.10.0-pre_gitlab_backup.tar *
## 打包成功后
mv 123456789_2021_02_29_11.10.0-ee_gitlab_backup.tar ../
cd ../
rm -rf backup- 执行还原操作
gitlab-rake gitlab:backup:restore BACKUP=123456789_2021_02_29_11.10.0-pre- 一路
YES - 成功后重启git
gitlab-ctl restart- 等待一会后,访问网站或者利用docker logs -tf gitlab看日志,等项目启动后查看网站