首页 > 其他分享 >gitlab服务器在没有备份的情况下宕机,如何恢复项目代码

gitlab服务器在没有备份的情况下宕机,如何恢复项目代码

时间:2023-11-06 13:13:24浏览次数:38  
标签:git 宕机 备份 gitlab 文件夹 服务器 sudo data

第一步:复制旧服务器的代码仓库数据

将宕机的gitlab服务器硬盘挂载到其他服务器,打开挂载的磁盘,找到gitlab代码仓库目录  

/run/media/root/c6e4af86-0ca5-4841-8593-914811388435/var/opt/gitlab/git-data 黄色部分是磁盘挂载的目录,后面的 /var/opt/gitlab/git-data 这个是gitlab代码仓库的目录 打包 git-data 文件夹
tar -cvf git-data.tar git-data

拷贝 git-data.tar 到新的 github服务器,并解压到新的服务器

tar -xvf git-data.tar git-data333 

第二步:提取代码库中的项目信息

git-data下的目录名称是hash后的数字,已经看不出哪个文件夹是哪个项目的数据,但是文件夹下有个config文件,打开可以看到项目信息

 

 fullpath后面的信息就是  项目的组名称 / 项目的项目名称,那接下来只需要遍历每个文件夹,去读取文件夹下的config文件,就能获取到所有项目信息

1、提取所有git文件夹目录

dir /b /s *.git > 2.txt

2、使用java代码遍历代码仓库中的所有文件夹,提取所有config文件中的项目信息

    public static void main(String[] args) throws IOException {
        String path1 = "E:\\tools\\github\\git-data\\repositories\\@hashed";
        String fileName = "\\config";

        for (String path2 : path2Arr) {
            List<String> lines = Files.readAllLines(Paths.get(path1 + path2 + fileName), StandardCharsets.UTF_8);
            lines.forEach(line -> {
                if (line.contains("fullpath = ")) {
                    line = line.replaceAll("\\s", "").replace("fullpath=", "");
                    System.out.print(path2 + "\t");
                    System.out.println(line);
                }
            });
        }

    }

这样就得到文件夹对应的项目信息了

第三步:搭建新的 github 服务器

在新的服务器上,安装旧服务器上相同版本的 github (避免版本不同,数据无法镜像的问题)

# 准备工作
sudo yum update -y
sudo yum install curl openssh-server openssh-clients postfix cronie -y
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

# 安装服务
sudo yum install gitlab-ce -y

# 修改gitlab访问地址
sudo vim /etc/gitlab/gitlab.rb

# 重新加载配置文件
sudo gitlab-ctl reconfigure

# 启动服务
sudo gitlab-ctl start

# 关闭服务
sudo gitlab-ctl stop

 第四步:在新的gitlab服务器中添加空的项目

根据提取到的 组名称 和 项目名称 在新的gitlab中 创建组、创建空的项目,并把创建的空项目的git url 复制到表格中

这样就得到了代码仓库文件夹和空项目url一一对应的数据

 

 第五步:使用镜像功能恢复GitHub数据

 遍历表格中的数据,执行下方命令,将代码仓库文件夹中的数据镜像到新的gitlab空项目中,至此,gitlab数据的恢复就完成了

cd /var/opt/gitlab/git-data333/repositories/@hashed/代码仓库文件夹
git push --mirro 空项目url

 

标签:git,宕机,备份,gitlab,文件夹,服务器,sudo,data
From: https://www.cnblogs.com/LcxSummer/p/17812397.html

相关文章

  • mysql教程:binlog日志和数据备份
    DMLDDL数据恢复、主从复制数据备份:全量备份、增量备份数据恢复的步骤:备份数据库–还原数据文件–应用binlog–验证数据mysqlbinlog工具、将备份后的修改操作应用到数据库,将数据库恢复到最新的状态数据库的完整性、一致性binlog和数据备份数据备份是将数据库的数据文件复制到另......
  • gitlab服务器-最后还是删除了
    在自己的服务器上搭建了一个gitlab服务,发现这玩意太耗资源,还是删除了吧,用免费的github或gitee吧。 https://blog.csdn.net/weixin_48227918/article/details/131749359?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169916099116800192260466%2522%252C%2522scm%2......
  • GitLab集成钉钉扫码登录
    创建钉钉应用复制appKey和appSecret修改gitlab.rb配置#自动链接ldap用户gitlab_rails['omniauth_auto_link_ldap_user']=truegitlab_rails['omniauth_providers']=[{name:"dingtalk",#登录按钮展示名称label:"钉钉",......
  • Gitlab加入LDAP认证 (windows AD)<03>
    环境信息:主机名称IP角色AD-Server192.168.61.237AD服务器gitlab192.168.61.112AD服务器[root@gitlab~]#curl-shttps://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh|sudobash[root@gitlab~]#yum-yinstallgitlab......
  • 解密MySQL备份恢复的4种方法
    备份高于一切,今天汇总一下常用的几种备份方法,以及恢复的步骤。一、mysqldump在日常工作中,我们会使用mysqldump命令创建SQL格式的转储文件来备份数据库。或者我们把数据导出后做数据迁移,主备搭建等操作。mysqldump是一个逻辑备份工具,复制原始的数据库对象定义和表数据产生一组可......
  • Redis宕机恢复
    AOF(AppendOnlyFile)Redis持久化:AOF日志用AOF方法进行故障恢复的时候,需要逐一把操作日志都执行一遍。如果操作日志非常多,Redis就会恢复得很缓慢,影响到正常使用。RDB(RedisDataBase)内存数据的全量快照,即把内存数据都保存到磁盘。save:主进程执行,会导致redis阻塞bgsave:创建......
  • Gitlab新建项目
    1、登录Gitlab页面2、点击newproject新建项目3、按照步骤创建4、给项目用户,并设置权限 5、完成 逆风的方向,更适合飞翔,我不怕千万人阻挡,只怕自己投降。......
  • Gitlab仓库迁移到新地址的方式
    方式一 简单代码迁移简单代码迁移,顾名思义,就是只迁移代码到新的地址,代码在新的地址开不了之前的提交记录。 1、登录原Gitlab页面,选择要迁移的项目,复制地址2、使用git小乌龟克隆项目到本地 3、拉却需要的分支出来4、登录新的Gitlab页面,创建同名的项目创建项目方式参考: 5、克隆......
  • 64.简单的备份脚本
    #!/bin/bashcd/data/wwwroot/www_backtar-zcvfleiuk.com_`date+%Y%m%d%H%M`.tar.gz/data/wwwroot/leiuk.comfind/data/wwwroot/www_back-typef-mtime+30-name"*.tar.gz"-execrm-f{}\;scp-P10260./leiuk.com_`date+%Y%m%d%H%M`.tar.gzro......
  • mongo备份篇 mongoexport、mongoimport 以及mongodump、mongorestore
    系列导航一、linux单机版mongo安装(带密码验证)二、mongo集群搭建三、java连接mongo数据库四、java对mongo数据库增删改查操作五、mongo备份篇mongoexport、mongoimport以及mongodump、mongorestore如下是总结mongo数据库在执行备份和恢复中一些常用的语句。备份方面比较:1......