Linux系統中GitLab備份與恢復方法
GitLab提供內置rake任務實現全量或部分數據備份。全量備份包含倉庫、數據庫、用戶/組、密鑰等所有數據,命令如下:
sudo gitlab-rake gitlab:backup:create
備份文件默認存儲在/var/opt/gitlab/backups目錄,文件名格式為<timestamp>_gitlab_backup.tar(如1711234567_gitlab_backup.tar)。
若需排除特定部分(如artifacts、builds),可使用--skip參數:
sudo gitlab-rake gitlab:backup:create SKIP=artifacts,builds
通過crontab設置定時任務,實現每日自動備份。例如,每天凌晨2點執行全量備份:
sudo crontab -e
添加以下內容:
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
若需自定義備份路徑,可修改/etc/gitlab/gitlab.rb配置文件:
gitlab_rails['backup_path'] = '/path/to/custom/backup'
修改后執行sudo gitlab-ctl reconfigure使配置生效。
備份gitlab.rb(GitLab主配置)和gitlab-secrets.json(加密密鑰,如數據庫密碼、OAuth令牌)至關重要,避免恢復后無法登錄或數據泄露:
sudo cp /etc/gitlab/gitlab.rb /path/to/backup/
sudo cp /etc/gitlab/gitlab-secrets.json /path/to/backup/
unicorn(Web服務)和sidekiq(后臺任務):sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
或一鍵停止所有服務:sudo gitlab-ctl stop
將備份文件復制到/var/opt/gitlab/backups目錄(若路徑有修改,需對應調整),然后運行恢復命令:
sudo gitlab-rake gitlab:backup:restore BACKUP=<timestamp>
其中<timestamp>為備份文件名中的時間戳(如1711234567)?;謴瓦^程中會提示確認覆蓋現有數據,輸入yes繼續。
恢復完成后,啟動GitLab所有服務:
sudo gitlab-ctl start
或逐一啟動關鍵服務:
sudo gitlab-ctl start unicorn
sudo gitlab-ctl start sidekiq