Backup automático quando a unidade USB é inserida

1

Se este não for o melhor lugar para postar esta pergunta, você pode me direcionar para um lugar mais apropriado para postar isso.

O que estou tentando fazer:

Eu tenho uma unidade USB, é fat32 e seu nome é JavaClasses . Sempre que eu conectá-lo, ele é montado e seu caminho acessível é /media/bill/JavaClasses . Eu tenho um script que, quando eu o executo, verifica se o diretório JavaClasses existe, se isso acontecer, ele criará um diretório com este formato, yyyymmddhhmm . Em seguida, o script copiará (backup) meu diretório eclipse para esse novo diretório.

Eu criei uma nova regra em /etc/udev/rules.d/85-javaclasses.rules . Isto irá lançar o script acima. O script tem um atraso de 2 segundos para permitir a montagem.

Situação atual:

O script é executado corretamente se eu for executado manualmente. Não é executado automaticamente quando a unidade está conectada.

A linha de comando e informações:

Este é o comando no 85-javaclasses.rules .

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

Isso é o que eu recebo quando corro

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"

Alguém pode me indicar uma direção para resolver isso? Obrigado pelo seu tempo.

    
por EglCode 07.08.2013 / 01:54

1 resposta

1

Apenas tente um loop de comando simples, um poder de processamento muito baixo, mas útil.

#!/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

Salve isso em / etc / e adicione esta linha ao /etc/rc.local:

bash /etc/this_script.sh &

Certifique-se de adicionar isso antes da saída 0. Feito! Sempre que seu flashdrive monta myscript.sh irá rodar, então quando desmontado, x será igual a 0 novamente e o script irá começar a procurá-lo novamente para que você o conecte!

    
por Zzzach... 07.08.2013 / 07:26