温馨提示×

CentOS中GitLab备份与恢复方法

小樊
48
2025-07-20 17:50:44
栏目: 智能运维

在CentOS系统中备份和恢复GitLab主要包括以下步骤:

备份方法

  1. 手动备份
  • 编辑GitLab配置文件: 打开 /etc/gitlab/gitlab.rb 文件,设置备份路径和其他相关配置。

    sudo vim /etc/gitlab/gitlab.rb
    

    找到并修改以下配置项:

    gitlab_rails['backup_path'] "/opt/gitlab-backups"
    gitlab_rails['backup_keep_time'] 2592000 # 设置备份文件保存的时间,单位为秒
    

    设置备份路径为你希望存储备份文件的目录,并设置备份文件的保留时间(例如,保留7天的备份)。

  • 创建备份: 使用以下命令手动创建备份:

    sudo gitlab-rake gitlab:backup:create
    

    备份文件默认路径为 /var/opt/gitlab/backups,文件名类似 1473314665_gitlab_backup.tar

  • 备份脚本: 可以创建一个备份脚本,结合 cron 实现自动定时备份。

    sudo nano /path/to/backup_gitlab.sh
    

    添加以下内容:

    #!/bin/bash
    BACKUP_DIR="/path/to/backup/directory/"
    rsync -avz --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lostfound"} /var/opt/gitlab/ $BACKUP_DIR
    tar czvf gitlab_backup_$(date +%Y%m%d).tar.gz -C /var/opt/gitlab/ .
    

    保存并退出编辑器,然后给予脚本执行权限:

    sudo chmod +x /path/to/backup_gitlab.sh
    

    添加 cron 任务来定期运行备份脚本:

    sudo crontab -e
    

    添加以下行来每天凌晨1点运行备份脚本:

    0 1 * * * /path/to/backup_gitlab.sh
    
  1. 定时备份
  • 使用 crontab 设置定时任务来自动执行备份。例如,每天凌晨2点执行备份:
    0 2 * * * /usr/bin/gitlab-rake gitlab:backup:create
    

恢复方法

  1. 准备工作
  • 确保备份文件完整。
  • 停止GitLab服务:
    sudo gitlab-ctl stop unicorn
    sudo gitlab-ctl stop sidekiq
    
  1. 恢复数据库
  • 解压备份文件:
    sudo tar -xzf gitlab_backup.tar.gz
    
  • 恢复数据库:
    sudo gitlab-rake gitlab:backup:restore BACKUP=备份文件名
    
    备份文件名 替换为实际的备份文件名。
  1. 恢复仓库文件
  • 拷贝仓库文件到指定目录:
    sudo cp -r repositories/* /var/opt/gitlab/git-data/repositories/
    
  1. 启动GitLab服务
  • 恢复完成后,启动GitLab服务:
    sudo gitlab-ctl start
    
    或者
    sudo gitlab-ctl restart
    

注意事项

  • 在创建备份的过程中,GitLab会先备份数据库和仓库文件,然后通过这些文件合并成一个备份压缩包,最后删除文件,只剩一个备份压缩包。因此,需要预留足够大的备份空间。
  • 恢复过程中需要停止所有写入操作,以确保数据一致性。
  • 备份文件中不包含 gitlab.rbgitlab-secrets.json 配置文件,这些需要手动备份。
  • 通过上述步骤,可以在CentOS上为GitLab设置有效的备份和恢复策略,确保数据安全和业务连续性。

以上就是在CentOS系统上备份和恢复GitLab的基本步骤和注意事项,希望对您有所帮助。

0