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


8

之间有什么区别:

ln -s /mnt/extra/home /

mkdir /home
mount --rbind /mnt/extra/home /home

1
ln建立链接;特别是ln -s进行符号链接。mount将文件系统挂载到目录上。他们没有共同之处。
AlexP

但是mount --rbind /mnt/extra/home已经是一个挂载的目录
NerdOfLinux '17

把它作为答案,我将把这个问题标记为已解决:)
NerdOfLinux

Answers:


13

mount --rbind进行递归绑定安装;也就是说,/mnt/extra/home也可以通过来访问安装在其上的文件系统层次结构/home

实际上,该ln -s解决方案与该mount --rbind解决方案之间的主要区别在于,with ln -s /home是符号链接,而with mount --rbind是目录。这会影响像工具finddftest/ [等。

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

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


7
最大的不同是ln -s修改文件系统,而mount --rbind没有修改。这意味着您可以将主目录挂载在只读根目录(例如引导CD)上,但不能在其上进行符号链接。
Mark

3
--bind并且--rbind不在乎我的目标目录是否为空,它们只是在存在的任何文件上“挂载”,使它们无法访问
Xen2050

7

在这种情况下,绑定安装和符号链接在大多数情况下都将类似地工作,但是它们之间确实存在重要区别。

符号链接更加轻巧。您可以拥有数百或数千个符号链接,而这并不会带来很大的管理问题。它们位于文件系统中,而不需要特殊的系统级设置。

可以使用cp和rsync之类的工具正确备份和复制符号链接。也就是说,这些工具可以识别并复制符号链接,从而确保在还原时,该链接可以还原并指向正确的目标。默认情况下,它们都将“正确”运行。相比之下,在备份或复制绑定安装时,将透明地处理安装,导致文件本身被复制,如果您在其他位置也获得相同文件,则可能导致重复,并且如果需要,则需要进行额外的工作在目标位置复制绑定安装。

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

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


0

还有一个区别是,符号链接是象征性的,也就是说,它只是引用路径 -字符的字符串,它的每次打开目标路径中的子目录/文件时取消引用。相反,mount --rbind行为更像是一个硬链接,对于该硬链接,不会在每次取消引用时重新评估路径。

这在某些情况下会有所不同chroot。例如,vsftpd chroot进入您登录的FTP用户帐户的主目录。因此,如果将符号链接放入该目录,vsftpd将无法取消引用它,因此无法通过FTP访问目标。如果改用mount --rbindvsftpd则将访问该子树就好像它确实在其中一样,就像您在此处硬链接文件一样。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.