要让本地软件仓库定期自动同步远程源,需结合 reposync 与 cron:先安装 dnf-plugins-core 或 yum-utils,手动测试同步(如 reposync -p /var/www/repos --repo=baseos --download-metadata),再配置 crontab 每日凌晨2点执行同步并记录日志,最后用 createrepo 生成元数据并配置 Web 服务供客户端使用。

要让本地软件仓库定期自动同步远程源,核心是结合 reposync 命令与系统级定时任务(如 cron),适用于基于 YUM/DNF 的 Linux 发行版(如 CentOS、RHEL、Fedora、AlmaLinux 等)。
准备 reposync 工具
确保已安装 dnf-plugins-core(DNF 系统)或 yum-utils(旧版 YUM 系统):
- DNF 环境(推荐):
sudo dnf install dnf-plugins-core - YUM 环境:
sudo yum install yum-utils
验证是否可用:reposync --help。若报错,请先启用对应仓库源(如 epel、baseos、appstream)。
手动执行一次同步测试
选一个目标仓库 ID(如 baseos 或 epel),运行示例命令:
reposync -p /var/www/repos --repo=baseos --download-metadata -n
-
-p:指定本地保存路径(需提前创建并确保有写权限) -
--repo:指定要同步的仓库 ID(可通过dnf repolist查看) -
--download-metadata:下载仓库元数据(生成 repodata,否则无法用作本地源) -
-n:预览模式(不真正下载),确认无误后再去掉该参数
成功后,检查 /var/www/repos/baseos/ 下是否有 RPM 包和 repodata/ 目录。
配置定时同步(cron)
以每天凌晨 2 点同步 baseos 和 appstream 为例:
- 编辑 root 用户的 crontab:
sudo crontab -e - 添加两行:
0 2 * * * /usr/bin/reposync -p /var/www/repos --repo=baseos --download-metadata --quiet > /var/log/reposync-baseos.log 2>&1
0 2 * * * /usr/bin/reposync -p /var/www/repos --repo=appstream --download-metadata --quiet > /var/log/reposync-appstream.log 2>&1
-
--quiet减少日志输出,配合重定向便于排查 - 日志路径需存在,可提前创建:
sudo mkdir -p /var/log/reposync - 如需保留最近 N 天包(节省空间),可在同步后加
reposync --delete清理过期包
启用本地仓库供客户端使用
同步完成后,需生成或更新仓库索引,并配置 HTTP 服务(如 nginx 或 httpd)对外提供访问:
- 进入同步目录,重建元数据:
createrepo -v /var/www/repos/baseos(如未安装 createrepo,运行sudo dnf install createrepo_c) - 配置 Web 服务将
/var/www/repos映射为根路径(例如通过 nginx 的root /var/www/repos;) - 客户端即可用
baseurl=http://your-server-ip/baseos配置本地 repo 文件

















