为什么移动大文件夹需要花费很多时间?

为什么移动大文件夹需要花费很多时间?

我有一个包含超过 10 万个文件的大文件夹。我将其移动到存档文件夹中,但移动过程花了很长时间。这是为什么?我知道在 XP 上移动过程只需不到一秒钟,但在 Windows 7 上则不然。我确定这是权限问题,有什么方法可以禁用它并使其更快吗?

我正在将文件夹移动到同一驱动器/分区中的另一个文件夹。在 XP 中。据我所知,它只是将文件夹文件从一个地方移动到另一个地方。在 Windows 7 中,当我移动它时,它似乎触及了每个文件中的某些内容。

我该怎么做才能修复这个问题?删除权限属性?

答案1

当我使用 Windows 资源管理器移动(或剪切和粘贴)时会发生这种情况。

据我所知,解决此问题的唯一方法是使用 Explorer 以外的其他工具来移动目录。例如,从 Windows 的 cmd.exe 中,使用它可以立即移动甚至较大的目录。Cygwin 的命令move a b也是如此。mv

编辑:一些猜测:Explorer 可能会立即更新搜索索引,如果有许多条目需要更新,则需要时间。

答案2

似乎每当 Windows 资源管理器尝试移动(或复制)文件夹时,它都会执行额外的验证步骤。如果此过程持续几秒钟,您就会看到状态消息“正在发现项目”。这似乎是在清点文件夹中的所有文件;与在资源管理器中实际打开该文件夹的方式相同。

这一步可能在某些情况下是需要的,但对于大多数“将此文件夹从这里移动到那里”的操作来说,它不应该是必需的。进一步推测——在某些情况下,进行这种验证似乎可以更好地解决一些错误,而微软从未认为提高文件夹中有“超过数百个”文件的特殊情况的性能很重要。这些问题可能包括:合并文件夹时;如果目标文件夹位于不同的媒体/分区上;也许要检查新文件路径是否对 NTFS 来说太长。在我看来,可以提前检查其中的任何/所有内容,以避免执行这个额外的索引操作,但我知道边缘情况的性能经常被忽略。

答案3

当文件夹似乎立即移动时,这是因为操作系统已经能够更新文件分配表* 无需移动实际的文件数据。

对于小文件来说,这样做会比较慢,因为每个文件都必须在表中进行更改。如果文件真的很小,这甚至可能与实际移动数据所花的时间差不多。

我不知道在什么情况下文件数据必须与目标位于同一分区时才需要移动,但我认为你无法避免这种情况。正如其他评论者和答案所暗示的那样,复制到不同的驱动器(不同的磁盘、不同的分区、USB 棒、网络上的驱动器等)当然意味着你必须复制完整的数据,因此速度会变慢。你将受到复制目标的带宽的更大影响。

(*将文件数据视为图书馆中的书籍,将文件分配表视为一组索引卡,显示书籍位于哪个部分)

答案4

这并不一定能回答为什么会发生这种情况。

http://www.codesector.com/teracopy.php

我最近一直在使用 TeraCopy,发现它的复制速度确实似乎更快一些。

相关内容