使用 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隧道的基本概念和工作方式 基本…

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

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

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

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

【技术追踪】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 外部…

React_创建一个项目

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

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免费领高级…

提取url中的参数

let url https://alibaba.com?a1&b2&c3#hash function queryUrlParams(URL){let url URL.split(?)[1];const urlSearchParams new URLSearchParams(url);console.log(url1, urlSearchParams);console.log(entries,urlSearchParams.entries())const params Object…

华为---配置基本的访问控制列表(ACL)

11、访问控制列表(ACL) 11.1 配置基本的访问控制列表 11.1.1 原理概述 访问控制列表ACL(Access Control List)是由permit或deny语句组成的一系列有顺序的规则集合,这些规则根据数据包的源地址、目的地址、源端口、目的端口等信息来描述。A…

C++11 右值引用和移动语义,完美转发和万能引用,移动构造和移动赋值,可变参数模板,lambda表达式,包装器

文章目录 C11简介统一的列表初始化{}初始化std::initializer_list声明autodecltypenullptr 范围for循环 智能指针STL中一些变化右值引用和移动语义左值引用和右值引用左值引用与右值引用比较 右值引用使用场景和意义右值引用引用左值及其一些更深入的使用…

观成科技:证券行业加密业务安全风险监测与防御技术研究

摘要:解决证券⾏业加密流量威胁问题、加密流量中的应⽤⻛险问题,对若⼲证券⾏业的实际流量内容进⾏调研分析, 分析了证券⾏业加密流量⾯临的合规性⻛险和加密协议及证书本⾝存在的⻛险、以及可能存在的外部加密流量威 胁,并提出防…

PHP 超级全局变量详解

在PHP编程中,超级全局变量(Super Global Variables)是一种特殊的变量,可以在脚本的任何地方访问,而不受作用域限制。它们被设计用于在不同的脚本文件、函数和类之间共享数据,是PHP语言中非常重要和实用的特…

Knife4j 2.2.X 版本 swagger彻底禁用

官方文档配置权限:https://doc.xiaominfo.com/v2/documentation/accessControl.html#_3-5-1-%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E5%B1%8F%E8%94%BD%E8%B5%84%E6%BA%90 通常有时候我们碰到的问题如下: 在开发Knife4j功能时,同很多开发者经常讨论的问…

MySQL数据库简介和安装

文章目录 一、数据库原理目前情况数据库的发展史RDBMS关系型数据库关系型数据库理论 二、MySQL历史发展历程关系型数据库和非关系型数据库 三、安装mysql及优化yum安装编译安装mysql二进制安装优化操作 四、 安装mycli插件客户端工具 一、数据库原理 目前情况 我们正处于一个…

聚观早报 | 真我GT6官宣;iQOO 13参数细节曝光

聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 6月26日消息 真我GT6官宣 iQOO 13参数细节曝光 苹果iPadOS 18 Beta 2更新 一加Ace 3 Pro散热细节曝光 亚马逊秘…