手把手带你恢复代码仓库到新站点
Posted webmote
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手把手带你恢复代码仓库到新站点相关的知识,希望对你有一定的参考价值。
一般代码托管在私有的GitLab仓库内,如果启用了定时备份,GitLab会定期备份仓库数据到文件,但是由于某些原因,我们需要把它恢复到新的站点,怎么办呢?
1.恢复仓库工作
利用gitlab的备份文件,恢复仓库数据到新站点,并修改管理员账号。
由此可知,我们如果想对代码仓进行备份,备份好gitlab的定期备份即可随时恢复代码仓库,也提醒运维工程师们,保护好代码仓库的备份文件至关重要。
2. 准备好备份文件
备份文件大都以一个自编号id为开头的文件,形如: 1523321222… tar文件。
重要提示
:以目标IP为 192.168.0.115的机器为例,我们需要先安装好Gitlab,注意Gitlab的安装必须和备份文件的版本一致。
如果忘记了gitlab的版本,可以打开上述的备份文件,查看backup_information.yml
,这个文件标记了所使用的的GitLab版本。
3.拷贝备份文件到指定路径
GitLab的备份文件一般比较大,几个G都是稀松平常的,并且Gitlab 的备份恢复,必须在Gitlab的备份目录,因此我们需要先配置下新安装的GitLab。
- 编辑gitlab的配置文件
vi /etc/gitlab/gitlab.rb
gitlab_rails['manage_backup_path'] = true
# gitlab备份目录
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
# 生成的备份文件权限
gitlab_rails['backup_archive_permissions'] = 0644
# 备份保留天数为3个月(即90天,这里是7776000秒)
gitlab_rails['backup_keep_time'] = 7776000
编辑完配置,需要让它生效.
# 给备份目录授权
# chown -R git.git /var/opt/gitlab/backups
chmod -R 777 /var/opt/gitlab/backups
# 启动新配置
gitlab-ctl reconfigure
过大的文件,我们可以利用scp进行传送拷贝.
scp .\\10334499332_gitlab_backup.tar root@192.168.0.115:/var/opt/gitlab/backups/
4.进行仓库恢复
登陆到目标机器(192.168.0.115),我们需要先停止gitlab的运行,然后使用命令恢复,步骤如下:
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
# 10334499332是你需要恢复的文件编号,
# 就是我们拷贝的文件的10334499332_gitlab_backup.tar的前面前缀
# 舍弃_gitlab_backup.tar,恢复文件会自动增加
gitlab-rake gitlab:backup:restore BACKUP=10334499332
5.恢复过程选择
Gitlab的恢复操作会先将当前所有的数据清空,然后再根据备份数据进行恢复。因此,如果你之前有数据要保留的话,请谨慎操作。
操作过程中如果有询问,请键入 yes
。
# 操作过程日志
Unpacking backup ... done
Before restoring the database we recommend removing all existing
tables to avoid future upgrade problems. Be aware that if you have
custom tables in the GitLab database these tables and all data will be
removed.
Do you want to continue (yes/no)? yes
........
ALTER TABLE
ALTER TABLE
WARNING: no privileges were granted for "public"
GRANT
[DONE]
done
Restoring repositories ...
* abc/abc ... [DONE]
* test/test ... [DONE]
Put GitLab hooks in repositories dirs [DONE]
done
Restoring uploads ...
done
Restoring builds ...
done
Restoring artifacts ...
done
Restoring pages ...
done
Restoring lfs objects ...
done
This will rebuild an authorized_keys file.
You will lose any data stored in authorized_keys file.
Do you want to continue (yes/no)? yes
Deleting tmp directories ... done
done
done
done
6.重启gitlab
键入命令重启
gitlab-ctl start
# 检查下组件状态
gitlab-ctl status
一切OK,就说明搞定了,可以登陆试试了(注意,稍微等待几分钟,效果更佳,哈哈~~ 喝前摇一摇,问题比较少!
)。
什么? 忘了密码, 好的,再来个密码改写,安排!
7.改写管理员密码
利用 gitalb-rails进行操作。
# 登陆数据库
gitlab-rails console production
# 找到 root 账号
user = User.where(id: 1).first
# 修改密码
user.password = ‘12345678
# 保存
user.save!
然后使用新密码登陆即可!
8.小结
再次声明下,代码仓库非常重要,请运维人员一定要注意安排定期备份,遥想当年,某运维一个个走访开发要求上传代码的悲痛经历,那酸楚,估计是谁用谁知道!
以上是关于手把手带你恢复代码仓库到新站点的主要内容,如果未能解决你的问题,请参考以下文章
手把手带你使用webpack4构建一个Vue开发编译环境,并实现代码分割,css代码分离
手把手带你搞定C语言实现三子棋游戏,让你的代码有趣起来(超详细教程,从思路到代码,快码起来!)