使用 shell 脚本同步 yum 源建立本地私有仓库

文章目录

    • @[toc]
    • 事出有因
    • 脚本内容
    • 前端展示

事出有因

有两方面原因做了这个事情:

  • dockerhub 国内无法访问
  • centos 7 要停止社区支持了

结合两个情况,不久的将来,可能国内也就没有对应的 yum 仓库了(现在想找 centos 7 之前的仓库,其实也挺难了);像 docker 和 k8s 的 yum 仓库,谁也不知道以后会发生什么,所以防患于未然,就自己本地同步了一份

因为闲置了一个笔记本,然后就装了 esxi,常开机,自动每天去阿里仓库同步到本地,于是就写了脚本,脚本的运行是有前置条件,需要有 reposynccreaterepo 这两个命令,详细可以看我之前的博客:CentOS7 搭建 yum 源仓库(阿里源)

脚本内容

脚本我也上传了一份到我的 gitee:chen2ha/shell_script,可以去 gitee 自取,包括前端展示用的 html 我也放上去了

#!/usr/bin/env bash
# 获取脚本当前所在路径
base_dir="$(cd `dirname $0`;pwd)"
# 定义 repo 文件的路径
repofile_dir="${base_dir}/repofiles"
# 定义日志的路径
log_dir="${base_dir}/logs"
# 获取当前时间
now_time="$(date +%F)"
# 日志内的时间格式
now_time_hms="%FT%H_%M_%S"
# 定义日志文件名称
log_file="${log_dir}/${now_time}.log"
# 仓库同步的路径
repo_data_dir='/data/nginx'
# 默认的 yum 源 repo 文件的路径
repo_src_dir='/etc/yum.repos.d'# 定义错误日志内容格式
function error_log () {local log_time_style="$(date +${now_time_hms})"echo "[ERR] [${log_time_style}] [$@]" >> ${log_file}
}# 定义标准日志内容格式
function info_log () {local log_time_style="$(date +${now_time_hms})"echo "[INF] [${log_time_style}] [$@]" >> ${log_file}
}# createrepo 后的确认检查
function check_status () {if [ $? -eq 0 ];theninfo_log "createrepo ${@} success"elseerror_log "createrepo ${@} fail"fi
}# 日志目录不存在就创建
[ -d "${log_dir}" ] || mkdir -p "${log_dir}"# 循环同步 yum 仓库,要和 repofile_dir 的文件名称一样
for reponame in centos docker-ce epel kubernetes
do# 删除 repo 文件rm -f ${repo_src_dir}/*.repo# 复制 repo 文件模板到 repo 文件目录下cp ${repofile_dir}/${reponame}.repo ${repo_src_dir}/# 如果本地不存在目录,表示第一次同步,创建目录并设置 reposync 的参数是 -pif [ ! -d "${repo_data_dir}/${reponame}" ];thenmkdir ${repo_data_dir}/${reponame}reposync_cmd="reposync -p"else# 如果本地存在目录,表示只需要同步最近的内容,设置 reposync 的参数是 -npreposync_cmd="reposync -np"fi# 开始同步仓库到本地${reposync_cmd} ${repo_data_dir}/${reponame}if [ $? -eq 0 ];theninfo_log "sync ${reponame} success"# centos 有很多的仓库,这里做了独立的处理if [[ "${reponame}"x == "centos"x ]];thenfor repotype in base extras updatesdo# 使用 createrepo 来创建元数据索引createrepo -p ${repo_data_dir}/${reponame}/${repotype}/Packages/check_status "${reponame}/${repotype}"donefi# docker 虽然也有很多,这里只取了稳定版,所以统一处理了if [[ "${reponame}"x != "centos"x ]];thencreaterepo -p ${repo_data_dir}/${reponame}/${reponame}/Packages/check_status "${reponame}"fielseerror_log "sync ${reponame} fail"fi
done# 删除三天前的日志
find ${log_dir} -type f -name "*.log" -mtime +3 | xargs -i rm -f {}

前端展示

html + css 是找 gpt 要的

在这里插入图片描述

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

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

相关文章

防火墙GRE over IPSec配置

一、基础知识 1、GRE隧道 GRE隧道是一种网络通信协议,使用通用路由封装(GRE)技术,能够将一种网络协议下的数据报文封装在另一种网络协议中,从而实现在另一个网络层协议中的传输。 GRE隧道的基本概念和工作方式 基本…

CMakeList整理大全

0. CMake应用示例 之前我们也整理过cmake 引入第三方库(头文件目录、库目录、库文件)。但是这里面整理的内容其实是不全的。所以我们需要进一步将CMake的使用整理好。以供后面的学习的工程师来检索查询。 cmake-template ├── CMakeLists.txt └──…

python中的argsort获取的是排好序的位置上原来元素的index

argsort 是许多编程语言中数组处理库的一个常见函数,用于返回数组中元素的索引,这些索引将数组的元素排序到升序位置。换句话说,argsort 不直接返回排序后的数组,而是返回原始数组中元素应该被放置的索引,以便生成排序…

【MyBatis-Plus LambdaQueryWrapper介绍】

文章目录 LambdaQueryWrapper 是什么?使用步骤1. 引入 MyBatis Plus 依赖2. 创建 LambdaQueryWrapper 对象3. 添加更多的查询条件4. 执行查询 示例代码 LambdaQueryWrapper 是什么? LambdaQueryWrapper 是 MyBatis Plus 中的一个查询条件构造器&#xf…

HarmonyOS Next开发学习手册——代码混淆

代码混淆简介 针对工程源码的混淆可以降低工程被破解攻击的风险,缩短代码的类与成员的名称,减小应用的大小。 DevEco Studio提供代码混淆的能力并默认开启,API 10及以上版本的Stage模型、 编译模式为release 时自动进行代码混淆。 使用约束…

沙龙圆满举行 | 数据资产入表新动向·驱动企业新质生产力!

近日,由四川智慧城市发展联盟、璞华科技有限公司等公司主办的“数据治理与入表专题沙龙会”在成都圆满落幕。璞华科技有限公司作为数据治理、数据资产入表领域的领军企业,为此次盛会贡献了我们的专业见解与实战经验。 沙龙现场,业内精英齐聚一…

后台管理系统通用表结构

后台管理系统的设计通常需要考虑以下几个关键的表: 用户表(Users):存储用户信息,如用户名、密码、邮箱、手机号等。角色表(Roles):定义系统中的不同角色,如管理员、普通…

【技术追踪】SDSeg:医学图像的 Stable Diffusion 分割(MICCAI-2024)

这医学图像分割领域啊,终究还是被 Stable Diffusion 闯进去了~ SDSeg:第一个基于 Stable Diffusion 的 latent 扩散医学图像分割模型,在五个不同医学影像模态的基准数据集上超越了现有的最先进方法~ 论文:Stable Diffusion Segmen…

基于LangChain构建RAG应用

前言 Hello,大家好,我是GISer Liu😁,一名热爱AI技术的GIS开发者,上一篇文章中我们详细介绍了RAG的核心思想以及搭建向量数据库的完整过程;😲 本文将基于上一篇文章的结果进行开发,主…

配置Nginx二级域名

一、环境 (一)配置 1.服务器 linux CentOS 2.反向代理 Nginx 3.开放端口 云服务器开放端口80和443 二、域名备案 (一)腾讯云 1.腾讯云域名备案流程 备注:一级域名备案后,二级域名可以不用再备案&a…

AS-V1000外部设备管理介绍(国标GB28181设备管理,可以管理的国标设备包括DVR/NVR、IPC、第三方国标28181平台)

目录 一、概述 1、视频监控平台介绍 2、外部设备定义(接入的国标设备) 二、外部设备管理 2.1 外部设备添加 (1)设备侧的配置 (2)平台侧的配置 2.2 外部设备信息的修改 三、外部通道管理 3.1 外部…

Java入门教程(上)

Java入门教程(上) Java是一种流行的面向对象编程语言,以其简洁、可移植和强大的特性,被广泛应用于各种软件开发领域。对于初学者来说,掌握Java的基础知识和编程技巧是非常重要的。本文将带你从零开始学习Java&#xf…

AI智能管理系统设计文档

AI智能管理系统设计文档 1. 引言 本设计文档旨在开发一套全面的AI智能管理系统,以优化生产运营效率和决策质量。该系统将利用先进的AI技术和数据分析能力,提供自动化流程控制、预测性维护、智能决策支持等功能。 2. 需求分析与目标设定 2.1 业务需求…

使用kubeadm安装k8s并部署应用

安装k8s 1. 准备机器 准备三台机器 192.168.136.104 master节点 192.168.136.105 worker节点 192.168.136.106 worker节点2. 安装前配置 1.基础环境 ######################################################################### #关闭防火墙: 如果是云服务器&…

React_创建一个项目

目录 一、React(js 版) 二、React(ts 版) 使用react创建一个项目,前提是确保你已经安装了Node.js和npm。 如果没有安装Node.js和npm,查看这个文件: 安装node.js和npmhttps://blog.csdn.net/zxy1993106…

志愿填报,院校优先还是专业优先?

1. 前言 24年高考帷幕落下,一场新的思考与选择悄然来临。对于每一位高考考生,学校和专业都是开启大学新生活的两个前置必选项。但有时候“鱼与熊掌不可兼得”,在分数受限的条件下,是选择一个心仪的专业还是选择一个知名度更高的学…

GoSync+华为智能穿戴使用指导

GoSync官方简介: GoSync 是一款免费应用程序,主要用于将您的可穿戴设备中的步行、跑步、骑自行车和游泳等活动数据同步到您的 Google Fit 和其他健身平台。在开始同步数据之前,您需要将您的可穿戴设备账户与您的健身平台账户连接起来。在创建…

三元和磷酸铁锂电池有什么区别?

现在的电动车大多都会使用到锂电池,在常见的锂电池分为两种,一种是三元锂电池另外一种是磷酸铁锂电池,面对这两种锂电池时,它们到底有什么不同? 1、材料不同 这两种锂电池的不同之处便是材料不同,磷酸铁锂…

时间序列分析入门:概念、模型与应用【ARMA、ARIMA模型】

在这篇博客中,我们将全面探讨时间序列分析的基本概念和分类,深入理解平稳性及其检验方法,并介绍自回归模型(AR)、滑动平均模型(MA)、自回归滑动平均模型(ARMA)以及自回归…

Unity免费领高级可视化编程自定义节点工具AI行为UI流程对话树状态机逻辑等FlowReactor价值50刀high level20240627

刚发现一款类似虚幻蓝图的可视化编程工具,原价50刀,现在免费领取了。赶紧去领取入库,防止作者涨价。 高级可视化编程自定义节点工具:https://prf.hn/l/BJbdvnD 作者其他资产:https://prf.hn/l/YLAYznV Unity免费领高级…