美文网首页
gitlab定时远程备份

gitlab定时远程备份

作者: awlwen | 来源:发表于2018-06-11 14:30 被阅读0次

    1.本地备份:

        执行命令 gitlab-rake gitlab:backup:create即可

        默认备份目录为:/var/opt/gitlab/backups, 可在 /etc/gitlab/gitlab.rb 中修改backup_path指定目录

        如遇到错误:

        一般为目录权限问题,可执行gitlab-rake gitlab:check命令查看错误情况,执行相应命令即可

    2.定时备份及清理

        crontab -e编辑系统定时任务:

        如图为每日23点执行备份命令

        定时清理:

        使用gitlab自动清理,修改/etc/gitlab/gitlab.rb文件,取消backup_keep_time前注释

        如图:

        604800 = 7*24*3600 上图设置为自动清理7天之前的备份

        重启gitlab配置: gitlab-ctl reconfigure

    3.备份到远程

        3.1 设置服务器A-B免密登陆:

        在A服务器生产公私玥: ssh-keygen -t rsa,其中注意在设置密码时不输入密码,方可免密,否则在传输时需输入设置的密码.

        在A服务器使用 scp /root/.ssh/id_rsa.pub user@B:/root/.ssh/将公钥文件上传至B服务器

        在B服务器创建authorized_keys文件: touch /root/.ssh/authorized_keys

        将id_rsa.pub 文件加入到authorized_keys,使用: cat id_rsa.pub >> authorized_keys

        3.2 编写自动上传脚本 auto_backup_to_remote.sh 

        #!/bin/bash

        # gitlab 服务器备份路径

        LocalBackDir=/var/opt/gitlab/backups

        # 远程备份服务器 gitlab备份文件存放路径

        RemoteBackDir=/root/gitlab_backup

        # 远程备份服务器 登录账户

        RemoteUser=root

        # 远程备份服务器 IP地址

        RemoteIP=(备份服务器B的地址,请你自行修改)

        #当前系统日期

        DATE=`date +"%Y-%m-%d"`

        #Log存放路径

        LogFile=$LocalBackDir/log/$DATE.log

        # 查找 gitlab本地备份目录下 时间为60分钟之内的,并且后缀为.tar的gitlab备份文件

        BACKUPFILE_SEND_TO_REMOTE=$(find $LocalBackDir -type f -mmin -60  -name '*.tar*')

        #新建日志文件

        touch $LogFile

        #追加日志到日志文件

        echo "Gitlab auto backup to remote server, start at  $(date +"%Y-%m-%d %H:%M:%S")" >>  $LogFile

        echo "---------------------------------------------------------------------------" >> $LogFile

        # 输出日志,打印出每次scp的文件名

        echo "---------------------The file to scp to remote server is: $BACKUPFILE_SEND_TO_REMOTE-------------     ------------------" >> $LogFile

        #备份到远程服务器

        scp $BACKUPFILE_SEND_TO_REMOTE $RemoteUser@$RemoteIP:$RemoteBackDir

        #追加日志到日志文件

        echo "---------------------------------------------------------------------------" >> $LogFile

        3.3 添加上传脚本到定时任务

        crontab -e

    3.4 B服务器添加定时删除脚本

    编写删除脚本auto_remove_old_backup.sh

    上图为定时删除14天之前的备份文件

    至此,gitlab定时备份到远程服务器步骤完成.

    相关文章

      网友评论

          本文标题:gitlab定时远程备份

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