sleepycat |
|
![]()
Темы:
98
Сообщения:
3291
Участник с: 19 июля 2011
|
Доброго времени суток. …далее упрощено для читабельности, левое выкинуто. cat /usr/local/bin/backup_adata0.sh #!/bin/bash _binder() { mkdir -p ${_DEST[0]} mount /dev/disk/by-label/FTEMP /mnt/usb return 0 } ... #sleep 3 echo -e "--------------------------------------------------\nProcess start at $_DATE\n--------------------------------------------------\n" > $_LOG _checker >> $_LOG _binder >> $_LOG ... cat /etc/udev/rules.d/90-local.rules ACTION=="add", SUBSYSTEM=="block", KERNEL=="sd[a-z]", ATTRS{vendor}=="ADATA ", ATTRS{model}=="USB Flash Drive ", ATTR{size}=="15773696", RUN+="/usr/local/bin/backup_adata0.sh" cat /etc/udev/rules.d/90-local.rules ACTION=="add", SUBSYSTEM=="block", KERNEL=="sd[a-z]", ATTRS{vendor}=="ADATA ", ATTRS{model}=="USB Flash Drive ", ATTR{size}=="15773696", RUN+="/usr/local/bin/backup_adata0.sh &"
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
|
Natrio |
|
Темы:
48
Сообщения:
4771
Участник с: 08 января 2011
|
Флешка отформатирована как устройство или на ней раздел? |
sleepycat |
|
![]()
Темы:
98
Сообщения:
3291
Участник с: 19 июля 2011
|
sudo blkid | grep sdb /dev/sdb1: LABEL="FTEMP" UUID="5B31-66F2" TYPE="vfat" /dev/sdb2: LABEL="archboot" UUID="c26290f0-6a1f-43ab-b736-bc7fd4e606af" TYPE="ext2" ┌─[ Чт. нояб. 22 ] :: [archangel] - [hellgate] :: [script] └─>> sudo udevadm info -a -p sdb syspath not found ┌─[ Чт. нояб. 22 ] :: [archangel] - [hellgate] :: [script] └─>> sudo udevadm info -a -n sdb Udevadm info starts with the device specified by the devpath and then walks up the chain of parent devices. It prints for every device found, all possible attributes in the udev rules key format. A rule to match, can be composed by the attributes of the device and the attributes from one single parent device. looking at device '/devices/pci0000:00/0000:00:1d.7/usb2/2-2/2-2:1.0/host21/target21:0:0/21:0:0:0/block/sdb': KERNEL=="sdb" SUBSYSTEM=="block" DRIVER=="" ATTR{ro}=="0" ATTR{size}=="15773696" ATTR{stat}==" 697 3196 7547 1093 3 0 5 53 0 680 1146" ATTR{range}=="16" ATTR{discard_alignment}=="0" ATTR{events}=="media_change" ATTR{ext_range}=="256" ATTR{events_poll_msecs}=="-1" ATTR{alignment_offset}=="0" ATTR{inflight}==" 0 0" ATTR{removable}=="1" ATTR{capability}=="51" ATTR{events_async}=="" looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb2/2-2/2-2:1.0/host21/target21:0:0/21:0:0:0': KERNELS=="21:0:0:0" SUBSYSTEMS=="scsi" DRIVERS=="sd" ATTRS{rev}=="0.00" ATTRS{type}=="0" ATTRS{scsi_level}=="3" ATTRS{model}=="USB Flash Drive " ATTRS{state}=="running" ATTRS{queue_type}=="none" ATTRS{iodone_cnt}=="0x399" ATTRS{iorequest_cnt}=="0x399" ATTRS{timeout}=="30" ATTRS{evt_media_change}=="0" ATTRS{max_sectors}=="240" ATTRS{ioerr_cnt}=="0x1" ATTRS{queue_depth}=="1" ATTRS{vendor}=="ADATA " ATTRS{device_blocked}=="0" ATTRS{iocounterbits}=="32" looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb2/2-2/2-2:1.0/host21/target21:0:0': KERNELS=="target21:0:0" SUBSYSTEMS=="scsi" DRIVERS=="" looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb2/2-2/2-2:1.0/host21': KERNELS=="host21" SUBSYSTEMS=="scsi" DRIVERS=="" looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb2/2-2/2-2:1.0': KERNELS=="2-2:1.0" SUBSYSTEMS=="usb" DRIVERS=="usb-storage" ATTRS{bInterfaceClass}=="08" ATTRS{bInterfaceSubClass}=="06" ATTRS{bInterfaceProtocol}=="50" ATTRS{bNumEndpoints}=="02" ATTRS{supports_autosuspend}=="1" ATTRS{bAlternateSetting}==" 0" ATTRS{bInterfaceNumber}=="00" looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb2/2-2': KERNELS=="2-2" SUBSYSTEMS=="usb" DRIVERS=="usb" ATTRS{bDeviceSubClass}=="00" ATTRS{bDeviceProtocol}=="00" ATTRS{devpath}=="2" ATTRS{idVendor}=="125f" ATTRS{speed}=="480" ATTRS{bNumInterfaces}==" 1" ATTRS{bConfigurationValue}=="1" ATTRS{bMaxPacketSize0}=="64" ATTRS{busnum}=="2" ATTRS{devnum}=="19" ATTRS{configuration}=="" ATTRS{bMaxPower}=="480mA" ATTRS{authorized}=="1" ATTRS{bmAttributes}=="80" ATTRS{bNumConfigurations}=="1" ATTRS{maxchild}=="0" ATTRS{bcdDevice}=="0100" ATTRS{avoid_reset_quirk}=="0" ATTRS{quirks}=="0x0" ATTRS{serial}=="0000000B4C8A69" ATTRS{version}==" 2.00" ATTRS{urbnum}=="2594" ATTRS{ltm_capable}=="no" ATTRS{manufacturer}=="ADATA" ATTRS{removable}=="unknown" ATTRS{idProduct}=="385a" ATTRS{bDeviceClass}=="00" ATTRS{product}=="ADATA USB Flash Drive" looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb2': KERNELS=="usb2" SUBSYSTEMS=="usb" DRIVERS=="usb" ATTRS{bDeviceSubClass}=="00" ATTRS{bDeviceProtocol}=="00" ATTRS{devpath}=="0" ATTRS{idVendor}=="1d6b" ATTRS{speed}=="480" ATTRS{bNumInterfaces}==" 1" ATTRS{bConfigurationValue}=="1" ATTRS{bMaxPacketSize0}=="64" ATTRS{authorized_default}=="1" ATTRS{busnum}=="2" ATTRS{devnum}=="1" ATTRS{configuration}=="" ATTRS{bMaxPower}==" 0mA" ATTRS{authorized}=="1" ATTRS{bmAttributes}=="e0" ATTRS{bNumConfigurations}=="1" ATTRS{maxchild}=="8" ATTRS{bcdDevice}=="0306" ATTRS{avoid_reset_quirk}=="0" ATTRS{quirks}=="0x0" ATTRS{serial}=="0000:00:1d.7" ATTRS{version}==" 2.00" ATTRS{urbnum}=="446" ATTRS{ltm_capable}=="no" ATTRS{manufacturer}=="Linux 3.6.6-1-ARCH ehci_hcd" ATTRS{removable}=="unknown" ATTRS{idProduct}=="0002" ATTRS{bDeviceClass}=="09" ATTRS{product}=="EHCI Host Controller" looking at parent device '/devices/pci0000:00/0000:00:1d.7': KERNELS=="0000:00:1d.7" SUBSYSTEMS=="pci" DRIVERS=="ehci_hcd" ATTRS{irq}=="20" ATTRS{subsystem_vendor}=="0x103c" ATTRS{broken_parity_status}=="0" ATTRS{class}=="0x0c0320" ATTRS{companion}=="" ATTRS{consistent_dma_mask_bits}=="32" ATTRS{dma_mask_bits}=="32" ATTRS{local_cpus}=="00000000,00000003" ATTRS{device}=="0x293a" ATTRS{uframe_periodic_max}=="100" ATTRS{enable}=="1" ATTRS{msi_bus}=="" ATTRS{local_cpulist}=="0-1" ATTRS{vendor}=="0x8086" ATTRS{subsystem_device}=="0x1605" ATTRS{numa_node}=="-1" ATTRS{d3cold_allowed}=="1" looking at parent device '/devices/pci0000:00': KERNELS=="pci0000:00" SUBSYSTEMS=="" DRIVERS==""
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
|
Natrio |
|
Темы:
48
Сообщения:
4771
Участник с: 08 января 2011
|
Ну тогда, к примеру, вот так: /etc/udev/rules.d/84-ftemp.rules : KERNEL=="sd*", ACTION=="add", ENV{ID_FS_LABEL}=="FTEMP", ENV{DEVTYPE}=="partition", RUN+="/bin/mount /dev/$kernel /mnt/usb" 2) Я не принимал никаких мер к тому, чтобы флешка отмонтировалась какими-то особыми средствами. Если надо – добавляем соответствующие опции монтирования. 3) Я не использовал симлинк именно потому, что не могу гарантировать момент его создания, вместо этого я использовал имя самого устройства, которое всегда доступно UDEV в переменной $kernel или %k 4) Метка здесь читается из одной из внутренних переменных UDEV, полный список создаваемых параметров можно посмотреть, запустив команду udevadm monitor --property |
sleepycat |
|
![]()
Темы:
98
Сообщения:
3291
Участник с: 19 июля 2011
|
ПОнял, а можно к моунту добавить еще и скрипт,т.е. основная идея замутить бекап автоматом при вставки устройства гипотетически могущего быть хранилищем… т.е. можно примерчик или просто можно еще RUN+= добавить, я по докам не очень понял этот момент.
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
|
Natrio |
|
Темы:
48
Сообщения:
4771
Участник с: 08 января 2011
|
sleepycatЭто был вопрос? Конечно можно, если осторожно :) Если добавить несколько RUN, то я не уверен, что они быдуту выполняться строго по порядку, неодновременно и т.д., если не сейчас, то в будущих версиях. Так что лучше тогда вписать запуск скрипта RUN+="/bin/bash /полный/путь/к/скрипту $параметры" |
sleepycat |
|
![]()
Темы:
98
Сообщения:
3291
Участник с: 19 июля 2011
|
т.е. правильно ли я понимаю, что через параметры вы немекаете сбросить $kernel в скрипт , а уже в скрипте его примонтировать?
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
|
Natrio |
|
Темы:
48
Сообщения:
4771
Участник с: 08 января 2011
|
sleepycatЭто самый простой вариант :) |
sleepycat |
|
![]()
Темы:
98
Сообщения:
3291
Участник с: 19 июля 2011
|
ок, спасибо за консультацию по ENV, учитывая что сейчас без изменений на примере система монтирует устройстово, думаю проблем быть не должно, авансом решено.
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
|
Nebulosa |
|
![]()
Темы:
9
Сообщения:
915
Участник с: 05 марта 2009
|
Решал подобную задачу через мониторинг папки /media средствами мониторинга событий в папке, inotify кажется.. Очень помогло когда мне нужно было растиражировать файлы на 250 флешек. Могу поискать код если интересно. Пусть система сама всё монтирует, а мы уже на уровне папок будем делать свои дела :) |