对 robocopy 的工作方式感到困惑

Posted

技术标签:

【中文标题】对 robocopy 的工作方式感到困惑【英文标题】:Confused about the way robocopy works 【发布时间】:2016-08-14 20:58:33 【问题描述】:

我对 robocopy 的工作方式有点困惑。 我在网络驱动器上有一个文件,例如 \myserver\shared\dir1 是 150 MB。 我有一个 powershell 脚本,每分钟检查一次 \myserver\shared\dir2 (dir2,而不是 dir1)。如果文件存在,它会将其复制到同一本地计算机的 c:\mydir\files 因此,其他计算机上的用户将从 \myserver\shared\dir1 文件夹中复制文件并将其粘贴到 \myserver\shared\dir2 文件夹中。 用户将获得一个小对话框/信息窗口,告诉他复制完成需要 4 分钟。 4 分钟的原因是用户使用较慢的网络并通过 ***,因此复制过程对他来说较慢。 一分钟后,通过任务调度程序,将调用 powershell,它将在 \myserver\shared\dir2 下看到一个文件,并使用 robocopy 将其复制到 c:\mydir\files 下的本地计算机。由于网络区域和本地区域,此复制过程非常快,因此大约需要 30 秒。 虽然启动复制的用户仍然看到超过 2 分钟才能完成复制,但 robocopy 已将文件复制到 c:\mydir\files 并且大小为 150 MB。 这怎么可能? robocopy 如何在启动复制的用户还有超过 2 分钟的时间时复制 150 MB 的文件?

【问题讨论】:

可能资源管理器只是预先分配了整个文件。 我根本不认为这是一个 PowerShell、脚本或编码问题。它可能应该被移动到超级用户。 【参考方案1】:

我的理论。 如果将文件复制到文件共享,操作系统将在复制时预先分配具有正确扩展名的整个文件。 考虑到这一点,使用 Powershell(可能使用 test-path cmdlet)测试路径将返回 True,即使尚未将整个文件复制到文件共享。 然后,Robocopy 将开始将未完成的文件从您的文件共享复制到本地计算机。

【讨论】:

以上是关于对 robocopy 的工作方式感到困惑的主要内容,如果未能解决你的问题,请参考以下文章

对 struct 在这段代码中的工作方式感到困惑

我对 git revert 的工作方式感到困惑

对标志在makefile中的工作方式感到困惑

对删除分配给结构数组的动态内存感到困惑

对 fetchResultController 如何与 MagicalRecord 一起工作感到困惑

对故事板和以编程方式推送 ios Objective C 感到困惑