Debian系统中GitLab备份与恢复方法
使用GitLab内置的gitlab-rake命令创建全量备份,包含代码库、数据库、用户/组权限、SSH密钥等所有数据。执行命令后,备份文件默认存储在/var/opt/gitlab/backups目录,文件名为TIMESTAMP_gitLAB_BACKUP.tar(TIMESTAMP为备份创建时间,如1715000000_2025_05_06_12.0.0_gitlab_backup.tar)。
命令:
sudo gitlab-rake gitlab:backup:create
若需更改备份存储路径或保留时间,需编辑GitLab主配置文件/etc/gitlab/gitlab.rb:
gitlab_rails['backup_path']为自定义目录(如/data/gitlab/backups);gitlab_rails['backup_keep_time']指定备份有效期(单位:秒,如604800表示保留7天)。sudo gitlab-ctl reconfigure使配置生效。通过crontab设置定时任务,实现定期自动备份及旧备份清理。例如,每天凌晨2点执行备份,并删除10天前的备份文件:
/var/opt/gitlab/backups/gitlabbak.sh,内容如下:#!/bin/bash
/opt/gitlab/bin/gitlab-rake gitlab:backup:create
sleep 10 # 等待备份完成
find /var/opt/gitlab/backups -name "*.tar" -type f -mtime +10 -exec rm -rf {} \; # 删除10天前的备份
sudo chmod +x /var/opt/gitlab/backups/gitlabbak.sh;sudo crontab -e,添加以下行(每天凌晨2点执行):0 2 * * * /var/opt/gitlab/backups/gitlabbak.sh > /dev/null 2>&1
gitlab.rb(配置信息)、gitlab-secrets.json(加密密钥)需手动备份(建议存放到安全位置,如加密U盘),恢复时需重新放置到/etc/gitlab/目录;sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
gitlab-rake命令恢复指定备份文件(BACKUP参数为备份文件的时间戳,如1715000000):sudo gitlab-rake gitlab:backup:restore BACKUP=1715000000
执行过程中需输入yes确认恢复操作。恢复完成后,重启GitLab所有服务:
sudo gitlab-ctl start
# 或重启单个服务(如unicorn、sidekiq)
sudo gitlab-ctl restart unicorn
sudo gitlab-ctl restart sidekiq
http://服务器IP),使用原账号登录;