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

news2024/10/7 5:57:22

文章目录

    • @[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 ];then
    info_log "createrepo ${@} success"
  else
    error_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 的参数是 -p
  if [ ! -d "${repo_data_dir}/${reponame}" ];then
    mkdir ${repo_data_dir}/${reponame}
    reposync_cmd="reposync -p"
  else
    # 如果本地存在目录,表示只需要同步最近的内容,设置 reposync 的参数是 -np
    reposync_cmd="reposync -np"
  fi

  # 开始同步仓库到本地
  ${reposync_cmd} ${repo_data_dir}/${reponame}
  if [ $? -eq 0 ];then
    info_log "sync ${reponame} success"

    # centos 有很多的仓库,这里做了独立的处理
    if [[ "${reponame}"x == "centos"x ]];then
      for repotype in base extras updates
      do
        # 使用 createrepo 来创建元数据索引
        createrepo -p ${repo_data_dir}/${reponame}/${repotype}/Packages/
        check_status "${reponame}/${repotype}"
      done
    fi

    # docker 虽然也有很多,这里只取了稳定版,所以统一处理了
    if [[ "${reponame}"x != "centos"x ]];then
      createrepo -p ${repo_data_dir}/${reponame}/${reponame}/Packages/
      check_status "${reponame}"
    fi
  else
    error_log "sync ${reponame} fail"
  fi
done

# 删除三天前的日志
find ${log_dir} -type f -name "*.log" -mtime +3 | xargs -i rm -f {}

前端展示

html + css 是找 gpt 要的

在这里插入图片描述

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

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

相关文章

DC/AC电源模块一种效率与可靠性兼备的能源转换解决方案

DC/AC电源模块都是一种效率与可靠性兼备的能源转换解决方案 DC/AC电源模块是一种能够将直流电源(DC)转换为交流电源(AC)的设备。它在现代电子设备中扮演着非常重要的角色,因为许多设备需要交流电源才能正常运行。无论…

主播美颜工具:美颜SDK的技术原理与应用

美颜SDK不仅大幅提升了主播的颜值,还极大地改善了用户的观看体验。本文将从美颜SDK的技术原理、应用场景以及未来发展趋势等方面进行深入探讨。 一、美颜SDK的技术原理 美颜SDK的核心在于其强大的图像处理技术,通过实时图像处理算法,对视频中…

无人机螺旋桨理论教学培训课程

本文档为一份详细的关于TYTO机器人公司提供的电机和螺旋桨理论及其实验操作的指南。指南首先概述了材料、实验目标以及实验的介绍部分,随后详细阐述了理论问题、实验步骤和附录内容。实验目的在于通过实际测试来测量和理解不同螺旋桨参数对无人机性能的影响&#xf…

OpenCV cv::Mat到 Eigen 的正确转换——cv2eigen

在进行计算机视觉项目时,我们经常需要处理相机位姿的变换。最近,我在项目中遇到了一个看似简单但实际上颇具挑战性的问题:从 OpenCV 的 cv::Mat 格式转换到 Eigen 库的格式。这个过程中遇到了一些问题,但最终找到了一个稳健的解决…

实现自动化:如何利用阿里云OSS上传文件并自动打标签

在当前数字化时代,数据管理变得愈发重要,特别是对于需要大规模存储和管理文件的场景。阿里云对象存储服务(OSS)作为业界领先的解决方案,不仅提供了稳定可靠的云存储,还支持丰富的扩展功能,如文件…

文件夹内-资源名称前加序号排列

问题:在文件夹下的资源可以按时间排序,导入unity后资源顺序会乱掉,不方便按顺序赋值,为了方便,通过下面方法在文件夹下统一在资源名称前按顺序加上序号 win11在文件夹内右键,选择——在终端中打开 输入&a…

生命在于学习——Python人工智能原理(4.7)

四、Python的程序结构与函数 4.4 函数 函数能将代码划分为若干模块,每一个模块可以相对独立的实现某一个功能,函数有两个主要功能,分别是降低编程难度和实现代码复用,函数是一种功能抽象,复用它可以将一个复杂的大问…

“基于下垂的多电源分布式控制系统设计”,高分资源,匠心制作,查重5%,下载可用。强烈推荐!!!

“基于下垂的多电源分布式控制系统设计”,高分资源,匠心制作,查重5%,下载可用。强烈推荐!!! 摘要 社会的进步与发展,人们对于能源的需求和依赖越来越大。与此同时,国家…

仓颉编程语言 -- 初识(一)

官网 文档 原生智能化 内嵌AgentDSL的编程框架,自然语言&编程语言有机融合;多Agent协同,简化符号表达,模式自由组合,支持各类智能应用开发。 天生全场景 轻量化可缩放运行时,模块化分层设计&#xf…

python selenium 下载

查看浏览器版本 下载地址: 新版本下载地址 https://googlechromelabs.github.io/chrome-for-testing/ 历史版本也可以用这个下载地址 http://chromedriver.storage.googleapis.com/index.html 找到对应的版本 126.0.xxx 下载

Python自动化聊天机器人库之wechaty使用详解

概要 随着社交媒体和即时通讯工具的普及,自动化聊天机器人的需求日益增加。Wechaty 是一个开源的聊天机器人框架,支持多种聊天平台,包括微信、WhatsApp、Telegram 等。它旨在帮助开发者快速构建和部署聊天机器人,具有强大的功能和易用的接口。本文将详细介绍 Wechaty 库,…

ISCC2024--pwn

ISCC2024 练武题 chaos 考点:基础UAF 分析 1.首先将附件放入IDA查看主函数功能,进入菜单函数: 注意到选项5不太一样,跟进该功能模块的函数查看: 分析得到该功能存在UAF漏洞,system(/bin/sh) 执行的前…

告别手机废片,这几款APP让你随手出大片

想象一下,你站在壮丽的风景前,满怀期待地按下手机相机的快门,但得到的照片却总与眼前美景有所差距。 是不是觉得手机的原生相机有时候并不那么“给力”? 今天,我们就来一起探讨一下手机原生相机的不足之处,…

AI智能体 | 扣子Coze 工作流中如何嵌入代码,看这一篇就够了

Coze的工作流中除了能嵌入大模型,插件,图像流,其他工作流外,还能嵌入代码。嵌入代码的好处是对一些复杂的返回结果进行二次处理。 Coze的代码支持js和python两种语言。这次用python来做演示介绍 在节点中选择代码 弹出对话框如下…

Ollama:一个在本地部署、运行LLM大型语言模型的工具

Ollama部署、运行大型语言模型 概述 Ollama是一个专为在本地机器上便捷部署和运行大型语言模型(LLM)而设计的工具。 官方网站:https://ollama.com/ Github:https://github.com/ollama/ollama 安装 Ollama支持macOS、Linux和Win…

汇凯金业:预测黄金现货涨跌趋势的关键方法

在金融市场中,黄金现货作为一种重要的避险资产,价格波动受到全球经济、货币政策、市场情绪等多重因素的影响。要有效预测黄金现货的涨跌趋势,不仅需深刻理解这些因素,还需掌握一系列的分析技巧。本文将详细介绍一些关键的分析方法…

【日记】希望文竹长得越来越好吧(856 字)

正文 为什么昨天给老师提早说了今天上课…… 今天都要忙死了。不论上午下午都手忙脚乱。上午之前的存量客户来开新账户,流程卡在客户经理尽调那里。恰好那个客户经理还是部门主管,我们没一个人敢催。向副行长汇报情况,又跟客户说。客户跟他们…

RK3588 Android13 TvSetting 中增加 WebView 切换菜单

前言 电视产品,客户要求在设置中设备偏好设置子菜单下增加一个 WebView切换菜单,一开始不知道怎么下手,后来想起来在设置开发者选项里有一个类似的菜单, 去把实现逻辑搞出来应该就ok。 效果图 TvSetting 部分修改文件清单 packages/apps/TvSettings/Settings/res/values…

秋招突击——6/24——复习{完全背包问题——买书,状态转换机——股票买卖V}——新作{两数相除,LRU缓存实现}

文章目录 引言复习完全背包问题——买书个人实现 状态转换机——股票买卖V个人实现参考实现 新作两数相除个人实现 新作LRU缓存实现个人实现unordered_map相关priority_queue相关 参考实现自己复现 总结 引言 今天知道拼多多挂掉了,难受,那实习就是颗粒无…

申瓯通信在线录音管理系统任意文件读取漏洞复现

简介 申瓯通信设备有限公司在线录音管理系统 download 接口处任意文件读取漏洞,未经身份验证攻击者可通过该漏洞读取系统重要文件、数据库配置文件等等,导致网站处于极度不安全状态。 漏洞复现 FOFA语法: title="在线录音管理系统" 访问界面如下所示: POC: /m…