Symlink

如何復製文件夾結構並對文件進行符號連結?

  • March 23, 2021

我有一個文件夾 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

引用自:https://unix.stackexchange.com/questions/196537