美文网首页
gitlab自动备份

gitlab自动备份

作者: sunix | 来源:发表于2018-12-14 15:33 被阅读0次

    为了防止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自动备份

          本文链接:https://www.haomeiwen.com/subject/aceghqtx.html