问题描述
自Windows Vista以来,Windows复制确实是一团糟。甚至Microsoft都声称他们已经从用户的角度提高了性能,这并不是很明显。即使使用单个文件,对于’Calculating’,复制窗口也会显示太多时间,然后完成复制(即使在100%完成后,有时对话框仍处于活动状态)。
同时,我在Ubuntu Linux中备份了一些文件。我觉得那真的很快。可能是由于更快的UI更新引起的感觉。
我从Jeff Atwood few years back on Windows File Copying阅读了一篇内容丰富的文章。但是我的具体问题是什么
-
(Ubuntu)Linux文件性能是否优于Windows-7?
-
Windows和Linux是否都在利用算法和流水线机制来提高速度?如果是,哪个更好?
最佳解决方法
Windows内置的标准copy
并不是很好,但是Windows附带了两个效率更高的高级命令:xcopy
和robocopy
。特别是当您需要完全控制ACLs等高级文件系统功能或备用数据流时,robocopy
是首选工具。
例如,如果要复制大型目录结构,则可能希望目标没有碎片。 robocopy
的标准调用已经非常擅长此操作,但是由于目录条目是在创建子目录时更新的,因此仍然可以得到零散的目录。为避免这种情况,您可以分两次运行robocopy
,第一个过程仅创建目标目录结构而不复制任何文件内容,第二个过程实际复制文件主体。
总之,robocopy
非常高效,并且完全了解NTFS功能。
次佳解决方法
从Ubuntu Linux中看到的某些速度可能是文件缓存。据我所知,Linux中的文件复制不竭力减少文件缓存的使用。
在Linux中,当您复制一个小于RAM约50%的文件时,整个文件将被复制到文件缓存中,然后在时间允许的情况下写入磁盘。这看起来非常快,但是它会迫使其他更有用的文件脱离缓存。这些可能是Web缓存文件,电子邮件,配置文件,字体文件等。
Windows XP也用于复制,而不考虑文件缓存。但是在Windows Vista中,Microsoft changed Explorer so that when it copies it uses a limited amount of file cache。这样可以减少大文件副本对系统其余部分的影响。但这也将相对较小的文件复制速度降低到了硬盘速度。