Ant*_*llo 27 symlink recursive file-copy
我有一个文件夹 SOURCE,其中包含几个子级文件夹,每个文件夹都有自己的文件。
我想将此文件夹复制到新文件夹 COPY 中,我需要在其中复制目录结构,但将文件保留为指向 SOURCE 及其子文件夹中原始文件的符号链接。
roa*_*ima 36
这是非嵌入式 Linux 和 Cygwin 上的解决方案:
cp -as SOURCE/ COPY
Run Code Online (Sandbox Code Playgroud)
请注意, SOURCE 必须是绝对路径并带有斜杠。如果你想给出一个相对路径,你可以使用
cp -as "$(pwd)/SOURCE/" COPY
Run Code Online (Sandbox Code Playgroud)
至少有 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 ]
Run Code Online (Sandbox Code Playgroud)
一个可能更好的选择是简单地使用cp
正确的选项,正如公认的答案所暗示的那样。我只会提供一些更有希望有用的细节:
cp -al /src/dir /dest/dir # hard-links to leaf-files
cp -as /src/dir /dest/dir # symlinks to leaf-files
Run Code Online (Sandbox Code Playgroud)
如果您不关心保留所有属性(所有权/权限、时间),请将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
Run Code Online (Sandbox Code Playgroud)