如何创建相对于其他符号链接的符号链接?

如何创建相对于其他符号链接的符号链接?

我有以下目录树

/
|-- server
|   |-- cstrike
|   |   |   |-- hltv -> ../../hltv
|   |-- [other files]
|-- 27015
|   |-- hltv
|   |-- server -> ../server
|-- 27016
|   |-- hltv
|   |-- server -> ../server
  • 我想要27015/server27016/server链接到/server
  • 另外,我希望27015/server/cstrike/hltv链接到27015/hltv,同样也
    27016/server/cstrike/hltv希望链接到27016/hltv

正如您可能已经假设的不存在的2701{5,6}/server/cstrike/hltv点。/hltv

如果不是,您能否建议我该使用哪种工具ln/server是一个目录,而不是设备,所以我想mount在这种情况下不是一个选项。

答案1

删除/2701x/server符号链接;在其位置创建文件夹;用于设置到每个的“绑定挂载” 。mount -o bind/server/2701x/server

使用findmnt查看您已设置的挂载,并确保将挂载添加到您的 /etc/fstab 中,以便它们在重启后仍然可用。


链接目标是总是相对于链接的“物理”位置,而不是“逻辑”位置。换句话说,只有在路径内的所有先前的符号链接都已解析后,才会解析链接目标。另一方面,挂载(包括绑定挂载)在不同的级别工作,并且对符号链接解析代码“不可见”;绑定挂载将看起来像“物理”位置。

不过,还有另一种方法可以实现这一点,而无需绑定挂载:反转布局并让每个目录都有它自己的 server目录及其自己的server/cstrike/hltv符号链接,而仅使用符号链接进行重复数据删除/2701x/server/[other files]。例如:

/
 ├─27015/
 │  └─server/
 │     ├─cstrike/
 │     │  └─hltv
 │     └─other_stuff -> ../../server/other_stuff
 ├─27016/
 │  └─server/
 │     ├─cstrike/
 │     │  └─hltv
 │     └─other_stuff -> ../../server/other_stuff
 └─server/
    └─other_stuff/

相关内容