Автоматическое резервное копирование при подключении USB

Если это не лучшее место для размещения этого вопроса, не могли бы вы направить меня в более подходящее место для публикации этого вопроса.

Что я пытаюсь сделать:

У меня есть USB-накопитель, он fat32 и его имя JavaClasses. Всякий раз, когда я подключаю его, он монтируется, и его доступный путь - /media/bill/JavaClasses. У меня есть сценарий, который, когда я запускаю его, проверяет, существует ли каталог JavaClasses, если он есть, он создает каталог с этим форматом, yyyymmddhhmm. Затем скрипт скопирует (создаст резервную копию) мой каталог eclipse в этот новый каталог.

Я создал новое правило в соответствии с /etc/udev/rules.d/85-javaclasses.rules. Это запустит вышеуказанный скрипт. Сценарий имеет 2-секундную задержку, чтобы разрешить монтирование.

Текущая ситуация:

Сценарий работает нормально, если я запускаю вручную. Он не запускается автоматически, когда привод подключен.

Командная строка и информация:

Это команда из 85-javaclasses.rules.

SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="0930", ATTRS{idProduct}=="6545", RUN+="/home/bill/bin/javaclasses.sh"

Это то, что я получаю, когда я бегу

udevadm info --attribute-walk --name /dev/sdb1


looking at parent device '/devices/pci0000:00/0000:00:07.0/0000:04:00.0/usb10/10-1/10-1.4':
    KERNELS=="10-1.4"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{devpath}=="1.4"
    ATTRS{idVendor}=="0930"
    ATTRS{speed}=="480"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{busnum}=="10"
    ATTRS{devnum}=="4"
    ATTRS{configuration}==""
    ATTRS{bMaxPower}=="200mA"
    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}=="001A4D5E4020ED5199130595"
    ATTRS{version}==" 2.00"
    ATTRS{urbnum}=="2197"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="Kingston"
    ATTRS{removable}=="unknown"
    ATTRS{idProduct}=="6545"
    ATTRS{bDeviceClass}=="00"
    ATTRS{product}=="DataTraveler 2.0"

Может ли кто-нибудь указать мне направление, чтобы решить эту проблему? Спасибо за ваше время.

1
задан 21 May 2015 в 23:05

1 ответ

Просто попробуйте простой командный цикл, очень низкая вычислительная мощность, но полезная.

#!/bin/bash
x=0
while [ true ]
    do if [ $x = 0 ]
        then if [ -s /media/myflashdrive/* ]
            then bash /home/user/myscript.sh
            x=1
        fi
        else if [ -s /media/myflashdrive/* ]
            then true
            else x=0
        fi
     fi
sleep 10
done

Сохраните это в / etc / и добавьте эту строку в /etc/rc.local:

bash /etc/this_script.sh &

Убедитесь, что вы добавили это до выхода 0. Готово! Всякий раз, когда ваш flashdrive монтирует myscript.sh, он будет запущен, затем, когда он отключен, x снова будет равен 0, и скрипт снова начнет его искать, чтобы вы подключили его!

0
ответ дан 21 May 2015 в 23:05

Другие вопросы по тегам:

Похожие вопросы: