Montar y desmontar con orden

Un saludo al foro.
Utilizo habitualmente el montado de unidades externas y subdirectorios montados en otros directorios según la tarea que esté realizando.
Esto lo hago a través de unos scripts que tengo preparados.
Todo hasta aquí correcto.
El problema surge cuando por casualidad, error, prisa monto un dispositivo o directorio sobre otro directorio en el que ya había otro montado.
En esta situación lo que no sé como hacer para desmontar uno de los montajes anteriores y no el último realizado o el que decida el sistema.
Intento aclarar:

  1. Monto directorio /dir_a/ sobre /dir_b/
  2. Monto directorio /dir_c/ sobre /dir_b/
  3. ¿como desmonto /dir_a/ sin afectar al resto?

Cualquier sugerencia será bienvenida
Gracias

Hola :

Con montar te refieres a poner un directorio dentro de otro ? . eso es fijo o temporal ? .
Lo incluyes en fstab? .

A veces por error copio un directorio dentro de otro, pero abro con dolphin y con 2 pantallas lo muevo de ese directorio y lo saco fuera .
En este caso abro con dolphin el directorio b y ahí me encuentro a y c , bien cojo el directorio a y lo muevo fuera del b . y como tengo dividido a dolphin en dos partes lo muevo a otro sitio que quiera.

En el caso que sea el propietario root u otros, lo hago en dolphin como super usuario .

Saludos cordiales .

Hola:

me olvide de comentar, que si en un directorio tienes otros, o unidades , a la izquierda de dolphin tienes las opciones de esos directorios y unidades, para directorios aparece desmontar y si es un usb, tiene la opción de extraer, de esa forma desaparece del directorio .

Lo comentado anterior mente lo que creo que hace es moverlo de ese directorio a fuera de el, creo mas bien que cambia el indice (porque eso lo hace instantáneo , si no se vería como se mueven los ficheros ) .

Saludos

Hola! Bienvenida/o al foro!

No hay problema o dificultar en hacer esto. Literalmente, el punto de montaje es también el de desmontaje (otra cosa sería automatizarlo para un script!).

Si tienes dirb/dira (donde dira es un dispositivo 1), dirb/dirc (donde dirc es otro dispositivo 2) la forma correcta de desmontar cualquiera de los dos dispositivos es añadir la ruta completa incluido el punto de montaje. Así, para desmontar dirc sólo tienes que hacer: sudo umount dirb/dirc

Echa un vistazo a esto para aprender más sobre mount: SDB:Fundamentos del acceso a dispositivos - openSUSE Wiki

Salud!!

Hola :

Creo que lo hace en , preferencias del sistema, en Almacenamiento extraíble , en dispositivos extraíbles ; ademas de eso ¿se puede crear algo para que no pida password, en ellos ? uso autofs los dispositivos siempre aparecen montados, pero siempre me pide la clave (lo hace de forma automática , se entra clave y si se entra en todos los dispositivos que hay, ya después no pide pass, ( por un periodo de tiempo o bien hasta el próximo reinicio) eso si no elijo pto. montaje el home, si no el habitual /run/media/user/ dispositivo ( ya sea directorios, particiones , usbs, etc…) , si siempre es el mismo usuario, mismos discos,pc, etc, pienso que debería ser mas flexible .

Saludos cordiales .

Gracias por el enlace .

Gracias por las respuestas pero creo que no me he explicado lo suficiente:
Como desmontar un dispositivo o directorio local o remoto no hay problema.
El caso es cuando existe una pila de montajes, unos encima de otros y el que quieres liberar no es el último, que es lo que aría umount dir.
Ni tampoco eliminar todos los montajes de un dispositivo que es lo que haría umount /dev/device.
Todo esto ha de hacerse desde un script, aunque sabiendo como se hace manualmente desde consola no hay problema en reproducirlo desde un script.
Si yo monto primero dir_a sobre dir_c y posteriormente monto dir_b tambien sobre dir_c ¿como desmonto dir_a sin afectar a dri_b?
Gracias nuevamente

Pues imagino que con:

 umount <ruta del directorio dir_a>

Umount no sólo desmonta dispositivos /dev/xxx, también directorios si no recuerdo mal. Así que especifica la ruta origen de dir_a, no donde lo estás montando.

Saludos

Lo siento pero según acavo de comprobar umount no permite especificar el directorio origen, solo el destino.

Gracias de todas formas

Hola:

Umount no sólo desmonta dispositivos /dev/xxx, también directorios si no recuerdo mal. Así que especifica la ruta origen de dir_a, no donde lo estás montando.

Si el directorio es una carpeta, lo trata como si fuese un archivo, ejemplo si c contiene a “a” y a “b” , a “a” lo puedes mover, borrar, editar, enviarlo a la papelera, enviar a lugares , etc , en Dolphin no tiene opciones de desmontar ese directorio, en cambio si lo hace si es una partición o un usb, etc .

Si no haz la prueba y lo veras .

A la izq. de dolphin aparecen o puedes tener carpetas, dispositivos, discos, partciones, usb, etc , pero solo los dispositivos discos y particiones son desmontables y los usb sale como extraibles .
https://paste.opensuse.org/images/33715904.jpg

En este caso hay una partición y un usb , la prueba con directorios la hice y no salen esas opciones .

Saludos cordiales

Hola.

Como he dicho y como podrías haber visto en la wiki, NO PUEDES desmontar un sistema de ficheros en uso. De hecho lo que planteas ni siquiera tiene sentido.

Si tienes /dirA/dirB/dirC si el sistema permitiera desmontar dirA perderías el acceso a dirB y dirC.

Lo que puedes hacer es montar los dispositivos en otro lado, y desmontar los accesos que ya no necesitas.

En el ejemplo anterior, montas dirB en otro lado, montas dirC en el nuevo dirB y desmontas los antigos dirC y dirB.

Dicho esto, también podías indicarnos por qué tienes ese problema concreto, porque tal vez haya formas mejores de hacerlo.

Salud!!

Bien, lo esplico:
Tengo varios scripts que se activan, a su vez, des otros scripts que preparan el terreno para determinadas tareas, de programación por ejemplo, Mas que montar directorios locales sobre directorios locales, casi siempre son directorios remotos sobre directorios locales, o, tambien, dispositivos esternos (discos, pendrives, …).
Estos scripts no se ejecutan en un orden predeterminado y busco que cada uno al término limpien lo que hicieron.
Sé que hay otros caminos, pero hasta ahora, salvando este escollo es el que más seguridad y limpieza me da.

Respondiendo tambien a otros comentarios anteriores los métodos manuales a través de dolpin no me valen, por ahí si sé como hacerlo, pero no podría automatizarlo, que es lo que pretendo.

Tanto con el comando lsblk, como con el findmnt puedo obtener la pila de montajes que descansan sobre un mismo direcotrio y su orden, lo que no se es como indicar cual quiero desmontar y me cuesta mucho pensar de que no exite un medio para hacerlo.

Supongo, sin demasiado conocimiento que un montaje no es otra cosa que un redirecionamiento establecido en alguna tabla del sistema, se trataría pues de eliminar uno de esos redireccionamientos a elección.

Muchas gracias por vuestro tiempo.

Hola.

Literalmente, si elimínases una parte del sistema de ficheros perderías acceso a su contenido. Repasa la wiki para ver por qué es así.

Sin embargo puedes mover el montaje de a otro punto, pero es exactamente lo mismo: tienes que montar en otro lado, desmontar y ya. Es un script, ¿qué más te da?

Salud!!

Pero ¿porque dices en uso? si lo desmonto es por que ya no lo quiero usar. Por otro lado en el momento en que monto un sistema sobre otro el anterior ya no tiene acceso.

Saludos

Supongo que lo dice, por si no lo supieras (que creo que sí), que no se puede desmontar algo que se está usando. Ya sea estando dentro del directorio o un proceso que lo esté usando.

Me refiero a que si quieres desmontar un pendrive, por ejemplo, primero te has de asegurar de no estar en él con Dolphin o dentro de su directorio de montaje en la consola. Si no, siempre dice “device is busy” y no se deja desmontar.

Saludos

Hola.

Estás mezclando el concepto dispositivos con el concepto sistema de ficheros. Supongamos que tienes:

  • /mnt
  • /dev/sdb (disco 1)
  • /dev/sdc (disco 2)

Y efectivamente montas ambos en /mnt, quedando /mnt/disco1 y /mnt/disco2. Desde el punto de vista del sistema, hay una carpeta /mnt que contiene otras dos carpetas disco1 y disco2 que a su vez contienen lo que quiera que contengan ambos dispositivos.

Si a su vez /mnt es una carpeta en la que previamente has montado otro disco, digamos /dev/sda5, tendrás una tabla de montaje cuyo resumen es:

  • /mnt /dev/sda5
  • /mnt/disco1 /dev/sdb
  • /mnt/disco2 /dev/sdc

Y una estructura de carpetas:
/mnt
/mnt/<ficheros de /dev/sda5>
/mnt/disco1
/mnt/disco1/<ficheros de /dev/sdb>
/mnt/disco2
/mnt/disco2/<ficheros de /dev/sdc>

Las carpetas “disco1” y “disco2” existen en /mnt y se montan en /mnt siempre que /mnt a su vez esté montado. Por lo tanto, las entradas de directorio para acceder tanto a disco1 como a disco2 están escritas en /dev/sda5. Si estás leyendo un fichero de “disco2” tienes que estar accediendo desde /mnt (/dev/sda5).

Yo francamente no veo la razón de que quieras hacerlo así (lo suyo es montar cada dispositivo al mismo nivel y si acaso usar enlaces simbólicos o variables para apuntar a ellos) pero si quieres hacerlo así vasa tener esa limitación: no puedes desmontar nada que tenga montado otro sistema de ficheros.

por ejemplo esto debería funcionar para ti:

para dirA, dirB y dirC que contienen respectivamente tres dispositivos diferentes. Necesitas un segundo punto de montaje para cuando desaparezca dirA, por ejemplo, nuevaA/dirB, nuevaA/dirC

mount --bind dirA/dirB nuevaA/dirB
mount --bind dirA/dirC nuevaA/dirC
umount dirA/dirB
umount dirA/dirC
umount dirA

Ahora tienes los dos dispositivos que tenías montados en dirB y dirC en nuevaA (nuevaA/dirB y nuevaA/dirC). Puedes obtener los dispositivos montados en dirA antes de desmontar nada con el comando


mount |grep dirA

Tendrías que buscar una forma de quedarte sólo con la primera columna…

Salud!!