文章目录

  • 1.GitLab中的备份
  • 2. GitLab如何实现备份
  • 3. 定时备份


1.GitLab中的备份

  1. Gitlab中提供的备份机制,不会备份配置文件,所以需要手动备份配置目录和相关文件。备份指令之所以不备份配置文件,是因为数据库中包含一些加密的信息。加密信息的密钥存放在备份目录下,如果放在一个地方,会违背信息加密的安全目的。
  2. 一般来说,对于使用rpm包安装的GitLab,所有的默认配置都在/etc/gitlab目录下,其中最重要的是/etc/gitlab/gitlab.rb和/etc/gitlab/gitlab-secrets.json这两个文件。gitlab.rb是主配置文件,包含外部URL、仓库目录、备份目录等重要配置。gitlab-secrets.json包含数据库的加密密钥、双重认证的密钥、GitLab CI的密钥等加密信息

2. GitLab如何实现备份

  1. 备份/etc/gitlab/gitlab.rb
  • backup_path表示备份的目录,默认是/var/opt/gitlab/backups
  • backup_archive_permissions是GitLab备份生成的tar格式的压缩包,默认git:git用户和群组,默认文件权限是0600,可以防止其他系统用户获取GitLab的数据。如果要修改备份包的权限,可以修改该参数,比如,改成0644即具有可读的权限。
  • backup_keep_time表示备份的保留时间。如果备份压缩包太多,会导致磁盘空间一直被占用,所以可以给备份包设置最长的保留时间,每次备份任务时会把超过保留时间的旧备份包删除,备份的保留时间默认是604800s,即7天。具体设置如下:
vim /etc/gitlab/gitlab.rb

编辑gitlab主配置文件,增加如下配置信息,保存并退出。

gitlab_rails['backup_path'] = "/mnt/gitlab/backup"
gitlab_rails['backup_archive_permissions'] = 0644
gitlab_rails['backup_keep_time'] = 604800

gitlab 分支调整目录结构 gitlab数据目录_定时任务


2. 重新加载配置信息,使其生效

gitlab-ctl reconfigure
  1. 执行备份指令
gitlab-rake gitlab:backup:create

gitlab 分支调整目录结构 gitlab数据目录_定时任务_02


4. 查看备份目录下新的文件

备份文件采用tar包格式,文件命名规则是EPOCH_YYYY_MM_DD_GitLab 版本号 _gitlab_backup.tar,可以看出此命名规则会带上时间戳和GitLab的版本号信息。

ls -al /mnt/gitlab/backup/

gitlab 分支调整目录结构 gitlab数据目录_定时任务_03

3. 定时备份

定时备份的实现是使用Linux系统中的crontab任务进行的,具体实现如下:

  1. 通过命令创建crontab任务。每天凌晨2点执行一次备份任务(根据自己需求设定定时任务的执行时间和次数)。
# 执行如下命令
crontab -e

新建定时任务

# 新建定时任务
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1

查看定时任务列表

crontab -l

gitlab 分支调整目录结构 gitlab数据目录_配置文件_04


至此,已完成Gitlab的备份工作。