温馨提示×

ubuntu上gitlab备份恢复方法

小樊
45
2025-10-06 07:19:45
栏目: 智能运维

Ubuntu系统GitLab备份恢复方法

一、GitLab备份方法

1. 准备工作

备份前需停止GitLab核心服务,确保数据一致性:

sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq

2. 手动执行完整备份

使用gitlab-rake命令备份仓库、数据库、用户及配置等信息,备份文件默认存储在/var/opt/gitlab/backups目录:

sudo gitlab-rake gitlab:backup:create

若需立即执行(而非等待定时任务),可添加CRON=1参数:

sudo gitlab-rake gitlab:backup:create CRON=1

3. 配置备份路径与保留时间

修改/etc/gitlab/gitlab.rb配置文件,自定义备份存储路径(如/data/backups/gitlab)和保留时长(如7天):

sudo vim /etc/gitlab/gitlab.rb

添加/修改以下内容:

gitlab_rails['backup_path'] = "/data/backups/gitlab"
gitlab_rails['backup_keep_time'] = 604800  # 单位:秒(7天)

保存后重新加载配置并重启GitLab:

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

4. 设置定时自动备份

通过crontab设置每日凌晨2点自动执行备份任务:

sudo crontab -e

添加以下行:

0 2 * * * /usr/bin/gitlab-rake gitlab:backup:create

5. 可选:增量备份(节省空间)

使用rsync同步备份目录到远程服务器或本地其他磁盘,排除临时文件:

sudo rsync -avz --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /var/opt/gitlab/ /path/to/remote/backup/

二、GitLab恢复方法

1. 准备工作

恢复前需停止GitLab相关服务,避免数据冲突:

sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq

2. 恢复完整备份

将备份文件(如gitlab_backup_1679122231_2024_06_41_13.9.7.tar)复制到备份目录(如/var/opt/gitlab/backups),并赋予可执行权限:

sudo cp /path/to/backup/file.tar /var/opt/gitlab/backups/
sudo chmod 777 /var/opt/gitlab/backups/file.tar

执行恢复命令,指定备份文件名(无需.tar扩展名):

sudo gitlab-rake gitlab:backup:restore BACKUP=1679122231_2024_06_41_13.9.7

3. 恢复配置与证书(若有单独备份)

若之前备份了配置文件(/etc/gitlab/gitlab.rb)和SSL证书(/etc/gitlab/ssl),需复制回原目录:

sudo cp /path/to/backup/gitlab.rb /etc/gitlab/gitlab.rb
sudo cp -r /path/to/backup/ssl /etc/gitlab/

4. 重启GitLab服务

恢复完成后,重新启动GitLab服务:

sudo gitlab-ctl start

5. 验证恢复结果

通过GitLab Web界面登录,检查仓库、用户、权限等数据是否完整,确保实例正常运行。

三、注意事项

  1. 版本一致性:恢复时GitLab版本需与备份时的版本一致,否则会提示版本不匹配错误。
  2. 备份安全性:备份文件包含敏感信息(如用户密码、SSH密钥),需存储在加密或受保护的存储介质中(如远程服务器、云存储)。
  3. 定期测试恢复:每季度至少测试一次恢复流程,确保备份文件可用,避免灾难发生时无法恢复数据。
  4. 自动备份监控:通过邮件或日志监控定时备份任务的执行状态,及时处理失败情况。

0