在 Mac OS X 中的目录中有多个文件有什么限制吗?

Dai*_*ney 9 mac filesystems macos

我的 MacOS X 的一个目录中有 100,000 多个文件,看起来我的脚本读取其中的文件很慢。

有这么多文件有什么限制或建议吗?我应该将它们拆分到一些目录吗?

我发现的限制是我无法mv * foo处理所有 100,000 个文件。它显示一个错误,说“论点太长”。它适用于大约少于 20,000 个文件。

Gia*_*968 2

根据Stack Overflow 的回答Apple\xe2\x80\x99s 站点上的具体详细信息,单个文件夹最多可以包含 21 亿个项目。

\n\n

也就是说,仅仅因为它可以容纳多达 21 亿个项目,并不意味着它可以保持该水平的性能。根据维基百科;重点是我的:

\n\n
\n

目录文件将所有文件和目录记录存储在单个数据结构中,当系统允许多任务处理时,会导致性能问题,因为一次只有一个程序可以写入此结构,这意味着许多程序都可以写入该结构。由于某个程序“占用”系统,程序可能正在队列中等待。这也是一个严重的可靠性问题,因为损坏此文件可能会破坏整个文件系统。

\n
\n\n

由于目录文件一次只能由一个程序使用,因此性能自然会下降。如果目录的大小增加,该问题引起的风险/性能下降只会升级;文件越多意味着程序访问该目录中文件的机会就越大。在这里进一步证实这个想法;我再次强调:

\n\n
\n

目录文件的结构很复杂。因为它保留所有文件和目录信息,所以它会强制文件系统\xe2\x80\x94 的序列化,当有大量线程想要执行文件 I/O 时,这不是理想的情况。在 HFS 中,任何创建文件或以任何方式修改文件的操作都必须锁定目录文件,这会阻止其他线程对目录文件进行只读访问。对目录文件的访问必须是单写入器/多读取器。

\n
\n