使用的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. 如何在一台计算机上配置多个jdk【转】

    分析问题 为了多快好省的解决当前的问题,我的想法是在windows中同时安装jdk1.6和jdk1.8,在中间进行切换,而不需要多次进行重复的安装和卸载,这样简单方便. 解决思路 第一步:在安装之前, ...

  2. php:数组与json数据相互转换

    1.数组转json $json=json_encode(数组名) 数组转json字符串 2,json转数组 $arr=json_decode(json字符串,[true]) 不加true第一次转直接转 ...

  3. 今天想写一下关于SpringMVC的视图解释器

    昨天我写了一下SpringMVC最爱金丹的项目的配置流程,这样搭建完项目之后呢我发现我每个请求都得加个.do什么的后缀,这让我开发得很不爽,于是呢今天就想配置一下这个试图解释器,这样做的目的有两个:第 ...

  4. 命令行执行python模块时提示ImportError: No module named xxx

    在pycharm中运行python文件没有问题,切换到cmd中是提示:ImportError: No module named xxx 原因: pycharm在运行时会把当前工程的所有文件夹路径都作为 ...

  5. Python中使用多进程来实现并行处理的方法小结

    进程和线程是计算机软件领域里很重要的概念,进程和线程有区别,也有着密切的联系,先来辨析一下这两个概念: 1.定义 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和 ...

  6. where 常用条件范例

    where() public method Sets the WHERE part of the query. The method requires a $condition parameter, ...

  7. CentOS下将php和mysql命令加入到环境变量中-简单

    开发过程中.需要使用到php命令执行程序.但是php命令没有在全局命令中:每次执行都需要加上全路径特别麻烦,把php命令添加到全局变量中,以后每次只用输入php可以了 例: php -v  或 mys ...

  8. 软件测试_Fiddler抓包工具一

    多数资料摘抄至 https://www.cnblogs.com/miantest/p/7289694.html 一.在 macOS 下如何安装 (https://www.telerik.com/fid ...

  9. 复习下CSS-零碎要点

    一,CSS选择器 1.  h1 > strong {color:red;}表示的是只有h1下子元素才是红色,“孙子”就不行. 2.  h1 + p {margin-top:50px;}   选择 ...

  10. CCS的文本及字体

    1.文本 CSS 文本属性可定义文本的外观 通过文本属性,您可以改变文本的颜色.字符间距,对齐文本,装饰文本,对文本进行缩进,等等. 缩进文本 把 Web 页面上的段落的第一行缩进,这是一种最常用的文 ...