码迷,mamicode.com
首页 > 其他好文 > 详细

记一次gitlab-ce数据恢复过程

时间:2019-01-15 20:00:37      阅读:327      评论:0      收藏:0      [点我收藏+]

标签:div   config   需要   空目录   tla   查看   lob   容器   init   

使用的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中,脚本如下:

 1 #!/bin/bash
 2 function filedic(){
 3     for line in `ls -l $1`
 4     do
 5         filename=`echo $line| awk -F " " {print $9}`
 6         if test -n "${filename}"
 7         then
 8             groupname=`echo $line | awk -F " " {print $4}`
 9                     ownername=`echo $line | awk -F " " {print $3}`
10                     if [ -d $1"/"$filename ]
11                     then
12                             echo $1"/"$filename $groupname $ownername
13                             filedic $1"/"$filename
14                      else
15                              echo $1"/"$filename $groupname $ownername
16                      fi
17     
18         fi
19     done 
20 
21 
22 }
23 
24 IFS=$\n
25 INIT_PATH="/data/gitlab";
26 filedic $INIT_PATH

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

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

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

 1 #!/bin/bash
 2 
 3 cat /data/gitlab/script/owner.txt| 
 4 while read line
 5     do    
 6         echo $line
 7         path=`echo $line| awk -F " " {print $1}`
 8         groupname=`echo $line| awk -F " " {print $2}`
 9         ownername=`echo $line| awk -F " " {print $3}`
10         if [ -d "$path" -o -f "$path" ] 
11         then
12             echo  $path $groupname $ownername
13             chown $ownername:$groupname $path
14         fi
15     done

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

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

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

记一次gitlab-ce数据恢复过程

标签:div   config   需要   空目录   tla   查看   lob   容器   init   

原文地址:https://www.cnblogs.com/zsxneil/p/10273931.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!