我如何将 gitlab 数据目录放在另一个驱动器上?

我如何将 gitlab 数据目录放在另一个驱动器上?

我的 gitlab 安装空间不足。我想将用户的存储库移动到另一个驱动器。我找不到有关执行此操作的任何演练或好的论坛帖子。

我尝试过移动/opt/gitlab/apps/gitlab/repositories到另一个驱动器,然后创建从原始文件夹名称到新文件夹名称的符号链接。这种方法只要允许我读取存储库中的数据就行,但在尝试创建新存储库时失败了,当时尝试推送到 master 分支 ( git push -u origin master),提示我没有权限提交到 master。当我将文件夹放回原位而不是符号链接时,一切都恢复正常。

有没有更好/正确的方法将存储库移动到系统上的不同位置和不同驱动器?

答案1

看来新设备上的新父目录具有错误的权限。请检查旧位置和新位置上所有存储库的父目录的所有者、组和权限。

此外,如果它确实是由符号链接引起的(我对此表示怀疑),您可以使用mount --bind符号链接而不是将目录重新绑定到新磁盘。

答案2

假设您使用 github 设置了 pki / 非交互式身份验证(即上传了经过身份验证的相应公钥,以便当您运行 git pull 时,您的 ~.ssh/id_dsa 或 ~..ssh/is_rsa 私钥会被读取进行身份验证)。

问题很可能是新设备上缺少相应的私钥:

用户@主机:.ssh/id_dsa

确保您的私钥已粘贴到该位置,uid 正确,并且 chmod 0400 否则将不起作用。

编辑:

因此,一旦你的公钥被上传到 github,任何拥有相应私钥的人都可以下载/更改/删除你的源代码。如果它已被泄露,你可以撤销它并添加另一个,只要你有登录权限进入 github 门户或访问 github 上存档的电子邮件或更改密码/进入门户

私钥应离线保存并加密

答案3

让你的开发团队暂停一下,你即将更改配置。

在新驱动器或具有足够空间的位置创建一个目录,就我而言,为了提供未来的位置独立性,将使用链接而不是绝对位置。

mkdir /drive2/repos # create a new base directory
ln -fs /drive2/repos /repos # create a link on the root
chown git:git /drive2/repos # make sure this is git friendly

现在,使用您喜欢的编辑器修改/etc/gitlab/gitlab.rb

git_data_dirs({
    "default" => {
        "path" => "/repos"
    }
})

然后使用rsync或任何其他工具将当前位置复制到新位置。验证一切正常后,您可以稍后删除。

rsync -av /var/opt/gitlab/git-data/* /repos/.  # copy keeping all
chown -R git:git /repos/                       # reconfirm the ownership
# now reconfigure GitLab to the fire the new location
gitlab-ctl  reconfigure

相关内容