Что является различием между:
ln -s /mnt/extra/home /
и
mkdir /home
mount --rbind /mnt/extra/home /home
mount --rbind
заставляет рекурсивное связать - монтируются; то есть, иерархия файловой системы, смонтированная на /mnt/extra/home
также будет доступно через /home
.
В существенном различии практики между ln -s
решение и mount --rbind
решение - это с ln -s
/home
символьная ссылка в то время как с mount --rbind
это - каталог; это влияет на инструменты как find
, df
, test
/[
и т.д.
Кроме того, ln -s
перестанет работать если /home
существует, в то время как mount --rbind
перестанет работать, если это не будет существовать, или это не пустой каталог.
Комментарий Mark's ниже также важен: ln -s
нуждается в перезаписываемой файловой системе, в которой можно создать символьную ссылку.
В этом случае и связывание монтируется и символьная ссылка, будет работать так же на большинство целей, но у них действительно есть важные различия.
Символьная ссылка немного более легка. У Вас могут быть сотни или тысячи символьных ссылок без него являющийся большой частью проблемы управления. Они находятся в файловой системе вместо того, чтобы требовать специальной установки системного уровня.
Символьные ссылки могут быть сохранены и скопированы правильно инструментами как CP и rsync. Таким образом, инструменты могут распознать и скопировать символьную ссылку, гарантировав, что на восстановлении где-то в другом месте ссылка восстанавливается и указывает корректному месту назначения. Это будет все работать "правильно" по умолчанию. В отличие от этого, когда резервное копирование или копирование связывания монтируют, что монтирование будут рассматривать прозрачно, заставляя сами файлы быть скопированным, который может привести к дублированию, если Вы также получаете те же файлы в их другом местоположении и требование дополнительной работы, если Вы хотите копировать связывание, монтируются в месте назначения.
Символьные ссылки могут быть изменены или удалены любым пользователем, у которого есть доступ к ссылке, таким образом, легко сделать это только для суперпользователя, или открыть его до конкретного пользователя. Свяжите монтирование, может только быть настроен или изменен суперпользователем.
Если это походит на светящееся подтверждение символьных ссылок, это. Они - более простой способ связаться между файлами и каталогами. Вы использовали бы, связывают, монтируется только для ситуаций, где символьная ссылка не работала бы, который может быть меньшим количеством ситуаций, чем Вы думали бы. Большинство инструментов, включая резервные и синхронизирующие инструменты, имеет разумное поведение по умолчанию для символьных ссылок, и их обработка символьных ссылок может настраиваться. Свяжите монтирование, очевидны для таких инструментов, таким образом, Вы теряете ту гибкость и можете потерять разумное поведение (например, как упомянуто выше, дублирование каталогов в Ваших резервных копиях).
Еще одно различие - то, что символьная ссылка является символьной, т.е. она просто ссылается на путь — строка символов, и она разыменовала каждый раз, когда Вы открываете подкаталог/файл в пути назначения. Напротив, mount --rbind
ведет себя больше как жесткая ссылка, для которой путь не переоценен на каждом, разыменовывают.
Это имеет значение в некоторых сценариях как chroot
. Например, vsftpd chroot
s в корневой каталог учетной записи пользователя FTP Вы входите в систему. Таким образом, если Вы помещаете символьную ссылку в тот каталог, vsftpd
не сможет разыменовать его, и таким образом цель не будет доступна через FTP. Если Вы вместо этого делаете mount --rbind
, затем vsftpd
просто получит доступ к тому поддереву, как будто это было действительно там, так же как тогда, когда Вы трудно связали файл там.