从服务器端目录恢复GitLab存储库

时间:2019-02-27 17:38:51

标签: git ubuntu gitlab gitlab-ee

我曾在Ubuntu 16 VPS上运行GitLab-CE,但是由于一些nginx问题以及更一般的问题,最终导致我无法登录服务器上的GitLab。由于无论如何我都必须擦除服务器,所以我认为我只是备份/var/opt/gitlab/git-data/repositories/文件夹,并希望在以后安装新的GitLab的情况下恢复最佳状态。

晚了。我现在在Ubuntu 18.04上安装了Omnibus版本的GitLab-EE。我将文件夹从/var/opt/gitlab/git-data/repositories/username/从备份移到了新安装。这些是文件夹,每个文件夹分别名为reponame.gitreponame.wiki.git。我还正确设置了文件权限。

唯一明显不同的是:

  1. 用户git属于在新服务器上进行的新存储库中的组git,但是旧用户具有用户root的组git

  2. 执行ls -al时,新创建的存储库具有以下用于钩子的内容

hooks -> /opt/gitlab/embedded/service/gitlab-shell/hooks/

而旧版本有hooks.old.1528595819/,其中只有一个有关钩子的自述文件,但没有帮助。

我在新的GitLab安装中恢复这些机会是什么?对于所有这些,我不能仅仅使hooks成为/opt/gitlab/.../hooks/的符号链接并更改所有者的组,因为这样做并没有做任何事情来使它们显示在Web界面上。

这里最好的选择是什么?

1 个答案:

答案 0 :(得分:0)

我已经制定了一个解决方案,该解决方案比我想要的要耗费更多时间,但是肯定可以将我所有的文件都带回来。这是我所做的,以防对日后的其他人有所帮助。很多时候,很多东西被丢弃而没有答案,如果您只是想找回文件,这可能会帮您。

  1. 将文件夹(名为[repo name] .git)复制到不是服务器的计算机上的文件夹中。将每个文件夹放在其自己的包含文件夹中。例如,sample.git被放在名为sample的文件夹中。
  2. 转到终端中的该目录
  3. 使用git init重新初始化存储库
  4. 使用git reset --hard HEAD
  5. 在本地还原文件
  6. 将远程服务器设置为该存储库和提交的新分支。现在,文件以可访问的方式显示在远程GitLab服务器上。

git init步骤只是一个猜测,但这正是需要的。

我仍然很想听听是否有一种更快的方法来批量更新服务器上的所有存储库,但是,可以代替这种方法。