Ubuntu系統GitLab備份恢復方法
備份前需停止GitLab核心服務,確保數據一致性:
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
使用gitlab-rake命令備份倉庫、數據庫、用戶及配置等信息,備份文件默認存儲在/var/opt/gitlab/backups目錄:
sudo gitlab-rake gitlab:backup:create
若需立即執行(而非等待定時任務),可添加CRON=1參數:
sudo gitlab-rake gitlab:backup:create CRON=1
修改/etc/gitlab/gitlab.rb配置文件,自定義備份存儲路徑(如/data/backups/gitlab)和保留時長(如7天):
sudo vim /etc/gitlab/gitlab.rb
添加/修改以下內容:
gitlab_rails['backup_path'] = "/data/backups/gitlab"
gitlab_rails['backup_keep_time'] = 604800 # 單位:秒(7天)
保存后重新加載配置并重啟GitLab:
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
通過crontab設置每日凌晨2點自動執行備份任務:
sudo crontab -e
添加以下行:
0 2 * * * /usr/bin/gitlab-rake gitlab:backup:create
使用rsync同步備份目錄到遠程服務器或本地其他磁盤,排除臨時文件:
sudo rsync -avz --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /var/opt/gitlab/ /path/to/remote/backup/
恢復前需停止GitLab相關服務,避免數據沖突:
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
將備份文件(如gitlab_backup_1679122231_2024_06_41_13.9.7.tar)復制到備份目錄(如/var/opt/gitlab/backups),并賦予可執行權限:
sudo cp /path/to/backup/file.tar /var/opt/gitlab/backups/
sudo chmod 777 /var/opt/gitlab/backups/file.tar
執行恢復命令,指定備份文件名(無需.tar擴展名):
sudo gitlab-rake gitlab:backup:restore BACKUP=1679122231_2024_06_41_13.9.7
若之前備份了配置文件(/etc/gitlab/gitlab.rb)和SSL證書(/etc/gitlab/ssl),需復制回原目錄:
sudo cp /path/to/backup/gitlab.rb /etc/gitlab/gitlab.rb
sudo cp -r /path/to/backup/ssl /etc/gitlab/
恢復完成后,重新啟動GitLab服務:
sudo gitlab-ctl start
通過GitLab Web界面登錄,檢查倉庫、用戶、權限等數據是否完整,確保實例正常運行。