Answers:
HDD没有确切的传输速率,它取决于适当的维护,即没有碎片,也没有坏扇区等。
如果HDD是SATA 2并且是相同的分区,则仅是数据传输的速度。
如果同一HDD中有两个分区,则不需要在总线和母板之间进行此数据传输,即,它会加载到缓冲区中。(然后取决于硬盘缓冲区的大小。)
但是对于每个复制的文件,系统必须将其索引保留在HDD的MFT(主文件表)中,如果您复制许多文件,则复制过程会变慢。并且,如果您有任何防病毒软件,它将扫描每个复制的文件。并且,如果启用了Microsoft搜索文件索引(或任何其他文件索引服务),结果将更糟。
我认为,还有许多其他原因会导致许多文件的副本速度变慢,但这应该是主要原因。
为什么文件数量有所不同?
显然,您只专注于“复制文件”的“复制数据”方面。文件不仅仅是数据。它是文件系统中的实体。文件具有名称,属性和权限。复制“文件”时,必须将所有与文件有关的所有附加信息与数据一起复制。有大量磁盘I / O来执行此文件系统开销。
在通用文件系统中复制一(1)个文件的过程类似于:
(a)至少这意味着搜索当前目录。否则,该路径可能始于文件系统的根目录,并且必须遍历多个目录级别。
(b)至少这意味着搜索当前目录。否则,该路径可能始于文件系统的根目录,并且必须遍历多个目录级别。如果目标文件已经存在,则确定复制应如何进行或中止。如果目标文件不存在,则必须创建一个新的目录条目,并且可能涉及扩展目录(即文件块(又名集群)分配开销)。
(c)如果必须扩展目录,请通过查找空闲块来分配新块,使用新分配修改分配表,然后将这些块写出到磁盘。由于大多数文件系统维护分配表的多个副本,因此这意味着对磁盘的多次写入。
(c1)找到目标目录后,从磁盘读取目录块,使用复制文件的新目录条目对其进行修改,然后将其写出到磁盘。
(d)为了复制文件,通过查找可用块来分配块,使用新分配修改分配表,然后将这些块写出到磁盘。由于大多数文件系统维护分配表的多个副本,因此这意味着对磁盘的多次写入。为了保持数据完整性,文件系统可能不会尝试合并(延迟和合并)目录和分配表的磁盘写操作,而是在创建和分配新文件时立即执行写操作。
(E)一旦数据复制是complele,更新用于与所述正确的文件长度和时间戳复制的文件中的新的目录项,然后写该目录块到磁盘。
(六) 更新了全新的“访问”时间戳源目录条目,然后写目录块到磁盘。
因此,您的问题不是仅一个文件,而是问是否对一千个文件执行所有这些操作可能会增加仅复制文件数据部分的时间?如果仅复制一个24MB的文件,则可以将其与1000个文件的复制时间进行比较。
当备份机文件系统,各个文件复制到磁盘或分区上的另一个文件系统中很少采用,因为它是当你发现一个相当缓慢的过程。一种更快的方法是创建和写入单个归档文件,该文件以特殊的文件格式保存源目录条目和文件内容。备份程序和* nix命令'tar'可以输出这样的存档文件。(请注意,“ tar”仅处理存档文件,不使用诸如存档+压缩实用程序之类的压缩方式。)最快的备份方法是写入块设备(而不是设备上的文件系统),以便源文件系统为忽略(作为更多数据处理),可以执行源设备的逐块图像复制。
(请记住,亲爱的互联网,类比有缺陷。请随时指出评论的方式。)
==
某个孩子(我们称他为Sam)正在将鸡蛋从一个篮子搬到另一个篮子。==
。这里不是很重要。==
蛋卷。想想罗宾的蛋和德拉贡的蛋。因此,Sam必须将鸡蛋从一个篮子搬到另一个篮子,因为他在农场工作,而谁给他做任务都是卑鄙的。这个农场有各种各样的产卵动物,包括龙和神话中的海兽。Sam认为这很棒,原因有几个。(不是很重要,但这是我的比喻)
Sam在河边放着两个篮子,这是一个寒冷的地方,其中一个篮子里面放着鸡蛋。篮子里的鸡蛋大小从
100 bytes
篮子里的空间 至
2.7Gb
。山姆必须开始移动鸡蛋,所以他只是开始抓鸡蛋并移动鸡蛋。假设他决定先移动一条龙蛋。现在鸡蛋非常重而且密实,所以他花了一些时间才能把东西拉到另一个篮子里。
山姆把龙蛋拿到另一个篮子里,他很生气。这很困难,因为这东西占用了很大的空间。仅仅一个鸡蛋就花了很长时间。
山姆回到他的第一个篮子去抓另一个鸡蛋。他意识到自己只有一个大的。但是,还有100,000亿个罗宾的蛋。
如您所见,山姆的下午毁了。他的天生倾向是恐龙蛋使他不得不移动会更糟。当我们谈论鸡蛋和篮子时,这是有道理的,但是计算机的交易量就高达100,000亿。
为什么要移动几个小文件而不是几个大文件的时间要长得多的答案,与移动文件的成本有关。您拥有的小文件越多,需要执行该操作的次数就越多。看待这种情况的另一种方式是谈论信息密度。
读取FAT,重新定位磁头,在更改文件上打开文件-所有这些都需要时间