温馨提示×

ubuntu中gitlab备份如何操作

小樊
38
2025-11-23 03:59:47
栏目: 智能运维

Ubuntu 上 GitLab 备份操作指南

一 准备与默认路径

  • 备份前确认 GitLab 已安装并运行,备份命令需要 root 或具有 sudo 权限执行。
  • 默认备份目录为:/var/opt/gitlab/backups,生成的归档文件名通常包含时间戳,例如:gitlab_backup-YYYY-MM-DDTHHMMSS.tar。如需自定义备份目录与保留策略,可编辑 /etc/gitlab/gitlab.rb 并重新加载配置。

二 手动立即备份

  • 执行备份命令(推荐在业务低峰期进行):
    • 命令:sudo gitlab-rake gitlab:backup:create
    • 说明:该命令会备份仓库、数据库、上传文件、CI/CD 相关数据等到默认目录。若需静默输出(常用于定时任务),可加 CRON=1
  • 如需自定义备份目录,先在 /etc/gitlab/gitlab.rb 中设置:
    • 配置示例:
      • gitlab_rails[‘manage_backup_path’] = true
      • gitlab_rails[‘backup_path’] = “/data/gitlab-backups”
      • gitlab_rails[‘backup_keep_time’] = 604800(保留 7 天,单位为秒)
    • 使配置生效:sudo gitlab-ctl reconfigure
    • 确认目录存在并具备合适权限(示例):
      • sudo mkdir -p /data/gitlab-backups
      • sudo chown -R git:git /data/gitlab-backups
      • sudo chmod -R 0700 /data/gitlab-backups
  • 备份完成后,核对归档是否生成:
    • 命令:ls -l /var/opt/gitlab/backups(或查看你配置的自定义目录)。

三 自动定时备份与远程异地备份

  • 本地定时备份(crontab)
    • 编辑 root 的定时任务:sudo crontab -e
    • 示例(每天 02:00 执行):0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
    • 如需按保留天数自动清理,可在备份后执行删除命令(示例保留 30 天):
      • find /var/opt/gitlab/backups -type f -mtime +30 -delete
  • 远程异地备份(示例脚本思路)
    • 在备份服务器配置免密登录(在 GitLab 服务器执行):
      • ssh-keygen -t rsa
      • ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote-server
    • 备份脚本示例(/usr/local/bin/gitlab_backup_remote.sh):
      • 内容:
        • #!/bin/bash
        • LOCAL_DIR=$(grep ‘^\sgitlab_rails["backup_path"]’ /etc/gitlab/gitlab.rb | sed 's/.“(.*)”/\1/’)
        • [ -z “$LOCAL_DIR” ] && LOCAL_DIR=“/var/opt/gitlab/backups”
        • DATE=$(date +“%Y-%m-%d”)
        • /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
        • NEW_BACKUP=$(ls -1t “$LOCAL_DIR”/*.tar | head -n1)
        • scp “$NEW_BACKUP” user@remote-server:/path/to/backup/ 2>> “$LOCAL_DIR/backup.log”
    • 给脚本执行权限并加入 crontab(如:0 3 * * * /usr/local/bin/gitlab_backup_remote.sh)。

四 备份文件管理与注意事项

  • 备份保留策略:在 gitlab.rb 中通过 gitlab_rails[‘backup_keep_time’] 设置保留秒数(如 6048007 天),并可用系统任务定期清理过期归档。
  • 备份内容范围:标准备份包含仓库、数据库、上传文件、CI/CD 相关数据等;若需连同配置文件一并离线保存,建议额外备份 /etc/gitlab/gitlab.rb/etc/gitlab/gitlab-secrets.json(手动拷贝即可,恢复时放在相同路径)。
  • 版本一致性:进行恢复时,GitLab 的版本应尽量与备份时保持一致,避免兼容性问题。
  • 高可用与对象存储:若启用了 PGBackup、对象存储(如 S3)或外部数据库,需按官方指引单独备份这些组件,标准 rake 备份不包含它们的数据。

0