cp 命令部分解析符号链接

cp 命令部分解析符号链接

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

例子:

touch outsidefile
mkdir src
ln -s ../outsidefile src/sym1
touch src/insidefile
ln -s insidefile src/sym2
cp [???] src dest # or other command

想要的结果:

$ ls dest
 insidefile
 sym1
 sym2 -> insidefile

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

答案1

rsync -a --copy-unsafe-links src/ dest

man页面:

--复制不安全链接

这告诉 rsync 复制指向复制树外部的符号链接的引用。绝对符号链接也被视为普通文件,--relative使用时源路径本身中的任何符号链接也是如此。如果--copy-links也指定了此选项,则不会产生任何附加效果。

[...]

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

相关内容