实现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. 首次执行建议手动验证日志输出
相关推荐
AlfredZhao3 小时前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334669 小时前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪10 小时前
linux 拷贝文件或目录到指定的位置
linux
大树881 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠1 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质1 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush41 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5201 天前
Linux 11 动态监控指令top
linux
qq_369224331 天前
Windows全系通用!ntdll.dll文件丢失、报错、闪退问题的完整排查与修复教程
windows·dll·dll修复·dll丢失·dll错误
Inhand陈工1 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信