UNIX make 目錄似乎包含其他目錄的內容

UNIX make 目錄似乎包含其他目錄的內容

如果我有 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 巴茲執行此命令之前必須存在。這也適用於所有其他命令。

相關內容