如何复制符号链接?

Modified on: Thu, 21 Mar 2019 22:00:02 +0800

我的目录包含一些符号链接:

user@host:include$ find .. -type l -ls
4737414    0 lrwxrwxrwx   1 user group       13 Dec  9 13:47 ../k0607-lsi6/camac -> ../../include
4737415    0 lrwxrwxrwx   1 user group       14 Dec  9 13:49 ../k0607-lsi6/linux -> ../../../linux
4737417    0 lrwxrwxrwx   1 user group       12 Dec  9 13:57 ../k0607-lsi6/dfc -> ../../../dfc
4737419    0 lrwxrwxrwx   1 user group       17 Dec  9 13:57 ../k0607-lsi6/dfcommon -> ../../../dfcommon
4737420    0 lrwxrwxrwx   1 user group       19 Dec  9 13:57 ../k0607-lsi6/dfcommonxx -> ../../../dfcommonxx
4737421    0 lrwxrwxrwx   1 user group       17 Dec  9 13:57 ../k0607-lsi6/dfcompat -> ../../../dfcompat

我需要将它们复制到当前目录。生成的链接应独立于其原型,并直接指向其目标对象。

  • cp -s创建指向不合适行为的链接的链接。
  • cp -s -L拒绝复制指向目录的链接
  • cp -s -L -r拒绝将相关链接复制到非工作目录

我该怎么办?

最佳答案

cp --preserve=links

从手册页:

   --preserve[=ATTR_LIST]
          preserve  the   specified   attributes   (default:   mode,owner-
          ship,timestamps),  if  possible  additional attributes: context,
          links, xattr, all

就个人而言,我使用cp -av进行大部分重复复制。这样,我可以保存所有内容 - 甚至是递归 - 并查看输出。当然,这只是个人偏好。

至于为什么你的其他选项没有达到你的预期,-s会创建一个链接而不是复制,-L跟随源中的链接用于查找要复制的文件,而不是复制链接本身。


相关问答

添加新评论