Вопрос В чем разница между ln -s и mount -rbind?


В чем разница между:

ln -s /mnt/extra/home /

а также

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

8
2017-11-16 22:47


происхождения


ln делает ссылки; в частности, ln -s делает символические ссылки. mount монтирует файловую систему в каталог. У них нет ничего общего. - AlexP
Но mount --rbind /mnt/extra/home уже установленный каталог - NerdOfLinux
Положите это как ответ, и я стану отмечать этот вопрос как решаемый :) - NerdOfLinux


ответы:


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


12
2017-11-16 22:57



Большая разница в том, что ln -s изменяет файловую систему, а mount --rbind не делает. Это означает, что вы можете подключить домашний каталог к ​​корню только для чтения (например, загрузочный компакт-диск), но вы не можете создать символическую ссылку на него. - Mark
--bind а также --rbind не заботьтесь о том, пустые ли мои целевые каталоги, они просто монтируют «сверху» все файлы, оставляя их недоступными - Xen2050


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

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

Символьные ссылки могут быть скопированы и скопированы правильно с помощью таких инструментов, как cp и rsync. То есть, инструменты могут распознавать и копировать символическую ссылку, гарантируя, что при восстановлении в другом месте ссылка будет восстановлена ​​и укажет на правильный пункт назначения. По умолчанию все будет работать «правильно». Напротив, при резервном копировании или копировании монтирования привязки будет обработано прозрачно, что приведет к копированию самих файлов, что может привести к дублированию, если вы также получите одинаковые файлы в другом месте и требуете дополнительной работы, если хотите для репликации привязки в месте назначения.

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


6
2017-11-16 23:11





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

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


0
2017-11-17 12:57