问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

GitLab 远程 定时备份

发布网友 发布时间:2022-09-02 13:18

我来回答

1个回答

热心网友 时间:2023-10-11 16:29

一、环境准备

1.gitlab所在的服务器A(centos7,192.168.1.1)
2.备份服务器B(centos7,192.168.1.2)
3.gitlab本地备份目录设置为/var/opt/gitlab/backups/log,本篇也是以此展开
gitlab已经配置了本地备份。如果没有配置,可以参考 http://www.cnblogs.com/straycats/p/7671204.html 。

二、通过密钥配对取消scp传输密码的*
手动备份数据费时费力。最好的方法就是通过脚本实现远程自动备份。但远程无论是通过SSH登陆,还是通过scp拷贝文件都需要输入密码。

为了克服这个问题,首先需要实现不需要密码的SSH登陆,这样就可以使用 rsync,scp,rexec等命令来做的远程备份了。

2.1 生成密钥对

假设A,B两服务器,现在需要在A机上用root登陆B机,而不需要输入密码。那我们可按照下面的步骤来做:

** 1)在gitlab服务器A上生成rsa证书 **

1、生成的过程中提示输入密钥对保存位置,直接回车,接受默认值就行了。
2、因为之前已经有/root/.ssh/id_rsa 文件存在,因此提示你是否覆盖,输入y表示覆盖
3、接着会提示输入一个密码,直接回车,让它空着。当然,也可以输入一个密码。
4、接着输入确认密码,输入完之后,回车密钥对就生成完了。

这样,在/root/.ssh下生成id_rsa 和 id_rsa.pub 两个文件,其中公共密钥保存在 /root/.ssh/id_rsa.pub,私有密钥保存在/root/.ssh/id_rsa。

** 2)在gitlab服务器A上cp生成rsa公钥证书 **

在/root/.ssh下复制备份一份id_rsa.pub 命名为 id_rsa.pub.A,以便拷贝到远程服务器B。

2.2 生成rsa公钥证书上传到备份服务器B

先在服务器B上创建目录/root/.ssh。

使用scp命令进行远程复制,将服务器A生成的id_rsa.pub.A拷贝到服务器B的/root/.ssh目录下。

此时使用scp命令需要输入密码,当把下面的“2.3 密钥配对”执行后,以后gitlab服务器A使用scp命令复制文件到备份服务器B的话,就不需要输入密码了。

2.3 密钥配对

1)创建authorized_keys文件

在备份服务器B的/root/.ssh下创建authorized_keys文件。

2)将id_rsa.pub.A文件内容追加到authorized_keys 文件中

通过 cat 命令 把id_rsa.pub.A 追写到 authorized_keys 文件中。

3)修改authorized_keys文件的权限

authorized_keys文件的权限很重要,如果设置为777,那么登录的时候,还是需要提供密码的。

4)测试上传文件是否还要输入密码

不放心的话,立刻测试下gitlab服务器A使用scp命令复制文件到备份服务器B是否还要输入密码。

发现在2.3之前,由于没有设置ssh证书授权认证时,上传需要输入密码;2.3操作完后,由于授权认证,已经不需要输入密码了。

三、定时将备份文件传到备份服务器

3.1 创建远程备份脚本

在gitlab服务器A上,在/root目录下创建定期备份脚本auto_backup_to_remote.sh。

添加下面的内容,并wq保存。

3.2 修改远程备份脚本auto_backup_to_remote.sh的权限

要能让系统执行auto_backup_to_remote.sh,必须修改该脚本的权限。

3.3 创建日志存放目录

3.4 测试远程备份脚本的功能是否可用

现在为了验证脚本是否可以正常运行,我们需要手动执行脚本。

在gitlab服务器A上执行find命令,看是否能够正常查找出我们要scp到远程服务器的Gitlab备份文件。

手动执行脚本auto_backup_to_remote.sh,看是否能够正常上传

等待1-2分钟左右,查看备份服务器B的目录/root/gitlab_backup下是否有服务器A传过来的备份文件。

在备份服务器B上能找到服务器A传过来的备份文件,说明远程备份脚本的功能OK。

如果每次上传都通过人工运行脚本的方式,人工的消耗太大,接着配置定时执行该脚本。

3.5 添加定时计划

定时备份的思路建立在手动的基础上,通过crontab添加定时计划就可以解决这个问题。

一般添加定时计划可以有2种方式:

1.使用命令crontab -e,将定时任务添加后保存。

2.将定时任务添加到/etc/crontab文件中。

我这里采取第一种,使用crontab -e。

结合我之前对公司gitlab本地备份的设计,故设计在备份完10分钟后上传,故分别在每天12:10、19:10进行备份,故添加下面的内容,wq保存。

重启crontab

四、定时删除备份服务器上的备份文件

每个Gitlab备份文件都很大。因此每天备份两次,过不了多久的话,备份服务器B上的磁盘空间可能就会被Gitlab备份文件占用完。

故需要定期清理备份文件,参考备份服务器的空间,暂定保留14天的备份文件。

4.1 创建删除过期备份文件的脚本

设计备份服务器B的/root/gitlab_backup作为接收远程上传备份文件的目录,故在备份服务器B上,先创建该目录。

创建删除过期备份文件的脚本auto_remove_old_backup.sh。

添加下面的内容,并wq保存。

4.2 修改auto_remove_old_backup.sh脚本的权限

4.3 添加定时计划

定时备份的思路建立在手动的基础上,通过crontab添加定时计划就可以解决这个问题。

一般添加定时计划可以有2种方式:

1.使用命令crontab -e,将定时任务添加后保存。

2.将定时任务添加到/etc/crontab文件中。

我这里采取第一种,使用crontab -e。

设计凌晨0点执行删除过期备份文件的脚本,故添加下面的内容,wq保存。

重启crontab

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
想买红米但没银行卡 开美宜佳便利店是加盟好还是直接转一个美宜佳店好 ...就给你一个交易号,能到美宜佳付款,请问美宜佳是怎样付款的_百度知 ... 用美宜佳代购会不会看到我买的东西 重返帝国弓弩营对诸葛连弩有加成吗 重返帝国城市风格选什么好 重返帝国城市风格选择推荐 重返帝国城市风格怎么切换 重返帝国城市如何切换风格 重返帝国城市风格大全 特色兵种及增益介绍 重返帝国特殊兵种怎么生产-特殊兵种生产攻略 重返帝国怎么训练诸葛弩 《锦心似玉》:庶女罗十一娘这三种品格,让她成为人生赢家 肖像侵权如何赔偿 侵犯肖像权一般赔偿多少钱 柚子树取哪里好外植体 肖像权侵权的法律赔偿 肖像侵权应要求赔偿哪些 侵犯肖像权如何赔偿 根据法律规定侵犯他人肖像权如何赔偿 侵犯肖像权赔偿? 敌人西辞黄鹤楼的的下一句 风光不与四时同的上一句 侵犯肖像权需要赔偿损失吗 “风光不与四时同”的前一句 侵犯肖像权可以要求赔偿吗 风光不与四时同上句 风光不与四时同上一句 创新能力较强的锤子,究竟败在哪? 毕竟西湖六月中风光不与四时同出自哪首古诗 古诗中风光不与四时同的上一句是 四时风景各不同的上句是什么 古诗”风光不与四时同”上半句是什么 侵害肖像权应该怎么赔偿 碗莲叶子上长黑斑了。还有水闻起来有点臭,水要常换么,黑斑怎么解决。看起来要死的样子 我一个朋友种了碗莲,养在水盆,朋友直接把黄豆渣放进花盆,里面都臭了,莲花会不会死啊,真心求教 口头禅:Good job! Exactly! Whatever! hauntingly jetway exacty这几个单词的中文意思 51dm2等于多少cm? 为什么天涯总是删我的帖子,刚刚发完就被隐藏了 烟雨濛濛的歌曲简介 烟雨濛濛的介绍 烟雨濛濛 歌词 松茸可以和香蕉一起吃吗? 河池学院有几个校区 河间打征信在哪里的 清楚的辨别和了解自己的位置很重要早上起来面向太阳你的前面是什么方后面是什? 三国群英传7怎么一次多个武将出战? 怎么把电脑用户名的另一个删除掉??? 联想晒拯救者Y9000X+显卡坞,有望搭载RX 5700XT 在360手机助手下载软件显示写文件失败怎么回事? pu的衣服可以熨烫吗 pu皮熨烫有无问题 You are helpful的中文意思是什么