Как вы монтируете -bind локальный каталог?


16

В linux одной из замечательных возможностей (в частности, для разработчиков) было монтировать папку и локально связывать ее с другой папкой в ​​системе.

Это имело преимущество перед символическими ссылками, потому что такие инструменты, как Git, не распознавали его как узел другого типа, и вам не нужно было удалять исходное содержимое. Когда вы закончите, вы можете просто размонтировать и у вас останется исходное содержимое файловой системы.

Тем не менее, mount -bindили mount.local, кажется, не существует на Mac (по состоянию на OS X 10.10.2, Yosemite).

Как вы идете об этом?

Ответы:


10

Как уже упоминал другой пользователь в StackOverflow , вы можете использовать для этого NFS-монтирование. Однако, это требует немного единовременной настройки.

Во-первых, вам нужно настроить /etc/exportsфайл (если вы этого еще не сделали).

$ sudo tee -a /etc/exports <<< "/ -alldirs -mapall=$USER localhost"

Во- вторых, вам нужно начать с Rpc и NFSD услуги.

$ sudo launchctl start com.apple.rpcbind
$ sudo nfsd start

Оттуда дайте NFSd немного проснуться и позавтракать, и вы должны быть в состоянии смонтировать:

$ sudo mount localhost:/path/to/target ./mnt

Чтобы восстановить исходное содержимое, просто сделайте

$ sudo umount ./mnt

Я попытался смонтировать USB-накопитель $ sudo mount localhost:/Volumes/Aren/Movies /Users/me/Movies/
exfat

mount_nfs: can't mount /Volumes/Aren/Movies from localhost onto /Users/me/Movies: No such file or directory
Necktwi

Хорошо работает, если я сделаю это по-другому!
Necktwi

Если вы получили «Нет такого файла или каталога», попробуйте сначала создать папку для монтирования в месте назначения. Если вы получаете сообщение об ошибке «Отказано в доступе», попробуйте «sudo nfsd restart» (для меня nfsd уже был запущен, так что, я думаю, он нуждался в перезапуске, чтобы получить новую строку экспорта)
Ник

1
@JayGee Я ОП. В то время у меня сработало, какая ошибка у Git? Вы cdвышли, а затем вернулись, прежде чем использовать Git? Оболочки, как правило, работают с файловыми дескрипторами, которые связаны с inode, а не с полными путями строк - поэтому, если вы смонтируете и останетесь в «том же» каталоге, оболочка все равно будет работать с использованием основного каталога вместо смонтированного. Нет причин, по которым Git должен видеть что-либо как смонтированное - монтирование не работает так. Для всех намерений и целей это тот же тип файловой системы.
Qix - МОНИКА БЫЛА ПОВРЕЖДЕНА

9

Есть еще один вариант - bindfs . Он требует установки FUSE, но предоставляет альтернативу использованию NFS.

Возможно, вам придется скомпилировать из исходного кода, но я вижу, что он также доступен в MacPorts .


2
Доморощенный: установите osxfuse , затем brew install homebrew/fuse/bindfs(Проверено на El Capitan; нет необходимости в sudoранее bindfsдля ориентированных на пользователя монтировок)
dhchdhd

Недостаток предохранителя в том, что он не поддерживает события inotify. Если источник обновлен, а приложение отслеживает обновления в месте назначения, оно не будет получать обновления.
diimdeep

Кроме того, мне немного неудобно при компиляции вещей внутри тома bindfs. В частности, я постоянно получаю «слишком много открытых файлов» для одного конкретного проекта в XCode без видимой причины. Если я просто скопирую содержимое без монтирования, оно будет работать нормально.
Гришка
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.