Linux 中一个文件夹中最多允许有多少个文件夹?

Linux 中一个文件夹中最多允许有多少个文件夹?

使用 Redhat,如果这有区别的话。

有默认限制吗?可以更改吗?如果没有,有什么解决方法可以增加目录中允许的文件夹数量吗?

答案1

这取决于您的发行版使用的文件系统。如果您使用较新的桌面发行版(例如 Ubuntu 9.10,Fedora 的最新版本),则可能使用 ext4。如果您使用较旧的发行版,则很可能是 ext3。

答案2

在 ext2 中,根据 Wikipedia 的说法为 32,768 -http://en.wikipedia.org/wiki/Ext2fs#File_system_limits. 取决于您使用的文件系统。

答案3

您可能要考虑替代要执行的操作。即使您保持在文件系统限制以下(例如,ext2 为 32k),在单个目录中存储数万个文件至少可以说是很麻烦的。

一种可能性是,您尝试将文件系统用于更适合数据库的用途。考虑将数据存储在 PostgreSQL、MySQL 甚至 sqlite 数据库中。没有太多文件系统能够很好地处理大量文件——移动或备份数据会很慢。

如果你确实需要存储大量文件,请考虑其他目录结构。例如,你可以按字母顺序分隔文件,例如:

a/aaron.dat
a/alex.dat
a/alan.dat
b/bill.dat
b/brian.dat

这种方法可以通过增加分离深度来扩展,例如:

a/a/aaron.dat
a/l/alex.dat
a/l/alan.dat

或者,如果您正在输入每日日志文件或接收每日交付,您可以按日期分开它们,例如:

2009-10-04/logfile-01.txt
2009-10-05/logfile-01.txt
2009-10-05/logfile-02.txt

在这种特殊情况下,您可能还需要执行一个 cron 作业将旧日志打包成压缩的 tarball,以减少文件数量。

答案4

文件夹限制是企业系统在处理任意数量的文件时会根据文件名的哈希值将其存储在一个或两个子目录中的原因。例如,对文件名进行 md5(),并使用前四个字节作为存储文件的子文件夹;对于其他级别,使用接下来的 4 个字节作为其他子文件夹,或使用接下来的 4 个字节作为其他子文件夹,等等。大多数系统的深度永远不会超过 2 级。

相关内容