我已经运行了以下测试,我使用此批次创建了一个包含 15'000 个 400 字节文件的文件夹:
@ECHO off
SET times=15000
FOR /L %%i IN (1,1,%times%) DO (
fsutil file createnew filename%%i.txt 400
)
然后我使用以下命令在我的 Windows 计算机上复制过去:
robocopy LargeNumberOfFiles\ LargeNumberOfFiles2\
完成后,我可以看到传输速率为 915810 字节/秒,小于 1 MB/秒。我花了几秒钟来复制 7 MBytes 请注意,这非常慢。
我已经尝试过使用单个文件为 50 MB 的文件夹,传输速率为 1219512195 字节/秒。(是的 GB/s)瞬时。
为什么复制大量文件会占用 Windows 文件系统上的大量时间资源?
请注意,我尝试在具有 ext3 文件系统的虚拟机(vmware 播放器)中的同一台计算机上运行的 linux 系统上执行相同的操作。
我使用 cp 命令,复制是瞬时的!
另请注意以下事项:
- 没有杀毒软件
- 我已经在多台 Windows 计算机(总是 ntfs)上测试了这种行为,我总是得到可比较的结果(传输速率低于 1MB/s,平均 7-8 秒复制 7 MBytes)
- 我已经在多个 linux ext3 系统上进行了测试,该副本始终是即时的(15000 个 400 字节的文件)
- 问题是要了解是什么让 Windows 文件系统复制大量文件的速度比 Linux 文件系统慢。