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

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

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

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

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

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

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

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

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

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

[root@jenkins ~]$ vim auto_backup.sh
#!/bin/bash
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指令介绍见这里:

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

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

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

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

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

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

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

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

最新文章

  1. 浅谈java异常[Exception]
  2. C#调用 ICSharpCode.SharpZipLib.Zip 实现解压缩功能公用类
  3. 初识Python类
  4. Libevent 定时器
  5. TCP&UDP协议小结
  6. 从ng-repeat到NgFor
  7. 字符串查找函数 find()函数
  8. Java中NIO和IO区别和适用场景
  9. Lua的线程和状态
  10. php中json_decode及foreach使用总结
  11. jvm的基本结构以及各部分详解(转)
  12. mvc4使用百度ueditor编辑器
  13. windows服务没有及时响应启动或控制请求
  14. wdcp支持两种安装方式
  15. ImageMagick使用小结
  16. Centos7安装和配置Jira7.3.6
  17. (转)DLL中导出函数的两种方式(dllexport与.def文件)
  18. liunx下安装mysql(未完待更新)
  19. git 入门一(初识)
  20. Hibernate 三种状态变化 与 sql 语句的关系

热门文章

  1. sublime 配置过程
  2. mysql配置文件参数详解
  3. Connet Scanning
  4. eclipse编写连接MySQL的简单动态网页
  5. Zabbix(一)
  6. Python中防止sql注入的方法详解
  7. vue v-cloak知识点
  8. [深度学习入门]batch_size的意义
  9. php实现多进程和关闭进程
  10. [LeetCode] Binary Trees With Factors 带因子的二叉树