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 cron 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的备份文件

你可能感兴趣的:(gitlab自动备份)