目錄結構(directory structure)
你怎麼組織一千個檔案,和你怎麼組織桌上一千張紙一樣重要。全堆成一疊,你永遠找不到東西;分門別類放進貼了標籤的抽屜和子資料夾,同樣的一千張紙就變得好管理了。目錄結構就是檔案系統用來安排它的目錄、以及目錄裡檔案的整體方案,而它確實有一段「愈做愈好」的歷史。
最簡單的方案是單層目錄:整個系統就一個目錄,所有檔案都在同一個地方。它容易做,但一旦檔案多了或使用者多了就毫無希望,因為每個名稱都得在所有人之間是唯一的——兩個人不能都有一個叫 report 的檔案。雙層目錄解決了其中最糟的部分,做法是給每位使用者自己私有的目錄,所以名稱只需要每位使用者內唯一;但它仍然無法把單一使用者的眾多檔案分組。突破是樹狀目錄:目錄可以無限制地包含其他目錄,形成我們都在用的分支樹,頂端有唯一的根。再進一步的精修是無環圖目錄,它放寬了嚴格的樹,使得單一檔案或目錄可以由不只一條路徑抵達(真正的共享),只要不形成環。
為什麼重要:目錄結構是那種安靜的設計選擇之一,卻深刻地形塑了在電腦上的日常生活。樹之所以成為標準,是因為它可擴展、支援每位使用者的隱私、並讓相關檔案能自然地分組。無環圖設計裡誠實的張力是共享對上簡單:允許多條路徑通往一個檔案(透過連結)很強大,但它使刪除變複雜(檔案到底什麼時候才真的消失?)、並冒著懸空參考的風險——這些是純樹永遠不會有的問題。
一台老舊的共用大型主機採用單層目錄,逼得每個人都得發明唯一的名稱,像 alice_report 和 bob_report。現代系統則給出 /home/alice 和 /home/bob,在各自裡面是一棵自由的資料夾樹,所以兩個人都能單純地擁有 report.txt 而不衝突。
從一堆平鋪的檔案,到每位使用者的抽屜,再到我們今天用的巢狀樹。
無環圖目錄帶來真正的共享,卻使刪除變複雜、並有懸空連結的風險——這些代價是嚴格的樹所避免的。這是介面層的觀點;目錄如何存在磁碟上是另一個主題。