Buscando una forma limpia de montar un directorio en una unidad HFS + como un directorio en otra unidad similar en la misma máquina

1

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 otra, 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 admite esta funcionalidad de enlace (en cualquier forma, incluido mount -o bind o mount -B ), hasta donde puedo determinar. También parece que ninguno de Macports, Homebrew o Fink suministran una versión portada de montaje con tal opción. Algunas de las herramientas de montaje más especializadas disponibles tampoco parecen relacionarse (por ejemplo, xmount es para imágenes de disco y djmount 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 solo escribible por un usuario en particular, en un disco HFS + como si fuera una carpeta en otro disco HFS +, localmente, de manera efectivamente transparente, con los mismos permisos y sin seguridad / problemas de integridad.

Una solución alternativa descuidada es crear un recurso compartido CIFS de la carpeta que se va a montar, y (llamando a una variante personalizada de smb.conf) limita sus permisos en Samba solo para que no sea público. y tiene los mismos permisos que la ubicación de destino, exactamente el archivo y la máscara de directorio correctos, etc .; entonces montarlo de esa manera. Pero esto sería ineficiente, ya que utilizaría el protocolo bletcheros para compartir archivos de Windows, además de crear un recurso compartido visible que se muestre como un volumen montable desde el servidor SMB, a cualquiera que pueda acceder a esta máquina a través de SMB / CIFS (incluso si no pueden en realidad montarlo). La GUI de Mac probablemente también lo represente como un volumen que se comparte.

    
pregunta S. McCandlish 12.06.2016 - 12:44

1 respuesta

1

Para montar un disco duro en un punto de montaje personalizado:

  

Puedes hacer esto con diskutil mount y la opción -mountPoint .   Desde la página del manual:

     
    

montar [readOnly] [-mountPoint path] device

         

Montar un solo volumen. Si se especifica readOnly, entonces el sistema de archivos se monta solo para lectura, incluso si el archivo subyacente del volumen     sistema y / o dispositivo y / o soporte de medios de comunicación; incluso el     el superusuario no puede escribir en él; esto es lo mismo que la opción rdonly     para montar (8). Si se especifica un -mountPoint, entonces esa ruta, en lugar de     que la ruta estándar de / Volumes / VolumeName, se utilizará como     ver en el contenido del archivo de volumen; un directorio en ese camino debe     ya existen.

         

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 con mount , y que su   identifier / UUID / label son específicos del volumen (es decir, /dev/diskXsY   no /dev/diskX ). El montaje en un punto de montaje personalizado no se puede hacer con    diskutil mountDisk , y solo funciona con un solo volumen a la vez.

De mi respuesta a Cómo montar un disco por UUID o LABEL 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 hacerlo, utiliza la opción -mountPoint . Pero primero, asegúrese de que haya un directorio de aterrizaje para montar en:

$ mkdir /Volumes/HDD-1T/mountpoint

Y ahora, para 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úrate de desmontar ( diskutil umount ) tu USB-32 equivalente antes de volver a montar en tu HDD-1T equivalente.

    
respondido por el perhapsmaybeharry 12.06.2016 - 13:20

Lea otras preguntas en las etiquetas