Автоматизация последовательности команд монтажа

9

Когда я подключаю устройство (планшет, камеру, флэш-накопитель, внешний жесткий диск) к ноутбуку с Linux, я часто набираю следующую последовательность команд.

$ ls /dev/sd*
Допустим , что мое устройство / DEV / SDC
опционально $ sudo mkdir /media/my_flash
опционально$ sudo chmod 777 /media/my_flash
$ sudo mount /dev/sdc /media/my_flash

Затем я скопирую несколько файлов и

$ sudo umount /dev/sdc

Эта последовательность гарантирует мне, что файлы скопированы и ничего плохого не произойдет.

Не могли бы вы сказать мне, как автоматизировать эту последовательность команд? Поэтому я буду только подключать устройство, оно будет распознавать, к какому каталогу оно должно быть подключено, затем я сделаю некоторую передачу файла, а затем оно сообщит мне (каким-то образом), можно ли отключить устройство? Есть ли какие-то настройки в ОС Linux для этого?

xralf
источник

Ответы:

6

Компонентом системы, который реагирует на подключение съемного устройства, является Udev , как упомянуто SHW . Даже учебник по udev может быть немного сложным; Я покажу вам пару примеров.

Это включает в себя два этапа: связывание файла устройства (например /dev/sdc) с аппаратным устройством и монтирование устройства для доступа к файловой системе. Работа Udev - это первый шаг, хотя вы можете сказать ему запускать внешнюю команду, такую ​​как mount.

Для известных съемных устройств я хотел бы использовать выделенное имя устройства в разделе /dev/removable(это имя каталога является персональным соглашением). Следующие правила udev (для размещения /etc/udev/rules.d/my_removable_disks.rules) создают символические ссылки с известными именами для двух дисков, оба идентифицируются свойством файловой системы в их разделе 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"

Старые версии udev могут понадобиться /udev/lib/vol_id -u %N1(для UUID, -lдля метки) вместо blkidвызова. Есть больше вещей, с которыми вы можете сопоставить, например ATTRS{vendor}=="Yoyodine", ATTRS{serial}=="XYZZY12345PDQ97"(вместо PROGRAM==…, RESULT==…), чтобы соответствовать поставщику устройства и серийному номеру.

Затем вы можете использовать такую ​​строку в /etc/fstab:

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

Если вы предпочитаете автоматическое монтирование, вы можете добавить что-то вроде , RUN="mkdir /media/foo && mount /dev/removable/foo /media/foo"строки udev. Не забудьте umount /media/fooперед отключением.

Жиль "ТАК - перестань быть злым"
источник
Спасибо за отличное решение. У меня есть LVM на некоторых внешних дисках, поэтому более длинная последовательность рекомендаций (включая активацию VG и т. Д.), Теперь я могу даже добавить сценарии резервного копирования к этому :).
Гжегож Вежовецкий
Уважаемый читатель - если вы хотите узнать о доступных ATTRS, попробуйте это на своем устройстве:udevadm info --name=/dev/DEVICE --attribute-walk
Grzegorz Wierzowiecki
8

Вы можете сделать это, написав правила UDEV, которые будут «запускать» сценарий bash, содержащий те же команды bash, которые вы упомянули. Всякий раз, когда вы подключаете указанные устройства, UDEV распознает это и начинает вести себя в соответствии с правилом.

Для написания правил вы можете перейти по этой ссылке.

SHW
источник
О, мило. Еще не знал - добавь ссылку в закладки и добавь ее в свой репертуар.
Шадур
Не могли бы вы быть более конкретным? Какие абзацы по ссылке актуальны для меня?
xralf
Похоже, что я ищу. Я только не успеваю прочесть это все эти дни. Я изучу его и вставлю правильный ответ в ваш комментарий, когда пойму. Спасибо
xralf
4

В настоящее время существует несколько демонов автоматического монтирования, а также pmountкоманда, специально предназначенная для того, чтобы пользователи могли монтировать съемные устройства /mediaбез необходимости sudoдоступа.

И Gnome, и KDE имеют возможность автоматически монтировать съемные тома, когда они подключены; в зависимости от того, какой дистрибутив вы установили, эта функция может даже по умолчанию включить.

В GNOME опции, регулирующие эту функцию, доступны в разделе System -> Preferences -> Removable Media; У меня нет недавнего опыта с KDE.

Shadur
источник
Я хотел бы сделать это независимо от среды управления окнами (например, KDE, GNOME и т. Д.) (Как будто X не был запущен).
xralf
Затем вам придется прочитать эту ссылку, опубликованную SHW, и прочитать почти все.
Шадур