Necesito montar sin problemas (y montar automáticamente, por ejemplo, a través de fstab) un directorio (carpeta) en una unidad para que aparezca en la línea de comandos y el nivel de GUI como un directorio en otro, en la misma máquina. Esto es para derrotar a algún software "inteligente" que detecta que los enlaces simbólicos y los alias no son directorios "reales" y se niega a actuar sobre ellos.
En Linux, esto sería trivialmente fácil, con:
mount --bind /path1/source_dir /path2/target_dir
Sin embargo, la versión de montaje de Mac OS no es compatible con esta funcionalidad de vinculación (en ninguna forma, incluidos mount -o bind
, o mount -B
), hasta donde puedo determinar. También parece que Macports, Homebrew o Fink no ofrecen una versión adaptada de la montura con esa opción. Algunas herramientas de montaje más especializadas disponibles tampoco parecen relacionarse (por ejemplo, xmount es para imágenes de disco y djmount es para volúmenes de red).
Para ser claros, no estoy tratando de montar un disco o partición como un volumen o como un directorio local, ni crear un recurso compartido para ser montado arbitrariamente por varios usuarios en varias máquinas. Más bien, quiero montar una carpeta, propiedad y escritura solo de un usuario en particular, en un disco HFS+ como si fuera una carpeta en otro disco HFS+, localmente, de una manera que sea efectivamente transparente, con los mismos permisos y sin seguridad. /problemas de integridad.
Una solución descuidada es crear un recurso compartido CIFS de la carpeta que se va a montar, y (llamando a una variante única personalizada de smb.conf) limitar sus permisos en Samba, de modo que no sea público y tenga la mismos permisos que la ubicación de destino, exactamente el archivo correcto y la máscara de directorio, etc.; luego montarlo de esa manera. Pero esto sería ineficiente, ya que estaría utilizando el protocolo de uso compartido de archivos de Windows, además de crear un recurso compartido visible que aparece como un volumen montable desde el servidor SMB, para cualquier persona que pueda acceder a esta máquina a través de SMB/CIFS (incluso si no pueden realmente montarlo). La GUI de Mac probablemente también lo representará como un volumen compartido.
Para montar un disco duro en un punto de montaje personalizado:
Puede hacer esto con
diskutil mount
y la-mountPoint
opción. De la página del manual:montar el dispositivo [solo lectura] [ruta del punto de montaje]
Montar un solo volumen. Si se especifica readOnly, el sistema de archivos se monta como de solo lectura, incluso si el sistema de archivos y/o el dispositivo y/o los medios subyacentes del volumen admiten la escritura; incluso el superusuario no puede escribir en él; esto es lo mismo que la opción rdonly para montar (8). Si se especifica -mountPoint, entonces esa ruta, en lugar de la ruta estándar de /Volumes/VolumeName, se usará como la vista del contenido del archivo de volumen; ya debe existir un directorio en esa ruta.
De
man diskutil
, sección 'Verbos'.La sintaxis para montar en un punto de montaje personalizado es la siguiente:
diskutil mount -mountPoint /path/to/custom/mountpoint [volume (identifier/UUID/label)]
Tenga en cuenta que
/path/to/custom/mountpoint
debe ser un directorio , al igual que conmount
, y que su identificador/UUID/etiqueta son específicos del volumen (es decir,/dev/diskXsY
no/dev/diskX
). El montaje en un punto de montaje personalizado no se puede realizar condiskutil mountDisk
, y solo funciona con un único volumen a la vez.
De mi respuesta a Cómo montar un disco por UUID o ETIQUETA en OS X El Capitan .
He probado esto "montando" una memoria USB en un disco duro externo. Como ejemplo,
$ 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
Como puede ver, /dev/disk2s1
o USB-32
es el nombre de la memoria USB que voy a montar en el disco duro, /dev/disk1s2
o HDD-1T
. Para ello, haga uso de la -mountPoint
opción. Pero primero, asegúrese de que haya un directorio de destino para montar:
$ mkdir /Volumes/HDD-1T/mountpoint
Y ahora, a montar:
$ diskutil mount -mountPoint /Volumes/HDD-1T/mountpoint /dev/disk1s2
El disco montado aparecerá en las siguientes ubicaciones: /Volumes
, y /Volumes/HDD-1T/mountpoint
como USB-32
y mountpoint
respectivamente.
Asegúrese de desmontar ( diskutil umount
) su USB-32
equivalente antes de volver a montar en su HDD-1T
equivalente.
IconoDaemon
S. McCandlish
IconoDaemon
S. McCandlish