在CentOS上备份和恢复GitLab数据是一个重要的任务,以确保数据的安全性和业务的连续性。以下是一些详细的步骤和方法:
使用 gitlab-rake
命令进行手动备份:
sudo gitlab-rake gitlab:backup:create
该命令会备份GitLab仓库、数据库、用户、用户组、用户密钥、权限等信息。默认备份文件存储在 /var/opt/gitlab/backups
目录下。
使用 crontab
定时执行备份任务。例如,以下命令会在每天凌晨两点执行备份:
0 2 * * * /usr/local/bin/gitlab-rake gitlab:backup:create
可以创建一个备份脚本并添加到 crontab
中定期执行。例如:
#!/bin/bash
BACKUP_DIR="/var/opt/gitlab/backups"
DATE=$(date +%Y%m%d%H%M%S)
/usr/local/bin/gitlab-rake gitlab:backup:create
find $BACKUP_DIR -name "*.tar" -type f -mtime +1 -exec rm -rf {} \;
然后,在 crontab
中添加:
0 1 * * * /path/to/backup_gitlab.sh
这将在每周一的8:30执行备份脚本。
修改 /etc/gitlab/gitlab.rb
配置文件以自定义备份参数,包括备份路径、文件权限和保留时间:
gitlab_rails['backup_path'] "/data/gitlab/backups"
gitlab_rails['backup_archive_permissions'] 0644
gitlab_rails['backup_keep_time'] 604800 # 保留7天备份
修改配置后,运行以下命令使配置生效:
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
确保数据一致性,停止GitLab相关服务:
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
使用以下命令恢复备份,其中 BACKUP_TIMESTAMP
为备份文件的时间戳:
sudo gitlab-rake gitlab:backup:restore BACKUP_TIMESTAMP
恢复过程中会提示输入两次 yes
,按提示操作。
恢复完成后,启动GitLab服务:
sudo gitlab-ctl start
通过以上方法,您可以在CentOS上为GitLab建立有效的备份和恢复机制,有效保护您的宝贵数据。建议定期执行备份,并在必要时进行恢复测试。