Монтирование сменных носителей по UUID

Возникла идея бэкапить определенные флешки при их подключении. И чтобы каждая флешка монтировалась в свою папку. Например:

mount UUID=“B462-8F01” /mnt/photo
mount UUID=“B462-8F02” /mnt/img
mount UUID=“B462-8F03” /mnt/sound

Резервное копирование думаю делать при помощи rsync.

Возникли вопросы.

  1. Так же на флешках разная ФС, как сделать чтобы выбиралась нужная?
  2. Как сделать чтобы началось выполнение скрипта при подключении флешки? (Главная проблема)
  3. Скрипт будет выполняться не только на кальке но и на фряхе и дебиане.

Есть у кого какие идеи как это сделать?

www.google.com/search?q=udev+бекап+флешка

Посмотрел по ссылкам, почитал, попробовал примеры, не один не заработал.

  1. создаю правила для udev. (/etc/udev/rules.d/80-backup.rules)
  2. Записываю туда:
    ACTION"add", KERNEL"sd*", PROGRAM"/lib/udev/vol_id -uuid %N", RESULT"B462-8F04", RUN+="/bin/mkdir -p /backup"

ACTION"add", KERNEL"sd**", PROGRAM"/lib/udev/vol_id -uuid %N", RESULT"B462-8F04", RUN+="/bin/mount -t vfat /dev/sd** /backup"
3. Перезапускаю /etc/init.d/udev restart

Вставляю флешку и ничего не происходит, папка не создается и соответственно в нее не монтируется. Что я не так делаю?
KERNEL==“sd*” - пробовал указывать полностью, результата тот же.

# blkid

/dev/sdb: UUID=“429c28ec-1eb7-476e-be59-291faf6903c2” TYPE=“crypto_LUKS”
/dev/sda3: PARTLABEL=“BIOS boot partition” PARTUUID=“72163bb3-2bc7-4ec2-b5f8-37b1c82953db”
/dev/sdc1: UUID=“B462-8F04” TYPE=“vfat” PARTUUID=“01d04092-01”

Что я не так делаю?

Сложно сказать.
Во-первых - я вам подсказал как искать, но вы не указали конкретную ссылку на страницу, с которой взяли эти строки
Во-вторых - неплохо-бы показать системные логи в тот момент, когда вы втыкаете флешку @
@
так что приходится включить телепатию…

PROGRAM=="/lib/udev/vol_id -uuid

не знаю как у вас, но у меня такого файла как vol_id в системе нет. Вообще.
И equery b vol_id мне это подтвердил.
Полагаю, что и у вас его тоже нет
Я бы либо искал родные для udev методы узнать uuid раздела, либо использовал бы подобный код (как он поведет себя в udev я не знаю, но из консоли работает прекрасно):
PROGRAM=="blkid -o export %N| sed -nre 's/^UUID=(.+)$/\1/p'" @
@
Также я бы не пихал все действия в udev, а написал бы универсальный скрипт исполняющий все необходимые действия для бекапа, и дергал бы этот скрипт с нужными параметрами UDEV-ом при втыкании флешки.

Кстати, если у вас стоит десктопная версия кальки, то, скорее всего у вас уже установлен пакет udisks ,который уже выполняет монтирование флешек.
Может есть смысл не писать свои обработчики с нуля, а попробовать сделать расширение для него? (это не руководство к действию, а лишь “мысли вслух”, насколько оно будет легче - я не знаю) @
@
Ну и самый главный совет при отладке подобных вещей - всегда смотрите логи.

Спасибо за адекватные подсказки.

Использовал команду которая выводит список атрибутов устройства
udevadm info -a -n имя_устройства

В списке никакого упоминания про UUID нету, я так понял его никогда там и не было.
Но нашел интересную строчку
ATTRS{serial}=="19015202037236980014"

Опробовал на 4 флешках и двух внешних жестких дисках, номера не совпадают.
Если я правильно понял, то они уникальные для всех устройств. Если это не так поправьте.

В результате создал правило (Для тестирования)
SUBSYSTEM"block", KERNEL"sd*", ACTION"add", NAME="%k", GROUP=“disk”, ATTRS{serial}“11083003004004”, RUN+="/bin/mkdir -p /mnt/8Gb"
SUBSYSTEM"block", KERNEL"sd*", ACTION"add", NAME="%k", GROUP=“disk”, ATTRS{serial}“19015202037236980014”, RUN+="/bin/mkdir -p /mnt/4Gb"

Прекрасно срабатывает.
Буду экспериментировать дальше.
Теперь понял что проблема не решена, как мне монтировать флешку в нужный каталог…