Symlink
如何復製文件夾結構並對文件進行符號連結?
我有一個文件夾 SOURCE ,其中包含幾個子級文件夾,每個文件夾都有自己的文件。
我想將此文件夾複製到一個新文件夾 COPY 中,我需要在其中複製目錄結構,但將文件保留為指向 SOURCE 及其子文件夾中原始文件的符號連結。
這是非嵌入式 Linux 和 Cygwin 上的解決方案:
cp -as SOURCE/ COPY
請注意,SOURCE 必須是絕對路徑並帶有斜杠。如果你想給出一個相對路徑,你可以使用
cp -as "$(pwd)/SOURCE/" COPY
至少有 2 個標準實用程序可以建構現有樹的影子目錄樹,因此無需在此處編寫程式碼。
首先是
lndir(1)
來自xutils-dev
包裝。它使用文件的符號連結。從手冊頁:NAME lndir - create a shadow directory of symbolic links to another directory tree SYNOPSIS lndir [ -silent ] [ -ignorelinks ] [ -withrevinfo ] fromdir [ todir ]
一個可能更好的選擇是簡單地使用
cp
正確的選項,正如公認的答案所暗示的那樣。我只會提供一些更有希望有用的細節:cp -al /src/dir /dest/dir # hard-links to leaf-files cp -as /src/dir /dest/dir # symlinks to leaf-files
如果您不關心保留所有屬性(所有權/權限、時間),請將
a
選項(等效於-dr --preserve=all
)替換為r
(僅遞歸):cp -rl /src/dir /dest/dir # hard-links to leaf-files cp -rs /src/dir /dest/dir # symlinks to leaf-files