自建代码托管平台 Gitlab 的使用说明(三)备份和恢复

备份

GitLab作为公司项目代码的版本管理系统,数据非常重要,必须做好备份。

修改备份目录

GitLab备份的默认目录是 /var/opt/gitlab/backups ,如果想改备份目录,可修改/etc/gitlab/gitlab.rb:

自建代码托管平台 Gitlab 的使用说明(三)备份和恢复_第1张图片

自建代码托管平台 Gitlab 的使用说明(三)备份和恢复_第2张图片

 修改配置后,记得:

gitlab-ctl reconfigure

重新加载配置 gitlab-ctl 。

备份命令

gitlab-rake gitlab:backup:create

自建代码托管平台 Gitlab 的使用说明(三)备份和恢复_第3张图片

该命令会在备份目录(默认:/var/opt/gitlab/backups/)下创建一个tar压缩包xxxxxxxx_gitlab_backup.tar,其中开头的xxxxxx是备份创建的时间戳,这个压缩包包括GitLab整个的完整部分

自动备份

在crontab文件里面,每一行代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,每个字段之间用空格分割,没用的段用*代替,格式如下:

m h dom mon dow user command

其中:

  • m: 表示分钟,可以是从0到59之间的任何整数。
  • h:表示小时,可以是从0到23之间的任何整数。
  • dom:表示日期,可以是从1到31之间的任何整数。
  • mon:表示月份,可以是从1到12之间的任何整数。
  • dow:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
  • user : 表示执行的用户。
  • command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件(如shell文件)。

实现每天凌晨2点进行一次自动备份:通过crontab使用备份命令实现,需重启cron服务

方法1、在命令行输入: crontab -e

自建代码托管平台 Gitlab 的使用说明(三)备份和恢复_第4张图片

然后添加相应的任务

0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1

wq存盘退出。

自建代码托管平台 Gitlab 的使用说明(三)备份和恢复_第5张图片

方法2、直接编辑/etc/crontab 文件,即vi /etc/crontab,然后添加相应的任务

# 编辑 /etc/crotab

sudo vi /etc/crontab

自建代码托管平台 Gitlab 的使用说明(三)备份和恢复_第6张图片

然后再编辑框内输入相应的任务

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

0 2 * * * root /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1

 

备份保留7天

可设置只保留最近7天的备份,编辑配置文件 /etc/gitlab/gitlab.rb

# 数值单位:秒

gitlab_rails['backup_keep_time'] = 604800

重新加载gitlab配置文件 : gitlab-ctl reconfigure

恢复

备份文件:

停止 unicorn 和 sidekiq ,保证数据库没有新的连接,不会有写数据情况。

# 停止相关数据连接服务

gitlab-ctl stop unicorn

gitlab-ctl stop sidekiq

自建代码托管平台 Gitlab 的使用说明(三)备份和恢复_第7张图片

# 指定恢复文件,会自动去备份目录找。确保备份目录中有这个文件。

# 指定文件名的格式类似:1590153351_2020_05_22_12.10.6 , 程序会自动在文件名后补上:“_gitlab_backup.tar”

# 一定要按照这样的格式指定,否则会程序 The backup file does not exist ! 的错误

gitlab-rake gitlab:backup:restore BACKUP=1590153351_2020_05_22_12.10.6

自建代码托管平台 Gitlab 的使用说明(三)备份和恢复_第8张图片

# 启动Gitlab

gitlab-ctl start

自建代码托管平台 Gitlab 的使用说明(三)备份和恢复_第9张图片

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Git)