CentOS系統GitLab備份操作指南
rsync(用于數據同步)、postfix(用于郵件通知,可選)等工具。若未安裝,可通過sudo yum install -y rsync postfix命令安裝。/etc/gitlab/gitlab.rb中,敏感信息(如數據庫密碼、SSH密鑰)存儲在/etc/gitlab/gitlab-secrets.json中。備份前需將這兩個文件復制到安全位置(如外部存儲或加密目錄)。GitLab提供了內置的gitlab-rake工具,可一鍵備份所有數據(包括倉庫、數據庫、用戶、權限等)。
sudo gitlab-rake gitlab:backup:create
該命令會在/var/opt/gitlab/backups目錄(默認路徑,可通過配置修改)下生成一個壓縮包,文件名格式為時間戳_gitlab_backup.tar(如1713314665_2025_04_17_13.12.0_gitlab_backup.tar)。若需更細粒度的控制,可手動同步GitLab數據目錄(/var/opt/gitlab)到備份存儲路徑:
sudo mkdir -p /backup/gitlab
sudo rsync -a --delete /var/opt/gitlab/ /backup/gitlab/
此命令會將/var/opt/gitlab下的所有文件同步到/backup/gitlab,--delete選項會刪除目標目錄中源目錄不存在的文件,確保數據一致性。為避免手動操作遺漏,建議設置crontab定時任務,定期執行備份。
sudo crontab -e
/var/log/gitlab_backup.log:0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create >> /var/log/gitlab_backup.log 2>&1
或使用之前創建的備份腳本(如/path/to/backup_gitlab.sh):0 1 * * * /path/to/backup_gitlab.sh
保存并退出后,cron會自動加載任務。設置保留時間:通過修改/etc/gitlab/gitlab.rb配置文件,可設置備份文件的保留天數(避免占用過多磁盤空間):
sudo vim /etc/gitlab/gitlab.rb
添加或修改以下配置:
gitlab_rails['backup_keep_time'] = 604800 # 保留7天(單位:秒)
保存后執行sudo gitlab-ctl reconfigure使配置生效。
手動清理舊備份:若需立即清理舊備份,可使用find命令查找并刪除超過指定時間的文件(如7天前):
sudo find /var/opt/gitlab/backups -type f -name "*.tar" -mtime +7 -exec rm -f {} \;
chmod 600設置文件權限)。