為了防止gitlab服務(wù)器硬盤損壞等問題導(dǎo)致代碼丟失,最好定時(shí)自動(dòng)備份git倉庫并保存在遠(yuǎn)程文件服務(wù)器上,下面是我的配置過程
- gitlab存儲(chǔ)的目錄
在ubuntu中默認(rèn)的gitlab倉庫是在 /var/opt/gitlab/git-data/repositories 中,gitlab的備份文件保存在 /var/opt/gitlab/backups 之中
- 修改備份保存的目錄和保存時(shí)間
我這里gitlab服務(wù)器掛載了兩塊硬盤,git倉庫在第一塊硬盤(/),于是我想要將gitlab的備份放在第二塊硬盤中(/backups).如果沒有這樣的需求,只是將git備份在遠(yuǎn)程服務(wù)器的話,這一步可以省略.
-
修改gitlab配置文件
打開/etc/gitlab/gitlab.rb
sudo vi /etc/gitlab/gitlab.rb
找到
#gitlab_rails['manage_backup_path'] = ture #gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
兩行,去掉注釋符號(hào)'#',然后將 /var/opt/gitlab/backups 改成自己想要存放的備份文件路徑 /backups
找到
#gitlab_rails['backup_keep_time'] = 604800
去掉注釋符號(hào)'#',將604800改成自己想要的保存時(shí)間,這里單位是秒,604800表示一周,我改成了86400,最多保存一天
-
更新gitlab配置
sudo gitlab-ctl reconfigure
-
-
創(chuàng)建備份腳本并設(shè)置權(quán)限
touch /home/gitlab/auto-backup.sh echo "gitlab-rake gitlab:backup:create" > /home/gitlab/auto-backup.sh sudo chmod +x /home/gitlab/auto-backup.sh
嘗試運(yùn)行一遍auto-backup.sh腳本,看看在/backups目錄下是否生成.tar格式的gitlab備份文件
設(shè)置定時(shí)運(yùn)行備份腳本
我這邊設(shè)置的在每天的凌晨2點(diǎn)進(jìn)行備份
sudo echo "0 2 * * * root /home/gitlab/auto-backup.sh -D 1" >> /etc/crontab
sudo service cron restart
- 將備份的文件copy到遠(yuǎn)程文件服務(wù)器
修改自動(dòng)備份腳本 auto-backup.ssh ,在備份完成后將文件copy到遠(yuǎn)程文件服務(wù)器
echo "sshpass -p $remote_password scp -r /backups $remote_user@$remote_host:$dir" >> /home/gitlab/auto-backup.sh
這里 $remote_password 替換成遠(yuǎn)程服務(wù)器的登錄密碼, $remote_user 是遠(yuǎn)程服務(wù)器登錄用戶, $remote_host 是遠(yuǎn)程服務(wù)器域名或IP, $dir 是遠(yuǎn)程服務(wù)器的保存目錄
至此,gitlab服務(wù)器的備份硬盤和遠(yuǎn)程文件服務(wù)器上都有一份gitlab的備份文件