为什么多个小文件的数据传输速度比大文件慢?

Jaf*_*Joy 4 file transfer file-transfer

我一直注意到,当例如反应项目或整个网站的实例,其大小总结说350-450 MB需要更长的时间来转移比2-3 GB的视频文件或事实的事项的任何数量捆绑到一个文件中的文件,如 .zip/.rar/.iso。

一些 SC:-

转移一些反应项目:- 转移一些反应项目

传输电影:- 传输电影

我在网上搜索,但不幸的是没有找到相关的帖子/答案。
也许我没有使用必要的关键字...idk

如果可能的话,详细的解释会非常有帮助:)
即使解释深入到操作系统概念,它也很酷。我只想知道为什么

Car*_*iel 5

当您传输文件时,实际上有很多“幕后”发生:

  • 打开原始文件
    • 将路径字符串映射到操作系统实际理解的内容
    • 安全检查 (FILE_ACCESS):您是否允许读取和删除文件?
    • 检查更多安全性(FILE_SHARE):您是否被允许,是否还有其他人对该文件进行了某些操作?
  • 创建新文件
    • 将路径字符串映射到操作系统实际理解的内容
    • 再次安全(FILE_ACCESS):您可以在此处创建文件吗?以及上面的目录,以及上面的...
    • 创建实际的新文件,并将其放入文件系统查找表中
    • 设置默认文件属性
    • 禁止其他人读/写/删除新文件 (FILE_SHARE)
  • 实际转移
    • 读取 4k 字节
    • 写入 4k 字节,然后重复
  • 原文件被删除
  • 设置新文件的最后修改日期
  • 新文件已关闭

我确定我在这里已经遗漏了很多步骤,但我在这里说明了在实际转移之前和之后发生的很多事情。即使文件为空(0 字节),我们仍然必须执行所有这些操作。除了已经给出的答案,例如碎片化。