使用的gitlab是用docker启动的,数据目录的owner/group信息被意外全部更改成了root:root导致服务不可用。最终通过复原文件所有者的方式恢复了服务。

步骤如下:

  1. 打包备份gitlab所有的数据目录(我们的是/data/gitlab/data;/data/gitlab/config;/data/gitlab/logs),并清空目录下的所有文件;

  2.   删除gitlab-ce容器,重新从docker镜像启动一个新的gitlab-ce容器,让它生成新的文件,以备后续修正使用。为了让gitlab生成所有需要的文件,启动后,在新服务中新建了user/group/progect等;

  3.   获取gitlab数据目录下所有的文件及其owner/group信息,存到owner.txt中,脚本如下:

 #!/bin/bash
function filedic(){
for line in `ls -l $`
do
filename=`echo $line| awk -F " " '{print $9}'`
if test -n "${filename}"
then
groupname=`echo $line | awk -F " " '{print $4}'`
ownername=`echo $line | awk -F " " '{print $3}'`
if [ -d $"/"$filename ]
then
echo $"/"$filename $groupname $ownername
filedic $"/"$filename
else
echo $"/"$filename $groupname $ownername
fi fi
done } IFS=$'\n'
INIT_PATH="/data/gitlab";
filedic $INIT_PATH

  4.   停掉新服务,将新产生的gitlab的数据文件打包备份,并清空gitlab的数据文件(即/data/gitlab/data;/data/gitlab/config;/data/gitlab/logs下的所有文件,现在这些目录下的文件都是新容器产生的,我们要把它们删除,然后恢复成旧的数据文件)

  5.   将第1步中备份的旧数据文件恢复到原目录中,其中logs文件可以删除

  6.   比对owner.txt中的文件所有者信息,修改上一步恢复的数据文件;脚本如下:

 #!/bin/bash

 cat /data/gitlab/script/owner.txt|
while read line
do
echo $line
path=`echo $line| awk -F " " '{print $1}'`
groupname=`echo $line| awk -F " " '{print $2}'`
ownername=`echo $line| awk -F " " '{print $3}'`
if [ -d "$path" -o -f "$path" ]
then
echo $path $groupname $ownername
chown $ownername:$groupname $path
fi
done

    其中还有一些postgresql的数据文件目录,需要统一全部修改,一般包括global/data及base目录。具体可以通过docker的启动日志查看,我是通过一遍一遍的启动才修改完全部文件的。。。。。。。。。。。

  7. 经过多次启动,查看报错日志,修改数据文件所有者信息,最终服务启动成功。查看仓库---都在;测试提交---正常!!!

  8. 提醒:不要自己作死。。。不要动gitlab的数据文件。。。多做备份

记一次gitlab-ce数据恢复过程的更多相关文章

  1. 记一次数据库调优过程(IIS发过来SQLSERVER 的FETCH API_CURSOR语句是神马?)

    记一次数据库调优过程(IIS发过来SQLSERVER 的FETCH API_CURSOR语句是神马?) 前几天帮客户优化一个数据库,那个数据库的大小是6G 这麽小的数据库按道理不会有太大的性能问题的, ...

  2. gitlab ce 中删除空项目之后,没有删除掉,访问500

    在VirtualBox中的gitlab ce,在管理页面的操作如下: 新建一个仓库名为test的仓库,并从gitlab中导入 导入失败,使用root用户登录,在 Admin Area -> Pr ...

  3. EVA 4400存储硬盘故障数据恢复方案和数据恢复过程

    EVA系列存储是一款以虚拟化存储为实现目的的HP中高端存储设备,平时数据会不断的迁移,加上任务通常较为繁重,所以磁盘的负载相对是较重的,也是很容易出现故障的.EVA是依靠大量磁盘的冗余空间,以及故障后 ...

  4. HP DL380服务器RAID信息丢失数据恢复方法和数据恢复过程分享

    [数据恢复故障描述]    客户服务器属于HP品牌DL380系列,存储是由6块73GB SAS硬盘组成的RAID5,操作系统是WINDOWS 2003 SERVER,主要作为企业部门内部的文件服务器来 ...

  5. EMC Isilon(OneFS)误删文件数据恢复过程<存储数据恢复>

    [科普Isilon的存储结构] Isilon内部使用的是分布式文件系统OneFS.在Isilon存储集群里面每个节点均为单一OneFS文件系统,所以Isilon在支持横向扩展的同时并不会影响数据正常使 ...

  6. IBM x3850 RAID5数据恢复过程

    [raid数据恢复故障描述]    需要进行数据恢复的是北京一家公司的IBM X3850服务器,服务器挂载了5块73G SAS硬盘组成raid5磁盘阵列,4号盘为热备盘(Hot-Spare),由于未知 ...

  7. CentOS 7 Install Gitlab CE

    https://hostpresto.com/community/tutorials/how-to-install-and-setup-gitlab-on-centos-7/ http://linux ...

  8. docker下运行Gitlab CE+Jenkins+Nexus3+docker-registry-frontend

    DevOps - Gitlab CE - Jenkins - Nexus Gitlab CE https://hub.docker.com/r/gitlab/gitlab-ce/ https://do ...

  9. 安装gitlab ce

    切换到root用户,安装相关依赖 yum install curl policycoreutils openssh-server openssh-clients service sshd restar ...

  10. 记一次有惊无险的Linux数据恢复过程

    问题阶段 起因: 昨天晚上思路不是很清晰(上了一天班回来有点蒙),还是强忍着疲惫想搞事情,结果悲剧了… … 本来想拿SD卡做一张linux烧录卡,烧录脚本是很久以前写的,有git记录,一直不成功,就回 ...

随机推荐

  1. Python成长之路【第二篇】Python基础之数据类型

    阅读目录 简介 1 什么是数据? x=10,10是我们要存储的数据 2 为何数据要分不同的类型 数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示 3 数据类型 数字(整形,长整形,浮点型 ...

  2. SMS PDU编码数据串格式分析

    PDU协议数据单元详细介绍 PDU 相当于一个数据包,它由构成消息(SMS)的信息组成.作为一种数据单元,它必须包含源/目的地址.保护(有效)时间.数据格式.协议类型和正文,正文长度可达140字节,它 ...

  3. amaze ui 滚动监听

    引入   此框架的css  js    前提还要有jquery http://amazeui.org/javascript/scrollspy 然后看这个链接里的各种动画 运用方法就是  在你想要有动 ...

  4. 合肥工业大学oj G-诺德森海岸

    #include<iostream> #include<vector> #include<bits/stdc++.h> using namespace std; v ...

  5. C#控件之ComboBox控件使用

    首先如果要给ComboBox控件输入要显示的内容,方法是点击控件会显示如下图所示: 然后点击”编辑项”,如下所示: 下面在这里输入控件要显示的内容,即可. 如果要让ComboBox控件设置默认显示项, ...

  6. There is no getter for property named 'user' in 'class com.jyr.wh.domain.User' 异常

    今天在使用mybatis时,出现了一个问题:There is no getter for property named 'user' in 'class com.jyr.wh.domain.User, ...

  7. light sdk

    //请求ajax var request = function (url,method,params,cb) { var d = ajax({ url:url, type:method, data:p ...

  8. python学习笔记-os模块参数

    python的os 模块提供了非常丰富的方法用来处理文件和目录.常用的方法如下表所示: os.access(path, mode) 检验权限模式 os.chdir(path) 改变当前工作目录 os. ...

  9. @NotNull和@NotEmpty和@NotBlank 区别

    1.@NotNull:不能为null,但可以为empty:用在基本类型上. 2.@NotEmpty:不能为null,而且长度必须大于0:用在集合类上面. 3.@NotBlank:只能作用在String ...

  10. python websocket Django 实时消息推送

    概述: WebSocket 是什么? WebSocket 是 HTML5 提供的一种浏览器与服务器间进行全双工通讯的协议.依靠这种协议可以实现客户端和服务器端 ,一次握手,双向实时通信. WebSoc ...