温馨提示×

Debian中GitLab备份与恢复方法

小樊
58
2025-09-01 11:55:45
栏目: 智能运维

Debian系统中GitLab备份与恢复方法

一、备份方法

1. 基础备份操作

使用GitLab内置的gitlab-rake命令创建全量备份,包含代码库、数据库、用户/组权限、SSH密钥等所有数据。执行命令后,备份文件默认存储在/var/opt/gitlab/backups目录,文件名为TIMESTAMP_gitLAB_BACKUP.tarTIMESTAMP为备份创建时间,如1715000000_2025_05_06_12.0.0_gitlab_backup.tar)。
命令

sudo gitlab-rake gitlab:backup:create

2. 修改备份配置

若需更改备份存储路径或保留时间,需编辑GitLab主配置文件/etc/gitlab/gitlab.rb

  • 修改备份路径:设置gitlab_rails['backup_path']为自定义目录(如/data/gitlab/backups);
  • 设置备份保留时间:通过gitlab_rails['backup_keep_time']指定备份有效期(单位:秒,如604800表示保留7天)。
    修改完成后,执行sudo gitlab-ctl reconfigure使配置生效。

3. 定时自动备份

通过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
    

4. 关键注意事项

  • 备份敏感文件gitlab.rb(配置信息)、gitlab-secrets.json(加密密钥)需手动备份(建议存放到安全位置,如加密U盘),恢复时需重新放置到/etc/gitlab/目录;
  • 版本一致性:恢复前需确保新服务器的GitLab版本与原服务器一致,避免版本不兼容导致恢复失败;
  • 测试恢复流程:定期选取备份文件进行恢复测试,验证备份的有效性。

二、恢复方法

1. 准备工作

  • 停止相关服务:恢复前需停止GitLab的关键服务(unicorn、sidekiq),避免数据冲突:
    sudo gitlab-ctl stop unicorn
    sudo gitlab-ctl stop sidekiq
    

2. 执行恢复操作

  • 恢复全量备份:使用gitlab-rake命令恢复指定备份文件(BACKUP参数为备份文件的时间戳,如1715000000):
    sudo gitlab-rake gitlab:backup:restore BACKUP=1715000000
    
    执行过程中需输入yes确认恢复操作。

3. 启动GitLab服务

恢复完成后,重启GitLab所有服务:

sudo gitlab-ctl start
# 或重启单个服务(如unicorn、sidekiq)
sudo gitlab-ctl restart unicorn
sudo gitlab-ctl restart sidekiq

4. 验证恢复结果

  • 打开GitLab Web界面(默认地址http://服务器IP),使用原账号登录;
  • 检查项目仓库、用户权限、代码提交记录等数据是否完整恢复。

0