首页 > 解决方案 > 在 Linux 中处理大量文件夹,效率的最佳结构

问题描述

我有一个正在为客户构建的 PHP 项目,我必须将他们的旧系统和数据基本上转换为我的“更好”系统。我遇到的问题是他们用于存储 PDF 的旧文件结构。

目前,文件夹系统由他们的名字配置,子文件夹中的姓氏,社会的最后 4 个附加到末尾,我认为是为了防止重复。

Files > A > B > Alan_Bob_1234

因为他们的系统非常不兼容,我觉得我应该改变它,但需要有关 Linux 服务器上新文件系统结构的建议。

我的第一个想法是拥有一个包含每个“申请人”的唯一 ID 的文件夹。

Files > 0cowxuRoGj

我在这里担心的是,我有 14,000 多名申请者要为其传输文件,而且这个数字每天都会继续增长。

我的问题: Files 文件夹中有超过 14,000 个且不断增长的文件夹会增加服务器的处理时间,以至于会降低搜索的响应时间吗?像原始设计一样实施子文件夹系统来解决这个问题是否更可取?

无论如何,我都需要从文件夹名称中获取社交信息。如果我需要对这些申请人进行子文件夹,那么子文件夹名称可能是一个好的方案,因为我不想依赖保持相同的名字和姓氏,因为在他们当前的系统中,更新name 会导致旧文件丢失,并创建一个新文件夹。

标签: phplinuxfilesystems

解决方案


每个目录的最大文件数取决于使用的文件系统、文件系统的创建方式、内核版本以及可能的其他一些因素。如果您使用带有最新内核的 ext4,那么每个目录的数百万个文件应该不会造成问题。但为了安全和更便携,建议拆分庞大的列表。

如果您的“唯一 ID”不是序列号,而是分布良好的随机序列号,那么简单的解决方案是:

Files > 0 > cowxuRoGj

这应该将您的文件列表拆分为 62 个目录,这样您就可以在您一生中可能遇到的任何文件系统上存储数十万个文件。


推荐阅读