Answers:
当然好。如果执行,ln -s
则会创建一个符号链接,该符号链接是指向某个文件系统对象的索引节点,这就是为什么符号链接可以遍历文件系统而硬链接不能遍历的原因:硬链接没有自己的索引节点。
如果使用来挂载文件系统--bind
,则会为设备或文件系统创建第二个挂载点。
如果您将符号链接设想为重定向,那么可以将已--bind
安装的文件系统设想为创建另一个数据网关。
符号链接和绑定坐骑是完全不同的游戏。
该--bind
支架似乎更强健我一下,它可能是一个有点比使用符号连接工作得更快。另一方面,使用符号链接没有严重的缺点,因为对性能的影响很小(如果存在的话)。
编辑:我一直在考虑这一点,性能影响可能会比我原先想的要大一些。如果您的应用程序读取很多不同的文件,则打开的每个新文件都需要额外读取。这里的一些研究表明我的假设是正确的,因此,如果在那里运行着IO繁重的应用程序,请考虑--bind
选择安装在symlink解决方案之上的选项。
之所以不常见,可能是因为符号链接在中是可见的ls
,而绑定挂载仅在查看/ proc / mounts或/ etc / mtab时才可见(这是mount命令的作用,如果它是不带参数执行)。除此之外,我认为没有任何问题。不过,我想知道是否有。
另外:另一个问题ln -s
是,对于某些应用程序,当路径被取消引用时,如果它“预期”某些项位于特定位置,则可能导致应用程序无法使用。
mount
,当不带任何参数调用时,将输出的内容/etc/mtab
,其内容与稍有不同/proc/mounts
。(特别是,/proc/mounts
(到的符号链接/proc/self/mounts
)始终显示对读取它的进程可见的安装点。)
ln -s
和绑定安装之间的最大区别之一是,您可以使用绑定安装来“修改”只读文件系统。例如,如果在上安装了CD /mnt/application
,而您想替换/mnt/application/badconfigfile.conf
为正确的版本,则可以执行以下操作:
mount -o bind /path/to/correct/file.conf /mnt/application/badconfigfile.conf
使用符号链接将无法影响相同的更改,因为您无法修改目标文件系统。
如果您通过NFS(或某种群集文件系统)分发了一套通用软件,并且希望在一个系统上进行主机特定的更改,这也可以产生良好的效果。您可以根据需要简单地在目标系统上使用绑定安装来覆盖文件或目录。