以下两者有何区别:
ln -s /mnt/extra/home /
和
mkdir /home
mount --rbind /mnt/extra/home /home
答案1
mount --rbind
进行递归绑定挂载;也就是说,挂载的文件系统层次结构/mnt/extra/home
也将可通过 访问/home
。
实际上,ln -s
解决方案与mount --rbind
解决方案之间的主要区别在于,它是ln -s
/home
一个符号链接,而mount --rbind
它是一个目录;这会影响诸如find
、、/等工具。df
test
[
此外,ln -s
如果/home
存在,将会失败,而mount --rbind
如果不存在或者不是空目录,将会失败。
下面马克的评论也很重要:ln -s
需要一个可写的文件系统来创建符号链接。
答案2
在这种情况下,绑定挂载和符号链接在大多数情况下的工作方式类似,但它们确实存在重要差异。
符号链接稍微轻量一些。您可以拥有数百或数千个符号链接,而不必担心管理问题。它们位于文件系统中,不需要特殊的系统级设置。
符号链接可以通过 cp 和 rsync 等工具正确备份和复制。也就是说,这些工具可以识别和复制符号链接,确保在其他地方恢复时,链接恢复并指向正确的目标。默认情况下,一切都将“正确”工作。相比之下,在备份或复制绑定挂载时,挂载将被透明处理,导致文件本身被复制,如果您在其他位置也获得相同的文件,这可能会导致重复,并且如果您想在目标处复制绑定挂载,则需要额外的工作。
任何有权访问该链接的用户都可以修改或删除符号链接,因此很容易将其设置为仅限超级用户使用,或向特定用户开放。绑定挂载只能由超级用户设置或修改。
如果这听起来像是对符号链接的热烈支持,那确实如此。它们是文件和目录之间链接的更直接方式。您只会在符号链接不起作用的情况下使用绑定挂载,这种情况可能比您想象的要少。大多数工具(包括备份和同步工具)对符号链接都有合理的默认行为,并且它们对符号链接的处理可能是可配置的。绑定挂载对此类工具是透明的,因此您会失去这种灵活性,并且可能会失去合理的行为(例如如上所述,备份中的目录重复)。