Gitlab本地备份与远程机备份

我们的需求是:首先将gitlab按照指定时间自动备份至本地机,然后将本地备份定时自动发送至远程机,以此来达到双备份双保险的目的。

1.本地机备份:
由于我们gitlab安装方式不一样,所以本地备份的具体方式也是有一定的区别的,这里主要介绍两种安装方式的备份:
1.1 yum等方式直接安装gitlab:
如果是直接安装gitlab,在备份上相对来说是比较简单的,我们可以直接使用定时任务来进行本地备份:
使用命令crontab -e;

crontab -e

按照自己的需求添加定时任务即可,比如我需要每天12:00以及20:00进行自动备份,我就要添加以下任务(/opt/gitlab/bin/根据自己的安装目录自行修改):

0 12 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
0 20 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create

添加完定时任务即可保存退出,然后重启定时任务即可生效:

systemctl restart crond

1.2 docker安装gitlab:
使用docker安装的gitlab最主要的区别就是要进入到容器才可以执行命令,所以我们就不能单纯的使用一个定时任务来达到备份的目的,需要借助一个脚本来备份,我这里将脚本命令起名为gitlab_backup.sh;

#! /bin/bashdocker exec gitlab-dev gitlab-rake gitlab:backup:create# gitlab-dev 为自己的容器名称,如果不知道可以使用 docker ps 来查询

很简单的一个脚本,就是进入容器然后执行备份命令,有了脚本以后还是要使用定时任务来定时执行脚本进行备份,同样我是按照每天12:00,20:00来进行脚本执行以此达到备份的目的;
使用crontab -e 命令

crontab -e

进入以后添加定时任务(/home/gitlab/为我自己存储脚本的路径,需要自行修改):

0 12 * * * sh /home/gitlab/gitlab_backup.sh
0 20 * * * sh /home/gitlab/gitlab_backup.sh

添加定时任务以后,保存退出,然后重启定时任务:

systemctl restart crond

重启以后定时任务即可生效,gitlab将会在你指定的时间进行自动备份至指定目录(默认路径为/home/gitlab/var/opt/backups,同样/home/gitlab为启动容器时映射的路径需要自行修改);

2.远程机备份
一般为了保险都会再使用一个远程机备份,使用远程机备份其实就是将本地机的备份文件发送至远程机,但是一般来说每次本地发送至远程机的时候都需要输入密码,所以我们需要先进行免密配置来省略输入密码这一步,让本地可以直接发送备份至远程机:
2.1 生成秘钥对
假设A,B两台服务器,我们现在要实现在A服务器上使用root登录B,且不需要输入密码:
(1)在本地服务器A上生成rsa证书:
使用命令:

ssh-keygen -t rsa
  • 生成的过程中提示输入密钥对保存位置,直接回车,接受默认值就行了。
  • 如果之前已经有/root/.ssh/id_rsa 文件存在,就会多一个提示问是否需要覆盖,输入y表示覆盖(因为我之前没有这个文件所以是没有这个提示的)。
  • 接着会提示输入一个密码,直接回车,让它空着。当然,也可以输入一个密码。
  • 接着输入确认密码,输入完之后,回车密钥对就生成完了。
    生成完之后会在/root/.ssh下生成id_rsa 和 id_rsa.pub 两个文件,其中公共密钥为id_rsa.pub,私有密钥为id_rsa。
    (2)在A服务器上复制一份rsa公钥证书
    在/root/.ssh下复制备份一份id_rsa.pub 命名为 id_rsa.pub.A,以便拷贝到远程服务器B。
    执行cp命令复制
cp id_rsa.pub id_rsa.pub.A

(3)将复制的rsa公钥证书发送至服务器B,这里可以直接由A服务器下载至本地然后上传至B服务器,或者使用scp命令发送至B服务器,这里就不详细介绍了;
2.2 秘钥配对
(1)创建authorized_keys文件
在 B 的/root/.ssh下创建authorized_keys文件,可以使用如下命令

touch authorized_keys

(2)设置authorized_keys 文件
通过 cat 命令 把id_rsa.pub.A 追写到 authorized_keys 文件中,命令依次如下:

cat id_rsa.pub.A >> authorized_keys

(3)修改authorized_keys文件的权限
执行如下命令,修改authorized_keys文件的权限

chmod 400 authorized_keys

切记:authorized_keys文件的权限很重要,如果将文件的权限设置为777,那么登录的时候,还是需要提供密码的。
2.3 创建远程备份脚本
服务器A上创建定期备份脚本命名为auto_backup_to_remote.sh,脚本内容如下

#!/bin/bash# gitlab 服务器A备份路径LocalBackDir=/home/gitlab/var/opt/backups# 服务器B备份文件存放路径RemoteBackDir=/home/gitlab_backups# 远程备份服务器 登录账户RemoteUser=root# 远程备份服务器 IP地址RemoteIP=10.100.2.69#当前系统日期DATE=`date +"%Y-%m-%d"`#Log存放路径LogFile=$LocalBackDir/log/$DATE.log# 查找 本地备份目录下 时间为1000分钟之内的,并且后缀为.tar的gitlab备份文件
#需要注意的一点是:查询时间要合理安排保证不多查不漏查BACKUPFILE_SEND_TO_REMOTE=$(find /home/gitlab/var/opt/backups -type f -mmin -1000  -name '*.tar*')#新建日志文件touch $LogFile#追加日志到日志文件echo "Gitlab auto backup to remote server, start at  $(date +"%Y-%m-%d %H:%M:%S")" >>  $LogFileecho "---------------------------------------------------------------------------" >> $LogFile# 输出日志,打印出每次scp的文件名echo "---------------------The file to scp to remote server is: $BACKUPFILE_SEND_TO_REMOTE-------------------------------" >> $LogFile#备份到远程服务器scp $BACKUPFILE_SEND_TO_REMOTE $RemoteUser@$RemoteIP:$RemoteBackDir#追加日志到日志文件echo "---------------------------------------------------------------------------" >> $LogFile

创建脚本之后还要将脚本修改为可执行权限,命令如下:

chmod 777 auto_backup_to_remote.sh

2.4 添加定时任务,定时执行脚本备份gitlab
依旧是使用crontab -e 命令:

crontab -e
   进入后添加定时任务(每天三点执行脚本进行备份):
0 3 * * * sh /home/gitlab/auto_backup_to_remote.sh

备份时间可以自己进行合理的安排,比如我的是每天12:00,20:00两次进行本地备份,然后次日凌晨三点进行远程备份;
2.5 重启定时任务

systemctl restart crond

重启后任务即可生效,等指定时间自动备份就可以了;

Gitlab本地备份与远程机备份相关推荐

  1. SqlServer数据库使用SQL脚本进行定时备份+异机备份

    一.定时备份 1.创建存放备份数据的文件夹(如D:\bak\bakup),否则执行sql语句会报错: 2.编写一个用于备份数据的sql脚本,内容如下: --声明备份集名称变量 declare @nam ...

  2. 远程工具连接mysql备份_MySQL远程连接 备份还原

    连接远程数据库 mysql -h 数据库地址 -P 端口号 -u 用户名 -p mysql -h 127.0.0.1 -P 3307 -uroot -p 备份数据库, 热备份 mysqldump -h ...

  3. linux rsync 本地 远程 增量 备份 同步工具 问题集合

    目录 简介 1 客户端的错误现象:No route to host 2 ERROR: The remote path must start with a module name not a / 3 @ ...

  4. ftp服务器文件备份,数据备份是十分重要的,下面是通过ftp将本机数据备份到远程服务器的一个例子...

    数据备份是十分重要的,下面是通过ftp将本机数据备份到远程服务器的一个例子 以备份oracle数据为例 本机IP:192.168.0.1 远程IP:192.168.0.111 备份脚本 ora_bak ...

  5. gitlab 本地 定时备份

    =============================================== 2018-04-26  08:40:52 =============================== ...

  6. postgresql|数据库|基于本地备份的远程备份策略

    前言: 数据库的安全性需要做一个保证,那么,本地备份策略显然是不太安全的,如果,本地磁盘有突发损坏问题,将无法恢复数据库. 因此,远程备份也就是把备份文件拷贝到远端服务器是一个必要的措施. 远程备份策 ...

  7. 文档服务器备份吗,本地资料和云服务器备份吗

    本地资料和云服务器备份吗 内容精选 换一换 云备份(Cloud Backup and Recovery,CBR)可以为云服务器.云硬盘提供简单易用的备份服务,当发生病毒入侵.人为误删除.软硬件故障等事 ...

  8. git服务器远程定时备份

    一.背景 需求:本地git服务器A:192.168.251.10,远程备份服务器B:192.168.251.11,需要将服务器A中的git目录下的git工程文件定时备份到远程服务器B中. 因Gitla ...

  9. Gmail宕机 备份问题成云计算新题

    本文讲的是Gmail宕机 备份问题成云计算新题,[IT168 资讯]周二的Gmail宕机事件不仅给用户带来了不便,还再次引发了用户对于云计算可行性的担忧.一种比较流行的说法是,今后的电脑无需大容量硬盘 ...

最新文章

  1. C++重载(overload)和重写(覆盖)的区别?
  2. 使用T-SQL配置数据库事务日志传送
  3. 黑苹果系统坏了如何恢复_黑苹果macOS系统U盘版/恢复版基础安装教程
  4. Angular CDK Layoout 检测断点
  5. 基于spring-redis发布订阅模式的实现
  6. Linux 常见问题 1000 个详细解答
  7. Ubuntu 实现点击菜单栏图标最小化程序
  8. Introduction to Computer Networking学习笔记(十三):传输层知识点学习总结
  9. 魔塔类游戏实现源码及关卡生成
  10. 一键steam挂卡linux,steam一键添加免费游戏挂卡
  11. 3D LUT调色:单反如何实现电影级调色。
  12. 大师典藏!齐白石-巨匠笔下的小动物系列数字藏品限量发售!
  13. Linux CentOS 系统实战笔记-基础篇
  14. 效率评价方法--数据包络分析
  15. vue生成海报(vue-canvas-poster)
  16. 级联失效matlab,加权无标度网络的级联失效模型
  17. navicat连接mysql1044_Navicat访问MySQL出现1044/1045错误的解决方法
  18. android环绕耳机,完全不同的“听音辨位”体验——罗技G433 7.1环绕声游戏耳机使用体验...
  19. 20190930双色球中奖号码概率的处理(VC6.0)
  20. NSString 遇到的坑

热门文章

  1. 拼多多稽查系统升级,现在还有3个稳定出评
  2. 搭建DVWA出现错误:DVWA System error - config file not found.
  3. 程序员的算法趣题Q55: 平分蛋糕
  4. Android监听Home键
  5. 瑞萨电子第一家Preferred Partner-武汉万象奥科
  6. 2w字Python列表,全了!
  7. 小程序 朋友圈,点赞 ,评论,发布动态,功能,局部刷新数据之 -----评论
  8. 这是我看过最好的「机器学习」科普文章了
  9. 如何下载白纸坊街道卫星地图高清版大图
  10. [渝粤教育] 兰州文理学院 信息技术基础 参考 资料