Gitlab数据自动备

news2024/12/28 4:55:40

【场景】:将Gitlab服务器定时备份到Gitlab备份服务器

1.设置Gitlab服务器以及Gitlab备份服务器时间

1.1查看系统时间:

date

1.2修改具体时间:

date -s "2023-06-02 15:15:00"

1.3把时间写入CMOS:

clock -w

1.4把时间写入BIOS:

hwclock -w

2.Gitlab服务器设置自动备份

2.1手动备份命令

gitlab-rake gitlab:backup:create

2.2使用命令crontab 添加定时任务自动备份

Crontab表达式含义
项目含义范围
第一个【*】一个小时中的第几分钟0~59
第二个【*】一天中的第几个小时0~23
第三个【*】一个月中的第几天1~31
第四个【*】一年中的第几月1~12
第五个【*】一周当中的星期几0~7(0、7都代表星期日)
crontab -e

2.3编辑定时计划

//周日凌晨进行备份处理

0 0 * * 7 /opt/gitlab/bin/gitlab-rake gitlab:backup:create

2.4重启定时任务

systemctl restart crond

3.Gitlab服务器设置清除备份数据

3.1使用gitlab自己的配置实现

vim /etc/gitlab/gitlab.rb

 3.2重新加载配置文件

gitlab-ctl reconfigure

4.将备份文件同步到Gitlab备份服务器

4.1服务器间取消scp传输密码限制

生成公钥、私钥

// 全部回车
ssh-keygen -t rsa

4.2创建公钥存放目录(150)

mkdir -p /root/.ssh 

4.3拷贝公钥(111->150)

scp /root/.ssh/id_rsa.pub root@192.168.14.150:/root/.ssh/

报错: 

 备份服务器上创建的目录后面有空格。

4.4创建authorized_keys文件

touch /root/.ssh/authorized_keys

4.5公钥id_rsa.pub文件内容复制到authorized_keys中

cat id_rsa.pub >> authorized_keys

4.6设置文件权限

chmod 400 authorized_keys

4.7创建备份文件存放目录

mkdir -p /root/gitlab_backup

5.创建备份脚本

5.1创建脚本文件

vim /root/auto_backup_to_remote.sh

5.2编辑脚本内容

#!/bin/bash

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

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

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

# 远程备份服务器 IP地址
RemoteIP=192.168.14.150

#当前系统日期
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

5.3 脚本权限

chmod 777 /root/auto_backup_to_remote.sh

5.4创建备份日志存放目录

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

5.5添加定时计划

crontab -e

5.6设置定时计划

//周日八点开始备份数据
0 8 * * 7 /root/auto_backup_to_remote.sh -D 1

5.7重启crontab服务

systemctl restart crond

6.排错

现象:不能正常执行文件备份

6.1脚本问题

脚本22行为查找 gitlab本地备份目录下,时间为60分钟之内的,并且后缀为.tar的gitlab备份文件。

首先执行查找文件命令【find $LocalBackDir -type f -mmin -60 -name '*.tar*'】

 命令不能正常执行,仔细排查发现 -name 参数前多了一个中文空格。

 6.2服务器时间配置问题

因服务器时间错误,生成的备份文件时间与当前时间差异过大,

命令【find $LocalBackDir -type f -mmin -60 -name '*.tar*'】查询不到新生成的备份文件,导致文件不能正常备份。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/601002.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入了解Altium Designer 2023的规则设置

在PCB设计中,规则设置是确保PCB设计符合标准和规范的关键步骤,Altium Designer 2023作为一款强大的PCB设计软件,提供了丰富的规则设置功能,可帮助电子工程师实现高效准确的设计。下面将详细介绍AD 2023中的规则设置功能&#xff0…

【OpenMMLab AI实战营第二期笔记】人体关键点检测与MMPose

人体关键点检测与MMPose 介绍 人体姿态估计(Human Pose Estimation)是计算机视觉领域中的一个重要研究方向,也是计算机理解人类动作、行为必不可少的一步,人体姿态估计是指通过计算机算法在图像或视频中定位人体关键点&#xff…

TDEngine3.0环境搭建总结

TDEngine3.0环境搭建总结 一、TDengine 介绍二、TDengine的下载三、TDengine Server安装及配置3.1 安装3.2 taos的参数配置3.3 启动3.4 taosAdapter 四、TDengine Client 安装4.1 linux客户端安装4.2 windows客户端安装 一、TDengine 介绍 TDengine 官网 TDengine的介绍   T…

算法工程师的岗位职责(合集)

算法工程师的岗位职责1 职责: 1、负责运动控制的数据采集、信号处理、仪器控制等模块研发和维护,包括关键技术方案设计/详细设计/调试/验证/测试/现场调试 2、编写软件使用说明书等相关技术性文件 3、完成项目中有关机器人轨迹设计、分析、控制的需求分析(7轴机械手…

Maven依赖传递

Maven 依赖传递是 Maven 的核心机制之一,它能够一定程度上简化 Maven 的依赖配置。本节我们将详细介绍依赖传递及其相关概念。 依赖传递 如下图所示,项目 A 依赖于项目 B,B 又依赖于项目 C,此时 B 是 A 的直接依赖,C…

java爬虫详解及简单实例

java爬虫是一种自动化程序,可以模拟人类在互联网上的行为,从网站上抓取数据并进行处理。下面是Java爬虫的详细解释: 1、爬虫的基本原理 Java爬虫的基本原理是通过HTTP协议模拟浏览器发送请求,获取网页的HTML代码,然后…

PS2024后期调色滤镜插件Alien Skin Exposure7

Exposure是一款常见的ps调色滤镜插件,相信许多朋友都曾经用过它。一张普通的图片经过后期调色处理后,可以得到更加靓丽的效果。因此选择一款专业性强、操作简单的后期调色软件很重要。那么,我们应该如何选择后期调色软件呢?下面给…

第三大章docker的部署

1. 红为写的命令 systemctl stop firewalld.service setenforce 0 #安装依赖包yum install -y yum-utils device-mapper-persistent-data lvm2 -------------------------------------------------------------------------------------------- yum-utils:提供了…

揭秘虚拟直播:3D场景与2D背景的区别

虚拟直播是指通过技术手段创造出虚拟场景,将主播或演员放置其中进行实时直播的一种形式。这种直播方式结合了虚拟现实(VR)、增强现实(AR)和实时渲染等技术,近年来,随着VR和AR技术的不断成熟和普…

Flink第八章:FlinkSQL

系列文章目录 Flink第一章:环境搭建 Flink第二章:基本操作. Flink第三章:基本操作(二) Flink第四章:水位线和窗口 Flink第五章:处理函数 Flink第六章:多流操作 Flink第七章:状态编程 Flink第八章:FlinkSQL 文章目录 系列文章目录前言一、常用函数1.快速上手案例2.连接外部数据…

chatgpt赋能python:Python岗位需求日渐增加

Python岗位需求日渐增加 Python编程语言在当前的IT行业中越来越受欢迎。其灵活性和易用性使得Python在各种领域中使用广泛,比如Web开发、数据科学、人工智能等。作为一名有10年Python编程经验的工程师,我认为Python是一种非常有前途的编程语言&#xff…

IDC MarketScape《决策支持分析数据平台供应商评估》报告发布,亚马逊云科技位列“领导者”

随着科学技术的不断发展,人们的生活方式也在不断改变。现在,人们可以通过互联网获得更多的信息,也可以通过智能手机随时随地与他人进行交流。此外,人工智能技术的进步也使得机器能够完成一些复杂的任务,从而提高了人们…

重磅新品 | 立仪发布高速版嵌入式光谱共焦G系列

重磅新品 | 立仪发布高速版嵌入式光谱共焦G系列 立仪科技作为国产光谱共焦技术的引领者,在光谱共焦技术上数年磨一剑,打破封锁,而此次研发出的嵌入式光谱共焦位移传感器G系列采用先进的FPGACPU硬件架构等技术自研而成并结合高强度LED光源、创…

python---变量和简单的数据类型

python---变量和简单的数据类型 1. 变量的命名2. 字符串2.1 使用方法修改字符串的大小写2.2 合并(拼接)字符串2.3 使用制表符或换行符来添加空白2.4 删除空白2.5 使用字符串时避免使用语法错误 3. 数字3.1 整数3.2 浮点数3.3 使用函数str()避免类型错误 …

基于springboot地方旅游系统的设计与实现

摘 要 本次设计内容是基于Springboot的旅游系统的设计与实现,采用B/S三层架构分别是Web表现层、Service业务层、Dao数据访问层,并使用Springboot,MyBatis二大框架整合开发服务器端,前端使用vue,elementUI技术&…

vue-admin-template刷新侧边栏数据丢失

使用vue-admin-template时,刷新页面侧边栏消失😒,仔细查看代码后找到原因,使用的路由与vuex有关,而在刷新页面时vue会重新加载vue实例,vuex中的数据会被初始化,所以看不到侧边栏是因为数据被重置…

虚拟现实 VR 智慧办公室可视化

“虚拟现实”是来自英文“Virtual Reality”,简称 VR 技术,其是通过利用计算机仿真系统模拟外界环境,主要模拟对象有环境、技能、传感设备和感知等,为用户提供多信息、三维动态、交互式的仿真体验。 图扑软件基于自研可视化引擎 H…

containerd 容器概述

containerd 容器概述 官方文档: https://containerd.io在 2016 年 12 月 14 日,Docker 公司宣布将 containerd 从 Docker 中分离,由开源社区独立发展和 运营。Containerd 完全可以单独运行并管理容器,而 Containerd 的主要职责是镜像管理和…

K8S-解决报错--总结日记

问题一:etcd和apiserver无法正常启动 问题查看nodes节点发生报错 解决方法/步骤 步骤一:K8S集群节点异常重启后,再终端执行kubectl get nodes命令,出现报错dial tcp 10.200.18.100:6443: connect: connection refused。 步骤二…

elementPlus 二次封装 el-upload

此案例是区分上传的文件还是图片&#xff1b; 需要注意的是 before-upload 事件&#xff0c;如果是返回了 false&#xff0c;也会默认走on-remove&#xff0c;需要在 remove事件里做file 的状态判断。 <template><el-upload class"upload-box" ref"…