filesystems - 一个目录中文件的数量最多有多少?

  显示原文与译文双语对照的内容

我在一个目录中保存多少个文件? 如果是的话,一个目录中的文件数量太多,有太多的文件影响? ( 这在一个Linux服务器上。)

背景:我有一个相册网站,上传的每张图片都被重命名为 8 -hex-digit标识( 比如说,a58f375c.jpg ) 。 这是为了避免文件名冲突( 如果有很多"img0001.jpg"上传文件,例如) 。 原始文件名和任何有用的元数据存储在数据库中。 现在,我在图片目录中有大约 1500个文件。 这使得目录( 通过FTP或者SSH客户端) 中的文件列出了几秒钟。 但我看不出它有任何影响。 特别是,对用户提供图像文件的速度没有任何影响。

我已经考虑通过制作 16子目录来减少图像数量: 0 -9和 a-f 。然后我将把图像移动到子目录中,基于文件名的第一个十六进制数字。 但是我不确定是否有理由这么做,除非通过 ftp/ssh偶尔列出目录。

时间:

请记住,在Linux上,如果有太多文件的目录,shell可能无法扩展通配符。 我有一个在Linux上主持的相册。 它将所有大小调整过的图像存储在一个单独的目录中。 尽管文件系统可以处理许多文件,但shell不能。 例如:


-shell-3.00$ ls A*
-shell:/bin/ls: Argument list too long

或者


-shell-3.00$ chmod 644 *jpg
-shell:/bin/chmod: Argument list too long

我现在正在处理一个类似的问题。 我们有一个hierarchichal目录结构,并使用图像标识作为文件名。 例如带有 id=1234567的图像被放置在


..../45/67/1234567_<...>.jpg

使用最后 4位数字确定文件的位置。

有了几千张图像,你可以使用one-level层次。 我们的系统管理员建议在任何给定的目录( ext3 ) 中不超过几千个文件,因为他考虑到了其他原因。

对于它的价值,我刚刚在 ext4 文件系统上创建了一个目录,其中包含 1,000个文件,其中000个文件,然后通过网络服务器随机访问这些文件。 我没有注意到在( say ) 上访问这些文件的特权只有 10个文件。

这是彻底不同于我的经验在几年前 ntfs 这样做。

...