如果我们在构建服务器 (CCNET) 上成功构建,所有 ASP.NET 网站文件都将复制到虚拟目录 (%output_dir%),以便非开发人员可以查看/测试网站的最新版本。在构建结束时,将执行以下 bat 文件。
rmdir /s /q "%output_dir%"
mkdir "%output_dir%"
xcopy "%source_dir%*" "%output_dir%" /e /c /i /q /-y
问题是我发现复制速度很慢,想知道在 Windows 2008 中是否有任何可用的复制命令比 xcopy 更快?源和目标在同一个驱动器上。以下是我们在复制时使用的参数。
/e = copies directories and sub directories including empty ones.
/c = continues copying even if there are errors
/i = if destination does not exist destination is directory
/q = don't display filenames
/-y = confirm overwrite
仅从性能的角度来看,xcopy或robocopy会给您类似的结果。我在 Windows Vista 64 位 SP2 机器上进行了几次测试,以进行一些比较。所有副本均在内部 7200 RPM Sata II 磁盘和外部 USB 2.0 驱动器之间执行,或在指示的同一内部驱动器本身上执行。没有进行特殊设置(如果使测试无效/验证,请自行决定),只是将命令输入到批处理文件中执行。PowerShell 用于捕获开始和停止时间。经过几次传球后,这里是我使用的工具的平均值:
文件:732,909,568 字节 (698 MB),1 个 ISO 文件复制到同一个内部磁盘上的不同目录。
文件:732,909,568 字节 (698 MB),1 个 ISO 文件复制到外部 USB 磁盘。
文件:45,039,616bytes (42.9MB) 5 个随机文件复制到外部 USB 磁盘
文件/目录:1,087,180,800 字节(1.01 GB),27 个文件/8 个目录复制到外部 U 盘。
这绝不是一个详尽的测试,但只是在这个类型的一些更流行的工具上快速地抛出一个现实世界的场景表明你非常安全地坚持使用 xcopy 或 Robocopy(仅从性能的角度来看)。此外,Robocopy 选项
/NP
(无进度)可为您节省 0 时间。但是,这并不意味着您不能从使用 xcopy 以外的东西中受益。Robocopy 是一个很好的例子(来自维基百科):Robocopy 以超越内置 Windows 复制和
xcopy 命令的功能而著称,包括以下内容:
我通常使用:
或参数的其他一些变体 - 可能
/NFL /NDL /NS /NC /NP
匹配“安静”实际上,通过消除网络,您确实限制了您的测试。您可能希望考虑使用网络共享,这将是大量的管理工作。
此外,您应该使用 FTP,并完全跳过 CIFS。Eseutil.exe 是您可以放入其中的另一个实用程序。(可以在其他地方使用的 Exchange 实用程序,以及它的四个依赖 dll。)
那我想看看你的结果。
我出于同样的目的使用 XCopy。我还做的是向该服务器添加另一个 NIC 并将其放在单独的子网中。然后直接连接到我从中传输文件的服务器。这样,两台机器通过一个子网移动复制的数据,用户仍然可以通过直接连接到 LAN 的第二个 nic 访问。
您说源和目标在同一个驱动器上,但它们都在构建服务器上吗?
如果构建服务器是源和目标的位置,请考虑将一个或另一个文件夹移动到另一个驱动器,可能在另一个控制器上。
如果构建服务器不是源和目标的位置(构建放置并不总是在构建它们的服务器上),请考虑在源和目标文件夹所在的服务器上创建一个任务。然后远程启动该任务。
这些年来,我不得不做几份副本。我们有一台 Windows Server 2008 R2 机器,它有一个目录,里面有超过 12M 的图像(大约 400GB)。
显然我不希望它是这么大的目录但是:
无论如何,我只是想与他们分享我的经验,因为我非常大的目录的不寻常性质。