使用GitLab自带的gitlab-rake命令创建全量备份,包含仓库、数据库、用户、权限等所有关键数据。
命令:sudo gitlab-rake gitlab:backup:create
默认存储路径:/var/opt/gitlab/backups(可通过配置文件修改)。
编辑/etc/gitlab/gitlab.rb文件,自定义备份路径、文件权限和保留时间:
gitlab_rails['backup_path'] = "/data/gitlab/backups" # 修改备份路径
gitlab_rails['backup_archive_permissions'] = 0644 # 设置备份文件权限
gitlab_rails['backup_keep_time'] = 604800 # 保留7天备份(单位:秒)
修改后执行sudo gitlab-ctl reconfigure使配置生效。
使用crontab设置定时任务,例如每天凌晨2点执行备份:
crontab -e
添加以下内容:
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
说明:CRON=1参数表示以定时任务模式运行,避免生成不必要的日志。
unicorn(Web服务)和sidekiq(后台任务)进程:sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
1672232546_2023_01_01_15.0.0_gitlab_backup.tar)复制到/var/opt/gitlab/backups目录。使用gitlab-rake命令恢复备份,需指定备份文件的时间戳部分(即文件名中_前的数字):
sudo gitlab-rake gitlab:backup:restore BACKUP=1672232546
注意:恢复过程中会提示“是否覆盖现有数据”,输入yes确认。
sudo gitlab-ctl start