Мне нужно легко смонтировать (и автоматически смонтировать, например, через fstab) каталог (папку) на одном диске, чтобы он отображался в командной строке и на уровне графического интерфейса как каталог на другом, на той же машине. Это делается для того, чтобы победить некоторое «умное» программное обеспечение, которое обнаруживает, что символические ссылки и псевдонимы не являются «настоящими» каталогами, и отказывается действовать на них.
В Linux это было бы тривиально легко, с:
mount --bind /path1/source_dir /path2/target_dir
Однако версия mount для Mac OS не поддерживает эту функцию привязки (в любой форме, включая mount -o bind
, или mount -B
), насколько я могу определить. Также кажется, что ни один из Macports, Homebrew или Fink не предоставляет портированную версию mount с такой опцией. Некоторые доступные более специализированные инструменты монтирования, похоже, также не связаны (например, xmount для образов дисков, а djmount для сетевых томов).
Чтобы было ясно, я не пытаюсь смонтировать диск или раздел как том или как локальный каталог или создать общий ресурс, который будет произвольно монтироваться разными пользователями на разных машинах. Скорее, я хочу смонтировать папку, принадлежащую и доступную для записи только определенному пользователю, на диске HFS+, как если бы это была папка на другом диске HFS+, локально, эффективно прозрачным способом, с теми же разрешениями и без безопасности. /проблемы целостности.
Неаккуратный обходной путь состоит в том, чтобы создать общий ресурс CIFS для папки, которую нужно смонтировать, и (вызвав пользовательский одноразовый вариант smb.conf) просто так ограничить его разрешения в Samba, чтобы он не был общедоступным и имел те же разрешения, что и у целевого местоположения, точно правильная маска файла и каталога и т. д.; затем монтируйте его таким образом. Но это будет неэффективно, так как будет использоваться отвратительный протокол обмена файлами Windows, а также создание видимого общего ресурса, который отображается как монтируемый том с сервера SMB для всех, кто может получить доступ к этой машине через SMB/CIFS (даже если они не могут на самом деле смонтировать его). Графический интерфейс Mac, вероятно, также будет представлять его как разделяемый том.
Чтобы подключить жесткий диск к пользовательской точке монтирования:
Вы можете сделать это с опцией
diskutil mount
и-mountPoint
. Со страницы руководства:смонтировать [только для чтения] [-mountPoint path] устройство
Смонтируйте один том. Если указано readOnly, то файловая система монтируется только для чтения, даже если базовая файловая система тома и/или устройство и/или носитель поддерживает запись; в него не может писать даже суперпользователь; это то же самое, что и опция rdonly для монтирования (8). Если указан -mountPoint, то этот путь, а не стандартный путь /Volumes/VolumeName, будет использоваться как представление содержимого файла тома; каталог по этому пути уже должен существовать.
Из
man diskutil
, раздел 'Глаголы'.Синтаксис для монтирования в пользовательскую точку монтирования следующий:
diskutil mount -mountPoint /path/to/custom/mountpoint [volume (identifier/UUID/label)]
Имейте в виду, что это
/path/to/custom/mountpoint
должен быть каталог , как и в случае сmount
, и что ваш идентификатор/UUID/метка относятся к тому (т.е./dev/diskXsY
не/dev/diskX
). Подключение к пользовательской точке монтирования не может быть выполнено с помощьюdiskutil mountDisk
, и работает только с одним томом за раз.
Из моего ответа на Как смонтировать диск по UUID или LABEL в OS X El Capitan .
Я проверил это, «установив» USB-накопитель на внешний жесткий диск. В качестве примера,
$ diskutil list
/dev/disk0 (internal, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *500.3 GB disk0
1: EFI EFI 209.7 MB disk0s1
2: Apple_HFS Macintosh SSD 499.4 GB disk0s2
3: Apple_Boot Recovery HD 650.0 MB disk0s3
/dev/disk1 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *1.0 TB disk1
1: EFI EFI 209.7 MB disk1s1
2: Apple_HFS HDD-1T 999.8 GB disk1s2
/dev/disk2 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *31.6 GB disk2
1: Windows_NTFS USB-32 31.6 GB disk2s1
Как видите, /dev/disk2s1
, или USB-32
— это имя USB-накопителя, который я собираюсь подключить к жесткому диску, /dev/disk1s2
или HDD-1T
. Для этого воспользуйтесь опцией -mountPoint
. Но сначала убедитесь, что есть целевой каталог для монтирования:
$ mkdir /Volumes/HDD-1T/mountpoint
А теперь, чтобы смонтировать:
$ diskutil mount -mountPoint /Volumes/HDD-1T/mountpoint /dev/disk1s2
Смонтированный диск появится в следующих местах: /Volumes
, и /Volumes/HDD-1T/mountpoint
как USB-32
и mountpoint
соответственно.
Обязательно размонтируйте ( diskutil umount
) свой USB-32
эквивалент перед повторным монтированием на вашем HDD-1T
эквиваленте.
IconDaemon
С. МакКэндлиш
IconDaemon
С. МакКэндлиш