
如果我有 2 個目錄,a 和 b,誰能建議一種方便的方法來建立一個看起來同時包含 a 和 b 內容的目錄,而無需複製檔案?目前我一直在使用 ln -s * 來加載符號鏈接,然後在完成後刪除符號鏈接。不過,如果子目錄的內容似乎被合併,並且使用符號連結方法來管理它可能需要一些擺弄,我會更喜歡它。
如果給定的應用程式產生的目錄是唯讀的,那就沒問題。
答案1
您可以有效地合併到目錄聯盟FS透過將兩個目錄(在此上下文中稱為分支)覆蓋到一個安裝點。
UnionFS 有多種實作方式;聯合FS保險絲是最簡單的之一,因為它是一個應用程式(而不是核心補丁)。
該網站包含其檔案的連結。在大多數發行版上編譯原始碼應該很簡單。
例如,在 Ubuntu 中,安裝軟體套件就足夠了UnionFS熔斷器透過執行以下命令:
sudo apt-get install unionfs-fuse
安裝後,您可以繼續覆蓋目錄。有多種選擇。我將簡要地解釋最基本的:
命令
unionfs-fuse foo:bar baz
覆蓋目錄的內容富和酒吧在目錄中巴茲。1
此覆蓋層將是唯讀的;任何建立或修改文件的嘗試巴茲將導致沒有權限。錯誤。但是,您仍然可以建立和修改其中的文件富和酒吧他們自己。
衝突以固定的方式處理:如果檔案存在於更高的分支(富),它將優先於較低分支中的同名檔案(酒吧)。
命令
union-fuse foo=RW:bar=RO baz
使富可寫和酒吧(唯讀)。修改文件富將是可能的,但修改文件酒吧不會的。所有新建立的文件位於巴茲將出現在富。
命令
union-fuse -ocow foo=RW:bar=RO baz
與最後一個命令類似。這寫時複製選項 (
cow
) 的作用是嘗試修改以下文件酒吧裡面巴茲將導致文件的修改副本富(或任何其他更高級別的可寫入分支)。透過命令
union-fuse foo=RW:bar=RW baz
都可以修改。新文件將在頂部分支中建立(富)。
命令
union-fuse foo=RO:bar=RW baz
允許修改文件酒吧裡面巴茲,但無法建立新文件。
命令
sudo umount baz
撤銷聯合安裝。
也可以看看:人 unionfs-保險絲
1 巴茲執行此命令之前必須存在。這也適用於所有其他命令。