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是你的备份目录

原文地址:https://www.cnblogs.com/isyefeng/p/11906925.html