cp -r src/* dest/
如果src/
&dest/
都包含目录foo
,则 的内容src/foo/
将被复制到 中dest/foo/
,这是所需的。
如果dest/
相反包含到其他地方的目录的符号链接foo -> /sym/foo
,则命令错误:
cp:无法用目录“src/foo”覆盖非目录“dest/foo”
是否可以复制以下内容目标符号链接,与 GNU cp
?据我所知,它只有一个选项(-L
/ --dereference
)用于以下操作来源符号链接。
答案1
您可以使用rsync
's--keep-dirlinks
选项来实现此行为:
从man rsync (1)
:
-K, --keep-dirlinks
此选项使接收方将目录的符号链接视为真实目录,但前提是它与发送方的真实目录匹配。如果没有此选项,接收者的符号链接将被删除并替换为真实目录。
例如,假设您传输包含文件“file”的目录“foo”,但“foo”是接收器上目录“bar”的符号链接。如果没有
--keep-dirlinks
,接收者将删除符号链接“foo”,将其重新创建为目录,并将文件接收到新目录中。使用--keep-dirlinks
,接收者保留符号链接,并且“文件”以“bar”结束。
例子:
rsync -av --keep-dirlinks src/ dest