GitLab定时备份及恢复

gitlab备份、迁移、恢复和升级指南

背景:在项目中使用Linux服务器作为Gitlab仓库,需要每天自动定时备份数据到Windows上,以防止服务器磁盘损坏导致数据丢失。

操作步骤:

  1. Gitlab备份操作:执行备份操作后,备份文件会默认生成在/var/opt/gitlab/backups文件夹下。
[root@master opt]# ls /var/opt/gitlab/backups/1596532146_2020_08_04_13.1.4_gitlab_backup.tar  1596532193_2020_08_04_13.1.4_gitlab_backup.tar
  1. 配置Linux访问Windows免密登录:为了方便Shell脚本通过scp传输Gitlab备份文件,需配置Linux对Windows的免密登录。具体配置方法请参考:Win7安装OpenSSH服务,并配置Linux对Windows免密登录。

  2. 编写Shell导出脚本:以下是用于导出备份文件到Windows的Shell脚本示例:

#!/bin/sh
scp_linux_path='/var/opt/gitlab/backups/'
scp_windows_uri='user@192.168.1.58:E:\tmp'
scp_log_path='/opt/gitlabscp.log'
time=$(date +%Y-%m-%d\ %H:%M:%S)
gitlab-rake gitlab:backup:create
filename=`ls $scp_linux_path -t |head -n1|awk '{print $0}'`
echo [$time] $scp_linux_path$filename >> $scp_log_path
scp $scp_linux_path$filename $scp_windows_uri
  1. 配置Linux定时任务:通过以下命令配置Linux的定时任务,每天凌晨1点定时将Gitlab备份文件导出到Windows主机。
0 1 * * * /opt/gitlabscp.sh

注意:Linux的crontab cron表达式的最小单位为分钟。

  1. Gitlab恢复:恢复Gitlab数据时,需停止相关服务,修改备份文件权限,执行恢复操作,然后启动Gitlab并通过UI界面查看恢复是否成功。