记一次gitlab-ce数据恢复过程
使用的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数据恢复过程的更多相关文章
- 记一次数据库调优过程(IIS发过来SQLSERVER 的FETCH API_CURSOR语句是神马?)
记一次数据库调优过程(IIS发过来SQLSERVER 的FETCH API_CURSOR语句是神马?) 前几天帮客户优化一个数据库,那个数据库的大小是6G 这麽小的数据库按道理不会有太大的性能问题的, ...
- gitlab ce 中删除空项目之后,没有删除掉,访问500
在VirtualBox中的gitlab ce,在管理页面的操作如下: 新建一个仓库名为test的仓库,并从gitlab中导入 导入失败,使用root用户登录,在 Admin Area -> Pr ...
- EVA 4400存储硬盘故障数据恢复方案和数据恢复过程
EVA系列存储是一款以虚拟化存储为实现目的的HP中高端存储设备,平时数据会不断的迁移,加上任务通常较为繁重,所以磁盘的负载相对是较重的,也是很容易出现故障的.EVA是依靠大量磁盘的冗余空间,以及故障后 ...
- HP DL380服务器RAID信息丢失数据恢复方法和数据恢复过程分享
[数据恢复故障描述] 客户服务器属于HP品牌DL380系列,存储是由6块73GB SAS硬盘组成的RAID5,操作系统是WINDOWS 2003 SERVER,主要作为企业部门内部的文件服务器来 ...
- EMC Isilon(OneFS)误删文件数据恢复过程<存储数据恢复>
[科普Isilon的存储结构] Isilon内部使用的是分布式文件系统OneFS.在Isilon存储集群里面每个节点均为单一OneFS文件系统,所以Isilon在支持横向扩展的同时并不会影响数据正常使 ...
- IBM x3850 RAID5数据恢复过程
[raid数据恢复故障描述] 需要进行数据恢复的是北京一家公司的IBM X3850服务器,服务器挂载了5块73G SAS硬盘组成raid5磁盘阵列,4号盘为热备盘(Hot-Spare),由于未知 ...
- CentOS 7 Install Gitlab CE
https://hostpresto.com/community/tutorials/how-to-install-and-setup-gitlab-on-centos-7/ http://linux ...
- 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 ...
- 安装gitlab ce
切换到root用户,安装相关依赖 yum install curl policycoreutils openssh-server openssh-clients service sshd restar ...
- 记一次有惊无险的Linux数据恢复过程
问题阶段 起因: 昨天晚上思路不是很清晰(上了一天班回来有点蒙),还是强忍着疲惫想搞事情,结果悲剧了… … 本来想拿SD卡做一张linux烧录卡,烧录脚本是很久以前写的,有git记录,一直不成功,就回 ...
随机推荐
- .NET并行计算和并发8:硬件支持
共享内存多核系统,分布式内存系统 区别 分布式内存系统主要通过Message passing interface在各个微处理器之间通信,但是MPI共享内存多核系统是没有必要的,会造成额外的开销. 分布 ...
- Git从入门到差不多会用
工作以后最先接触到的新东西可能就包括版本控制工具了,对Git的感觉是又敬又畏,敬是因为最初的时候都是跟着同事照猫画虎地通过开发软件图形化操作,大家都不太懂,也不知道这东西有多深奥:畏就是因为有过几次惨 ...
- ES6箭头函数Arrow Function
果然,隔了很长时间都没有来博客园上逛了...... 前一段时间一直在忙我们参加的一个比赛,转眼已经好久没有来逛过博客园了,果然还是很难坚持的...... 今天总算还是想起来要过来冒个泡,强行刷一波存在 ...
- 【POI】java对excel的读写操作
在工作中需要将mongo中的数据导出到excel中,所以根据需要学习了poi.以下为学习内容的总结: 1.POI是什么? poi是Apache团队开发的专门面对用java处理Excel文档的工具. 官 ...
- 【转】干货 | 【虚拟货币钱包】从 BIP32、BIP39、BIP44 到 Ethereum HD Wallet
虚拟货币钱包 钱包顾名思义是存放$$$.但在虚拟货币世界有点不一样,我的帐户资讯(像是我有多少钱)是储存在区块链上,实际存在钱包中的是我的帐户对应的 key.有了这把 key 我就可以在虚拟货币世界证 ...
- Linux_系统管理_网络配置_命令行配置网络
因为格了系统,重新安装了VMware,加载了原来的虚拟机后,因为VMware虚拟网卡Vmnet8的地址已经变了,所以要改变下客户操作系统的地址,结果搞了半天才搞定,这里记下来,希望能够为遇到这类问题的 ...
- IOS 生成静态库文件(.a文件)
http://www.cnblogs.com/lyy-5518/p/5459643.html
- 2017年java面试题库【归类篇】
一.Java基础 1.String类为什么是final的. 2.HashMap的源码,实现原理,底层结构. 3.说说你知道的几个Java集合类:list.set.queue.map实现类咯... 4. ...
- openssl rsa java 大于117的长字符串加密
package org.yood.rsa.util; import org.bouncycastle.asn1.ASN1Sequence; import org.bouncycastle.asn1.p ...
- stack.isEmpty()和empty()
public class Stack<E> extends Vector<E> 可以看到Stack类继承了Vector类 这个是stack类里面的方法: /** * Tests ...