ln -s 和 mount --rbind 有什么区别?

Ner*_*nux 8 symbolic-link

有什么区别:

ln -s /mnt/extra/home /
Run Code Online (Sandbox Code Playgroud)

mkdir /home
mount --rbind /mnt/extra/home /home
Run Code Online (Sandbox Code Playgroud)

Ale*_*exP 14

mount --rbind进行递归绑定安装;也就是说,挂载的文件系统层次结构/mnt/extra/home也可以通过/home.

实际上,ln -s解决方案和mount --rbind解决方案之间的主要区别在于withln -s /home是一个符号链接,而 withmount --rbind它是一个目录;这会影响find, df, test/[等工具。

此外,ln -s如果/home存在则mount --rbind失败,而如果不存在则失败,或者它不是空目录。

Mark 在下面的评论也很重要:ln -s需要一个可写的文件系统来创建符号链接。

  • 最大的区别是 `ln -s` 修改了文件系统,而 `mount --rbind` 不会。这意味着您可以将主目录挂载到只读根目录(例如引导 CD)上,但不能在其上创建符号链接。 (8认同)
  • `--bind` 和 `--rbind` 不关心我的目标目录是否为空,它们只是安装在任何文件的“顶部”,使它们无法访问 (3认同)

tho*_*ter 8

在这种情况下,绑定安装和符号链接在大多数情况下的工作方式相似,但它们确实有重要区别。

符号链接更轻量。您可以拥有成百上千个符号链接,而这不是一个管理问题。它们位于文件系统中,而不需要特殊的系统级设置。

符号链接可以通过 cp 和 rsync 等工具正确备份和复制。也就是说,这些工具可以识别和复制符号链接,确保在其他地方恢复时链接被恢复并指向正确的目的地。默认情况下,它都会“正确”工作。相比之下,在备份或复制绑定挂载时,挂载将被透明处理,导致文件本身被复制,如果您在其他位置也获得相同的文件,这可能会导致重复,并且需要额外的工作在目的地复制绑定安装。

任何有权访问该链接的用户都可以修改或删除符号链接,因此很容易将其设置为仅限超级用户,或向特定用户开放。绑定安装只能由超级用户设置或修改。

如果这听起来像是对符号链接的热烈认可,那就是。它们是在文件和目录之间链接的一种更直接的方式。您只会在符号链接不起作用的情况下使用绑定安装,这可能比您想象的要少。大多数工具,包括备份和同步工具,对符号链接都有一个合理的默认行为,它们对符号链接的处理可能是可配置的。绑定安装对此类工具是透明的,因此您会失去这种灵活性并可能会失去明智的行为(例如,如上所述,备份中的目录重复)。