zoukankan      html  css  js  c++  java
  • docker环境下gitlab的自动双机备份(直接备份到window的共享目录下)

      以下操作均在root用户中操作

      首先需要知道gitlab容器中备份文件存放的位置,和与本机映射的位置。

      gitlab的备份一般是在/var/opt/gitlab/backer 路径中,但是由于我一开始配置gitlab容器的时候不小心将/var/opt/gitlab/backer 路径写成了/ar/opt/gitlab/backer  少了一个V,导致我本机目录下无法找到,所以我更改了一下我的备份路径,关于如何更改备份路径请自行百度。

      不知道映射路径的可以使用docker iptables命令查询

      1.首先使用docker ps查看容器信息 比如我的gitlab容器ID是279fe051b113 

      然后使用

    docker inspect 279 | grep Mounts -A 20  ID

      不用全部打,写前几位就可以了 也可是容器名字。

       

      source 是我们本机的

      destination 是容器内地址

      2.GitLab自动备份

      新建备份的sh文件:在/root 下新建gitlab_backup.sh ,内容如下:

    #! /bin/bash
    case "$1" in 
        "start")
            docker exec gitlab gitlab-rake gitlab:backup:create
            ;;
    esac

      测试 输入 sh gitlab_backup.sh start

      如果/srv/gitlab/data/backups 下有新生成的tar包,即可说明sh文件写对了。

      新增定时任务:使用crontab -e 进入定时任务编辑界面,新增如下内容:

      0 2 * * * /root/sh gitlab_backup.sh start
      保存 ctrl+X -> Y

      3.安装挂载window工具

      apt-get install cifs-utils

      设置开机自动挂载到Window文件服务器,首先打开这个文件

    1 sudo vim /etc/fstab

      然后在文件的最后一行输入(前面一个地址是你的window共享目录地址,后面是linux目录地址,username是window的用户名,password是window用户名 密码)

    1 //192.168.0.2/data/dataset /media/dataset cifs username= admin,password=123456 0 0

      下面这种操作是只挂载一次,重启后不会自动挂载(这个坑了我好久)

       输入下面命令

     sudo mount -t cifs -o userneme=root,password=123456,uid=1000,gid=1000 //192.168.1.112/A1 /mnt/A1


      uid=user,gid=user中输入你ubuntu的用户名,可以用命令id [你的用户名]来查看你的uid和gid;
      username是window下的设置folder共享时的用户;
      password是username对应的密码;
      //192.168.1.112/d中192.168.1.112是windows的IP地址,A1是你要共享的windows目录;
      /mnt/A1是你新建的文件夹,用来映射到window共享文件夹的;
      //192.168.1.112/A1 就是你window共享文件夹的地址

      4.创建自动复制到共享文件夹的sh脚本

    vim gitlab_upload.sh
    #!/bin/bash
    backdir='/home/user/docker/gitlab/config'
    cd "$backdir"
    name=$(ls -t|head -n 1)
    cp $name /home/user/mnt/share

      这个脚本的意思是将备份文件拷贝到共享目录/home/user/mnt/share中

      5.重复上面的crontab-e 让系统自动运行 稍微比备份推迟个几分钟

      6.删除前一天的备份文件

      创建自动删除脚本

    vim auto_delete.sh
    #!/bin/bash
    backdik='/home/user/docker/gitlab/config'
    find "$backdik" -name "*gitlab_backup.tar" -ctime +1 -type f -exec rm -rf {} ;

      crotab-e同上,时序最好就是在备份和拷贝到window共享目录之后执行

      dackdik是你的备份目录

  • 相关阅读:
    HDU 1874 畅通工程续(dijkstra)
    HDU 2112 HDU Today (map函数,dijkstra最短路径)
    HDU 2680 Choose the best route(dijkstra)
    HDU 2066 一个人的旅行(最短路径,dijkstra)
    关于测评机,编译器,我有些话想说
    测评机的优化问题 时间控制
    CF Round410 D. Mike and distribution
    数字三角形2 (取模)
    CF Round410 C. Mike and gcd problem
    CF Round 423 D. High Load 星图(最优最简构建)
  • 原文地址:https://www.cnblogs.com/isyefeng/p/11906925.html
Copyright © 2011-2022 走看看