以primefaces方式同步RPM存储库

我们有一个RPM存储库(在Centos 6机器上),我们需要推送到另一台机器。 到目前为止,我们一直在使用rsync -av --delete来简单地通过networking推送repo目录。 这使得远程存储库在同步期间不可用 – 在rsync完成之前, repodata与当前的rpm包不匹配,并且repodata的同步repodata是primefaces的。

我怎样才能通过ssh自动同步两个存储库?

我希望远程仓库在任何时候都可以使用,即使在传输数据的时候也是如此。 我知道我可以实现这个复制回购一个临时目录,然后移动/符号链接,但感觉应该有一个更好的解决scheme。

使用yum-utils包中的reposync 。 手册页 。 如果你的yum被replace,我认为它仍然适用于dnf

reposync是一个python脚本。 我们可以看到它的确如此

 # Lock if they've not given an explicit cachedir ... my.doLock() 

如果我们看看pydoc yum.YumBase

 doLock(self, lockfile='/var/run/yum.pid') Acquire the yum lock. 

所以它似乎locking其他百胜通道,这可能不是你想要的。

一个接近的方式将是rsync到另一个目录名,然后做几个快速MV:

 rsync -avP repo remote-machine:/dir/repo.new
 ssh remote-machine“mv / dir / repo /dir/repo.old; mv /dir/repo.new/dir/reo”

那么你可以在你想要的时候删除旧的目录。 回购不可用/不一致的时间将被最小化。