美文网首页Git工作
gitlib备份与恢复

gitlib备份与恢复

作者: dhz120 | 来源:发表于2019-01-21 13:31 被阅读9次

    使⽤Gitlab⼀键安装包后的⽇常备份恢复与迁移

    Gitlab 创建备份

    使⽤Gitlab⼀键安装包安装Gitlab⾮常简单, 同样的备份恢复与迁移也⾮常简单. 使⽤⼀条命令即可创建完整的Gitlab备
    份:

    gitlab-rake gitlab:backup:create
    

    使⽤以上命令会在 /var/opt/gitlab/backups ⽬录下创建⼀个名称类似为 1393513186_gitlab_backup.tar 的
    压缩包, 这个压缩包就是Gitlab整个的完整部分, 其中开头的 1393513186 是备份创建的⽇期.

    Gitlab 修改备份⽂件默认⽬录

    你也可以通过修改 /etc/gitlab/gitlab.rb 来修改默认存放备份⽂件的⽬录: gitlab_rails['backup_path'] = '/mnt/backups'
    /mnt/backups 修改为你想存放备份的⽬录即可, 修改完成之后使⽤ gitlab-ctl reconfigure 命令重载配置⽂件。

    Gitlab ⾃动备份

    也可以通过 crontab 使⽤备份命令实现⾃动备份:

    sudo su -
    crontab -e
    

    加⼊以下, 实现每天凌晨2点进⾏⼀次⾃动备份: 0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create

    比较完整的备份命令可以参考下边的脚本 使用方法: 0 2 * * * /bin/bash /home/dong/cp_git_backup_to_ftp.sh

    注意:需要切到root下使用 ssh-keygen -t rsa 生成id_rsa.pub, 并将其内容拷贝到远程主机的 authorized_keys中,否则scp命令在cronab中不好使

    Gitlab 恢复

    同样, Gitlab的从备份恢复也⾮常简单:

    # 停⽌相关数据连接服务
    gitlab-ctl stop unicorn
    gitlab-ctl stop sidekiq
    
    # 从1393513186编号备份中恢复
    gitlab-rake gitlab:backup:restore BACKUP=1393513186
    
    # 启动Gitlab
    sudo gitlab-ctl start
    

    Gitlab迁移

    迁移如同备份与恢复的步骤⼀样, 只需要将⽼服务器 /var/opt/gitlab/backups ⽬录下的备份⽂件拷⻉到新服务器
    上的 /var/opt/gitlab/backups 即可(如果你没修改过默认备份⽬录的话). 但是需要注意的是新服务器上的Gitlab
    的版本必须与创建备份时的Gitlab版本号相同. ⽐如新服务器安装的是最新的7.60版本的Gitlab, 那么迁移之前, 最好将
    ⽼服务器的Gitlab 升级为7.60在进⾏备份.

    将gitlib的最新备份文件拷贝到远程主机shell脚本

    #!/bin/bash
    
    
    GIT_PATH="/home/backup/git/" 
    FTP_PATH="/home/dong/ftp/tmp/"
    REMOTE="dong@192.168.1.113:/home/dong/backup/"
    LOG_FILE="/home/dong/git_log/"`date +%Y-%m-%d_%H-%M-%S`".log"
    
    # 自动输入sudo密码
    echo "linux11" | sudo -S ls > /dev/null
    
    # 创建日志文件
    touch $LOG_FILE
    
    # gitlib创建备份
    echo "gitlib创建备份 " `date` >> $LOG_FILE
    sudo gitlab-rake gitlab:backup:create >> $LOG_FILE
    
    # 获得新的备份文件
    LAST_GIT_FILE=`sudo ls -t $GIT_PATH | head -1`
    echo "获得新的备份文件" $LAST_GIT_FILE >> $LOG_FILE
    
    # 将最新的备份文件拷贝到ftp目录下
    sudo cp ${GIT_PATH}${LAST_GIT_FILE} $FTP_PATH >> $LOG_FILE
    
    # 修改权限
    sudo chmod +r ${FTP_PATH}${LAST_GIT_FILE} >> $LOG_FILE
    
    # 将最新的备份文件拷贝到远程机器上
    echo "将最新的备份文件拷贝到远程机器上 " $REMOTE >> $LOG_FILE
    /usr/bin/scp  ${FTP_PATH}${LAST_GIT_FILE} $REMOTE  >> $LOG_FILE
    
    echo "end..." >> $LOG_FILE
    
    

    相关文章

      网友评论

        本文标题:gitlib备份与恢复

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