14 votos

¿Hay alguna manera de montar un disco directamente en una carpeta específica?

Utilizando Mac OS X 10.4

Hice un script hace un tiempo para mi caja de linux con el fin de tomar los datos archivados de 300 disquetes que automatizó el proceso. Hacía una imagen del disquete y copiaba los archivos directamente del disquete. Conseguí instalar xcode en la máquina (para poder instalar ddrescue)

La cosa es que en una caja de linux monté cada disquete en /media/floppy y lo desmonté para ddrescue y lo copié directamente a una unidad usb.

Estoy intentando portar mi script al mac, y parece que su comportamiento por defecto es montar automáticamente cada disquete zip en la carpeta /Volumes, lo cual está bien, excepto que utiliza el nombre del volumen como nombre de la carpeta del punto de montaje. Así que si el nombre del volumen de un disquete es "Jimmy Bo Bobs" se montará en /media/Jimmy /Bo /Bobs.

Así que mi pregunta es que necesito conseguir que el nombre del volumen sea consistente con un nombre, o que se adapte al nombre del volumen.

Así que mi pregunta inicial es si puedo montar una unidad a una carpeta específica, como lo haría normalmente en linux?

 #Linux
 mount /dev/sd1 /media/floppy
 #Mac
 diskutil mount /dev/disk1s1 /media/floppy #Doesn't work

Si no es posible, ¿hay alguna forma fácil de extraer el nombre del volumen para que luego pueda enlazar el scriptasí.

 Volumename=Jimmy Bo Bobs
 do stuff to /Volume/$Volumename

Supongo que si no es posible tendré que grep el comando de montaje al puntero /dev/ y luego de alguna manera parsear esa cadena que es lo que quiero evitar ya que requeriría aún más investigación.

0 votos

¿Ha comprobado [-mountPoint path] opción para diskutil ?

0 votos

El archivo de ayuda y el hombre no hacen una mención de ella, buscará a través de google ...

0 votos

Aquí está mi man : " mount [readOnly] [-mountPoint path] device Monta un único volumen. Si se especifica readOnly, entonces el sistema de archivos se monta en modo de sólo lectura, incluso si el sistema de archivos subyacente del volumen y/o el dispositivo y/o los medios soportan la escritura; incluso el superusuario no puede escribir en él; esto es lo mismo que la opción rdonly de mount (8). Si se especifica un -mountPoint, entonces esa ruta, en lugar de la ruta estándar de /Volumes/VolumeName, se utilizará como la vista del contenido del archivo del volumen; un directorio en esa ruta ya debe existir".

10voto

Trane Francks Puntos 1476

"Así que mi pregunta inicial es ¿puedo de alguna manera montar una unidad a una carpeta específica, como lo haría normalmente en linux?"

Por supuesto. La advertencia es que el usuario que está montando el volumen debe ser el propietario del punto de montaje. NO es necesario ser Root o usar sudo para montar un disco.

Lo primero es identificar tu dispositivo en bruto. diskutil list lo hará muy bien.

Por ejemplo, si tengo una memoria USB FAT32 que quiero montar en mi directorio de casa, hago una lista de mis dispositivos y veo que mi dispositivo raw es /dev/disk5s1. Como un usuario normal, puedo montarlo en mi directorio de casa por:

mkdir ~/mount
mount -r -t msdos /dev/disk5s1 ~/mount

Si entonces cd ~/mount ; ls Verás el contenido de la memoria USB.

En este ejemplo, lo monté de sólo lectura, pero puedes montar tu dispositivo como quieras.

Cuando hayas terminado con el dispositivo, no olvides desmontarlo, por ejemplo

diskutil unmount ~/mount

0 votos

ÉXITO!!! mount -t hfs /dev/disk1s4 ~/mountpoint/

1 votos

¿hay alguna forma de que esto ocurra automáticamente cada vez que conecto la misma unidad?

0 votos

@rmp251, no creo que haya ninguna forma de automatizar esto. Dicho esto, es posible crear un script que podría ejecutar para montar la unidad con nada más que un doble clic. Asumiendo que está montando una sola unidad regularmente, debería obtener el mismo nombre de dispositivo cada vez que la monte.

3voto

Esto está descrito en los comentarios, pero debería ponerse en una respuesta. En MacOS 10.11.6 (y probablemente en versiones posteriores), puede utilizar

diskutil mount -mountPoint ~/mount /dev/disk5s1

A diferencia del uso de mount no es necesario especificar el tipo de sistema de archivos, al menos para hfs discos de tipo (todos los que he probado).

Descubrí que tenía que sudo a Root para hacer esto ya sea usando mount como en la respuesta de @TraneFranks, o con diskutil mount como en el caso anterior, a pesar de que el directorio del punto de montaje me pertenece. No entiendo por qué sudo es necesario. Utilizando diskutil mount sin -mountPoint El disco está montado en una ubicación por defecto en /Volumes, y no necesito ser Root. Sin embargo, recomiendo tener en cuenta que sudo puede ser necesario, porque el mensaje de error sin él es misterioso.

1voto

cprior Puntos 121

Script:

#!/bin/bash

# This is the name of the Drive as you'd see it in the finder
volname=<Volume Name>

# Mount point you want to mount it to.
mountPoint=/Users/<username>/extra

function remount() {
  sudo diskutil unmount $vol
  sudo diskutil mount -mountpoint $mountPoint  $vol
  exit 0
}
vol=$(diskutil list | grep "$volname" | awk '{print $7}')
mount | grep $vol | grep "/Volumes/$volname" > /dev/null && remount

Lo que hago es añadir un cron que se ejecute cada minuto. Hay muy pocos recursos del sistema para cuando no hay nada que hacer, así que simplemente lo ejecuta cada minuto. Si lo encuentra, lo reasigna a la ubicación adecuada.

* * * * * <location of script> > /dev/null 2>&1

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X