假设你需要写2000 个文件,每个 1 MB和一个 2 GB 的文件。
一般来说,写入大文件所需的时间比写入小文件少得多。
问:但为什么花费多个文件与一个完全相同大小的文件相比要多得多的时间呢?
我经常使用 USB 驱动器将开发机器上的内容传输到生产机器上。在这种情况下,如果写入数千个文件的速度也能很快,那就太好了。
因此我的想法是:
USB 驱动器文件系统怎么样?它将许多小文件在内部写入一个大文件。最后写入“文件包”的目录。这样的文件系统难道不像磁盘上的磁带驱动器吗?
这样的文件系统存在吗?
此外,如果 FS 能以最快的方式写入内容,对我来说就更好了。可能需要更多空间,但完成时间会更少。重新生成空间可以在驱动器空闲时完成。
答案1
用道格拉斯·亚当斯的方式来解释这一点。
大文件…
“你在吗?”
“是的”
“太棒了。文件正在上传。准备好接受了吗?”
当然可以”
“我们开始吧……
数据数据数据数据数据数据数据数据数据数据数据数据数据数据数据数据数据数据数据数据数据数据数据数据数据数据数据数据数据数据数据数据数据
你明白了吗?”
“明白了”
“太棒了”
小文件…
“你在吗?”
“是的”
“太棒了。文件正在上传。准备好接受了吗?”
当然可以”
“我们开始吧……
数据
你收到了吗?”
“是的”
“太棒了”
……
“你在吗?”
“是的”
“太棒了。文件正在上传。准备好接受了吗?”
当然可以”
“让我们开始吧……
数据
你明白了吗?”
“是的”
“太棒了”
……反复重复。
简而言之,检查所花的时间比写入所花的时间多。实际上没有办法解决这个问题。
您可以权衡一下,先压缩文件,然后再复制一个文件是否更快。
答案2
您的问题不清楚,但这个问题有很多解决方案 - 不幸的是,其中一些更好的解决方案依赖于操作系统。
在类 Unix 系统上,您可以将文件挂载为磁盘,这可以解决您的问题。不过,我不确定这在 Windows 上是否容易实现。
您可以考虑使用 Veracrypt 之类的软件以跨平台的方式实现上述想法 - 但是,当然您正在引入加密并需要该软件。
可以使用 zip、arm、7z 或 tar 等工具编写文件包。这些工具还会减小存档大小,从而进一步减少 USB 密钥上的磁盘 IO。不幸的是,修改这些存档可能会令人沮丧,而且不太实用。