原文地址[1]欢迎star

需求

1.在新服务器上安装并搭建好gitlab2.手动+自动将旧服务器上的gitlab备份3.手动+自动将gitlab备份包scp到新服务器上4.手动+自动恢复新服务器上的gitlab备份包5.在新旧服务器上自动删除过期备份包

前提

1.版本

•gitlab-ce是社区版•gitlab-ee是企业版

1.方案

•定时器执行shell脚本

1.工具

•crontab[2]•shell[3]•expect[4]

1.操作

•如果不是root用户请在所有命令前+sudo•新老服务器gitlab版本保持一致•旧服务器用的是gitlab-ee_10.7.2-ee.0_amd64.deb版本的gitlab,示例也选择这个企业版

1.backups目录的只有root才能操作的,但是gitlab恢复操作使用者是git

所以将新旧服务器上/var/opt/gitlab/backups文件夹设置为可读可写可执行,方便操作

sudo chmod 777 backups/

现在开始,我会一步一步操作,带领大家一条龙从安装到自动化备份,最终实现再也不要被gitlab备份困扰的问题且可以专心敲代码的梦想

在新服务器上安装并搭建好gitlab

1.安装方式一:官网安装(慢)2.安装方式二:国内镜像安装(快)

官网安装gitlab

请戳gitlab的官方网站[5]

由于的我系统是ubuntu,所以我选择ubuntu 安装步骤就出现在下面了

1.

安装和配置必须的依赖

sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates

2.

安装Postfix来发送通知邮件。如果你想要用另一个方式去发送邮件,请在gitlab安装好后,下一步就是配置一个额外的SMTP服务。

sudo apt-get install -y postfix

在安装Postfix时一个配置屏幕会出现。选择Internet Site并且回车。mail name为你的服务器的DNS并且回车。如果额外的屏幕出现,继续接受默认配置并且回车。

3.

添加gitlab安装包仓库并安装 添加gitlab包仓库

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash

4.

安装gitlab包。选择https://gitlab.example.com更改为要访问gitlab实例的url。安装将自动配置并启动gitlab到url。

为了https://gitlab将自动请求带有Let's Encrypt的证书,这需要入栈http访问和有效的主机名。

sudo EXTERNAL_URL="https://gitlab.example.com" apt-get install gitlab-ee

此时你会发现慢的要死,速度是100k/s,毕竟两者隔了一堵墙,那就换国内镜像安装吧

清华镜像安装gitlab

既然官网太慢,那么我们选择清华镜像安装gitlab

清华大学开源软件镜像站[6]

Gitlab Community Edition 镜像使用帮助[7]

里面有各种版本

备份需要和原服务器的gitlab版本一致,否则无法安装

在搜索栏里搜索gitlab,就会跳出相关gitlab的版本

gitlab-ee_10.7.2-ee.0_amd64.deb版本在/ubuntu/pool/bionic/main/g/gitlab-ee/

或者是直接访问到gitlab-ee[8]版本下,

直接访问到gitlab-ce[9]版本下。

1.

先更新仓库

sudo apt-get update

2.

加入gitlab的GPG公钥

curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null

3.

写进再选择你的 Debian/Ubuntu 版本

文本框中内容写进/etc/apt/sources.list.d/gitlab-ce.list,

我是写进/etc/apt/sources.list.d/gitlab-ee.list,

deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ee/ubuntu xenial main

1.更新apt仓库,安装 gitlab-ee

sudo apt-get update
sudo apt-get install gitlab-ee=10.7.2-ee.0

下载gitlab-ee_10.7.2-ee.0

这样就安装了10.7.2-ee.0版本了。

配置并启动gitlab

sudo gitlab-ctl reconfigure

每当修改了GitLab的配置之后,都要执行如下的命令,重启配好的配置并重启GitLab,然后查看GitLab的状态

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
sudo gitlab-ctl status

打开浏览器,默认是访问http://localhost即可。如果改了ip和端口,则访问http://ip:端口既可

这就是新搭建的gitlab

安装gitlab出现的问题

断口被占用

端口80以及端口8080分别被Ubuntu服务器上的Apache、Tomcat和nginx等服务所占用。

我的做法是修改 /etc/gitlab/gitlab.rb 文件

vim /etc/gitlab/gitlab.rb

修改其中的external_url

手动将旧服务器上的gitlab备份

修改gitlab备份地址

备份地址默认是在var/opt/gitlab/backups

1.打开原gitlab服务器终端,通过修改gitlab.rb配置文件来修改默认存放备份文件的目录

sudo vim /etc/gitlab/gitlab.rb

1.

默认如下

gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"

2.

backup_path改为自定义的目录

gitlab_rails['backup_path'] = "/data/gitlab/backups"

1.修改后重启配置文件

sudo gitlab-ctl reconfigure

我的示例里是没有改,备份的时间倒是改成了7天

/etc/gitlab/gitlab.rb

external_url 'http://192.168.3.2'
unicorn['port'] = 10086
gitlab_rails['manage_backup_path']=true
gitlab_rails['backup_path']="var/opt/gitlab/backups"
gitlab_rails['backup_archive_permissions']=0644
gitlab_rails['backup_keep_time']=604800

重启配置出现的问题

出现这个radis的问题,不知道如何解决,有大佬知道,求告知,但是不影响备份

这个问题是由于,我执行了sudo chmod -R 777 gitlab的命令,将gitlab的子目录下的所有文件都赋予了可读可写可执行的权限

解决方式

sudo chmod -R 2770 /var/opt/gitlab/git-data/repositories

gitlab开始备份

通过命令来备份原服务器上gitlab的数据。

sudo gitlab-rake gitlab:backup:create

备份的文件会放在var/opt/gitlab/backups下,名称类似于1558509153_2019_05_22_10.7.2-ee_gitlab_backup.tar,这个压缩包包含了gitlab备份的时间和版本。

可以看到backups下面的备份包

手动将gitlab备份包scp到新服务器上

通过scp命令

将新服务器上的backups权限升到777

sudo chmod 777 backups/

不会请戳Linux scp命令[1]

scp 1559635752_2019_06_04_10.7.2-ee_gitlab_backup.tar  gitlab-backup@192.168.3.113:/var/opt/gitlab/backups

在新服务器中/var/opt/gitlab/backups下就出现了新的备份包

重启发现所有备份包和脚本都清除的问题

之前由于backups权限问题,我将备份包发送到/tmp目录下,

重启电脑时,linux自动清除/tmp文件夹下的内容

原因是tmp是一个特殊的文件夹,系统会自动清理,所以大家最好不要把文件放到这个地方,被清理了就不好了。

手动恢复新服务器上的gitlab备份包

修改备份文件权限

如果没有修改backups目录的权限,会出现下面问题

贸然恢复,就会出现以下错

正确操作是降低backups操作权限



sudo chown git backups/
sudo chmod 700 backups/

不要降低权限,不然文件夹进不去 操作是降低backups操作权限 为了避免gitlab恢复时,由于权限,而产生不能解压的问题,我们就将备份文件权限改为777(可读可写)

chmod 777 1558509153_2019_05_22_10.7.2-ee_gitlab_backup.tar

停止相关数据连接服务

sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq

从备份文件恢复gitlab

BACKUP等于gitlab版本号,_gitlab_backup.tar是会默认添加的

sudo gitlab-rake gitlab:backup:restore BACKUP=1558509153_2019_05_22_10.7.2-ee

安装开始,一共有两个交互

1.是否丢掉之前的仓库

1.是否丢掉之前的key文件

3 安装成功

开启gitlab,并访问

sudo gitlab-ctl start

打开浏览器,访问gitlab

自动将旧服务器上的gitlab备份

旧服务器上的/var/opt/gitlab目录

定时备份

添加定时任务,每天凌晨6点执行gitlab备份

# 仇飞鸿编辑于2019-5-30 添加定时任务,每天6点,自动执行将旧服务器上的gitlab备份操作
0 6 * * * root /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1

编写完 /etc/crontab 文件之后,需要重新启动cron服务

#重新加载cron配置文件
sudo /usr/sbin/service cron reload
#重启cron服务
sudo /usr/sbin/service cron restart

注意:6之前是0,而不是* 最后需要重新启动cron服务

设置备份过期时间

就算是每天6点备份,一年下来也有356份,那也不得了了

那就可以设置备份过期时间,备份目录下只保存还没过期的压缩包,大大减轻了服务器的压力

通过编辑/etc/gitlab/gitlab.rb配置文件,找到gitlab_rails[‘backup_keep_time’]

sudo vim /etc/gitlab/gitlab.rb

gitlab_rails[‘backup_keep_time’]改为gitlab_rails[‘backup_keep_time’]=604800

我设置了7天内不过期

自动将gitlab备份包scp到新服务器上

新旧服务器配对密钥

由于scp总是出现交互,提示输入密码

方案一:配对密码,取消密码

方案二:expect自动交互

这里我们采取方案一

生成密钥对

在旧服务器上,输入命令

ssh-keygen -t rsa

1.生成的过程中提示输入密钥对保存位置,直接回车,接受默认值就行了。2.因为之前已经有/root/.ssh/id_rsa 文件存在,因此提示你是否覆盖,输入y表示覆盖3.接着会提示输入一个密码,直接回车,让它空着。当然,也可以输入一个密码。4.接着输入确认密码,输入完之后,回车密钥对就生成完了。

在/root/.ssh下生成id_rsa 和 id_rsa.pub 两个文件, 其中公共密钥保存在 /root/.ssh/id_rsa.pub,私有密钥保存在/root/.ssh/id_rsa。

cd /home/gushenxing/.ssh/

在旧服务器上cp生成rsa公钥证书给新服务器

然后在/root/.ssh下复制备份一份id_rsa.pub 命名为 id_rsa.pub.A,以便拷贝到新服务器。

执行cp命令复制

cp id_rsa.pub id_rsa.pub.A

执行scp命令传输

scp id_rsa.pub.A gitlab-backup@192.168.3.113:/home/gitlab-backup/.ssh

进入新服务器查看公钥

这里使用scp命令需要输入密码,当我们把下面的第三步执行完毕之后,以后旧服务器使用scp命令复制文件到新服务器的话,就不需要再次输入密码。

密钥配对

创建authorized_keys文件

当第二步将旧服务器上的id_rsa.pub.A 文件copy到新服务器的目录/root/.ssh

我们在新服务器的/root/.ssh下创建authorized_keys文件,使用如下命令

touch authorized_keys

将id_rsa.pub.A文件内容追加到authorized_keys 文件中

cat id_rsa.pub.A >> authorized_keys

打开authorized_keys查看

修改authorized_keys文件的权限

修改authorized_keys文件的权限

authorized_keys文件的权限很重要,如果设置为777,那么登录的时候,还是需要提供密码的。

这个权限足够,越低越好

-rw-rw-r--  1 gitlab-backup gitlab-backup  403 7月  19 10:53 authorized_keys

或者是这个权限

测试

在旧服务器上使用scp命令复制文件到新服务器上是否还需要密码

scp 1559635752_2019_06_04_10.7.2-ee_gitlab_backup.tar gitlab-backup@192.168.3.113:/var/opt/gitlab/backups

在新服务器上,再次使用刚才的命令,发现已经可以不需要输入密

创建Shell定时远程备份脚本

在旧服务器上创建定时远程备份脚本

创建自动scp的脚本和日志目录

cd /var/opt/gitlab
touch auto_scp.sh
cd /backups
sudo mkdir log

因为到时候,我们会将该定时远程备份脚本auto_scp.sh执行的时间,放到Gitlab自动备份脚本auto_scp.sh之后的一小时之内,因此我们只需要每次执行远程备份脚本auto_scp.sh的时候,只需要cp一个小时之内的生成的新的Gitlab备份文件。

auto_scp.sh

#!/bin/bash	

# 新旧服务器 gitlab备份文件存放路径
BACKUPDIR=/var/opt/gitlab/backups # 远程备份服务器 登录账户
RemoteUser=gitlab-backup # 远程备份服务器 IP地址
RemoteIP=192.168.3.113 #当前系统日期
DATE=`date "+%Y-%m-%d-%H-%M-%S"` #Log存放路径
LogFile=$BACKUPDIR/log/$DATE.log #查找本地备份目录下时间为1天之内并且后缀为.tar的gitlab备份文件
BACKUPFILE_SEND_TO_REMOTE=$(find $BACKUPDIR -type f -mmin -1440 -name '*.tar') #新建日志文件
touch $LogFile #追加日志到日志文件
echo "---------------------------------开始-----------------------------------" >> $LogFile echo "gitlab auto backup to remote server, start at $DATE" >> $LogFile echo "---------------------------------分割线---------------------------------" >> $LogFile #输出日志,打印出每次scp的文件名
echo "the file to scp to remote server is $BACKUPFILE_SEND_TO_REMOTE" >> $LogFile #备份到远程服务器
scp $BACKUPFILE_SEND_TO_REMOTE $RemoteUser@$RemoteIP:$BACKUPDIR
echo "---------------------------------分割线---------------------------------" >> $LogFile echo "remote server is $RemoteUser@$RemoteIP:$BACKUPDIR" >> $LogFile #追加日志到日志文件
echo "---------------------------------结束-----------------------------------" >> $LogFile
~

测试

由于auto_scp.sh执行权限是root,所以还得要交互密

降低auto_scp.sh和log的权限

sudo chown gushenxing:gushenxing auto_scp.sh
sudo chown gushenxing:gushenxing log

1.

执行命令,不要sudo执行

bash auto_scp.sh

此时不需要密码

2.

查看日志文件

3.

发现新服务器上已经出现了备份

往crontab添加定时任务,自动执行scp脚本

sudo vim /etc/crontab

添加下面命令

# 仇飞鸿编辑于2019-6-04 添加定时任务,每天7点,自动执行将gitlab备份包scp到新服务
器上的操作
0 7 * * * gushenxing bash /var/opt/gitlab/auto_scp.sh

编写完 /etc/crontab 文件之后,需要重新启动cron服务

#重新加载cron配置文件
sudo /usr/sbin/service cron reload
#重启cron服务
sudo /usr/sbin/service cron restart

旧服务器上的操作已结束,完成了自动将旧服务器上的gitlab备份和自动将gitlab备份包scp到新服务器上

自动恢复新服务器上的gitlab备份包

自动删除过期备份包脚本

cd /var/opt/gitlab
sudo touch auto_remove_backup.sh

填写脚本代码

#!/bin/bash	

#远程备份服务器gitlab备份文件存放路径
GITLABDIR=/var/opt/gitlab/backups # 查找远程备份路径下,超过7天且文件后缀为.tar的gitlab备份文件,然后删除
find $GITLABDIR -type f -mtime +7 -name '*.tar' -exec rm {} \;

往crontab添加定时任务,自动执行删除备份包脚本

sudo vim /etc/crontab

添加下面命令

# 仇飞鸿编辑于2019-5-30 添加定时任务,每天上午8点,自动执行删除过期的gitlab备份文件操作
0 8 * * * root bash /var/opt/gitlab/auto_remove_backup.sh

编写完 /etc/crontab 文件之后,需要重新启动cron服务

#重新加载cron配置文件
sudo /usr/sbin/service cron reload
#重启cron服务
sudo /usr/sbin/service cron restart

自动恢复脚本

cd /var/opt/gitlab
sudo touch auto_recovery_backup.sh
#!/bin/bash	

#备份文件所在目录
REMOTEDIRBACKUPS=/var/opt/gitlab/backups #找到当日生成的备份文件
BACKUPFILE=$(sudo find ./ -mtime -1 -name '*.tar') #当前系统日期
DATE=`date "+%Y-%m-%d-%H-%M-%S"` #Log存放路径
LogFile=$REMOTEDIRBACKUPS/log/$DATE.log #新建日志文件
sudo touch $LogFile #追加日志到日志目录
echo "---------------------------------开始-----------------------------------" >> $LogFile echo "gitlab auto recovery, start at $DATE" >> $LogFile echo "---------------------------------分割线---------------------------------" >> $LogFile #输出日志,打印出当日生成的备份文件
echo "backup files generated on that day is $BACKUPFILE" >> $LogFile #截取出主要文件名
FILE=$(echo ${BACKUPFILE#*backups/}) #截取恢复文件名
RESTOREFILE=$(echo ${FILE%_gitlab*}) echo "---------------------------------分割线---------------------------------" >> $LogFile #输出日志,打印出备份文件复制目标目录
echo "backup files generated scp to $REMOTEDIRBACKUPS" >> $LogFile #进入到目标目录
cd $REMOTEDIRBACKUPS #备份文件权限修改为可读可写可执行
chmod 777 $FILE #停止相关数据连接服务
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq #自动化交互,从备份文件恢复gitlab
sudo /usr/bin/expect -c "
set timeout -1
spawn sudo gitlab-rake gitlab:backup:restore BACKUP=$RESTOREFILE
expect {
\"yes/no\" {set timeout -1; send \"yes\n\";exp_continue;}
\"yes/no\" {set timeout -1; send \"yes\n\"}
} expect eof"
#开启gitlab
sudo gitlab-ctl start echo "---------------------------------分割线---------------------------------" >> $LogFile #输出日志,从备份文件恢复gitlab
echo "recovery was successful" >> $LogFile #追加日志到日志目录
echo "---------------------------------结束-----------------------------------" >> $LogFile

其中加入自动交互expect

测试

执行结果

往crontab添加定时任务,自动执行恢复备份包脚本

sudo vim /etc/crontab

在crontab中加入此定时任务

# 仇飞鸿编辑于2019-6-3 添加定时任务,每天上午9点,自动执行从备份包中恢复gitlab操作
0 9 * * * root bash /var/opt/gitlab/auto_recovery_backup.sh

编写完 /etc/crontab 文件之后,需要重新启动cron服务

#重新加载cron配置文件
sudo /usr/sbin/service cron reload
#重启cron服务
sudo /usr/sbin/service cron restart

完整版脚本

旧服务器上的crontab脚本

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do. SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
# 仇飞鸿编辑于2019-5-30 添加定时任务,每天6点,自动执行将旧服务器上的gitlab备份>操作
0 6 * * * root /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1 # 仇飞鸿编辑于2019-6-04 添加定时任务,每天7点,自动执行将gitlab备份包scp到新服务
器上的操作
0 7 * * * gushenxing bash /var/opt/gitlab/auto_scp.sh #

新服务器上的crontab脚本

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do. SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) # 仇飞鸿编辑于2019-5-30 添加定时任务,每天上午8点,自动执行删除过期的gitlab备份文
件操作
0 8 * * * root bash /var/opt/gitlab/auto_remove_backup.sh # 仇飞鸿编辑于2019-6-3 添加定时任务,每天上午9点,自动执行从备份包中恢复gitlab操>作
0 9 * * * root bash /var/opt/gitlab/auto_recovery_backup.sh # 仇飞鸿编辑于2019-6-12 添加定时任务,每天上午10点,自动删除var/opt/gitlab/backups/tmp
0 10 * * * root rm -rf /var/opt/gitlab/backups/tmp

自动将gitlab备份包scp到新服务器脚本auto_scp.sh

#!/bin/bash	

# 新旧服务器 gitlab备份文件存放路径 	

BACKUPDIR=/var/opt/gitlab/backups	

# 远程备份服务器 登录账户 	

RemoteUser=gitlab-backup	

# 远程备份服务器 IP地址 	

RemoteIP=192.168.3.113	

#当前系统日期 	

DATE=`date "+%Y-%m-%d-%H-%M-%S"`	

#Log存放路径	

LogFile=$BACKUPDIR/log/$DATE.log	

#查找本地备份目录下时间为1天之内并且后缀为.tar的gitlab备份文件	

BACKUPFILE_SEND_TO_REMOTE=$(find $BACKUPDIR -type f -mmin -1440 -name '*.tar')	

#新建日志文件	

touch $LogFile	

#追加日志到日志文件	

echo "---------------------------------开始-----------------------------------" >> $LogFile	

echo "gitlab auto backup to remote server, start at $DATE" >> $LogFile	

echo "---------------------------------分割线---------------------------------" >> $LogFile	

echo "remote server is $RemoteUser@$RemoteIP:$BACKUPDIR" >> $LogFile	

#追加日志到日志文件	

echo "---------------------------------结束-----------------------------------" >> $LogFile

自动执行删除过期的gitlab备份文件脚本auto_remove_backup.sh

#!/bin/bash	

#远程备份服务器gitlab备份文件存放路径
GITLABDIR=/var/opt/gitlab/backups # 查找远程备份路径下,超过7天且文件后缀为.tar的gitlab备份文件,然后删除
find $GITLABDIR -type f -mtime +7 -name '*.tar' -exec rm {} \;

自动执行从备份包中恢复gitlab脚本auto_recovery_backup.sh

#!/bin/bash	

#备份文件所在目录	

REMOTEDIRBACKUPS=/var/opt/gitlab/backups	

#找到当日生成的备份文件	

BACKUPFILE=$(sudo find ./ -mtime -1 -name '*.tar')	

#当前系统日期 	

DATE=`date "+%Y-%m-%d-%H-%M-%S"`	

#Log存放路径	

LogFile=$REMOTEDIRBACKUPS/log/$DATE.log	

#新建日志文件	

sudo touch $LogFile	

#追加日志到日志目录	

echo "---------------------------------开始-----------------------------------" >> $LogFile	

echo "gitlab auto recovery, start at $DATE" >> $LogFile	

echo "---------------------------------分割线---------------------------------" >> $LogFile	

#输出日志,打印出当日生成的备份文件	

echo "backup files generated on that day is $BACKUPFILE" >> $LogFile	

#截取出主要文件名	

FILE=$(echo ${BACKUPFILE#*backups/})	

#截取恢复文件名	

RESTOREFILE=$(echo ${FILE%_gitlab*})	

echo "---------------------------------分割线---------------------------------" >> $LogFile	

#输出日志,打印出备份文件复制目标目录	

echo "backup files generated scp to $REMOTEDIRBACKUPS" >> $LogFile	

#进入到目标目录	

cd $REMOTEDIRBACKUPS	

#备份文件权限修改为可读可写可执行	

chmod 777 $FILE	

#停止相关数据连接服务	

sudo gitlab-ctl stop unicorn	

sudo gitlab-ctl stop sidekiq	

#自动化交互,从备份文件恢复gitlab	

sudo /usr/bin/expect -c " 	

set timeout -1	

spawn sudo gitlab-rake gitlab:backup:restore BACKUP=$RESTOREFILE	

expect {	

\"yes/no\" {set timeout -1; send \"yes\n\";exp_continue;}	

\"yes/no\" {set timeout -1; send \"yes\n\"}	

}	

expect eof"	

#开启gitlab	

sudo gitlab-ctl start	

echo "---------------------------------分割线---------------------------------" >> $LogFile	

#输出日志,从备份文件恢复gitlab	

echo "recovery was successful" >> $LogFile	

#追加日志到日志目录	

echo "---------------------------------结束-----------------------------------" >> $LogFile	

参考文献

gitlab官网[2]

ubuntu16.04中gitlab安装[3]

gitlab自动备份[4]

【git学习】在CenterOS系统上恢复GitLab时出现错误:tar: 由于前次错误,将以上次的错误状态退出 unpacking backup failed[5]

如何查看 GitLab 版本号[6]

Linux上Gitlab卸载[7]

git学习------> Gitlab如何进行备份恢复与迁移?[8]

【git学习】在CenterOS系统上安装GitLab并自定义域名访问GitLab管理页面[9]

linux权限补充:rwt rwT rws rwS 特殊权限[10]

References

[1] Linux scp命令: https://www.runoob.com/linux/linux-comm-scp.html[2] gitlab官网: https://about.gitlab.com/install/#ubuntu[3] ubuntu16.04中gitlab安装: https://blog.csdn.net/weixin_38883338/article/details/82153402[4] gitlab自动备份: https://www.jianshu.com/p/a176789fef21[5] 【git学习】在CenterOS系统上恢复GitLab时出现错误:tar: 由于前次错误,将以上次的错误状态退出 unpacking backup failed: https://www.jianshu.com/p/8a287f31a646[6] 如何查看 GitLab 版本号: https://blog.csdn.net/wo18237095579/article/details/81106150[7] Linux上Gitlab卸载: https://www.jianshu.com/p/e2e98c45c244[8] git学习------> Gitlab如何进行备份恢复与迁移?: https://blog.csdn.net/ouyang_peng/article/details/77070977[9] 【git学习】在CenterOS系统上安装GitLab并自定义域名访问GitLab管理页面: https://blog.csdn.net/ouyang_peng/article/details/72903221[10] linux权限补充:rwt rwT rws rwS 特殊权限: https://www.cnblogs.com/qlwy/archive/2011/06/26/2121919.html

原创系列推荐



4. 
5. 
6. 
7. 

回复“加群”与大佬们一起交流学习~

点这,与大家一起分享本文吧~

【Gitlab】371- GitLab从安装到全自动化备份一条龙的更多相关文章

  1. Centos 6.9 安装xtrabackup-2.4.8 通用包,yum安装,全量备份,增量备份

    xtrabackup-2.4.8的安装及使用 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备 ...

  2. xtrabakcup基本用法 安装、全量备份恢复、增量备份恢复

    xtrabackup备份原理以及工作流程 备份流程日志分析:1.##读取mysql配置文件2.## 扫描innodb日志lsn并复制inndodb系统表空间3.## 缓冲写出到数据文件并锁表4.## ...

  3. LTMP手动编译安装以及全自动化部署实践(附详细代码)

    大家使用LNMP架构,一般可以理解为Linux Shell为CentOS/RadHat/Fedora/Debian/Ubuntu/等平台安装LNMP(Nginx/MySQL /PHP),LNMPA(N ...

  4. gitlab和jenkins的安装及使用

    gitlab 准备: 最少4G内存 先安装docker软件包然后使用docker search gitlab 查找镜像然后使用docker pull 镜像名:标签名 下载镜像启动容器: docker ...

  5. Gitlab 安装、升级、备份、恢复、汉化等

    一.Gitlab安装 1. 基于yum方式安装Gitlab 安装步骤如下 (1)配置yum源 # vim /etc/yum.repos.d/gitlab-ce.repo (2)复制如下内容并保存(注意 ...

  6. GitLab在centos7上安装和使用

    git的优点 git是分布式的,svn不是 git分布式本地就可以用,可以随便保存各种历史痕迹,不用担心污染服务器,连不上服务器也能提交代码.查看log. GIT分支和SVN的分支不同 分支在SVN中 ...

  7. gitlab之一: gitlab安装配置使用

    参考: gitlab 安装和配置 gitlab下载地址: https://mirror.tuna.tsinghua.edu.cn/gitlab-ce/ 官方教程: https://about.gitl ...

  8. CentOS7下安装Gitlab社区版【安装步骤、IP改域名、修改端口】

    这两天一直在给公司的服务器配置Gitlab(10.5.4).过程很是痛苦,所以把过程记录一下. 1.安装CentOS7 从官网上下载了最新版CentOS-7-x86_64-DVD-1708.iso.用 ...

  9. 【Git】 GitLab服务器社区版安装与配置

    GitLab简介 GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务 GitLab系统架构 当~git在图片中引用时,它表示git用户的主目录 ...

随机推荐

  1. [增强for循环] 格式

    比如:

  2. mybatis的parameterType为map,map里带有多个list

    我写这个主要是为了解决sql注入 原sql有sql注入, 结果:select req_msg_id from account_message_info where req_msg_id in ('12 ...

  3. Ubuntu 16.04.4 安装openjdk各种问题

    不知道为什么会如此曲折,一个问题接一个,如果你也遇到问题,可以参考参考 问题1:......has no installation andidate,解决如下(不理解): 参考https://asku ...

  4. pat 1149 Dangerous Goods Packaging(25 分)

    1149 Dangerous Goods Packaging(25 分) When shipping goods with containers, we have to be careful not ...

  5. hdu 1556 Color the ball (技巧 || 线段树)

    Color the ballTime Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  6. nyoj 599-奋斗的小蜗牛 (double ceil(); (temp - 1) / 5)

    599-奋斗的小蜗牛 内存限制:64MB 时间限制:1000ms 特判: No 通过数:0 提交数:96 难度:1 题目描述: 传说中能站在金字塔顶的只有两种动物,一种是鹰,一种是蜗牛.一只小蜗牛听了 ...

  7. nyoj 204-Coin Test (python count)

    204-Coin Test 内存限制:64MB 时间限制:3000ms 特判: No 通过数:2 提交数:2 难度:1 题目描述: As is known to all,if you throw a ...

  8. 微服务架构 - Jimu(积木) 升级 1.0.0 支持 .Net Core 3.0

    如果不知道 Jimu(积木) 是啥,请移步 .Net Core 分布式微服务框架介绍 - Jimu 这次升级除了支持 .Net Core 3.0 还新增部分功能,如 REST, 链路跟踪等,以下为详细 ...

  9. 解构ffmpeg(一)

    ffmpeg应用程序项目将其核心库libav*的使用或编程抽象成FilterGraph,InputFile,OutputFile,InputStream,OutputStream,InputFilte ...

  10. tomcat-9.0.20缓存空间不足

    问题2:启动时候报这样的警告:警告 [main] org.apache.catalina.webresources.Cache.getResource 无法将位于[/WEB-INF/classes/t ...