GitLab数据手动备份
1、GitLab默认备份目录为/var/opt/gitlab/backups,可以修改/etc/gitlab/gitlab.rb里面的默认存放备份文件目录,这里使用默认备份目录:

  1. gitlab_rails['backup_path'] = '/var/opt/gitlab/backups'

如果修改默认备份目录,需要运行gitlab-ctl reconfigure命令使配置生效,并且运行gitlab-ctl restart命令重新启动服务器。

2、使用下面的命令手动备份数据,命令完成/var/opt/gitlab/backups目录下会多一个**.tar`的备份文件:

  1. //在容器里面
  2. [root@NJEHE87FS ~]# gitlab-rake gitlab:backup:create
  3.  
  4. //在宿主机里面
  5. [root@jenkins ~]$ docker exec -it gitlab gitlab-rake gitlab:backup:create

缺点:必须是gitlab系统正常运行时,手动执行命令才会备份。如果gitlab系统崩溃,则无法进行备份。所以,最好的方式是让系统自动帮我们备份。 可以使用linux的crontab定时任务工具来实现自动备份机制。

GitLab数据自动备份
1、如果没有/etc/crontab定时任务配置文件,执行crontab -e命令生成该配置文件;

2、编辑/etc/crontab定时任务配置文件,在里面添加定时任务指令如下:

  1. [root@jenkins ~]$ crontab -e
  2. * * * root /var/opt/gitlab/backups/auto_backup.sh -D

上面命令的意思是:crontab每天的23:00自动执行auto_backup.sh脚本,脚本内容如下:

  1. [root@jenkins ~]$ vim auto_backup.sh
  2. #!/bin/bash
  3. gitlab-rake gitlab:backup:create

知识小贴士:
在crontab文件里面,每一行代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,每个字段之间用空格分割,没用的段用*代替,格式如下:
m h dom mon dow user command
其中:
m: 表示分钟,可以是从0到59之间的任何整数。
h:表示小时,可以是从0到23之间的任何整数。
dom:表示日期,可以是从1到31之间的任何整数。
mon:表示月份,可以是从1到12之间的任何整数。
dow:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
user : 表示执行的用户。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件(如shell文件)

GitLab历史备份数据自动删除
当上面的操作完成以后,我们已经完成了自动备份的功能,但是每天备份一次,太占用磁盘空间。所以我们需要添加删除过期文件的功能。
首先我们要查找出备份目录下面过期的文件,然后在删除,指令如下,具体的find指令介绍见这里:

  1. find "/var/opt/gitlab/backups" -name "*.tar" -ctime + -type f -exec rm -rf {} \;

上面指令的意思就是查找备份目录下面后缀名是tar的所有普通文件,判断他们的创建时间,如果是1天前创建的,那么就删除。

创建一个auto_delete.sh文件,把上面一行命令放进这个文件中。然后在/etc/crontab文件中配置一个定时任务,实现每天自动删除之前gitlab备份数据得功能,只保留最新备份。

  1. * * * root /var/opt/gitlab/backups/auto_delete -D

也可以在gitlab.rb文件设置保留多长时间

  1. [root@ecs- data]# cat gitlab/config/gitlab.rb | grep backup
  2. ###! Docs: https://docs.gitlab.com/omnibus/settings/backups.html
  3. # gitlab_rails['manage_backup_path'] = true
  4. # gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
  5. ###! Docs: https://docs.gitlab.com/ce/raketasks/backup_restore.html#backup-archive-permissions
  6. # gitlab_rails['backup_archive_permissions'] =
  7. # gitlab_rails['backup_pg_schema'] = 'public'
  8. ###! The duration in seconds to keep backups before they are allowed to be deleted
  9. gitlab_rails['backup_keep_time'] = //备份保留7天
  10. # gitlab_rails['backup_upload_connection'] = {
  11. # gitlab_rails['backup_upload_remote_directory'] = 'my.s3.bucket'
  12. # gitlab_rails['backup_multipart_chunk_size'] =
  13. ###! backups**
  14. # gitlab_rails['backup_encryption'] = 'AES256'
  15. ###! **Specifies Amazon S3 storage class to use for backups. Valid values
  16. # gitlab_rails['backup_storage_class'] = 'STANDARD'

GitLab数据双备份机制
双备份机制原理很简单,这里提供一种思路:
通过scp /var/opt/gitlab/backups/[当天备份数据] root@[另外一台服务器ip]:[备份目录]命令把当天的备份数据拷贝到另一台服务器,另一台服务器向上文描述的一样配置自动删除任务,保留最新的备份即可。

原文:https://blog.csdn.net/u012995888/article/details/82713673

gitlab自动备份和定时删除的更多相关文章

  1. 配置gitlab自动备份

    在gitlab机器的root用户执行 首先,假设有2台机器. gitlab 1.1.1.1 backup 2.2.2.2 做秘钥信任 gitlab root 生成 ssh-key copy密钥到bac ...

  2. gitlab自动备份恢复与卸载

    一.gitlab数据备份gitlab-rake gitlab:backup:create命令会在/var/opt/gitlab/backups目录下创建一个名称类似为1393513186_gitlab ...

  3. Mongodb自动备份数据库并删除指定天数前的备份

    1.创建Mongodb数据库备份目录 mkdir -p /home/backup/mongod_bak/mongod_bak_now mkdir -p /home/backup/mongod_bak/ ...

  4. gitlab自动备份脚本auto_backup_to_remote

    !/bin/bash gitlab 服务器备份路径 LocalBackDir=/var/opt/gitlab/backups 远程备份服务器 gitlab备份文件存放路径 RemoteBackDir= ...

  5. Mysql Navicat数据库定时备份,定时删除

    Navicat自带实现数据库定时备份 1.先点击需要备份的数据库,然后点击计划,再点击新建批处理作业 2.然后出现双机可用任务列表,然后在已选择的任务中会出现可用任务 3. 点击保存,弹出对话框,给这 ...

  6. gitlab自动备份

    1.周期性计划任务: $crontab -e 0 0 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create $service crond res ...

  7. SQL2005自动备份,定期删除的维护计划及自动定期清除日志

    作为一名DBA,他们最常见的日常任务是: 1)定期完成数据库的完全备份或差异备份.2)定期清理备份文件,因为存储空间有限,可能只需要保存一个时期段内的文件(比如一周内或一月内). 而如何做到这两点呢? ...

  8. SQL SERVER 数据库自动备份及定期删除设置步骤

    现在任何的软件都离不了一个数据库,数据的利用价值越来越大,为了避免数据宕机造成的数据丢失情况的产生,定期对数据库进行备份是必须要做的工作,下面将介绍SQL Server自带的数据库备份方法,希望可以帮 ...

  9. GitLab 数据自动备份

    gitlab自动备份 周期性计划任务: crontab -e * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create service crond ...

随机推荐

  1. android开源框架讲解 一 butterknif

    2019年3月16日 12:49:38 一 直接进入主题 如何配置ButterKnif 我用的是AS3.1.2 应该跟版本关系不大 1.1 下载安装Android ButterKnif Zelezny ...

  2. xml文件sql中大于号、小于号、等号的转义问题

    1.用小于或小于等于的场景 代码1: <delete id="delOvertimeLog" parameterType="java.lang.Integer&qu ...

  3. Autofac 依赖注入框架 使用

    简介 Autofac是一款IOC框架,比较于其他的IOC框架,如Spring.NET,Unity,Castle等等所包含的,它很轻量级性能上非常高. 官方网站http://autofac.org/ 源 ...

  4. 【JavaScript】 使用extend继承对象的prototype方法

    之前有学习过通过prototype模式来构造类,并通过prototype来添加方法.好处大概有以下几点: 1.类方法可以都放在prototype中,可以提高性能效率. 2.可以用prototype来实 ...

  5. 1.使用RNN做MNIST分类

    第一次用LSTM,从简单做起吧~~ 注意事项: batch_first=True 意味着输入的格式为(batch_size,time_step,input_size),False 意味着输入的格式为( ...

  6. P4147 玉蟾宫 二维DP 悬线法

    题目背景 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. 题目描述 这片土地被分成N*M个格子,每个格子里写着'R'或者'F ...

  7. Service的启动过程

    --摘自<Android进阶解密> 第一步:ContextImpl到ActivityManagerService的调用过程 第二步:ActivityThread启动Service 1)Pr ...

  8. python flask_Sqlalchemy管理数据库

    懒癌复发直接粘贴代码,算是做一个简单备份吧. #coding:utf8 from flask import Flask from flask_sqlalchemy import SQLAlchemy ...

  9. SpringBoot使用Nacos服务发现

    本文介绍SpringBoot应用使用Nacos服务发现. 上一篇文章介绍了SpringBoot使用Nacos做配置中心,本文介绍SpringBoot使用Nacos做服务发现. 1.Eureka闭源 相 ...

  10. Java8新特性----Stream

    Stream Stream 是用函数式编程方式在集合类上进行复杂操作的工具. 一)常用的流操作 惰性求值方法:只描述Stream,最终不产生新集合的方法(返回的还是Stream). 及早求值方法:最终 ...