GitLab 仓库备份恢复 (使用 Docker)

背景

备份了某个版本的gitlab仓库,现在需要还原看一下内容,服务器的git版本太新,利用docker重建一个同样版本来恢复仓库

准备工具

docker
123456789_2021_02_29_11.10.0-pre_gitlab_backup.tar

docker

  1. 确定备份文件gitlab版本,在文件名中11.10.0-pre就为gitlab的版本
  2. https://hub.docker.com/r/gitlab/gitlab-ce/tags 中查找对应版本
  3. 如果找到对应版本运行安装,直接看下一章节。没有找到就继续本章节。
  4. 没找到11.10.0-pre就使用[11.10.0-ce.0]
  5. 运行安装docker pull gitlab/gitlab-ce:11.10.0-ce.0
  6. 启动docker容器 docker run -itd -p 9980:80 -p 9922:22 --name gitlab 84a0020a3b4b

参数说明(可参考Docker相关文档了解详情):

  • -i, -t: 交互模式运行并分配伪输入终端。
  • -d: 后台运行容器。
  • --name gitlab: 设置容器名称。
  • gitlab/gitlab-ce: 使用的GitLab CE镜像。
  1. 复制文件到容器内
docker cp 123456789_2021_02_29_11.10.0-pre_gitlab_backup.tar gitlab:/var/opt/gitlab/backups
  1. 进入容器
## 进入容器
docker exec -it gitlab /bin/bash
  1. (可选)处理备份文件与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
  1. 执行还原操作
gitlab-rake gitlab:backup:restore BACKUP=123456789_2021_02_29_11.10.0-pre
  1. 一路 YES
  2. 成功后重启git
gitlab-ctl restart
  1. 等待一会后,访问网站或者利用docker logs -tf gitlab看日志,等项目启动后查看网站

相关概念