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


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 для цього?

Відповіді:


6

Системним компонентом, який реагує на з'єднання знімного пристрою, є Udev , як згадує SHW . Навіть підручник з удевом може бути трохи непростим; Я покажу вам кілька прикладів.

Є два кроки: пов’язання файлу пристрою (наприклад /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 тощо), тепер я можу навіть додати резервні сценарії до цього :).
Grzegorz Wierzowiecki

Шановний читачу! Якщо ви хочете дізнатися про доступні ATTRS, спробуйте це зі своїм пристроєм:udevadm info --name=/dev/DEVICE --attribute-walk
Grzegorz Wierzowiecki

8

Це можна зробити, написавши правила UDEV, які «запускатимуть» скрипт bash з такими ж командами bash, про які ви згадали. Щоразу, коли ви підключаєте згадані пристрої, UDEV розпізнає це і почне вести себе відповідно до правила.

Для написання правил ви можете перейти за цим посиланням.


О, приємно. Я ще не знав цього - Закладка посилання та додавання його до мого репертуару.
Шадур

Не могли б ви бути більш конкретними? Які абзаци зі посилання мені стосуються?
xralf

Це схоже на те, що я шукаю. Я тільки не встиг прочитати це ці дні. Я вивчу це і вставлю правильну відповідь у ваш коментар у той час, коли я це зрозумію. Дякую
xralf

4

На сьогоднішній день існує декілька демонтажних демонів, а також pmountкоманда, яка спеціально призначена для того, щоб дозволити користувачам монтувати знімні пристрої, /mediaне вимагаючи sudoдоступу.

І Gnome, і KDE мають можливість автоматично монтувати знімні томи, коли вони підключені; залежно від того, у якому дистрибутиві ви встановили цю функцію, навіть за замовчуванням може бути встановлено "увімкнено".

У GNOME параметри, які керують цією функцією, доступні у розділі System -> Preferences -> Removable Media; Я не маю недавнього досвіду роботи з KDE.


Я хотів би зробити це самостійно в середовищі управління вікнами (наприклад, KDE, GNOME тощо) (як би X не був запущений).
xralf

Тоді вам доведеться прочитати це посилання, яке розмістив SHW, і прочитати його майже все.
Шадур
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.