【Git】GitLab备份与恢复

/etc/gitlab/gitlab.rb中描述备份位置,默认备份到/var/opt/gitlab/backups/

如果想要备份到/mnt/backups,修改以下配置,去掉注释
gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = “/mnt/backups" #备份目录
gitlab_rails['backup_archive_permissions'] = 0644 #生成的文件权限
gitlab_rails['backup_keep_time'] = 864000  #保留10天

修改完成后重新配置:
gitlab-ctl reconfigure



备份命令:
gitlab-rake gitlab:backup:create


自动备份:
也可以通过crontab使用备份命令实现自动备份:

sudo su -
crontab -e
加入以下, 实现每天凌晨2点进行一次自动备份:

0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create



恢复:
# 停止相关数据连接服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

# 从1393513186编号备份中恢复
gitlab-rake gitlab:backup:restore BACKUP=1393513186

# 启动Gitlab
sudo gitlab-ctl start


迁移:
与恢复一样,但是要求两个GitLab版本号一致


GitLab备份脚本示例:

#!/bin/bash
#root user
#crontab -e
#add
#56 00 * * * /home/delta/gitautobackup.sh
#every data 00:56 backup

gitBaseBackup="GitLab_Backup"
gitnewBackup=$gitBaseBackup/Backup_new
gitoldBackup=$gitBaseBackup/Backup_old

ftpUrl="192.168.10.209"
ftpUser="administrator"
ftpPasswd="Delta123"


localDir="/home/delta/GitLab_Backup"
localnewBackup=$localDir/Backup_new
localoldBackup=$localDir/Backup_old


if [ ! -d $localnewBackup ]; then
mkdir -p $localnewBackup
fi

if [ ! -d $localoldBackup ]; then
mkdir -p $localoldBackup
fi



if [ -f $localnewBackup/*.tar ]; then
#delete old
echo "delete old backup"
rm -rf $localoldBackup/*
#move new to old
echo "move new to old"
mv $localnewBackup/* $localoldBackup
else
echo "no new backup to old"
fi




#git own backup directory
echo "change backup directory owner to git"
chown -R git $localDir

#create new git backup
echo "GitLab Backup ..."
gitlab-rake gitlab:backup:create


#check backup is whether successful
if [ ! -f $localnewBackup/*.tar ]; then
cd $localDir
currentTime=`date " %Y-%m-%d %H:%M:%S"` 
#currentTimeStamp=`date -d "$currentTime" `
echo ${currentTime}" Backup GitLab error! exit!"
echo ${currentTime}" Backup GitLab error! " >>GitLabBackupError.log

exit
fi

cd $localDir

#change owner back to delta
chown -R delta $localDir

#delete ftp backup
echo "push to ftp" 
ftp -n<<!
open $ftpUrl
user $ftpUser $ftpPasswd
binary
cd $gitBaseBackup

prompt off

lcd $localnewBackup/
put *.tar
bye
!

echo "backup successful"
exit

posted on 2017-04-14 11:02  Beatfan  阅读(54)  评论(0)    收藏  举报

导航