CentOS系统GitLab备份操作指南
rsync(用于数据同步)、postfix(用于邮件通知,可选)等工具。若未安装,可通过sudo yum install -y rsync postfix命令安装。/etc/gitlab/gitlab.rb中,敏感信息(如数据库密码、SSH密钥)存储在/etc/gitlab/gitlab-secrets.json中。备份前需将这两个文件复制到安全位置(如外部存储或加密目录)。GitLab提供了内置的gitlab-rake工具,可一键备份所有数据(包括仓库、数据库、用户、权限等)。
sudo gitlab-rake gitlab:backup:create
该命令会在/var/opt/gitlab/backups目录(默认路径,可通过配置修改)下生成一个压缩包,文件名格式为时间戳_gitlab_backup.tar(如1713314665_2025_04_17_13.12.0_gitlab_backup.tar)。若需更细粒度的控制,可手动同步GitLab数据目录(/var/opt/gitlab)到备份存储路径:
sudo mkdir -p /backup/gitlab
sudo rsync -a --delete /var/opt/gitlab/ /backup/gitlab/
此命令会将/var/opt/gitlab下的所有文件同步到/backup/gitlab,--delete选项会删除目标目录中源目录不存在的文件,确保数据一致性。为避免手动操作遗漏,建议设置crontab定时任务,定期执行备份。
sudo crontab -e
/var/log/gitlab_backup.log:0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create >> /var/log/gitlab_backup.log 2>&1
或使用之前创建的备份脚本(如/path/to/backup_gitlab.sh):0 1 * * * /path/to/backup_gitlab.sh
保存并退出后,cron会自动加载任务。设置保留时间:通过修改/etc/gitlab/gitlab.rb配置文件,可设置备份文件的保留天数(避免占用过多磁盘空间):
sudo vim /etc/gitlab/gitlab.rb
添加或修改以下配置:
gitlab_rails['backup_keep_time'] = 604800 # 保留7天(单位:秒)
保存后执行sudo gitlab-ctl reconfigure使配置生效。
手动清理旧备份:若需立即清理旧备份,可使用find命令查找并删除超过指定时间的文件(如7天前):
sudo find /var/opt/gitlab/backups -type f -name "*.tar" -mtime +7 -exec rm -f {} \;
chmod 600设置文件权限)。