linux – 用于在USB驱动器上存储100k文件的最佳文件夹结构

前端之家收集整理的这篇文章主要介绍了linux – 用于在USB驱动器上存储100k文件的最佳文件夹结构前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要在USB驱动器中存储100k文件(大约40GB).每个文件都有一个唯一的int id(例如45000).

选项一是将所有文件放在一个文件夹中:

root/
root/1.pdf
root/2.pdf
root/3.pdf
...
root/567.pdf
root/568.pdf
root/569.pdf
...
root/10001.pdf
root/10002.pdf
root/10003.pdf
...
root/99998.pdf
root/99999.pdf
root/100000.pdf

选项二是根据该ID创建[1-9] [0-9] *文件夹层次结构:

root/
root/1/file.pdf
root/2/file.pdf
root/3/file.pdf
...
root/5/6/7/file.pdf
root/5/6/8/file.pdf
root/5/6/9/file.pdf
...
root/1/0/0/0/1/file.pdf
root/1/0/0/0/2/file.pdf
root/1/0/0/0/3/file.pdf
...
root/9/9/9/9/8/file.pdf
root/9/9/9/9/9/file.pdf
root/1/0/0/0/0/0/file.pdf

哪个选项会更好地扩展?我可以理解第二个选项需要大量的文件夹,但每个文件夹最多包含10个文件夹和1个文件.维护不会成为问题,因为一切都将由应用程序控制.

请注意,这是一个Linux上的USB驱动器,基于上面我也想知道我是否应该使用FAT32或NTFS.

解决方法

我建议将ext3 / 4用于Linux作为我个人的偏好.

对于文件结构,我建议使用选项3(目录深度和每个目录的文件的平衡).这实际上就是选择一个tree data structure.为了实现这个文件,我会对每个文件执行md5sum哈希,并使用每个文件的前x个字符作为目录.字符将始终是hexidecemial字符,因此每个分支将是16个目录宽.您选择的字符数将是树结构的高度.

例如:

kbrandt@alpine:~/scrap$md5sum y.tab.h
03b01228467fbe94f8fedd9fcbb6d470  y.tab.h

会像./0/3/b/y.tab.h这样的东西.

How to pre-create directories on linux for file storage?显示了如何预创建目录.

这是一个通用的解决方案,适用于许多用例,应该创建一个非常好的文件分发.

猜你在找的Linux相关文章