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

 

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

  docker环境下gitlab的自动双机备份(直接备份到window的共享目录下) 

  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

  自动挂载共享文件夹,在文件 /etc/rc.local exit 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是你刚新建的文件夹;

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

 

docker环境下gitlab的自动双机备份(直接备份到window的共享目录下)

上一篇:C# copy files from source directory to destination file and rename repeated files and does not override


下一篇:豆瓣api报错问题