企業內網自建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.pswp.cn/web/15193.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/15193.shtml
英文地址,請注明出處:http://en.pswp.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;例如通訊錄、新聞列…