Automatizando la secuencia de comandos de montaje


9

Cuando conecto un dispositivo (tableta, cámara, unidad flash, disco duro externo) a mi computadora portátil con Linux, a menudo escribo la siguiente secuencia de comandos.

$ ls /dev/sd*
Digamos que mi dispositivo es / dev / sdc
opcional $ sudo mkdir /media/my_flash
opcional$ sudo chmod 777 /media/my_flash
$ sudo mount /dev/sdc /media/my_flash

Luego copiaré algunos archivos y

$ sudo umount /dev/sdc

Esta secuencia me garantiza que los archivos se copian y que nada malo sucederá.

¿Podría decirme cómo automatizar esta secuencia de comandos? Así que solo enchufaré el dispositivo, reconocerá en qué directorio se debe montar, luego haré una transferencia de archivos y luego me indicará (de alguna manera) que puedo desconectar el dispositivo. ¿Hay alguna configuración en el sistema operativo Linux para esto?

Respuestas:


6

El componente del sistema que reacciona a la conexión de un dispositivo extraíble es Udev , como lo menciona SHW . Incluso el tutorial de udev puede ser un poco desalentador; Te mostraré un par de ejemplos.

Hay dos pasos involucrados: asociar un archivo de dispositivo (por ejemplo /dev/sdc) con el dispositivo de hardware y montar el dispositivo para acceder al sistema de archivos. El trabajo de Udev es el primer paso, aunque puede indicarle que ejecute un comando externo como mount.

Para dispositivos extraíbles conocidos, me gusta usar un nombre de dispositivo dedicado debajo /dev/removable(ese nombre de directorio es una convención personal). Las siguientes reglas de udev (para colocar /etc/udev/rules.d/my_removable_disks.rules) crean enlaces simbólicos con nombres conocidos para dos discos, ambos identificados por una propiedad del sistema de archivos en su partición 1:

KERNEL=="sd?", PROGRAM=="/sbin/blkid -o value -s UUID %N1", RESULT=="1234-5678", SYMLINK+="removable/foo"
KERNEL=="sd?", PROGRAM=="/sbin/blkid -o value -s LABEL %N1", RESULT=="Joe's disk", SYMLINK+="removable/joe"

Las versiones anteriores de udev pueden necesitar /udev/lib/vol_id -u %N1(para el UUID, -lpara la etiqueta) en lugar de la blkidllamada. Hay más cosas con las que puede coincidir, por ejemplo ATTRS{vendor}=="Yoyodine", ATTRS{serial}=="XYZZY12345PDQ97"(en lugar de PROGRAM==…, RESULT==…) para que coincidan con el proveedor y el número de serie de un dispositivo.

Entonces puedes usar una línea como esta en /etc/fstab:

/dev/removable/joe  /media/joe  vfat  noauto,user

Si prefiere un montaje automático, puede agregar algo como , RUN="mkdir /media/foo && mount /dev/removable/foo /media/foo"a la línea udev. No olvides hacerlo umount /media/fooantes de desconectar.


Gracias por una gran solución. Tengo LVM en algunas unidades externas, por lo que una secuencia de recomendaciones más larga (incluida la activación de VG, etc.), ahora incluso puedo agregar scripts de respaldo a esto :).
Grzegorz Wierzowiecki

Estimado lector: si desea conocer los ATTRS disponibles, intente esto con su dispositivo:udevadm info --name=/dev/DEVICE --attribute-walk
Grzegorz Wierzowiecki

8

Puede hacer esto escribiendo una regla UDEV, que "ejecutará" el script bash al contener los mismos comandos bash que usted mencionó. Siempre que conecte dichos dispositivos, UDEV lo reconocerá y comenzará a comportarse de acuerdo con la regla.

Para escribir reglas, puede seguir este enlace.


Ooh genial. Todavía no lo sabía: marcar el enlace y agregarlo a mi repertorio.
Shadur

¿Podría por favor ser más específico? ¿Qué párrafos del enlace son relevantes para mí?
xralf

Se parece a lo que estoy buscando. Solo que no tengo tiempo para leerlo todos estos días. Lo estudiaré y pegaré la respuesta correcta en tu comentario en el momento en que lo entienda. Gracias
xralf

4

Hay varios demonios de montaje automático en la actualidad, así como el pmountcomando que está específicamente destinado a permitir a los usuarios montar dispositivos extraíbles debajo /mediasin necesidad de sudoacceso.

Tanto Gnome como KDE tienen la opción de montar automáticamente volúmenes extraíbles cuando están conectados; dependiendo de la distribución que instaló, esta función podría incluso tener el valor predeterminado 'on'.

En GNOME, las opciones que gobiernan esta característica están disponibles en System -> Preferences -> Removable Media; No tengo experiencia reciente con KDE.


Me gustaría hacerlo de forma independiente en el entorno de gestión de ventanas (como KDE, GNOME, etc.) (como si X no se iniciara).
xralf

Luego tendrá que leer el enlace que SHW publicó, y leer casi todo.
Shadur
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.