原文地址[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. nyoj 116 士兵杀敌(二)(线段树、单点更新)

    士兵杀敌(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:5   描述 南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的. 小工是南将军手下的军师,南将军经常 ...

  2. nyoj 69-数的长度 (log10(),计算数的位数)

    69-数的长度 内存限制:64MB 时间限制:3000ms 特判: No 通过数:10 提交数:13 难度:1 题目描述: N!阶乘是一个非常大的数,大家都知道计算公式是N!=N*(N-1)····· ...

  3. nyoj 274-正三角形的外接圆面积 (R = PI * a * a / 3)

    274-正三角形的外接圆面积 内存限制:64MB 时间限制:1000ms 特判: No 通过数:14 提交数:22 难度:0 题目描述: 给你正三角形的边长,pi=3.1415926 ,求正三角形的外 ...

  4. centos安装后第一次重启,许可协议、Kdump

    1.许可协议,服务器键盘操作找到许可 确定(遇到过,第一次懵逼了) 2.Kdump是RHEL提供的一个崩溃转储功能,用于在系统发生故障时提供分析数据,它会占用系统内存,一般选择关闭(默认是关闭)(这个 ...

  5. fiddler工具使用大全

    Fiddler基础知识 Fiddler是强大的抓包工具,它的原理是以web代理服务器的形式进行工作的,使用的代理地址是:127.0.0.1,端口默认为8888,我们也可以通过设置进行修改. 代理就是在 ...

  6. 遗忘root密码,应该如何修改?[CentOS7.5]

    https://www.lanzous.com/i71hw6d 下载视频演示 实验环境:VMware Workstation [CentOS7.5]遗忘root用户密码 应该如何修改??? 设置BIO ...

  7. linux 如何把一个装好的系统做成镜像(文件备份)

    linux 如何把一个装好的系统做成镜像(文件备份)  我来答 浏览 11851 次来自电脑网络类芝麻团 2016-01-19 案例1(命令式操作) 像'ghost'那些备份系统,系统出了问题就恢复 ...

  8. python容器类型集合的操作

    集合(set):集合是一个无序的序列,集合中的元素可以是任意数据类型:表现形式是set(集合的元素),能够实现自动去重:集合传入的必须是一个hashable类型值,(不能存储字典格式的值):并且创建集 ...

  9. 用PHP实现一个简易版文件上传功能(超详细讲解)

    1. php简化版的图片上传(没有各种验证) 1 2 3 4 <form action="" enctype="multipart/form-data" ...

  10. [题解]洛谷P1094——纪念品分组

    原题链接: https://www.luogu.org/problem/P1094 题目简述: 有NNN件纪念品,每个纪念品都有特定的价格,要求将他们分组,每组纪念品之和不得超过MMM,并且每组最多只 ...