一、 備份gitlab
gitlab的備份比較簡單,我們直接使用gitlab本身提供的命令進行備份即可。
1.1 通過gitlab-rake命令備份gitlab
gitlab提供的備份命令為gitlab-rake,備份命令使用如下:
gitlab-rake gitlab:backup:create
該命令會備份gitlab倉庫、數據庫、用戶、用戶組、用戶密鑰、權限等信息。
備份完成后備份文件會出現在/var/opt/gitlab/backups/

當然備份的位置可以更換,使用如下命令:
vim /etc/gitlab/gitlab.rb

修改上圖backup_path的值即可,之后使用gitlab-ctl reconfigure使得配置生效
ps:備份文件的名稱中1537261122_2018_09_18_9.2.5是此次備份的編號。該編號我們會在后續恢復gitlab數據使用到。
1.2 定時備份gitlab
如果要使gitlab自動進行備份的話,我們可以通過crontab命令來實現自動備份。強烈建議使用系統crontab命令,而不是用戶crontab。
以實現每天凌晨4點進行一次自動備份為例,系統的crontab配置如下:
vim /etc/crontab
0 4 * * * root /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
然后重啟crontab服務,如下:
systemctl restart crond
1.3 保留部分備份文件
隨着時間的推移gitlab備份文件越來越多,服務器的磁盤空間也不夠大。
此時我們就要刪除部分舊的備份文件,gitlab也提供了刪除舊的備份文件功能。該功能在gitlab的配置文件中,進行配置即可。
在此以保留7天之前的備份文件為例,如下:
vim /etc/gitlab/gitlab.rb
gitlab_rails[‘backup_keep_time’] = 604800
其中backup_keep_time是以秒為單位進行計算的,然后執行命令gitlab-ctl reconfigure即可。
二、gitlab倉庫恢復
要驗證gitlab備份的有效性,我們可以把該備份文件復制到已經安裝好gitlab服務器的/var/opt/gitlab/backups/目錄下。然后進行數據恢復,最后訪問並查看其數據完整性即可。
通過gitlab備份文件可以恢復gitlab所有的信息,包括倉庫、數據庫、用戶、用戶組、用戶密鑰、權限等信息。
ps:新服務器上的gitlab的版本號必須與創建備份時的gitlab版本號相同。
gitlab數據恢復比較簡單,具體步驟如下:
2.1 停止相關數據連接服務
在gitlab服務器上停止相關數據連接服務,命令如下:
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
2.2 恢復gitlab倉庫
現在我們要從1537261122_2018_09_18_9.2.5這個備份編號中,恢復數據,命令如下:
gitlab-rake gitlab:backup:restore BACKUP=1537261122_2018_09_18_9.2.5
如果出現多個done的信息,說明整個gitlab數據就已經正常恢復完畢。
2.3 啟動gitlab服務
恢復完畢以后,我們現在來啟動gitlab,使用以下命令:
gitlab-ctl start
強烈建議:重啟該新服務器。
