![本地仓库更新](https://linux22.com/image/141079/%E6%9C%AC%E5%9C%B0%E4%BB%93%E5%BA%93%E6%9B%B4%E6%96%B0.png)
/var/www/html/centos/7
我在目录中有一个本地存储库。在这里,下载了centos的所有rpm包。我将创建一个 crontab 来每 1 周或某某更新我的本地存储库。
我想了解一下有repocreate --update
这个作用吗?或者我应该再次从centos repo下载所有软件包?
如果我应该从 centos repo 下载软件包,有没有办法跳过下载的软件包(它们位于/centos/7
我提到的目录中)并只从 centos 下载新的(更新的)软件包?
更新
我已经找到了解决方案,但它对我不起作用。我创建了一个新目录 centos7/repo 并下载了一些文件来检查 rsync --ignore-existing 是否有效。但是每当我运行以下命令时,就会出现错误
failed to connect to ftp.linux.org.tr (193.140.100.100): Connection timed out (110)
rsync: failed to connect to ftp.linux.org.tr (2001:a98:11::100): Network is unreachable (101)
rsync error: error in socket IO (code 10) at clientserver.c(125) [Receiver=3.1.2]
命令是:
rsync -avz --ignore-existing rsync://ftp.linux.org.tr/centos/7/os/x86_64/ /var/www/html/centos7/repo/
我也尝试过其他镜子https://centos.org/download/mirrors/(此站点中也有 rsync 位置)。但它们都不起作用。有人可以验证 rsync 镜像是否有效吗?可能我无法通过端口 873 穿过防火墙。
无论如何,我可以通过端口 80 使用此 rsync 还是有其他方法来完成此任务? (我尝试了 zsync 但它需要 zsync 文件。)
答案1
如果您遇到 rsync 问题,那么您可以使用重新同步。它能够从系统中配置的存储库下载所有软件包(或--newest-only| -n)。所以脚本中的最终命令如下所示:
/usr/bin/reposync --repoid=updates --download_path=/var/www/html/centos7/repo/updates --newest-only
/usr/bin/createrepo /var/www/html/centos7/repo/updates
答案2
您可以尝试以下也支持rsync的镜像
答案3
repoquery 查询您为系统配置的存储库中的每个包,然后将列表提供给 xargs 以使用 repotrack 下载所有包(新包而不是现有包)到您的服务器。
repoquery -a | xargs repotrack -a x86_64 -p .
如果您没有任何限制 rsync 守护进程端口的防火墙规则,则 rsync 解决方案也适用。
rsync -avz --ignore-existing rsync://ftp.linux.org.tr/centos/7/os/x86_64/ /var/www/html/centos7/repo/