一个目录中的许多文件?

Daw*_*hia 7 php linux filesystems

我在Linux平台上开发了一些PHP项目.将数千个图像(文件)放在一个目录中是否有任何缺点?这是封闭的,不会增长.另一种方法是使用基于某个ID的目录结构来分离这些文件(这样一来,在一个目录中就会说只有100个).

我问这个问题,因为当我在不同网站上查看图片网址时,我常常看到这种分离.您可以看到以这种方式完成目录分离,即一个目录中不会有数百个图像.

如果不将几千个文件(不增长的集合)放在一个目录中,而是将它们分成100组,我会得到什么?是不是值得复杂化?

更新:

  • 对目录中的文件不会进行任何编程迭代(只需通过文件名直接访问图像)
  • 我想强调图像集已关闭.它不到5000张图像,就是这样.
  • 此图像没有逻辑分类
  • 不需要人工访问/浏览
  • 图像具有唯一的文件名
  • 操作系统:Debian/Linux 2.6.26-2-686,文件系统:ext3

来自答复的有价值的信息:

为什么将许多文件分成不同的目录:

  • "在nfs上使用ext3时,每个目录限制32k文件"
  • 性能原因(访问速度)[但对于几千个文件很难说它是否值得,没有测量]

Mig*_*tyE 7

除了通过将图像分成子目录来加快文件访问速度之外,还可以在达到文件系统的自然限制之前显着扩展可以跟踪的文件数.

一种简单的方法是md5()文件名,然后使用前n个字符作为目录名(例如substr(md5($filename), 2)).这确保了合理均匀的分布(与直接文件名的前n个字符相比).


Omr*_*dan 2

通常这种分割的原因是文件系统性能。对于 5000 个文件的封闭集,我不确定是否值得这么麻烦。我建议您尝试一种简单的方法,将所有文件放在一个目录中,但要密切注意访问文件所需的实际时间。

如果您发现它的速度不够快,无法满足您的需求,您可以按照您的建议进行拆分。

出于性能原因,我必须自己拆分文件。另外,当在 nfs 上使用 ext3 时,我遇到了每个目录 32k 文件的限制(不确定这是 nfs 还是 ext3 的限制)。所以这是分成多个目录的另一个原因。无论如何,请尝试使用单个目录,并且仅在您发现它不够快时才进行拆分。