Каково различие между ln-s, и смонтируйтесь - rbind?

Что является различием между:

ln -s /mnt/extra/home /

и

mkdir /home
mount --rbind /mnt/extra/home /home
8
задан 16 November 2017 в 15:47

3 ответа

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 нуждается в перезаписываемой файловой системе, в которой можно создать символьную ссылку.

13
ответ дан 23 November 2019 в 05:23

В этом случае и связывание монтируется и символьная ссылка, будет работать так же на большинство целей, но у них действительно есть важные различия.

Символьная ссылка немного более легка. У Вас могут быть сотни или тысячи символьных ссылок без него являющийся большой частью проблемы управления. Они находятся в файловой системе вместо того, чтобы требовать специальной установки системного уровня.

Символьные ссылки могут быть сохранены и скопированы правильно инструментами как CP и rsync. Таким образом, инструменты могут распознать и скопировать символьную ссылку, гарантировав, что на восстановлении где-то в другом месте ссылка восстанавливается и указывает корректному месту назначения. Это будет все работать "правильно" по умолчанию. В отличие от этого, когда резервное копирование или копирование связывания монтируют, что монтирование будут рассматривать прозрачно, заставляя сами файлы быть скопированным, который может привести к дублированию, если Вы также получаете те же файлы в их другом местоположении и требование дополнительной работы, если Вы хотите копировать связывание, монтируются в месте назначения.

Символьные ссылки могут быть изменены или удалены любым пользователем, у которого есть доступ к ссылке, таким образом, легко сделать это только для суперпользователя, или открыть его до конкретного пользователя. Свяжите монтирование, может только быть настроен или изменен суперпользователем.

Если это походит на светящееся подтверждение символьных ссылок, это. Они - более простой способ связаться между файлами и каталогами. Вы использовали бы, связывают, монтируется только для ситуаций, где символьная ссылка не работала бы, который может быть меньшим количеством ситуаций, чем Вы думали бы. Большинство инструментов, включая резервные и синхронизирующие инструменты, имеет разумное поведение по умолчанию для символьных ссылок, и их обработка символьных ссылок может настраиваться. Свяжите монтирование, очевидны для таких инструментов, таким образом, Вы теряете ту гибкость и можете потерять разумное поведение (например, как упомянуто выше, дублирование каталогов в Ваших резервных копиях).

7
ответ дан 23 November 2019 в 05:23

Еще одно различие - то, что символьная ссылка является символьной, т.е. она просто ссылается на путь — строка символов, и она разыменовала каждый раз, когда Вы открываете подкаталог/файл в пути назначения. Напротив, mount --rbind ведет себя больше как жесткая ссылка, для которой путь не переоценен на каждом, разыменовывают.

Это имеет значение в некоторых сценариях как chroot. Например, vsftpd chroots в корневой каталог учетной записи пользователя FTP Вы входите в систему. Таким образом, если Вы помещаете символьную ссылку в тот каталог, vsftpd не сможет разыменовать его, и таким образом цель не будет доступна через FTP. Если Вы вместо этого делаете mount --rbind, затем vsftpd просто получит доступ к тому поддереву, как будто это было действительно там, так же как тогда, когда Вы трудно связали файл там.

0
ответ дан 23 November 2019 в 05:23

Другие вопросы по тегам:

Похожие вопросы: