Подскажите как решить задачу:
Нужно выполнить скрипт, после автоматического монтирования флэшки.... т.е., нужно запустить rsync, для хранения резервной копии флэшки (горят падла часто, а инфа критическая...., нужна система архивации)
.....или другое решение присоветуйте (не rsync)...
Выполнение скрипта после монтирования флэшки
Создать правило udev " /etc/udev/rules.d/72-script.rules ":
ACTION=="add", SUBSYSTEM=="block", KERNEL=="sd*", RUN+="/путь/к/скрипту"
Перезагрузка правил: udevadm control --reload-rules
сделал уже давно.... но скрипт выполняется ДО монтирования, а мне надо ПОСЛЕ...
Подберите значение sleep:
RUN+="/bin/sleep, /путь/к/скрипту"
сделал уже давно.... но скрипт выполняется ДО монтирования, а мне надо ПОСЛЕ...
Не поленился прописал правило и посмотрел логи. Как раз таки команда выполняется после отработки всех правил, т.е. в конце:
[console]Oct 22 23:19:07 linux-nhn4 udevd-work[26315]: IMPORT 'udisks-part-id /dev/sdb1' /lib/udev/rules.d/80-udisks.rules:88 - последние правила
Oct 22 23:19:07 linux-nhn4 udevd-work[26315]: 'udisks-part-id /dev/sdb1' started
Oct 22 23:19:07 linux-nhn4 udevd-work[26315]: 'udisks-part-id /dev/sdb1' returned with exitcode 0
Oct 22 23:19:07 linux-nhn4 udevd-work[26315]: RUN '/usr/bin/touch /tmp/1.txt' /etc/udev/rules.d/81-mount.rules:6 - отредактировано
Oct 22 23:19:07 linux-nhn4 udevd-work[26315]: no node name set, will use kernel supplied name 'sdb1'
Oct 22 23:19:07 linux-nhn4 udevd-work[26315]: creating device node '/dev/sdb1', devnum=8:17, mode=0660, uid=0, gid=6
Oct 22 23:19:07 linux-nhn4 udevd-work[26315]: preserve file '/dev/sdb1', because it has correct dev_t
Oct 22 23:19:07 linux-nhn4 udevd-work[26315]: set permissions /dev/sdb1, 060660, uid=0, gid=6
Oct 22 23:19:07 linux-nhn4 udevd-work[26315]: passed -1 bytes to socket monitor 0x6223a0
Oct 22 23:19:07 linux-nhn4 udevd-work[26315]: '/usr/bin/touch /tmp/1.txt' started
Oct 22 23:19:07 linux-nhn4 udevd-work[26315]: '/usr/bin/touch /tmp/1.txt' returned with exitcode 0
Oct 22 23:19:07 linux-nhn4 udevd-work[26315]: adding watch on '/dev/sdb1'
Oct 22 23:19:07 linux-nhn4 udevd-work[26315]: created db file '/dev/.udev/db/b8:17' for '/devices/pci0000:00/0000:00:1d.1/usb3/3-1/3-1:1.0/host36/target36:0:0/36:0:0:0/block/sdb/sdb1'
Oct 22 23:19:07 linux-nhn4 udevd-work[26315]: passed -1 bytes to netlink monitor 0x621740
Oct 22 23:19:07 linux-nhn4 udevd-work[26315]: seq 2292 processed with 0
Oct 22 23:19:10 linux-nhn4 udevd[332]: worker [26315] exit
[/console]
перегрузился... заработало, хотя не раз делал udevadm control --reload-rules, а как теперь выдрать точку монтирования и передать её в скрипт???
ACTION=="add", SUBSYSTEM=="block", KERNEL=="sd*", RUN+="/bin/mount -t auto -o defaults /dev/%k /media/", RUN+="/путь/к/скрипту"
ACTION=="remove", SUBSYSTEM=="block", KERNEL=="sd*", RUN+="/bin/umount /dev/%k"
Поторопился написать работает!!!! нет - не работает как надо!!!!!!!!!
скрипт:
#!/bin/sh
это работает: ls / > /tmp/1
это работает: touch >/tmp/2
это работает: date > /tmp/3
sleep 5
это НЕ работает: /usr/bin/rsync -aXS /media/flaska /home/user/dump
Вы хоть логи показали бы?
пожалуйста....
Oct 24 21:25:07 linux kernel: [10896.275038] usb 2-1: new high speed USB device using ehci_hcd and address 8
Oct 24 21:25:07 linux kernel: [10896.392101] usb 2-1: New USB device found, idVendor=0dd8, idProduct=f607
Oct 24 21:25:07 linux kernel: [10896.392104] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Oct 24 21:25:07 linux kernel: [10896.392105] usb 2-1: Product: Flash Drive
Oct 24 21:25:07 linux kernel: [10896.392106] usb 2-1: Manufacturer: USB
Oct 24 21:25:07 linux kernel: [10896.392107] usb 2-1: SerialNumber: AA04012700010410
Oct 24 21:25:07 linux kernel: [10896.392608] scsi13 : usb-storage 2-1:1.0
Oct 24 21:25:08 linux kernel: [10897.392381] scsi 13:0:0:0: Direct-Access USB Flash Drive 1100 PQ: 0 ANSI: 0 CCS
Oct 24 21:25:08 linux kernel: [10897.392560] sd 13:0:0:0: Attached scsi generic sg4 type 0
Oct 24 21:25:08 linux kernel: [10897.394981] sd 13:0:0:0: [sdd] 3963904 512-byte logical blocks: (2.02 GB/1.88 GiB)
Oct 24 21:25:08 linux kernel: [10897.395862] sd 13:0:0:0: [sdd] Write Protect is off
Oct 24 21:25:08 linux kernel: [10897.395864] sd 13:0:0:0: [sdd] Mode Sense: 43 00 00 00
Oct 24 21:25:08 linux kernel: [10897.395866] sd 13:0:0:0: [sdd] Assuming drive cache: write through
Oct 24 21:25:08 linux kernel: [10897.399722] sd 13:0:0:0: [sdd] Assuming drive cache: write through
Oct 24 21:25:08 linux kernel: [10897.519748] sdd: sdd1
Oct 24 21:25:08 linux kernel: [10897.521746] sd 13:0:0:0: [sdd] Assuming drive cache: write through
Oct 24 21:25:08 linux kernel: [10897.521749] sd 13:0:0:0: [sdd] Attached SCSI removable disk
Oct 24 21:25:08 linux mtp-probe: checking bus 2, device 8: "/sys/devices/pci0000:00/0000:00:1d.7/usb2/2-1"
Oct 24 21:25:09 linux mtp-probe: bus: 2, device: 8 was not an MTP device
и всё...., скрипт выполняеться, т.к. есть /tmp/1,2,3
каталог /home/user/dump пуст
если вручную - /usr/bin/rsync -aXS /media/flaska /home/user/dump - работает!!
Покажите более подробно в отладочном режиме " /etc/udev/udev.conf " и rsync с ключом -v в скрипте.
cat /etc/udev/udev.conf
# The initial syslog(3) priority: "err", "info", "debug" or its
# numerical equivalent. For runtime debugging, the daemons internal
# state can be changed with: "udevadm control --log-priority=<value>".
udev_log="err"
"rsync с ключом -v в скрипте." - какой смысел??? если вручную копирование происходит.. папки появляються.......
в логах появилось...
Oct 24 21:52:30 linux kernel: [12537.631153] FAT: Filesystem error (dev sdd1)
Oct 24 21:52:30 linux kernel: [12537.631154] fat_get_cluster: invalid cluster chain (i_pos 1644681)
Oct 24 21:52:30 linux kernel: [12537.631157] FAT: Filesystem error (dev sdd1)
Oct 24 21:52:30 linux kernel: [12537.631158] fat_get_cluster: invalid cluster chain (i_pos 1644681)
udev_log="debug" и перезагружаетесь;
tail -f /var/log/messages и подсоединяете флешку.
Oct 24 21:52:30 linux kernel: [12537.631153] FAT: Filesystem error (dev sdd1)
fsck Вам в помощь.
Тупанул - udevadm control --log-priority=debug - без перезагрузки
"Тупанул - udevadm control --log-priority=debug - без перезагрузки" - однако прав...
сменил флэху..
Oct 24 22:56:24 linux udevd-work[11507]: passed -1 bytes to socket monitor 0x627010
Oct 24 22:56:24 linux udevd-work[11507]: '/bin/mount -t auto -o defaults /dev/sdd1 /media/sdd1' started
Oct 24 22:56:24 linux udevd-work[11507]: '/bin/mount' (stderr) 'mount: mount point /media/sdd1 does not exist'
Oct 24 22:56:24 linux udevd-work[11507]: '/bin/mount -t auto -o defaults /dev/sdd1 /media/sdd1' returned with exitcode 32
Oct 24 22:56:24 linux udevd-work[11507]: '/home/user/bin/flash_copy.sh' started
Oct 24 22:56:24 linux udevd-work[11507]: '/home/user/bin/flash_copy.sh' (stderr) 'cp: cannot stat `/media/FLASH1''
Oct 24 22:56:24 linux udevd-work[11507]: '/home/user/bin/flash_copy.sh' (stderr) ': No such file or directory'
Oct 24 22:56:24 linux udevd-work[11507]: '/home/user/bin/flash_copy.sh' returned with exitcode 1
Oct 24 22:56:24 linux udevd-work[11507]: passed 1475 bytes to socket monitor 0x627010
Oct 24 22:56:24 linux udevd-work[11507]: adding watch on '/dev/sdd1'
флэха рабочая....
#ls /home/user/bin/flash_copy.sh
/home/user/bin/flash_copy.sh
т.е. похоже флэха ЕЩЁ НЕ СМОНТИРОВАЛАСЬ...., а скрипт идёт ДАЛЬШЕ... поэтому и cp: cannot stat `/media/FLASH1
Oct 24 22:56:24 linux udevd-work[11507]: '/bin/mount' (stderr) 'mount: mount point /media/sdd1 does not exist'
Oct 24 22:56:24 linux udevd-work[11507]: '/bin/mount -t auto -o defaults /dev/sdd1 /media/sdd1' returned with exitcode 32
Какая файловая система?
fat32
/dev/sdd1 on /media/FLASH1 type vfat (rw,nosuid,nodev,relatime,uid=1001,gid=100,fmask=0022,dmask=0077,codepage=cp437,iocharset=iso8859-1,shortname=mixed,showexec,utf8,errors=remount-ro,uhelper=udisks)
Ну так смонтируйте как положено - /bin/mount -t auto -o uid=пользователь,gid=группа,utf8
/bin/mount -t auto -o uid=1001,gid=100,utf8 /dev/sdd1 /media/FLASH1
df -m
/dev/sdd1 1950 1 1950 1% /media/FLASH1
а что это даст?? ну смонтировалась...
sh /home/user/bin/flash_copy.sh - запустил вручную, отработал без ошибок...
Покажите свое правленное правило udev