我希望加快我的部署过程,目前我有一个单独的暂存服务器和一个生产中的网络场。
我目前使用robocopy
从暂存服务器镜像每个 Web 场服务器,但是,这非常慢。
我的复制命令如下
ROBOCOPY %codeSourceDir% %targetSite% /MIR /XF *.config
即镜像文件夹,不包括任何*.config
文件。
这表现正常,但要复制200兆向 8 台服务器复制文件,每台服务器大约需要 4 分钟(总共约 30 分钟)。如果我使用远程桌面进行简单的删除文件夹和复制,大约需要 5 秒!我认为差异如此之大的原因是文件数量很多(约 1 万个),而 robocopy 花费的大部分时间都用于文件比较。
有没有办法通过忽略文件比较功能来加快 robocopy 的速度?
我想要做的是镜像目录(基本上就是删除多余的文件),我不在乎是否覆盖相同的文件。robocopy 可以做到这一点吗,或者有没有更好的工具可以完成这项工作?
答案1
该/is
标志将覆盖文件。它是“包含相同文件”,应该可以完成您的任务。我还会将/W:1
重试等待时间设置为 1 秒,而不是默认的 30 秒。您的延迟可能是由于目标端锁定造成的;您检查过吗?
我不知道有没有不经检查就能复制的方法,但这应该能让你达到你需要的目的。
当然,您也可以使用另一行 robocopy 在运行镜像之前从目标目录中删除所有文件。这当然也可以。
答案2
我认为我不明白您所说的“简单地删除文件夹并使用远程桌面进行复制,大约 5 秒即可完成”是什么意思。您的意思是您实际上从暂存服务器中删除单个文件夹,然后通过 RDP 将整个层次结构复制到 Web 服务器,整个过程需要 5 秒钟?您是在告诉它跳过已在远程服务器中找到的所有文件吗?如果这些文件已更改,则不会更新它们的内容。
回到 Robocopy,您可以使用“/xo”限制文件集(排除较旧的文件)。此外,考虑使用“/mt:X”进行多线程,其中“X”是并行运行的线程数。
您可以看到 Robocopy 的所有选项这里。
答案3
你应该看看DFS——分布式文件系统(微软)这基本上可以透明地完成您想要的操作。