(Ubuntu) Linux 文件复制算法比 Windows 7 更好吗?

sar*_*rat 14 windows linux windows-7 performance ubuntu

从 Windows Vista 开始,Windows 复制就变得一团糟。即使微软声称他们已经提高了性能,但从用户的角度来看,这并不是很明显。即使使用单个文件,复制窗口也会出现太多时间用于“计算”然后完成复制(即使在 100% 完成后,有时对话框仍处于活动状态)。

同时,我在 Ubuntu Linux 中备份了一些文件。我觉得真的很快。可能是由更快的 UI 更新引起的感觉。

几年前,我阅读了Jeff Atwood 的一篇关于 Windows 文件复制的内容丰富的帖子。但我的具体问题是什么

  • (Ubuntu) Linux 文件性能是否优于 Windows-7?
  • Windows 和 Linux 都是使用多线程和流​​水线机制来提高速度的算法吗?如果是,哪个更好?

Ker*_* SB 7

copyWindows 中的标准内置命令不是很好,但 Windows 附带了两个更高效的高级命令:xcopyrobocopy. 特别是当您需要完全控制高级文件系统功能(如ACL或备用数据流)时,它robocopy是首选工具。

例如,如果您要复制大型目录结构,您可能希望目标是未碎片化的。的标准调用在这robocopy方面已经很不错了,但是由于目录条目会随着子目录的创建而更新,因此您仍然可以获得碎片化的目录。为了防止这种情况,您可以robocopy分两次运行,第一次只创建目标目录结构而不复制任何文件内容,第二次实际复制文件正文。

总而言之,robocopy效率很高,并且完全了解NTFS 功能。

  • @Sarath:关于碎片:目录条目随着新文件和子目录添加到目录而增长。如果你只是天真地创建目录并开始放入文件,最终原始目录记录会太小,必须扩展,但现在没有空间,因为你已经有了文件数据。使用`/CREATE` 选项,会创建空文件和子目录,它们占用_no_ 空间,从而允许完整连续地写出目录条目。 (2认同)

Zan*_*ynx 6

您在 Ubuntu Linux 中看到的某些速度可能是文件缓存。据我所知,Linux 中的文件复制并没有尽量减少文件缓存的使用。

在 Linux 中,当您复制的文件小于 RAM 的 50% 时,整个文件将被复制到文件缓存中,然后在时间允许的情况下写入磁盘。这看起来非常快,但它会强制其他更有用的文件退出缓存。这些可能是 Web 缓存文件、电子邮件、配置文件、字体文件等。

Windows XP 过去也曾在不考虑文件缓存的情况下进行复制。但在 Windows Vista 中,Microsoft 更改了资源管理器,以便在复制时使用有限数量的文件缓存。这减少了大文件副本对系统其余部分的影响。但它也将即使是相对较小的文件复制的速度降低到硬盘的速度。