gitlab数据备份并同步至远程服务器

1.gitlab数据备份

1.1 更改配置文件

gitlab的配置文件为/etc/gitlab/gitlab.rb,把下列配置信息写入配置文件使其生效

#新增
gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"  #gitlab默认备份目录,可修改
gitlab_rails['backup_archive_permissions'] = 0777  #生成的备份文件权限
gitlab_rails['backup_keep_time'] = 604800  #默认备份保留天数为7天

在这里插入图片描述

1.2 重载配置文件

gitlab-ctl reconfigure

1.3 编写gitlab备份脚本

vi /var/opt/gitlab/gitlab_backup.sh

#!/bin/bash
gitlab-rake gitlab:backup:create

chmod 777 /var/opt/gitlab/gitlab_backup.sh

1.4 备份文件同步远程服务器

1.4.1 设置远程服务器免登录

现有两个服务器A(192.168.1.188)、服务器B(192.168.1.189)
从服务器A向服务器B传送文件
服务器A输入下面命令生成配对密钥

ssh-keygen -t rsa

备注: -t代表密钥类型为rsa型,rsa是一种加密算法
遇到输入就一路回车用默认
在这里插入图片描述
生成的公钥文件在:cd /root/.ssh/
分别为私钥id_rsa和公钥id_rsa.pub
在这里插入图片描述
将id_rsa.pub放到服务器B的/root/.ssh/ 目录下
然后执行:

cat /root/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

然后:ssh root@192.168.1.189 就可以免密码登录,scp免密码传递文件

1.4.2 编写备份文件同步脚本

vi /var/opt/gitlab/gitlab_remote_backup.sh

#!/bin/bash
#本地备份目录
localBackupDir=/home/gitlab/gitlabbak
#远程服务器账号
remoteUser=root
#远程服务器目录
remoteBackDir=/devops/gitlab/gitlabbak
#远程服务器IP
remoteIP=134.99.22.29

#日志输出目录
backupLog=/var/opt/gitlab/logs/out.log

#查找gitlab本地生成备份, 时间为24小时内后缀为.tar的备份文件
lastBackupFile=$(find $localBackupDir -type f -mmin -1440 -name '*.tar')
echo "备份文件: $lastBackupFile" >> $backupLog
echo "传送时间: $(date +"%Y-%m-%d %H:%M:%S")" >> $backupLog

backup()
{
   if [ ! -n "$lastBackupFile" ]; then
        echo "查询备份文件不存在,备份失败"
   else
        # scp -r $lastBackupFile $remoteUser@$remoteIP:$remoteBackDir
        # 远程目录若有该文件则不覆盖
        rsync -avz --ignore-existing $lastBackupFile $remoteUser@$remoteIP:$remoteBackDir
        echo "备份成功!"
   fi

   echo "------------------------------"
}
backup>>$backupLog

chmod 777 /var/opt/gitlab/gitlab_remote_backup.sh

2 定时任务配置

2.1 安装配置crontab(若已安装,跳过该步骤)

buntu安装cron
安装:apt-get install cron
启动:service cron start
重启:service cron restart
停止:service cron stop
重新载入配置  : service cron reload  
检查状态:service cron status
查看crontab服务状态 : service cron status  
查询cron可用的命令:service cron
检查Cronta工具是否安装:crontab -l
#查看定时任务
cat /etc/crontab
使用crontab -l 时,提示“no crontab for XXX”
这是因为第一次使用,crontab,没有生成对应文件导致的。
解决方法:使用crontab -e进入编辑,保存退出,即可正常使用 crontab -l
crontab -e

2.2 配置定时任务

vi /etc/crontab

#每天上午11点、晚上11点定时备份
* 11,23 * * * /bin/bash /var/opt/gitlab/gitlab_backup.sh > /dev/null 2>&1
#每天上午11点15、晚上11点15定时将备份数据同步到124.99.22.29服务器
15 11,23 * * * /bin/bash /var/opt/gitlab/gitlab_remote_backup.sh > /dev/null 2>&1

使配置文件生效
crontab /etc/crontab

2.2 定时清理目标服务器上备份文件

cd /devops/gitlab
vi delbackup.sh

#!/bin/bash

#gitlab备份的位置
backupdir=/devops/gitlab/gitlabbak

#保留7日
find $backupdir -name "*.tar" -type f -mtime +7 -exec rm -rf {} \;

chmod /devops/gitlab/delbackup.sh
定时执行清理脚本
vi /etc/crontab

#每天晚上11点定时清理备份数据
0 23 * * * /bin/bash /devops/gitlab/delbackup.sh > /dev/null 2>&1

crontab /etc/crontab

GitLab是一个仓库管理工具,它可以用来管理远程仓库、用户、用户权限和项目等功能。通过GitLab,你可以创建一个远程仓库,并与本地仓库进行同步,实现备份和与他人协作管理远程仓库的目的。你可以使用GitLab来添加远程仓库、移除无用远程仓库、查看远程仓库和修改远程仓库等操作。与其他Git仓库管理工具相比,GitLab安装简单、免费,并且不需要数据库支持,非常适合小型团队使用。\[1\]\[2\] 在GitLab中,你可以使用git fetch命令来从远程仓库获取最新版本的数据。当你添加远程仓库时,可以指定一个仓库名,比如origin,这样git fetch origin命令就会自动将其添加为远程仓库并以origin为简写。执行git fetch origin命令相当于从远程获取最新版本到本地,然后比较本地分支和远程分支的差别,并进行合并。你也可以使用git fetch origin branch_name命令来获取指定分支的最新数据。\[3\] #### 引用[.reference_title] - *1* *3* [Git系列四之在本地服务器搭建gitlab仓库管理](https://blog.csdn.net/weixin_34025151/article/details/86238607)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Git代码仓库管理系统的配置方法之:Gitlab](https://blog.csdn.net/yyzsyx/article/details/127804058)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值