部分解析符号链接的 cp 命令

jof*_*fel 3 backup cp symlink file-copy

是否有一种简单的方法可以递归复制目录,其中解析到外部文件/目录的符号链接(复制目标文件),但保留内部符号链接(指向复制的树中的文件)?

例子:

touch outsidefile
mkdir src
ln -s ../outsidefile src/sym1
touch src/insidefile
ln -s insidefile src/sym2
cp [???] src dest # or other command
Run Code Online (Sandbox Code Playgroud)

想要的结果:

$ ls dest
 insidefile
 sym1
 sym2 -> insidefile
Run Code Online (Sandbox Code Playgroud)

sym1是一个常规文件,sym2保持是一个符号链接。

Tom*_*unt 5

rsync -a --copy-unsafe-links src/ dest
Run Code Online (Sandbox Code Playgroud)

man页面:

--copy-unsafe-links

这告诉 rsync 复制指向复制树之外的符号链接的所指对象。绝对符号链接也被视为普通文件,--relative使用时源路径本身中的任何符号链接也是如此。如果--copy-links还指定了此选项,则没有其他效果。

[...]

--links --copy-unsafe-links 将所有不安全的符号链接转换为文件并复制所有安全的符号链接。

  • @jofel,根据编辑,除了 -l 之外,您还需要在 src 上添加尾随 /。 (3认同)