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

本文详细指导如何在GitLab本地部署中设置自动备份,定时备份到远程服务器,并配置清理策略。涉及手动备份、crontab定时任务、密钥对传输与脚本编写,适用于IT团队日常运维管理。

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

参考

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值