栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

gitlab数据自动化备份到其他服务器

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

gitlab数据自动化备份到其他服务器

gitlab数据自动化备份到其他服务器 gitlab配置本地自动备份

1、本地部署完成的gitlab服务器上操作,手动备份

gitlab-rake gitlab:backup:create

特别说明: 如果/etc/gitlab/gitlab.rb 配置了参数“backup_path”的指定目录,则备份数据会直接到指定目录下,如果没有配置则备份数据到默认”/var/opt/gitlab/backups“下

2、自动定时备份gitlab数据,使用命令crontab -e,添加定时任务

crontab -e

根据自己部门的配置时间进行对应修改

//本部门白天都在提交数据,改成凌晨进行备份处理
0 0 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create

重启crontab

systemctl restart crond

3、本地配置自动清理备份数据,通过修改gitlab自己的配置实现

vim /etc/gitlab/gitlab.rb

将配置文件中backup_keep_time的注释取消掉

//备份保留7天(7*3600*24=604800)
gitlab_rails['backup_keep_time'] = 604800

重新加载配置文件

gitlab-ctl reconfigure

本地备份完成。下一步配置远程备份

远程备份数据

1、gitlab服务器A(172.16.10.90),备份服务器B(172.16.10.100)
2、配置密钥对,取消scp传输密码限制, 在A服务器上生成rsa证书ssh-keygen -t rsa一路回车即可。会在root下生成一个.ssh目录,里面存放id_rsa和id_rsa.pub两个证书,公共密钥保存在 /root/.ssh/id_rsa.pub,私有密钥保存在/root/.ssh/id_rsa
3、将生成的id_rsa.pub文件复制到B服务器上

mkdir -p /root/.ssh
//从A机器将公钥拷贝过去
scp /root/.ssh/id_rsa.pub root@172.16.10.100:/root/.ssh/

4、在备份服务器B上创建authorized_keys文件

touch /root/.ssh/authorized_keys

将scp过来的id_rsa.pub文件内容复制到authorized_keys中

cat id_rsa.pub >> authorized_keys

修改authorized_keys文件权限,如果给777权限,scp的时候还需要密码

chmod 400 authorized_keys

5、创建远程备份脚本
在gitlab服务器上创建脚本

vim /root/auto_backup_to_remote.sh
//文件中添加如下内容
#!/bin/bash

# gitlab 服务器备份路径
LocalBackDir=/var/opt/gitlab/backups

# 远程备份服务器 gitlab备份文件存放路径
RemoteBackDir=/root/gitlab_backup

# 远程备份服务器 登录账户
RemoteUser=root

# 远程备份服务器 IP地址
RemoteIP=(备份服务器B的地址,请你自行修改)

#当前系统日期
DATE=`date +"%Y-%m-%d"`

#Log存放路径
LogFile=$LocalBackDir/log/$DATE.log

# 查找 gitlab本地备份目录下 时间为60分钟之内的,并且后缀为.tar的gitlab备份文件
BACKUPFILE_SEND_TO_REMOTE=$(find $LocalBackDir -type f -mmin -60  -name '*.tar*')

#新建日志文件
touch $LogFile

#追加日志到日志文件
echo "Gitlab auto backup to remote server, start at  $(date +"%Y-%m-%d %H:%M:%S")" >>  $LogFile
echo "---------------------------------------------------------------------------" >> $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

创建日志存放目录

mkdir -p /var/opt/gitlab/backups/log

6、添加定时计划,使用命令crontab -e,将定时任务添加后保存

crontab -e

根据本地备份计划,推迟一个小时后上传

0 1 * * * /root/auto_backup_to_remote.sh -D 1
//重启crontab服务
systemctl restart crond

7、定时删除备份服务器上的备份文件,在备份服务器B上创建定时删除脚本。

//设置备份目录
mkdir -p /root/gitlab_backup
//创建定时删除脚本
vim /root/auto_remove_old_backup.sh
//向脚本中添加如下内容
#!/bin/bash

# 远程备份服务器 gitlab备份文件存放路径
GitlabBackDir=/root/gitlab_backup


# 查找远程备份路径下,超过14天且文件后缀为.tar 的 Gitlab备份文件 然后删除
find $GitlabBackDir -type f -mtime +14 -name '*.tar*' -exec rm {} ;
//修改脚本权限
chmod 777 auto_remove_old_backup.sh

添加定时任务,通过crontab命令

//添加任务
crontab -e
//添加内容,每天凌晨3点执行删除过期备份任务
0 3 * * *  /root/auto_remove_old_backup.sh
//重启cron服务
systemctl restart crond

参考

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/836101.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号