目录
复习一下:简单高效的数据备份恢复
Get 新功能,跳过无需备份的项目,让磁盘空间“大瘦身”
💡 最近,极狐GitLab 推送了最新的 16.2 版本,本文将详解新功能之「在备份时跳过项目」,即在备份时通过设置来跳过某些特定项目,从而缩短备份时间,并减少对磁盘空间占用。Enjoy~
代码是企业的核心资产,高效的备份恢复机制是保证核心资产安全、可用的重要手段之一。
极狐GitLab 提供完善的数据备份恢复功能,用户可根据自身需求完成极狐GitLab 整体数据的备份;也可以将数据恢复至备份前,避免因误操作、勒索攻击、数据损坏等意外情况导致数据丢失、不可用等问题。
但随着团队扩大、产品增多,实例上的仓库数量和仓库大小都会增加,如果每次备份都将实例上存在的所有仓库进行备份,就会带来两个问题:
-
备份时间越来越长:需要备份的数据量越来越大,耗时变长;
-
所需磁盘空间越来越大:备份文件的体积越来越大,且随着备份文件的积累,所需的磁盘空间将是巨大的。
而且,并非所有的仓库都是有效仓库,需要备份,比如已经归档的仓库、研发用来测试验证或者学习用的仓库等就无需备份。
为了解决上述问题,实现更灵活的备份能力,极狐GitLab 推出「在备份时跳过项目」这一功能。
复习一下:简单高效的数据备份恢复
使用 gitlab-backup create
即可完成极狐GitLab 的数据备份,默认的备份文件会保存在 /var/opt/gitlab/backups
目录下,格式为 TIMESTAMP_jh_gitlab_backup.tar
。
# 开始备份
$ gitlab-backup create
2023-07-27 09:26:16 UTC -- Dumping database ...
Dumping PostgreSQL database gitlabhq_production ... [DONE]
2023-07-27 09:26:19 UTC -- Dumping database ... done
......太长,删除部分备份日志......
2023-07-27 09:27:59 UTC -- Warning: Your gitlab.rb and gitlab-secrets.json files contain sensitive data
and are not included in this backup. You will need these files to restore a backup.
Please back them up manually.
2023-07-27 09:27:59 UTC -- Backup 1690449976_2023_07_27_16.1.2-jh is done.
2023-07-27 09:27:59 UTC -- Deleting backup and restore PID file ... done
# 查看备份文件
$ cd /var/opt/gitlab/backups
$ ls *.tar
1690449976_2023_07_27_16.1.2-jh_gitlab_backup.tar
Get 新功能,跳过无需备份的项目,让磁盘空间“大瘦身”
「在备份时跳过项目」功能整体的实现主要通过环境变量 SKIP_REPOSITORIES_PATHS
。在备份的时候,如果需要跳过特定项目,将该项目的路径设为上述环境变量的值即可,如果是多个,则以逗号隔开。
$ gitlab-backup create SKIP_REPOSITORIES_PATHS=group-name/project-name
为验证提效效果,在私有化部署的极狐GitLab(版本为 16.2)上创建三个仓库,分别存储大小为 1.6 G、453.1 M 及 960.8 KB 的制品。
仓库大小的查询路径为项目 → 设置 → 使用量配额。
使用如下命令对所有仓库进行备份:
gitlab-backup create
使用如下命令跳过特定仓库进行备份:
gitlab-backup create SKIP_REPOSITORIES_PATHS=backup-and-restore/large-size-repo
通过设置跳过不同大小的仓库来查看备份过程所花费时间和备份文件的大小:
备份文件的大小统一使用
du -sh
命令查看得出
上述例子中,跳过 large、medium 仓库再备份与全部备份相比,备份时长缩短了 5 倍,空间节省了 1344 倍,并且,跳过的仓库体积越大,备份所需时间越短,所生成的备份文件体积也越小。
注意:在之前的版本中,极狐GitLab 还发布了关于备份恢复的其他新功能,比如使用环境变量 REPOSITORIES_PATHS
来只备份特定仓库。现在可以和 SKIP_REPOSITORIES_PATHS
结合,实现对于仓库的精细化备份:
gitlab-backup create REPOSITORIES_PATHS=group-a,group-b/project-c SKIP_REPOSITORIES_PATHS=group-a/project-d