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