企业内网自建yum源 仓库 | rsync同步方案

文章目录

      • 1.背景概述
      • 2.获取软件文件
        • 2.1 准备同步脚本如下
      • 2.2 准备例外文件清单
      • 2.3 统计源端大小
        • 2.3 运行脚本开始同步文件
      • 3. 创建网页服务
        • 3.1 安装nginx并启用
        • 3.2 修改ngnix配置文件
      • 4 创建repo索引和客户文件
        • 4.1 创建repo索引
        • 4.2 创建客户端文件
        • 4.3 客户端下载repo文件

1.背景概述

yum源是一个软件仓库,centos7 停更后,建议企业在内网自建软自己的软件仓库,一般有下列步骤:

  • 取得软件包文件,可以从安装镜像拷贝,本文使用rsync方式从互联网同步
  • 搭建网页文件服务器,本文使用nginx
  • 使用createrepo创建索引
  • 配置客户端yum.repo文件

2.获取软件文件

2.1 准备同步脚本如下
#!/bin/bash# 更新yum镜像,调整限速
RsyncCommand="rsync -rvutH -P --delete --delete-after --delay-updates --bwlimit=10000 --exclude-from=/app/yumData/exclude.list"
DIR="/app/yumData"
LogDir="$DIR/logs"
Centos7Base="$DIR/Centos7/x86_64/Base"
Centos7Epel="$DIR/Centos7/x86_64/Epel"
Centos7Salt="$DIR/Centos7/x86_64/Salt"
Centos7Update="$DIR/Centos7/x86_64/Update"
Centos7Docker="$DIR/Centos7/x86_64/Docker"
Centos7Mysql5_7="$DIR/Centos7/x86_64/Mysql/Mysql5.7"
Centos7Mysql8_0="$DIR/Centos7/x86_64/Mysql/Mysql8.0"
MirrorDomain="rsync://rsync.mirrors.ustc.edu.cn"
#exclude="/yumsource/exclude.list"# 目录不存在就创建
check_dir(){for dir in $*dotest -d $dir || mkdir -p $dirdone
}# 检查rsync同步结果
check_rsync_status(){if [ $? -eq 0 ]; thenecho "rsync success" >> $1elseecho "rsync fail" >> $1fi
}check_dir $DIR $LogDir $Centos7Base $Centos7Epel $Centos7Salt $Centos7Update $Centos7Docker $Centos7Mysql5_7 $Centos7Mysql8_0# Base yumrepo
$RsyncCommand "$MirrorDomain"/centos/7/os/x86_64/ $Centos7Base >> "$LogDir/centos7Base.log" 2>&1
check_rsync_status "$LogDir/centos7Base.log"# Epel yumrepo
$RsyncCommand "$MirrorDomain"/epel/7/x86_64/ $Centos7Epel >> "$LogDir/centos7Epel.log" 2>&1
check_rsync_status "$LogDir/centos7Epel.log"# SaltStack yumrepo
$RsyncCommand "$MirrorDomain"/salt/yum/redhat/7/x86_64/ $Centos7Salt >> "$LogDir/centos7Salt.log" 2>&1
check_rsync_status "$LogDir/centos7Salt.log"
# ln -s $Centos7Salt/archive/$(ls $Centos7Salt/archive | tail -1) $Centos7Salt/latest# Docker yumrepo
$RsyncCommand "$MirrorDomain"/docker-ce/linux/centos/7/x86_64/stable/ $Centos7Docker >> "$LogDir/centos7Docker.log" 2>&1
check_rsync_status "$LogDir/centos7Docker.log"# CentOS update yumrepo
$RsyncCommand "$MirrorDomain"/centos/7/updates/x86_64/ $Centos7Update >> "$LogDir/centos7Update.log" 2>&1
check_rsync_status "$LogDir/centos7Update.log"# MySQL 5.7 yumrepo
$RsyncCommand "$MirrorDomain"/mysql-repo/yum/mysql-5.7-community/el/7/x86_64/ $Centos7Mysql5_7 >> "$LogDir/centos7Mysql5.7.log" 2>&1
check_rsync_status "$LogDir/centos7Mysql5.7.log"# MySQL 8.0 yumrepo
$RsyncCommand "$MirrorDomain"/mysql-repo/yum/mysql-8.0-community/el/7/x86_64/ $Centos7Mysql8_0 >> "$LogDir/centos7Mysql8.0.log" 2>&1
check_rsync_status "$LogDir/centos7Mysql8.0.log"

2.2 准备例外文件清单

#填入例外文件内容
SRPMS
aarch64
ppc64
ppc64le
debug
repodata
EFI
LiveOS
images
isolinux
CentOS_BuildTag
EULA
GPL
RPM-GPG-KEY-CentOS-7
RPM-GPG-KEY-CentOS-Testing-7
drpms

如果你需要过滤指定版本或者文件名,比如mysql,也可以使用下面的方法

mysql-*-8.0.35*
*-5.7.1*

2.3 统计源端大小

反复比对源端目录和需要的目录,调整例外清单,只同步想要的文件

无脑全同步太占用空间不说还有可能被封IP

rsync  --exclude-from=/yumsource/exclude.list --info=stats2 -h -r rsync://rsync.mirrors.ustc.edu.cn/repo/docker-ce/linux/centos/7/x86_64/stable
#可选的例外或者 包含
-- exclude '/var/log/*'--exclude-from=/yumsource/exclude.list-- include "docker-ce-26*" 
-- include "docker-ce-cli-26*" 

也可以添加下面的代码先判断大小,询问后,再决定要不要同步


# Epel9 yumrepo
#$RsyncCommand "$MirrorDomain"/epel/7/x86_64/ $Centos7Epel >> "$LogDir/centos7Epel.log" 2>&1
echo "统计大小"
read -p "请按任意键开始同步大小..." -n 1
$RsyncSize "$MirrorDomain"/epel/9/Everything/x86_64/
read -p "请按任意键开始同步..." -n 1
echo "开始同步epel9"
$RsyncCommand "$MirrorDomain"/epel/9/Everything/x86_64/ $Rocky9Epel
check_rsync_status "$LogDir/Rocky9Epel.log"

如需定期同步,可以设置任务计划

2.3 运行脚本开始同步文件

3. 创建网页服务

3.1 安装nginx并启用
yum -y install nginx
systemctl start nginx
systemctl enable nginx
3.2 修改ngnix配置文件
cd /etc/nginx/conf.d
vi yam.conf
#以下是文件代码server {listen 80;server_name  请修改我;access_log  /var/log/yum.log;
、location / {root /app/yumData/;autoindex on;             #开启索引功能autoindex_exact_size off; # 关闭计算文件确切大小(单位bytes),只显示大概大小(单位kb、mb、gb)autoindex_localtime on;}
}
#保存退出
nginx -s reload

在浏览器上访问下域名能否打开,如果打开有问题,请确保权限

nginx 所属,或者直接chown -R 755到目录,或者setenforce 0

4 创建repo索引和客户文件

4.1 创建repo索引

同步完成后,进入文件夹,创建repo索引

如果你是全同步可以跳过这一步,但一般都是过滤同步,所以建议重建

#进入目录,使用createrepo 
cd /app/yumData/Centos7/x86_64
createrepo Base/如果有更新可以使用更新参数
createrepo --update Base/
4.2 创建客户端文件

在服务器上编写好这些repo文件,并建议把他们上传到/app/yumData/repolist目录中,以供用户下载

docker

vi docker.repo[docker7-ce-stable]
name=docker7-ce-stable
baseurl=http://请修改我/Centos7/x86_64/Docker/
gpgcheck=0
enabled=1

base

vi centos7.repo[base]
name=CentOS7-base
baseurl=http://请修改我/Centos7/x86_64/Base/
gpgcheck=0
enabled=1[epel]
name=CentOS7-epel
baseurl=http://请修改我/Centos7/x86_64/Base/
gpgcheck=0
enabled=1[extras]
name=CentOS7-extras
baseurl=http://请修改我/centos/extras/
gpgcheck=0
enabled=1[updates]
name=CentOS7-updates
baseurl=http://请修改我/centos/updates/
gpgcheck=0
enabled=1
4.3 客户端下载repo文件
使用wget 将ngnix上的.repo文件下载到 /etc/yum.repos.d/清除yum缓存
yum clean all; yum makecache列出包内容
yum repolist allyum list available

安装一个软件测试下

yum -y install tcping

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

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

相关文章

用 Python 编写网络爬虫:从网页获取数据并存储到 Excel 文件

在本篇博客中,我们将介绍如何使用 Python 编写一个简单的网络爬虫,用于从网页中提取数据,并将这些数据存储到 Excel 文件中。我们将使用 Python 中的一些库来实现这个功能,包括 urllib.request、BeautifulSoup 和 openpyxl。 1. 网络爬虫的基本原理 网络爬虫是一种程序,…

【MyBatis】MyBatis解析全局配置文件源码详解

目录 一、前言 思维导图概括 二、配置文件解析过程分析 2.1 配置文件解析入口 2.2 初始化XMLConfigBuilder 2.3 XMLConfigBuilder#parse()方法:解析全局配置文件 2.3.1 解析properties配置 2.3.2 解析settings配置 2.3.2.1 元信息对象(MetaClas…

解决移植Metasploitable3到VM虚拟机无网络的问题

第一步 导入后不要开机,先在虚拟机设置里面将原有的两个网络适配器移除。 第二步 接着在选项里面,在客户机操作系统里面,选择Microsoft Windwos(W), 版本选择Windows Server 2008 R2 x64 第三步 先打开虚拟机,然后…

Python_文件操作_学习

目录 一、关于文件的打开和关闭 1. 文件的打开 2.文件的关闭 二、文件的读取 1. 文件的读_r 2. 使用readline 3.使用readlines 三、文件的写入 1. 文本的新建写入 2.文本的追加写入 四、文件的删除和重命名 1.文件的重命名 2.文件的删除 五、文件的定位读写 1.t…

RK 11.0 多屏模式下修改鼠标进入方式

要求:主屏在左,副屏在右。这种排列情况下鼠标仅可通过主屏的最右侧移入副屏的最左侧,或从副屏的最左侧移入主屏最右侧。 1.RK默认设计 1.1 RK的代码设计是当sys.mouse.presentation1时,鼠标在屏幕边缘的时候就会移入另一个屏幕 …

CISP-PTE笔记整理

目录 漏洞基础代码合集 网安基础 常见名词 信息收集 环境和变量的配置 HTTP请求头基础 HTTP基础知识 MySql基础语法 各系统的敏感目录路径 工具使用 Hackbar的tips java下载配置 Xray下载配置&使用 burp爆破账号密码和C段&注意事项 SqlMap爆破&创建…

Unity Miscellaneous入门

概述 在Unity中有非常多好用的组件,也是Unity为我们提供的方便的开发工具,它的功能可能不是主流的内容,比如渲染,音乐,视频等等,所有Unity把这些内容统一归到了一个杂项文件组中。 Unity组件入门篇总目录-…

Python线程

Python线程 1. 进程和线程 先来了解下进程和线程。 类比: 一个工厂,至少有一个车间,一个车间中至少有一个工人,最终是工人在工作。 一个程序,至少有一个进程,一个进程中至少有一个线程,最终…

langchain实战-从0到1搭建ai聊天机器人

介绍 当前,人工智能大模型公司如雨后春笋般迅速涌现,例如 OpenAI、文心一言、通义千问等,它们提供了成熟的 API 调用服务。然而,随之而来的是不同公司的繁琐协议接入过程,这让许多开发者感到头疼不已。有没有一种统一…

SpringBoot + Redis实现对接口的限流

目录 前言 什么是限流? 实现限流 创建一个注解类 接着创建一个切面类 前言 在项目中,对于接口的限流,是任何项目都必不可少的一部分,主要是为了防止用户频繁的发送请求,对服务器造成压力。 另外一点就是防止外来攻…

C++之第八课

课程列表 今天我们来学一学C里的一些实用的东西。 1.域宽 说到域宽setw&#xff0c;就叒要加头文件了。 #include<iomanip> 使用格式是&#xff1a; cout<<setw(5)<<"123"; setw括号里面可以改数字&#xff0c;后面就是输出内容了&#xff…

COD论文笔记 Boundary-Guided Camouflaged Object Detection

动机 挑战性任务&#xff1a;伪装物体检测&#xff08;COD&#xff09;是一个重要且具有挑战性的任务&#xff0c;因为伪装物体往往与背景高度相似&#xff0c;使得准确识别和分割非常困难。现有方法的不足&#xff1a;现有的深度学习方法难以有效识别伪装物体的结构和细节&am…

MySQL索引、视图练习

素材 1.学生表&#xff1a;Student (Sno, Sname, Ssex , Sage, Sdept) 学号&#xff0c;姓名&#xff0c;性别&#xff0c;年龄&#xff0c;所在系 Sno为主键 2.课程表&#xff1a;Course (Cno, Cname,) 课程号&#xff0c;课程名 Cno为主键 3.学生选课表&#xff1a;SC (Sno…

Home Credit - Credit Risk Model Stability

本篇是对Kaggle上Home Credit - Credit Risk Model Stability竞赛中的开源代码VotingClassifier Home Credit的解读。原链接在VotingClassifier Home Credit (kaggle.com)。 %%writefile script.py import sys from pathlib import Path import subprocess import os import g…

人工智能的发展现状,AI将如何改变IT行业,哪些职业将最先失业

文章目录 一、人工智能的发展现状1、技术进展与突破2、商业应用与市场3、挑战与问题4、未来趋势 二、AI将如何改变IT行业1、工作方式的转变&#xff1a;2、未来发展的推动&#xff1a;3、用户服务和体验的提升&#xff1a;4、创新和转型的推动&#xff1a;5、融入日常生活和工作…

浅谈JMeter运行原理

浅谈JMeter运行原理 JMeter架构基础 JMeter基于Java平台开发&#xff0c;运行于Java虚拟机&#xff08;JVM&#xff09;之上。这意味着它可以在任何支持JVM的操作系统上运行&#xff0c;包括Windows、Linux、macOS等。其核心架构设计围绕着多线程执行机制&#xff0c;这使得它…

AI大模型探索之路-实战篇6: Function Calling技术调研之详细流程剖析

系列篇章&#x1f4a5; AI大模型探索之路-实战篇4&#xff1a;DB-GPT数据应用开发框架调研实践 AI大模型探索之路-实战篇5&#xff1a; Open Interpreter开放代码解释器调研实践 目录 系列篇章&#x1f4a5;一、前言二、Function Calling详细流程剖析1、创建OpenAI客户端2、定…

PCL 法向量加权的RANSAC拟合分割平面

目录 一、算法原理1、原理概述2、主要函数二、代码实现三、结果展示四、相关链接本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 1、原理概述

鸿蒙布局List简介

鸿蒙布局List简介 List--常见的布局容器List 创建方式创建方式一&#xff0c;通过Listitem创建方式二&#xff0c;通过ForEach和Listitem创建方式三&#xff0c;通过ListItemGroup List–常见的布局容器 List是在app开发中最常见的一种布局方式&#xff0c;例如通讯录、新闻列…