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


13

自Windows Vista以来,Windows复制确实是一团糟。甚至Microsoft都声称从用户角度来看,它们已经提高了性能,这并不是很明显。即使只有单个文件,复制窗口也会出现太多时间来进行“计算”,然后完成复制(即使在100%完成后,有时对话框仍处于活动状态)。

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

我读了几年前Jeff Atwood撰写的有关Windows File Copying的内容丰富的文章。但是我的具体问题是什么

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

3
在Windows中使用xcopy,甚至robocopy。好多了。例如,对于后者,您可以进行两遍操作,第一遍创建所有目录但不复制任何文件,第二遍复制实际文件,因此不会在目标上造成碎片。
Kerrek SB 2011年

1
或RichCopy(blogs.technet.com/b/ken下载
2011年

还取决于文件系统-您的系统可能使用类似于之类的东西ext3/4,它在这里与NTFS竞争。您也可以尝试reiserfsxfs-这两者对于小文件的快速操作进行了优化。
new123456 2011年

@KerrekSB,请将您的评论作为答案,以便我予以支持。(我只是对评论+1,但您知道我的意思。)这就是答案。
Carf 2011年

应当指出(尽管8年后!),Robocopy / CREATE尽管对于复制带有空文件的完整目录结构非常有用,但它本身并不能防止目标上文件的碎片化。该结构是在MFT中创建的,但是文件的内容可以记录在任何地方。通常,即使Robocopy一次运行单线程并一次复制一个文件,也无论如何也不应出现碎片(并且多线程运行它也是一个坏主意,因为它会严重降低HDD到HDD副本的性能,因为机械驱动器必须“磨碎”更多)。
加布里埃尔B

Answers:


6

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

例如,如果要复制大型目录结构,则可能希望目标没有碎片。的标准调用robocopy已经很不错了,但是由于目录条目是在创建子目录时更新的,因此仍然可以得到零散的目录。为避免这种情况,您可以分两步运行robocopy,第一遍只创建目标目录结构而不复制任何文件内容,第二遍实际复制文件正文。

总而言之,robocopy它非常高效并且完全了解NTFS功能。


NTFS比ext3 / 4更好吗?
萨拉特2011年

两遍自动复制如何帮助我们减少碎片,因为实际内容将在以后复制。磁盘分配完全由文件管理器控制吗?
萨拉特2011年

我正在做一些技巧,例如使用“超越比较”来复制文件。即,我可以运行多个复制操作以最大程度地利用带宽。但是我不确定它会是多么零散
萨拉特(Sarat)2011年

2
@Sarath:关于碎片:目录条目随着新文件和子目录添加到目录而增长。如果只是天真地创建目录并开始放入文件,最终原始目录记录将太小并且必须扩展,但是现在没有空间了,因为您已经在其后放置了文件数据。使用该/CREATE选项,将创建空文件和子目录,这些文件和子目录不占用任何空间,因此可以连续地完全写出目录条目。
Kerrek SB

1
@Sarath:关于将NTFS与Ext进行比较,我不能说,因为NTFS不开放,效率问题相当模糊。NTFS当然是一项具有许多功能的优秀技术。但是,实际上没有选择,因为您将在Windows中使用NTFS,而在Linux中使用Ext(或BTRFS),仅此而已。
Kerrek SB 2011年

4

从Ubuntu Linux中看到的某些速度可能是文件缓存。据我所知,Linux中的文件复制不竭力减少文件缓存的使用。

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

Windows XP也用于复制,而不考虑文件缓存。但是在Windows Vista中,Microsoft更改了Explorer,以便在复制时使用有限数量的文件缓存。这样可以减少大文件副本对系统其余部分的影响。但这也将相对较小的文件复制速度降低到了硬盘速度。


是的,Ubuntu使用文件缓存机制。我还注意到复制过程中浏览速度有些慢。我还注意到,速度一直在不断提高,尤其是在复制大量文件时
sarat 2011年

我认为这几乎是解决问题的答案。
Nandakumar Edamana'9

2

在Windows中,使用Teracopy-它可以解决Explorer所具有的整体愚蠢问题。

在Ubuntu中,我发现文件复制非常快。

使用可移动驱动器时,“文件操作”对话框仍然没有消失。如果您尝试在对话框消失后立即安全弹出驱动器,则会收到一些错误消息。数据通过。

更新:Windows文件操作在与服务和注册表的所有集成中可能很慢。我猜Nautilus(在Gnome中)只是一个简单的过程,或者至少没有Explorer所具有的负载/中断。


通过添加另一个必须保持打开状态的GUI来解决愚蠢问题:)在ubuntu中,我的经验是您可以关闭“复制/移动”对话框,它将进入系统托盘,完成后显示通知。不确定Natty与Unity桌面如何实现
2011年

Teracopy会自己加载资源管理器。您不必保持打开状态。因此,Teracopy无需任何用户努力即可加载到内存中,并且工作得毫不费力。Ubuntu不需要那样的东西,因为它具有Nautilus内置的所有智能功能,即“合并”和“全部跳过”选项。
2011年

+1:感谢您随后吸引了TeraCopy!
sehe 2011年

我当时使用的是名为fastcopy的免费开源工具。[ ipmsg.org/tools/fastcopy.html.en]
萨拉特

-1

在Linux中移动和复制文件自然是一种快速的操作。之所以可以如此快速地移动和复制文件,是因为源和目标都在同一分区中。该操作仅需更改索引节点。在不同分区之间移动文件仍然非常快(1-gig文件仅需一分钟左右)。在Windows中,将文件移动到同一分区上的目标位置需要花费一些时间,因为Windows中的文件管理比较混乱。(考虑文件碎片以及Windows格式化硬盘的方式。)


我同意分区中的移动非常快。但是复制始终希望在磁盘中有一个重复的日期并创建新的inode。我也怀疑在分区之间移动文件的成本很高,因为发生了物理文件移动。如果我错了,请纠正我。
12
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.