• linux上gitlab备份与还原


    Gitlab备份

    1.gitlab安装

    1.1 添加镜像地址

    添加镜像地址的目的是为了提高国内用户软件下载的速度,编辑(新建)文件gitlab-ce.repo,指令:

    vi /etc/yum.repos.d/gitlab-ce.repo
    
    • 1

    复制

    输入:

    [gitlab-ce]
    name=gitlab-ce
    # 清华大学的镜像源
    baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
    repo_gpgcheck=0
    gpgcheck=0
    enabled=1
    gpgkey=https://packages.gitlab.com/gpg.key
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    1.2 安装依赖

    依次输入以下指令

    # 安装和配置openssh
    sudo yum install curl policycoreutils-python openssh-server openssh-clients
    sudo systemctl enable sshd
    sudo systemctl start sshd
    # 安装和配置邮件服务
    sudo yum install postfix
    sudo systemctl enable postfix
    sudo systemctl start postfix
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    1.3 安装gitlab指定版本14.0.0
    curl -LJO https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-14.0.0-ce.0.el7.x86_64.rpm
    
    • 1

    在这里插入图片描述

    在这里插入图片描述

    安装:

    rpm -i gitlab-ce-14.0.0-ce.0.el7.x86_64.rpm
    
    • 1

    警告:gitlab-ce-14.0.0-ce.0.el7.x86_64.rpm: 头V4 RSA/SHA1 Signature, 密钥 ID f27eab47: NOKEY

    在这里插入图片描述

    1.4 配置gitlab
    sudo gitlab-ctl reconfigure
    
    • 1

    在这里插入图片描述

    1.5 更改GitLab端口,

    编辑文件gitlab.rb:

    vim /etc/gitlab/gitlab.rb
    
    • 1
    external_url 'http://192.168.20.247:8091' 
    
    nginx['listen_port'] = 8091 
    
    nginx['listen_https'] = false
    
    • 1
    • 2
    • 3
    • 4
    • 5

    更改nigx端口,编辑文件gitlab-http.conf:

    vim /var/opt/gitlab/nginx/conf/gitlab-http.conf
    
    
    server {
    listen *:8091;
    server_name 47.110.230.147;
    ...
    if ($http_host = "") {
       set $http_host_with_default "47.110.230.147:8091";
    }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述

    在这里插入图片描述

    保存修改,执行以下指令:

    gitlab-ctl reconfigure
    
    • 1
    1.6 启动并访问

    启动GitLab:

    gitlab-ctl restart
    
    #停止gitlab
    gitlab-ctl stop
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    对应端口放行

    sudo firewall-cmd --permanent --zone=public --add-port=8091/tcp 
    
    sudo firewall-cmd --reload
    
    • 1
    • 2
    • 3

    查看默认的账号密码

    vi /etc/gitlab/initial_root_password
    
    • 1

    在这里插入图片描述

    2.gitlab备份还原

    • 特别注意:

    · 备份目录和gitlab.rb中定义的备份目录必须一致

    · GitLab的版本和备份文件中的版本必须一致,否则还原时会报错。

    在这里插入图片描述

    执行下备份命令

    gitlab-rake gitlab:backup:restore BACKUP=/var/opt/gitlab/backups/1676883915_2023_02_20_14.0.0
    
    • 1

    注意:后面文件名称不用加_gitlab_backup.tar

    在这里插入图片描述

    在这里插入图片描述

    中途输入两次yes

    备份完后,可以看出已经还原成功

    在这里插入图片描述

    3.备份策略(每天23:30都进行备份作业)

    • 修改备份的路径和备份的策略

      输入配置修改对应的路径

      vim /etc/gitlab/gitlab.rb
      
      • 1
      gitlab_rails['manage_backup_path'] = true
      #备份的路径
      gitlab_rails['backup_path'] = "/home/gitlab/backups"
      #生成的备份文件权限
      gitlab_rails['backup_archive_permissions'] = 0644
      #保留文件7天
      gitlab_rails['backup_keep_time'] = 604800
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8

      保存并退出

    • 更改完成后重载配置文件

    gitlab-ctl reconfigure
    
    • 1

    执行备份命令

    gitlab-backup create
    
    • 1

    可以看到我们备份已经成功了

    在这里插入图片描述

    设置脚本

    touch gitlab.sh
    
    chmod 777 gitlab.sh
    
    • 1
    • 2
    • 3
    vi gitlab.sh
    
    • 1

    #输出一下内容

    #!/bin/bash     
    echo '开始执行gitlab备份'
    gitlab-backup create
    echo 'gitlab备份结束'
    
    DATE=`date +%Y%m%d`            #定义时间的格式,注意需要反引号。       
    REMOTEDIR=/home/backups/gitlab #远程本地服务器地址路径
    
    localData=/var/opt/gitlab/backups   #本机数据地址路径
    echo "开始进行gitlab数据迁移到本地服务器"
    expect << EOF
    set timeout -1
    spawn scp -P 85-r $localData  root@112.94.31.288:$REMOTEDIR/$DATE
    expect eof
    exit
    EOF
    echo "数据gitlab迁移到本地服务器结束"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    crontab -e
    
    • 1

    输入备份的时间(每天23:30都进行备份作业)

    30 23 * * * /home/backups/gitlab/gitlab.sh > /tmp/gitlab.log 2>&1
    
    • 1
    crontab -l
    
    • 1

    本地服务器也要设置时间脚本

    touch date.sh
    
    • 1

    脚本内容

    #!/bin/bash     
    echo '开始新建目录'
    DATE=`date +%Y%m%d`            #定义时间的格式,注意需要反引号。
    DIR=/home/backups/gitlab      #这里定义创建文件夹的地址。
    mkdir  -p  $DIR/$DATE          #创建文件夹的语句,把上面两个变量引用进来。
    echo '新建目录完成'
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    打开定时任务

    crontab -e
    
    • 1

    输入备份时间

    29 23 * * *  /home/backups/gitlab/date.sh > /tmp/gitlab.log 2>&1
    
    • 1
    crontab -l
    
    • 1
  • 相关阅读:
    Linux下yum源配置实战 2
    android: Preferences DataStore 和 Proto DataStore use guide
    什么是函数重载?C语言中是否支持函数重载?
    CSS_实现三角形和聊天气泡框
    分布式.CAP理论
    LLM 大模型学习必知必会系列(三):LLM和多模态模型高效推理实践
    webpack 项目升级成vite项目
    Vue 使用npm run dev 启动报错时:npm ERR! Missing script: “dev“
    基于grafana+elk等开源组件的 云服务监控大屏架构
    1045 Favorite Color Stripe
  • 原文地址:https://blog.csdn.net/weixin_40483369/article/details/133140487