将gitlab的代码仓库实时备份到其他服务器

首先,这个题目是不完全正确的,因为经过各种尝试,gitlab的仓库直接备份到远端,拷贝回来后是不能使用的!表现为gitlab中能看到项目,但每个项目的内容都无法读取出来,页面上会有报错提示。所以,最终采用的是实时备份gitlab的备份库!

最初的需求是,gitlab部署在centos7服务器上,然后nas网络存储在另一台windows服务器,因此想把gitlab的代码仓库同步到网络存储服务器上。

下面把本次的整个经过记录下来,以便有类似需求的朋友参考,以免走很多弯路。

最终的成功解决方案,在文章最后。

一、失败方案:挂载网络共享文件夹,让gitlab仓库直接使用这个文件夹

首先把这个贴出来,是想绝了大家的想法,这种方式压根行不通。原因容我细细道来。

在有将gitlab代码仓库实时同步到远端的需求时,第一想法就是:“能不能直接挂载nas网络存储位置到本地,然后让gitlab直接使用它?”。

1.使用winows服务器的文件夹共享

我在windows服务器(备份目的,ip:192.168.0.107,nas服务器,上面多块磁盘做了raid)上,启用了windows的文件夹共享功能,并创建了名为“gitlab”的用户,密码设置为123456。之后在比如F:\shared_repository共享文件夹上,设置gitlab账号的共享权限,把所有访问权限都打开。

然后在Cenos7(备份源,ip:192.168.0.105)上,使用mount命令挂载这个网络地址到本机的“/home/shared_repository”:

mount -t cifs -o username=gitlab,password=123456,uid=git,gid=git,dir_mode=0700,file_mode=0700 //192.168.0.107/shared_repository /home/shared_repository

映射后,测试了在Centos7的挂载目录“/home/shared_repository”中创建文件,对文件做增删改操作,实际上都是在windows服务器上对应的“shared_repository”文件夹中进行的。

这一步成功!

接下来,就是修改gitlab的配置文件,让它的仓库位置,使用这个挂载的网络位置:

vim /etc/gitlab/gitlab.rb

修改仓库路径:

#git_data_dirs({
   "default" => {
     "path" => "/home/shared_repository"  #修改到我们挂载的路径
    }
 })

然后,根据gitlab的教程,需要重新配置一下:

gitlab-ctl reconfigure

这里会报错!提示在上面挂载的路径中创建的文件夹的权限不正确!

然后为了测试,我们手动在挂载的路径/home/shared_repository中创建文件1.txt,使用chmod修改他的权限,发现完全和普通路径中修改权限不一样!

比如,我们chmod 500 1.txt,期望得到:-r-x------的权限,但实际上修改后的权限为:-r-xr-xr-x。

再尝试chmod 400 1.txt,应该修改为:-r--------的权限,但实际上是:-r--r--r--。

结论是:无法正确的按照当前用户权限、组权限和其他用户权限,通过chmod给“挂载的路径中的文件、文件夹授权”!

而gitlab的仓库,会在仓库路径中,创建多个“不同用户权限、不同组权限、不同其他用户权限”的多个文件或文件夹。因此,上面reconfigure时就会报错!

从而,我们无法通过“修改gitlab仓库位置为挂载的网络路径”来实现同步gitlab的代码仓库!

2.更换备份目标服务器的文件系统为ext3

然后,我认为可能是因为“windows下的ntfs文件系统,无法存储文件的权限信息(在inode中)”。

所以,把windows服务器下的共享文件夹所在分区,整个格式化为“ext3”分区,然后通过安装驱动和软件,让windows服务器能够识别这个分区。

接下来,再在windows服务器上安装nfs服务器(hanewin),把共享目录export出来(已经设置umask=000,最大权限)。

然后在Centos7中挂载为“nfs”网络文件系统:

mount -t nfs 192.168.0.107:/shared_repository /home/shared_repository

然后,重复上面的配置gitlab仓库的步骤,发现依旧报错!依旧无法正确修改mount

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值