我将一些文件从 GoPro(通过 MTP 连接)传输到外部硬盘。我注意到,传输文件的文件大小取决于外部硬盘的可用空间大小。为什么?我该如何避免这种情况?
例如,GX040190.MP4
下面的屏幕截图正在进行传输,传输过程中目标硬盘上占用 231 GB,而传输前外部硬盘上的可用空间约为 244 GB:
即使传输前后文件本身的大小只有约 3.9GB:
传输前外部硬盘上的可用磁盘空间:
传输多个文件时,这对我来说是个问题,因为无论硬盘上有多少可用空间,传输几个文件后,我都会不断收到磁盘空间不足的错误。这是因为正在传输的文件的文件大小仅比传输开始时外部硬盘的可用空间少几 GB(如果我传输例如 20 个文件,它会考虑外部硬盘在第一次文件传输开始时的可用空间,而不是外部硬盘在当前文件传输开始时的可用空间):
我使用 Windows 10。
答案1
我的理解是,MTP 协议使 Windows 资源管理器依赖于所连接设备的报告。换句话说,例如对于 USB 存储设备,Windows 可以在块或文件系统级别进行访问,而 MTP 协议不允许这样做。
再次以 USB 存储设备为例,Windows 资源管理器可以本身确定文件大小,就像本地硬盘一样,在 MTP 协议的情况下,它几乎就像通过网络协议进行通信一样,其中“另一方”确定文件大小并将其传达给“客户端”。
因此,MTP 更像是一种“通信协议”,而不是“存储协议”。
MTP 增加了一个抽象层,Windows 只能查询文件大小,并且必须依赖 MTP 协议。如果报告的大小不正确,Windows 资源管理器就无能为力了。
MTP 是一种高级文件传输协议,与 USB 大容量存储等通用存储协议不同。这意味着 MTP 客户端(计算机)看不到构成文件系统的数据结构的字节块数组,而是以文件和文件夹的形式与 MTP 设备通信。这让 MTP 设备可以参与高级操作(例如更新其元数据索引),同时保持其文件系统的完整性
如果我之前在评论中建议使用替代文件资源管理器可以为您解决问题,则该错误似乎出在 Windows 资源管理器中。如果您遇到同样的问题,我们更可能不能责怪 Windows 资源管理器。
不过,最好的选择是使用好的读卡器。MTP 协议是一种非常受阻碍的协议,正如您的先前话题。