核心脚本功能
- 本地仓库路径
/local/yum_repo/Packages作为RPM包存储目录 - Yum缓存路径
完整路径/var/cache/yum/x86_64/7覆盖所有子仓库 - 增量同步机制
find + cp -u仅同步新增/更新的RPM包 - 元数据高效更新
createrepo --update仅更新变化部分 - 缓存清理策略
yum clean metadata保留包缓存同时节省空间
部署步骤
1. 安装基础工具
yum install -y createrepo
2. 创建同步脚本
保存至 /usr/local/bin/yum-cache-auto.sh:
#!/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"
赋予执行权限:
chmod +x /usr/local/bin/yum-cache-auto.sh
3. 配置Yum缓存保留
修改 /etc/yum.conf:
keepcache=1
4. 设置自动触发
钩子脚本(保存至 /etc/yum/posttrans.d/auto_run_yum_sync.sh):
#!/bin/bash
sleep 1
/usr/local/bin/yum-cache-auto.sh >> /var/log/yum-hook.log 2>&1
定时任务(每2分钟兜底):
crontab -l | { cat; echo "*/2 * * * * /usr/local/bin/yum-cache-auto.sh >> /var/log/yum-cron.log 2>&1"; } | crontab -
验证方法
# 检查新包状态
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 | 定时任务执行记录 |
方案优势
- 双重触发机制保障同步完整性
- 全自动化运行无需人工干预
- 日志系统完善便于问题追溯
- 长期有效降低维护成本
注意事项
- 脚本需在CentOS 7环境下运行
- 确保本地仓库目录有足够存储空间
- 首次执行建议手动验证日志输出
3402

被折叠的 条评论
为什么被折叠?



