cp-复制拷贝

软链接与硬链接

1 背景

linux环境下,我们常使用软链接来实现动态库的复用和版本控制,比如现在有一个动态库a.so,我们有以下几个需求:

  1. 用户能随意升级替换动态库
  2. 用户可以很方便的观察到动态库的版本
  3. 替换动态库后应用无需额外操作

为满足上述需求,我们建立以下软链接:

  1. 源文件a.so.1.2.3
  2. 软链接a.so.1 -> a.so.1.2.3
  3. 软链接a.so -> a.so.1

这样:当用户想升级时,只需要替换a.so.1.2.3a.so.1.2.4并重新建立软链接a.so.1 -> a.so.1.2.4。而程序仅关注a.so,因此无需额外操作。

但是当我们使用cp命令拷贝软链接时,我们可能会发现源文件被拷贝走了。

2 解决方法

可以使用cp命令中的-d参数,此时拷贝后会发现并不是源文件被拷贝过去,而是软链接了。