Debian系統中GitLab備份與恢復指南
為確保備份數據的完整性和一致性,建議在備份前停止GitLab的關鍵服務(unicorn和sidekiq):
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
使用GitLab內置的gitlab-rake
工具創建備份,默認備份文件會保存到/var/opt/gitlab/backups
目錄:
sudo gitlab-rake gitlab:backup:create
備份文件命名格式為TIMESTAMP_gitlab_backup.tar
(如1716000000_gitlab_backup.tar
),其中TIMESTAMP
為備份創建的時間戳。
若需更改備份文件的存儲位置,可編輯GitLab配置文件/etc/gitlab/gitlab.rb
,添加或修改以下參數:
gitlab_rails['backup_path'] = "/data/gitlab/backups" # 自定義備份目錄(需提前創建)
修改完成后,運行以下命令使配置生效:
sudo gitlab-ctl reconfigure
通過crontab
設置定時任務,實現自動備份。例如,每天凌晨2點執行備份:
# 編輯當前用戶的crontab
sudo crontab -e
添加以下內容(需替換為實際備份腳本路徑):
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
若需自動刪除超過7天的舊備份,可將以下命令添加到備份腳本末尾:
find /var/opt/gitlab/backups -name "*.tar" -type f -mtime +7 -exec rm -rf {} \;
備份文件不包含GitLab的關鍵配置(如gitlab.rb
、gitlab-secrets.json
)和SSL證書,需手動備份這些文件:
sudo cp /etc/gitlab/gitlab.rb /path/to/secure/backup/
sudo cp /etc/gitlab/gitlab-secrets.json /path/to/secure/backup/
sudo cp -r /etc/ssl/gitlab/ /path/to/secure/backup/ # 若SSL證書存放在該目錄
sudo gitlab-rake gitlab:env:info
查看當前版本)。sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
將備份文件(如1716000000_gitlab_backup.tar
)復制到目標服務器的gitlab_rails['backup_path']
目錄(如/var/opt/gitlab/backups
或自定義目錄)。
使用gitlab-rake
工具恢復備份,需指定備份文件的TIMESTAMP
(即備份文件名中的時間戳,不含擴展名):
sudo gitlab-rake gitlab:backup:restore BACKUP=1716000000
執行過程中會提示確認恢復操作,輸入yes
并按回車鍵繼續。
將之前手動備份的配置文件復制回原位置:
sudo cp /path/to/secure/backup/gitlab.rb /etc/gitlab/
sudo cp /path/to/secure/backup/gitlab-secrets.json /etc/gitlab/
sudo cp -r /path/to/secure/backup/gitlab/ /etc/ssl/ # 若SSL證書存放在該目錄
恢復完成后,重載GitLab配置并啟動所有服務:
sudo gitlab-ctl reconfigure # 使配置文件變更生效
sudo gitlab-ctl start # 啟動所有GitLab服務
http://服務器IP
),使用管理員賬戶登錄。sudo gitlab-rake gitlab:check SANITIZE=true
gitlab-secrets.json
)需存儲在安全位置,避免泄露。gitlab_rails['backup_keep_time']
參數設置備份保留時間(如604800
秒=7天),避免磁盤空間耗盡。