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
選項二
[1-9][0-9]*
是基於該 id創建文件夾層次結構: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(目錄深度和每個目錄文件的平衡)。這實際上只是選擇樹資料結構。為了對文件實現這一點,我將對每個文件進行 md5sum 雜湊,並將每個文件的前 x 個字元用作目錄。這些字元將始終是十六進製字元,因此每個分支將是 16 個目錄寬。您選擇的字元數將是樹結構的高度。
例如:
kbrandt@alpine:~/scrap$ md5sum y.tab.h 03b01228467fbe94f8fedd9fcbb6d470 y.tab.h
會去一個類似的東西
./0/3/b/y.tab.h
。如何在linux上預先創建目錄用於文件儲存?向您展示如何預先創建目錄。
這是一個通用的解決方案,適用於許多案例,並且應該創建一個非常好的文件分佈。