实现Yum本地仓库自动同步的完整方案(CentOS 7)

核心脚本功能

  • 本地仓库路径
    /local/yum_repo/Packages 作为RPM包存储目录
  • Yum缓存路径
    完整路径 /var/cache/yum/x86_64/7 覆盖所有子仓库
  • 增量同步机制
    find + cp -u 仅同步新增/更新的RPM包
  • 元数据高效更新
    createrepo --update 仅更新变化部分
  • 缓存清理策略
    yum clean metadata 保留包缓存同时节省空间
部署步骤

1. 安装基础工具

bash 复制代码
yum install -y createrepo

2. 创建同步脚本

保存至 /usr/local/bin/yum-cache-auto.sh

bash 复制代码
#!/bin/bash
LOCAL_PKG_DIR="/local/yum_repo/Packages"
YUM_CACHE_DIR="/var/cache/yum/x86_64/7"
LOG_FILE="/var/log/yum-cache.log"

[ ! -d "$LOCAL_PKG_DIR" ] && mkdir -p "$LOCAL_PKG_DIR"

find $YUM_CACHE_DIR -maxdepth 5 -name "*.rpm" -exec cp -uv {} "$LOCAL_PKG_DIR/" \; 2>> "$LOG_FILE"
createrepo --update /local/yum_repo 2>> "$LOG_FILE"
yum clean metadata 2>> "$LOG_FILE"

赋予执行权限:

bash 复制代码
chmod +x /usr/local/bin/yum-cache-auto.sh

3. 配置Yum缓存保留

修改 /etc/yum.conf

ini 复制代码
keepcache=1

4. 设置自动触发

钩子脚本(保存至 /etc/yum/posttrans.d/auto_run_yum_sync.sh):

bash 复制代码
#!/bin/bash
sleep 1
/usr/local/bin/yum-cache-auto.sh >> /var/log/yum-hook.log 2>&1

定时任务(每2分钟兜底):

bash 复制代码
crontab -l | { cat; echo "*/2 * * * * /usr/local/bin/yum-cache-auto.sh >> /var/log/yum-cron.log 2>&1"; } | crontab -
验证方法
bash 复制代码
# 检查新包状态
yum list installed nmap || echo "未安装"
ls /local/yum_repo/Packages/nmap* || echo "无缓存"

# 触发测试
yum install -y nmap -q
ls /local/yum_repo/Packages/nmap* || /usr/local/bin/yum-cache-auto.sh

# 查看日志
grep "nmap" /var/log/yum-*.log
关键日志路径
日志文件 用途
/var/log/yum-cache.log 核心同步操作记录
/var/log/yum-hook.log 钩子触发记录
/var/log/yum-cron.log 定时任务执行记录
方案优势
  • 双重触发机制保障同步完整性
  • 全自动化运行无需人工干预
  • 日志系统完善便于问题追溯
  • 长期有效降低维护成本

注意事项

  1. 脚本需在CentOS 7环境下运行
  2. 确保本地仓库目录有足够存储空间
  3. 首次执行建议手动验证日志输出
相关推荐
qq_4523962336 分钟前
第十五篇:《UI自动化中的稳定性优化:解决flaky tests的七种武器》
运维·ui·自动化
j_xxx404_1 小时前
Linux:静态链接与动态链接深度解析
linux·运维·服务器·c++·人工智能
_只道当时是寻常2 小时前
【Codex】Ubuntu 安装 Codex CLI 并解决 Clash 代理与账号认证问题
linux·ubuntu·chatgpt
Elastic 中国社区官方博客2 小时前
Elastic-caveman : 在不损失 Elastic 最佳效果的情况下,将 AI 响应 tokens 减少64%
大数据·运维·数据库·人工智能·elasticsearch·搜索引擎·全文检索
brucelee1862 小时前
Claude Code 安装教程(Windows / Linux / macOS)
linux·windows·macos
jsons13 小时前
给每台虚拟机设置独立控制台密码
linux·运维·服务器
嵌入式×边缘AI:打怪升级日志3 小时前
全志T113 Tina-SDK 配套工具链开发应用(从Makefile到CMake再到Autotools)
linux
嵌入式×边缘AI:打怪升级日志3 小时前
全志T113嵌入式Linux开发环境搭建(VMware + Ubuntu 18.04)详细步骤
linux·ubuntu
云栖梦泽4 小时前
Linux内核与驱动:14.SPI子系统
linux·运维·服务器·c++
福大大架构师每日一题4 小时前
openclaw v2026.4.24 发布:Google Meet 深度集成、DeepSeek V4 上线、浏览器自动化与插件架构全面升级
运维·架构·自动化·openclaw