也可以看看

也可以看看

我有一个 10M 的文件夹。每个文件夹包含 13 个文件。

我希望将所有这些文件夹放在一个主文件夹(根)中。

Windows Server 对此有什么限制吗?

答案1

就NTFS的理论容量而言,没有问题。

微软文章 NTFS 卷上的最大大小 指定每个卷的最大文件数为 4,294,967,295,这也应该是文件夹的最大文件数。但是,您需要一台速度极快且具有大量 RAM 的计算机才能在 Explorer 中查看该文件夹。

从我自己的经验来看,在几年前的一台好电脑上,查看一个有数千个子文件夹的文件夹需要几十秒钟才能显示出来。我不知道如果有 1000 万个子文件夹会发生什么,但即使电脑可以处理,你也肯定需要很大的耐心。最终。

我真的建议您重新考虑一下您的文件夹架构。

答案2

这可能是X/Y问题。也许你正在做的事情更适合数据库而不是文件系统。使用数据库,你可以容易地快速高效地存储和访问数百万条记录。公认的答案是正确的,即 NTFS 理论上能够存储这么多记录,但速度不会很快。这基本上适用于所有文件系统(例如 NTFS、exFAT、ext4、HFS……)。它们的设计不足以满足您的要求。

其中一个主要原因是大多数操作系统的文件系统 API 只能一次返回整个目录条目列表。例如,在典型的文件系统中,没有办法只检索与特定模式匹配的目录。它必须检索它们全部然后解析(大量)输出以找到您想要的名称。除了名称之外,其他文件/目录属性(如大小、创建和修改时间等)也是如此。数据库的情况并非如此。

答案3

文件夹内的文件数量与操作系统无关. 这是文件系统尽管您使用的系统可能限制较低。有些文件系统限制文件夹中的文件数量,但有些文件系统仅限制卷中的文件总数,有些则根本没有任何限制。请参阅文件系统的限制。请注意,目录基本上只是一个文件,其内容是其他文件的列表

如果你使用外置FAT,最大数量是每个文件夹有 2 796 202 个文件。 在NTFS每个卷的限制是 2 32 -1 个文件。如果你使用胖的那么限制取决于 FAT 版本

  • FAT12:8 KiB 集群为 4 068
  • FAT16:32 KiB 集群为 65 460
  • FAT32:32 KiB 簇为 268 173 300

Windows 还原生支持其他一些文件系统,如 ReFS,或者您可以安装其他非原生文件系统的驱动程序。它们可能有不同的限制

但无论如何文件夹中有大量文件是一个非常糟糕的想法。列表和操作速度取决于文件系统如何存储元数据,例如在 FAT 中它是一个线性列表,因此速度非常慢。但即使使用 NTFS 中的 B+tree 等高效方式列出文件,速度仍然很慢。一般来说,我避免在一个文件夹中包含超过 2000 个文件

你的情况更好的解决方案应该是某种数据库。但是如果你真的必须将文件直接存储在驱动器中,那么您需要将文件均匀分布到多个较小的文件夹中。常用方法是对文件名或内容进行哈希处理,然后将其拆分为包含该名称部分的文件夹。例如,如果哈希为0xabcdef12(32 位),则将文件存储在ab/cd/ef/12ab/cde/f122af/0de/f12中(每个路径组件分别代表原始值的 8/8/8/8、8/12/12 和 10/10/12 位)。这样,文件夹中的文件就不会太多或太少。请参阅

此方法在git或docker中常用

也可以看看

相关内容