gitlab自动备份

为了防止gitlab服务器硬盘损坏等问题导致代码丢失,最好定时自动备份git仓库并保存在远程文件服务器上,下面是我的配置过程

gitlab存储的目录
在ubuntu中默认的gitlab仓库是在 /var/opt/gitlab/git-data/repositories 中,gitlab的备份文件保存在 /var/opt/gitlab/backups 之中

修改备份保存的目录和保存时间
我这里gitlab服务器挂载了两块硬盘,git仓库在第一块硬盘(/),于是我想要将gitlab的备份放在第二块硬盘中(/backups).如果没有这样的需求,只是将git备份在远程服务器的话,这一步可以省略.

修改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"

两行,去掉注释符号’#’,然后将 /var/opt/gitlab/backups 改成自己想要存放的备份文件路径 /backups

找到

  #gitlab_rails['backup_keep_time'] = 604800

去掉注释符号’#’,将604800改成自己想要的保存时间,这里单位是秒,604800表示一周,我改成了86400,最多保存一天

更新gitlab配置

sudo gitlab-ctl reconfigure
创建备份脚本并设置权限

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
尝试运行一遍auto-backup.sh脚本,看看在/backups目录下是否生成.tar格式的gitlab备份文件

设置定时运行备份脚本

我这边设置的在每天的凌晨2点进行备份

sudo echo "0 2 * * * root /home/gitlab/auto-backup.sh -D 1" >> /etc/crontab
sudo service crond restart

将备份的文件copy到远程文件服务器
修改自动备份脚本 auto-backup.ssh ,在备份完成后将文件copy到远程文件服务器

echo "sshpass -p $remote_password scp -r /backups $remote_user@$remote_host:$dir" >> /home/gitlab/auto-backup.sh

这里 $remote_password 替换成远程服务器的登录密码, $remote_user 是远程服务器登录用户, $remote_host 是远程服务器域名或IP, $dir 是远程服务器的保存目录

至此,gitlab服务器的备份硬盘和远程文件服务器上都有一份gitlab的备份文件

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值