在Debian系统上对GitLab进行备份与恢复,可以按照以下步骤进行:
停止GitLab服务: 在进行备份之前,建议停止GitLab的相关服务,如unicorn和sidekiq,以保证备份的安全性和完整性。
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
创建备份: 使用以下命令创建GitLab的备份:
sudo gitlab-rake gitlab:backup:create
此命令会在默认路径 /var/opt/gitlab/backups
下生成一个包含所有GitLab数据的备份文件。
配置备份路径和过期时间:
可以通过修改GitLab的配置文件 /etc/gitlab/gitlab.rb
来指定备份路径和设置备份文件的过期时间。例如:
sudo vim /etc/gitlab/gitlab.rb
gitlab_rails['backup_path'] '/data/gitlab/backups'
gitlab_rails['backup_keep_time'] 604800 # 设置备份保留7天
修改后,使用以下命令重载配置:
sudo gitlab-ctl reconfigure
定时备份与删除旧备份:
可以创建一个定时脚本,例如 /var/opt/gitlab/backups/gitlabbak.sh
,用于定期执行备份并删除10天之前的备份文件。
#!/bin/bash
/opt/gitlab/bin/gitlab-rake gitlab:backup:create
sleep 10
find /var/opt/gitlab/backups -name "*.tar" -type f -mtime 10 -exec rm -rf {} \;
将备份脚本添加到crontab中,例如每周一、三、五的8:30执行备份脚本。
0 8 * * 1,3,5 /bin/sh /var/opt/gitlab/backups/gitlabbak.sh /dev/null 2&1
手动备份配置文件和敏感数据:
手动备份 gitlab.rb
、gitlab-secrets.json
、ssl
目录等配置文件和敏感数据,并将备份文件复制到安全的位置,在恢复时进行相应的配置。
使用Docker或Kubernetes进行备份: 如果使用Docker或Kubernetes安装GitLab,可以通过挂载卷或使用PVC(Persistent Volumes)来备份数据,每天备份PVC对应的文件夹,并设置7天后自动删除。
准备新服务器: 在新服务器上安装并搭建好GitLab。
拷贝备份文件:
将旧服务器上 /var/opt/gitlab/backups
目录下的备份文件拷贝到新服务器上的相同位置。
恢复备份: 在新服务器上,使用以下命令进行恢复:
sudo gitlab-rake gitlab:backup:restore BACKUP_NUMBER
其中 BACKUP_NUMBER
是你要恢复的备份编号。
启动GitLab服务: 恢复完成后,启动GitLab的相关服务:
sudo gitlab-ctl start unicorn
sudo gitlab-ctl start sidekiq
或者重启所有服务:
sudo gitlab-ctl restart
验证恢复结果: 打开浏览器,访问GitLab的Web界面,验证数据和配置是否恢复一致。