• GitLab定时备份及恢复


    背景

    公司使用windows上的centos虚拟机作为Gitlab存储服务器,需要每天自动定时备份(数据备份到windows上),防止虚拟机文件损坏造成代码数据丢失。

    操作步骤

    配置linux访问windows免密登录

    1. 安装OpenSSH服务 下载地址
    2. 解压至C:Program FilesOpenSSH,打开cmd(管理员),进入此安装目录),执行命令:powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1
    3. 设置服务自动启动:sc config sshd start= auto
    4. 启动服务:net start sshd
    5. 在客户端(git服务器)上创建密钥对:ssh-keygen -t rsa直接按三次回车,不要设置密码
    6. 拷贝公钥文件到需要备份文件的服务器,将git服务器中~/.ssh/id_rsa.pub公钥文件拷贝到windows的C:user/{{ username }}/.ssh文件夹下并重命名为authorized_keys,注意如果没有.ssh文件夹,最好使用上一步的命令创建密钥对让其自动生成,否则会识别不到此公钥
    7. 在git服务器上验证下是否免密:ssh user@192.168.124.12

    创建备份脚本

    vim /opt/gitlabBackAndScp.sh

    #!/bin/sh
    
    scp_linux_path='/var/opt/gitlab/backups/'
    # 如果需要备份多台,这里可以多配置一行scp_windows_uri2,并把最后一行也复制修改下
    scp_windows_uri='user@192.168.124.12:D:GIT_BACKUP'
    scp_log_path='/opt/gitlabBackAndScp.log'
    
    time=$(date +%Y-%m-%d %H:%M:%S)
    gitlab-rake gitlab:backup:create
    filename=`ls $scp_linux_path -t |head -n1|awk '{print $0}'`
    echo [$time] $scp_linux_path$filename >> $scp_log_path
    scp $scp_linux_path$filename $scp_windows_uri
    

    创建计划

    配置每天凌晨一点备份,执行之后会默认在/var/opt/gitlab/backups文件夹下产生备份文件,并推送到上面配置的免密登录的服务器上
    crontab -e输入0 1 * * * /opt/gitlabBackAndScp.sh

    .gitlab恢复

    1. 停止相关服务
    gitlab-ctl stop unicorn
    gitlab-ctl stop sidekiq
    
    1. 修改备份文件权限
      chmod 777 /var/opt/gitlab/backups/1629016668_2021_08_15_12.1.3_gitlab_backup.tar

    2. 执行恢复
      gitlab-rake gitlab:backup:restore BACKUP=1629016668_2021_08_15_12.1.3

    3. gitlab启动
      gitlab-ctl start

  • 相关阅读:
    助理需要看的书
    linux 磁盘管理以及维护
    转:工作与创业区别
    《编写可读代码的艺术》---把控制流变得可读
    Visual studio插件 Reshaper--- 常用快捷键
    为啥我喜欢在Windows 7环境下做Unity开发?
    《编写可读代码的艺术》---写出言简意赅的注释
    《编写可读代码的艺术》---该写什么样的注释
    《编写可读代码的艺术》---美观代码
    《编写可读代码的艺术》---不会误解的名字
  • 原文地址:https://www.cnblogs.com/MrZhou5/p/15141294.html
Copyright © 2020-2023  润新知