cp 递归到一个目录,该目录符号链接到与源中同名的目录

cp 递归到一个目录,该目录符号链接到与源中同名的目录
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

相关内容