bas*_*ero 20
因文件系统而异,http://en.wikipedia.org/wiki/Comparison_of_file_systems
小智 16
在所有当前的 Unix 文件系统上,一个目录实际上可以容纳无限数量的文件。而“无限制”受磁盘空间和索引节点的限制- 无论先用完。
对于较旧的文件系统设计(ext2、UFS、HFS+),如果目录中有很多文件,事情往往会变慢。通常事情开始变得痛苦大约 10,000 个文件。使用较新的文件系统(ReiserFS、XFS、ZFS、UFS2),您可以在一个目录中拥有数百万个文件而不会出现一般的性能瓶颈。
但是在一个目录中拥有如此多的文件并没有经过很好的测试,并且有很多工具无法做到这一点。例如,定期系统维护脚本可能会对它产生影响。
我很高兴地在 UFS2 上使用了一个包含数百万个文件的目录,并且在我想删除该目录之前没有发现任何问题 - 这花了几天时间。
小智 13
这取决于创建文件系统时使用的inode 数量。执行
df -i
Run Code Online (Sandbox Code Playgroud)
将为您提供空闲 inode 的数量。这是文件系统和目录可以容纳多少文件的实际限制。
我假设您正在考虑将大量文件存储在一个地方,不是吗?
大多数现代 Unix 文件系统可以将很多文件放在一个目录中,但是像跟踪路径、列出文件等操作涉及对文件列表的线性搜索,如果列表太大,则会变慢。
我似乎记得听说过几千对于大多数实际用途来说太多了。典型的解决方案是打破分组。那是,
/some/path/to/dir/a/
/some/path/to/dir/b/
...
/some/path/to/dir/z/
Run Code Online (Sandbox Code Playgroud)
并根据它们的 .hash 将您的文件存储在适当的子目录中basename。选择一个方便的散列,第一个字符可能适用于简单的情况。
Cristian Ciupitu 在评论中写道,XFS以及可能其他非常新的文件系统使用log(N)可搜索结构来保存目录内容,因此这种限制得到了极大改善。