Gitlab本地备份与远程机备份
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本地备份与远程机备份相关推荐
- SqlServer数据库使用SQL脚本进行定时备份+异机备份
一.定时备份 1.创建存放备份数据的文件夹(如D:\bak\bakup),否则执行sql语句会报错: 2.编写一个用于备份数据的sql脚本,内容如下: --声明备份集名称变量 declare @nam ...
- 远程工具连接mysql备份_MySQL远程连接 备份还原
连接远程数据库 mysql -h 数据库地址 -P 端口号 -u 用户名 -p mysql -h 127.0.0.1 -P 3307 -uroot -p 备份数据库, 热备份 mysqldump -h ...
- linux rsync 本地 远程 增量 备份 同步工具 问题集合
目录 简介 1 客户端的错误现象:No route to host 2 ERROR: The remote path must start with a module name not a / 3 @ ...
- ftp服务器文件备份,数据备份是十分重要的,下面是通过ftp将本机数据备份到远程服务器的一个例子...
数据备份是十分重要的,下面是通过ftp将本机数据备份到远程服务器的一个例子 以备份oracle数据为例 本机IP:192.168.0.1 远程IP:192.168.0.111 备份脚本 ora_bak ...
- gitlab 本地 定时备份
=============================================== 2018-04-26 08:40:52 =============================== ...
- postgresql|数据库|基于本地备份的远程备份策略
前言: 数据库的安全性需要做一个保证,那么,本地备份策略显然是不太安全的,如果,本地磁盘有突发损坏问题,将无法恢复数据库. 因此,远程备份也就是把备份文件拷贝到远端服务器是一个必要的措施. 远程备份策 ...
- 文档服务器备份吗,本地资料和云服务器备份吗
本地资料和云服务器备份吗 内容精选 换一换 云备份(Cloud Backup and Recovery,CBR)可以为云服务器.云硬盘提供简单易用的备份服务,当发生病毒入侵.人为误删除.软硬件故障等事 ...
- git服务器远程定时备份
一.背景 需求:本地git服务器A:192.168.251.10,远程备份服务器B:192.168.251.11,需要将服务器A中的git目录下的git工程文件定时备份到远程服务器B中. 因Gitla ...
- Gmail宕机 备份问题成云计算新题
本文讲的是Gmail宕机 备份问题成云计算新题,[IT168 资讯]周二的Gmail宕机事件不仅给用户带来了不便,还再次引发了用户对于云计算可行性的担忧.一种比较流行的说法是,今后的电脑无需大容量硬盘 ...
最新文章
- C++重载(overload)和重写(覆盖)的区别?
- 使用T-SQL配置数据库事务日志传送
- 黑苹果系统坏了如何恢复_黑苹果macOS系统U盘版/恢复版基础安装教程
- Angular CDK Layoout 检测断点
- 基于spring-redis发布订阅模式的实现
- Linux 常见问题 1000 个详细解答
- Ubuntu 实现点击菜单栏图标最小化程序
- Introduction to Computer Networking学习笔记(十三):传输层知识点学习总结
- 魔塔类游戏实现源码及关卡生成
- 一键steam挂卡linux,steam一键添加免费游戏挂卡
- 3D LUT调色:单反如何实现电影级调色。
- 大师典藏!齐白石-巨匠笔下的小动物系列数字藏品限量发售!
- Linux CentOS 系统实战笔记-基础篇
- 效率评价方法--数据包络分析
- vue生成海报(vue-canvas-poster)
- 级联失效matlab,加权无标度网络的级联失效模型
- navicat连接mysql1044_Navicat访问MySQL出现1044/1045错误的解决方法
- android环绕耳机,完全不同的“听音辨位”体验——罗技G433 7.1环绕声游戏耳机使用体验...
- 20190930双色球中奖号码概率的处理(VC6.0)
- NSString 遇到的坑
热门文章
- 拼多多稽查系统升级,现在还有3个稳定出评
- 搭建DVWA出现错误:DVWA System error - config file not found.
- 程序员的算法趣题Q55: 平分蛋糕
- Android监听Home键
- 瑞萨电子第一家Preferred Partner-武汉万象奥科
- 2w字Python列表,全了!
- 小程序 朋友圈,点赞 ,评论,发布动态,功能,局部刷新数据之 -----评论
- 这是我看过最好的「机器学习」科普文章了
- 如何下载白纸坊街道卫星地图高清版大图
- [渝粤教育] 兰州文理学院 信息技术基础 参考 资料