本文为[原创]文章,转载请标明出处。
原文链接:https://weyunx.com/2019/01/30...
原文出自微云的技术博客

GitLab 的备份工作主要包含配置文件备份和应用备份。

配置文件备份

配置文件备份需要备份/etc/gitlab目录。

# 压缩文件夹
sudo sh -c 'umask 0077; tar -cf $(date "+etc-gitlab-%s.tar") -C / etc/gitlab'

crontab中创建定时任务

sudo crontab -e -u root

新增一条:

# 每天1点执行
0 1 * * * umask 0077; tar cfz /secret/gitlab/backups/$(date "+etc-gitlab-\%s.tgz") -C / etc/gitlab

也可以将语句写成脚本,通过脚本执行,比如备份的共享目录里。

强烈建议配置文件备份目录和应用备份目录分开!

应用备份

GitLab 的备份命令如下:

# 本文的操作步骤仅适用于 Omnibus 一键安装方式安装的 GitLab,下同。
sudo gitlab-rake gitlab:backup:create# 样例结果
Dumping database tables:
- Dumping table events... [DONE]
- Dumping table issues... [DONE]
- Dumping table keys... [DONE]
- Dumping table merge_requests... [DONE]
- Dumping table milestones... [DONE]
- Dumping table namespaces... [DONE]
- Dumping table notes... [DONE]
- Dumping table projects... [DONE]
- Dumping table protected_branches... [DONE]
- Dumping table schema_migrations... [DONE]
- Dumping table services... [DONE]
- Dumping table snippets... [DONE]
- Dumping table taggings... [DONE]
- Dumping table tags... [DONE]
- Dumping table users... [DONE]
- Dumping table users_projects... [DONE]
- Dumping table web_hooks... [DONE]
- Dumping table wikis... [DONE]
Dumping repositories:
- Dumping repository abcd... [DONE]
Creating backup archive: $TIMESTAMP_gitlab_backup.tar [DONE]
Deleting tmp directories...[DONE]
Deleting old backups... [SKIPPING]

执行后,备份的tar包放置在默认的备份目录/var/opt/gitlab/backups 下。

同样,我们可以编辑/etc/gitlab/gitlab.rb来修改默认的备份目录。

# 默认的备份路径
gitlab_rails['backup_path'] = '/mnt/backups'

同样这里我们强烈建议双机备份,官网提供了将备份上传到云以及上传到 mount 共享文件夹下,这里介绍一下上传到共享文件夹下的配置。

比如我在本地 windows 环境下创建了一个共享文件夹gitlab_backups ,然后将文件夹挂载到服务器上:

# 在根目录下创建文件夹
mkdir gitlab_backups# 挂载
mount -t cifs -o uid=996,gid=993,username=user,password=pass //22.189.30.101/gitlab_backups /gitlab_backups

其中uidgid是服务器上git用户的uidgid,如果不加上很可能会报权限异常。userpass就是你本地的用户名密码,后面的 ip 和目录就是本地的共享目录。

挂载成功后修改配置:

 # 自动将备份文件上传gitlab_rails['backup_upload_connection'] = {:provider => 'Local',:local_root => '/gitlab_backups'}# 配置备份文件放至在挂载文件夹里的子目录名称,如果备份文件直接放至在挂载目录里,使用 ‘.’ gitlab_rails['backup_upload_remote_directory'] = '.'

修改完成后执行sudo gitlab-ctl reconfigure使配置生效,此时再执行备份命令则会自动将备份文件复制到挂载的共享目录里。

同样,我们可以加到定时任务中:

# 每天2点执行
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create

备份文件清理

因为 GitLab 备份的文件较大,会占用过多的存储,我们可以定时的进行清理,编辑 gitlab.rb,找到:

###! The duration in seconds to keep backups before they are allowed to be deleted
gitlab_rails['backup_keep_time'] = 604800

默认为保留7天,修改后执行 sudo gitlab-ctl reconfigure 即可。

GitLab 恢复

配置文件的恢复很简单,直接将备份文件替换,然后执行sudo gitlab-ctl reconfigure即可。

下面说一下应用备份的恢复:

首先是确认工作:

  • You have installed the exact same version and type (CE/EE) of GitLab Omnibus with which the backup was created.
  • You have run sudo gitlab-ctl reconfigure at least once.
  • GitLab is running. If not, start it using sudo gitlab-ctl start.

开始恢复:

# 复制备份文件
sudo cp 11493107454_2018_04_25_10.6.4-ce_gitlab_backup.tar /var/opt/gitlab/backups/# 权限变更
sudo chown git.git /var/opt/gitlab/backups/11493107454_2018_04_25_10.6.4-ce_gitlab_backup.tar# 停止服务
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq# 确认服务停止
sudo gitlab-ctl status# 恢复
sudo gitlab-rake gitlab:backup:restore BACKUP=1493107454_2018_04_25_10.6.4-ce# 重启和检查
sudo gitlab-ctl restart
sudo gitlab-rake gitlab:check SANITIZE=true

(完)

参考

  • https://docs.gitlab.com.cn/

GitLab 简易指引(三):备份与恢复相关推荐

  1. GitLab 简易指引(二):GitLab Runner 安装与配置

    本文为[原创]文章,转载请标明出处. 原文链接:https://weyunx.com/2019/01/23... 原文出自微云的技术博客 准备工作 下载安装包 # Linux x86-64 sudo ...

  2. git服务器维护 备份,gitlab服务运维,备份与恢复 - 橙子柠檬's Blog

    gitlab服务运维工作 Gitlab-ctl 使用gitlab-ctl start          #启动服务 gitlab-ctl stop           #停止服务 gitlab-ctl ...

  3. Docker + Gitlab + Gitlab CI(三)

    本文通过Docker + Gitlab + Gitlab CI实现容器的自动化部署. 环境如下: ip role domain 192.168.1.51 prod manager none 192.1 ...

  4. Gitlab使用指引1(基础篇)

    gitlab入门指南 gitlab和github的简单区别: gitlab简单使用: 什么是本地仓库?为什么要建立本地仓库? 本地仓库如何建立? 本地仓库中的三个区: 工作区: 暂存区: 本地仓库 远 ...

  5. 工信部部长苗圩于CITE发表致辞,指引三个方向推动国内电子信息产业持续发展...

    当前,我国作为全球最大电子信息产品制造基地的地位更加稳固,而创新能力也是显著提升. 今天,由工业和信息化部与深圳市人民政府共同主办的第六届中国电子信息博览会(CITE)在深圳正式开幕,此届博览会以&q ...

  6. PySide 简易教程三-------动手写起来

    到目前为止,已经接触的Pyside的界面元素有如下几个:QWidget.QPushButton.QLabel.本次再介绍两个tooltip和messagebox.tooltip是一个鼠标悬浮提示信息, ...

  7. ue4 unreal NDisplay插件 简易使用 三折幕 详细...

    仅支持4.27版本 NDisplay文档 https://docs.unrealengine.com/4.27/en-US/WorkingWithMedia/IntegratingMedia/nDis ...

  8. java学生管理系统(简易)(三)---教师端的登录主页面

    教师端的登录界面就比较清晰了...可能就我自己认为,以为前面写的太乱了...蒙圈 // 学会了先布局,在完善部分代码,嘤嘤嘤...之前那个学生的感觉凉凉啊~ // 有些代码中可能有main函数,有些没 ...

  9. JavaWeb简易入门(三)

    三层架构(该部分引自菜鸟教程) 什么是三层? UI(表现层): 主要是指与用户交互的界面.用于接收用户输入的数据和显示处理后用户需要的数据. BLL:(业务逻辑层): UI层和DAL层之间的桥梁.实现 ...

最新文章

  1. shell 脚本 文件夹扫描获取文件
  2. SAP 质检使用非物料基本单位
  3. 关于Android的一些设计【转】
  4. [BZOJ 2839]集合计数
  5. Android之二维码扫描的总结
  6. python文件输入符_python文件IO与file操作
  7. 华中科技大学计算机系统结构,华中科技大学计算机系统结构考研
  8. SQL注入学习part06:(结合sqli-libs学习:51-61关)
  9. 这三种程序员,是时代的溺水者
  10. eight_queens
  11. 分形之城:递归超典型例题,还没明白?手把手画给你看!
  12. RTB竞价中的cookie mapping技术
  13. 小电流接地系统配电线路弧光高阻接地故障电压特征分析ATP-EMTP仿真建模
  14. ffmpeg视频格式转换for windows and linux
  15. pip install 安装报错:ValueError: check_hostname requires server_hostname
  16. SCOI2018滚粗记
  17. B-spline算法(B样条曲线)
  18. 【软考-软件设计师精华知识点笔记】第十章 网络与信息安全
  19. 云服务器可以虚拟内存吗,云服务器可以设置虚拟内存吗
  20. Python全栈-magedu-2018-笔记13

热门文章

  1. WordPress模板-ripro主题系列对接易支付通用模块插件
  2. 有点牛论坛小程序v3.0.16源码
  3. mysql8.0.20 64位安装教程_MySQL8.0.20压缩版本安装教程图文详解
  4. python 量化交易_Python量化交易,tushare与talib学习示例演示,双均线(DMA)买卖策略...
  5. 自适应个人收款页HTML源码
  6. 适用于各类软件工具下载页面官网单页静态网站源码
  7. 小程序 | 获取用户头像信息接口改进:getUserInfo的使用
  8. fopen如何保存西里尔文文件名_如何下载微信视频号的视频?
  9. 免费的精品: Productivity Power Tools 动画演示
  10. Magento教程 1:免费购物车系统,轻松建立Magento第一步!