这是我的场景:
我们需要将一组文件(“工作空间”)从源服务器推送到多个目标服务器。 这些文件保存在版本控制(SVN)下,因此第一步是将最新版本的存储库导出到源服务器。 然后,我需要确保在不同的大陆上的几个区域服务器具有该工作区的最新版本。
我有一个使用ROBOCOPY的脚本,但它将整个工作区发送到每个目标服务器。 复制时间非常长,转移可能会阻塞networking到一些不太好的网站…..我已经抱怨了!
在大多数情况下,这些更改只适用于所有文件的一小部分,因此某种差异副本将是理想的。 我不愿意走同步/镜像路由,因为远程服务器上的文件将被经常使用和修改,而区域服务器上的文件很可能被同步工具视为更新。
有什么脚本/工具,你可以build议使发布这个工作区更有效率? 我不介意是否有一个合理的价格可以帮助完成这项工作。
操作系统:Windows Server 2003networking带宽:这是一个私人公司networking,连接速度可以有很大的不同
鉴于文件是在版本控制下,如何在svn中为文件的“生产准备”版本创build一个分支。 然后,不要在主服务器上执行svn导出,请在所有服务器上签出,然后使用“svn update”从“生产就绪”分支中更新所有服务器。
有一个生产就绪分支的想法是,你可以继续工作的文件,并准备好“发布”他们到所有服务器复制文件到分支。 这样您就不会在生产服务器上显示“未完成”的东西。
吉姆。
PS:这与Dave Cheney的答案基本相同,只是更详细。
你提到源是SVN。 你可以做svn吗?
在大多数情况下,这些更改只适用于所有文件的一小部分,因此某种差异副本将是理想的
Rsync 。 是的,对于Windows也是如此 。
如上所述, svn up也会起作用,但是从那以后
远程服务器上的文件将被经常使用和修改
你需要svn revert首先svn revert 。
微软的分布式文件系统 (DFS)解决了这个问题。 Windows Server 2003 R2添加了对远程差分压缩的支持,它只同步差异。 正是你所需要的。
傀儡configurationpipe理工具,可能会对你感兴趣。
这在function上可能有点矫枉过正,但与您正在考虑的解决scheme相比,它相当轻巧。