如果我们在构build服务器(CCNET)上成功构build,则所有ASP.NET网站文件都将被复制到虚拟目录(%output_dir%),以便非开发人员可以查看/testing最新版本的网站。 在构build的最后,执行下面的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
仅从性能angular度来看 , xcopy或robocopy会给你类似的结果。 我在Windows Vista 64位SP2上进行了一些testing,做了一些比较。 所有的拷贝都是在内部的7200转的Sata II磁盘和外置的USB 2.0磁盘之间进行的,或者在指定的内部驱动器上。 没有特别的设置完成(如果无效/validationtesting,自己动手),只能将命令input到batch file中执行。 PowerShell被用来捕获开始和停止时间。 经过几次传球之后,我使用的工具的平均数:
文件:732,909,568字节(698 MB),1个ISO文件复制到同一个内部磁盘上的不同目录。
copy 6 secs (ex. copy G:\folder1\* G:\folder2\) xcopy 6 secs (ex. xcopy G:\folder1 G:\folder2 /I /E /Y /R) robocopy 6 secs (ex. robocopy G:\folder1\ G:\folder2 /E /NP) teracopy 28 secs (ex. TeraCopy.exe Copy G:\folder1\ G:\folder2\) fastcopy 19 secs (ex. fastcopy.exe /auto_close G:\folder1 /to=G:\folder2)
文件:732,909,568字节(698 MB),1个ISO文件复制到外部USB磁盘。
copy 36 secs (ex. copy G:\folder1\* I:\folder2\) xcopy 35 secs (ex. xcopy G:\folder1 I:\folder2 /I /E /Y /R) robocopy 36 secs (ex. robocopy G:\folder1\ I:\folder2 /E /NP) teracopy 36 secs (ex. TeraCopy.exe Copy G:\folder1\ I:\folder2\) fastcopy 38 secs (ex. fastcopy.exe /auto_close G:\folder1 /to=I:\folder2)
文件:45,039,616bytes(42.9MB)5个随机文件复制到外部USB磁盘
copy 6 secs (ex. copy G:\folder1\* I:\folder2\) xcopy 5 secs (ex. xcopy G:\folder1 I:\folder2 /I /E /Y /R) robocopy 6 secs (ex. robocopy G:\folder1\ I:\folder2 /E /NP) teracopy 12 secs (ex. TeraCopy.exe Copy G:\folder1\ I:\folder2\) fastcopy 6 secs (ex. fastcopy.exe /auto_close G:\folder1 /to=I:\folder2)
文件/目录:1,087,180,800字节(1.01 GB),27个文件/ 8个目录复制到外部USB磁盘。
copy *Not included in test xcopy 57 secs (ex. xcopy G:\folder1 I:\folder2 /I /E /Y /R) robocopy 58 secs (ex. robocopy G:\folder1\ I:\folder2 /E /NP) teracopy 56 secs (ex. TeraCopy.exe Copy G:\folder1\ I:\folder2\) fastcopy 60 secs (ex. fastcopy.exe /auto_close G:\folder1 /to=I:\folder2)
这绝不是一个彻底的testing,但只是在这个stream派中的一些更stream行的工具抛出一个快速的现实世界的情况表明,你很安全坚持xcopy或Robocopy(从性能的angular度来看)。 Robocopy选项/NP (无进度)也可以为您节省时间。 这并不意味着你不能使用xcopy以外的其他东西。 Robocopy是一个很好的例子(来自Wikipedia ):
Robocopy的function超越了内置的Windows副本和function
xcopy命令,包括以下内容:
我通常使用:
robocopy source dest /E /MIR
或一些其他的参数变体 – 可能是/NFL /NDL /NS /NC /NP来匹配“安静”
事实上,通过消除networking,你真的限制了你的testing。 你可能想考虑使用networking共享,这将是pipe理工作的大部分。
此外,您应该使用FTP,并完全跳过CIFS。 Eseutil.exe是另一个实用程序,你可以扔在那里。 (可以在其他地方使用的Exchange实用程序,以及四个依赖的dll。)
然后我想看看你的结果。
我使用XCopy来达到同样的目的。 我也做了另一个NIC添加到该服务器,并把它放在一个单独的子网。 然后直接连接到我从中传输文件的服务器。 这样,2台机器通过一个子网移动复制的数据,用户仍然可以通过直接连接到局域网的第二个NIC访问。
你说源和目的地在同一个驱动器上,但它们都在构build服务器上吗?
如果构build服务器是源和目标的位置,请考虑将一个文件夹或另一个文件夹移动到另一个驱动器,可能位于另一个控制器上。
如果构build服务器不是源和目标的位置(构build子项并不总是在构build它们的服务器上),请考虑在源和目标文件夹所在的服务器上创build任务。 然后,远程启动该任务。
这些年来,我不得不做几份。 我们有一台Windows Server 2008 R2机器,它拥有一个内含超过12M映像(大约400GB)的单一目录。
显然我宁愿它不是这样一个大目录但是:
无论如何,我只是觉得我会分享我的经验,因为我的真正大目录的不寻常的性质。