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

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐