Como posso executar um script quando desmonto uma unidade usb específica?

3

Estou tentando sincronizar entre uma pasta e uma unidade USB, para que

a) quando eu conecto uma unidade usb específica, um script é executado para copiar quaisquer arquivos mais recentes do usb para a pasta; e

b) quando eu desmonto a unidade (clique em ejetar no nautilus), um script é executado para copiar quaisquer arquivos mais novos da pasta para o usb.

Estou confiante de que posso usar o udev e o rsync para realizar a parte a), mas como posso alcançar a parte b)?

    
por rudivonstaden 14.08.2013 / 17:02

1 resposta

0

A resposta duplicada tem mais do que é necessário. Comentários bem vindos. Conecte-o para obter os IDs:

lsusb

substitua os ids e diga quais scripts.

ACTION=="add", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="0260", OWNER="{userid}", RUN+="/usr/local/bin/usb-copy-add.sh"
ACTION=="remove", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="0260", OWNER="{userid}", RUN+="/usr/local/bin/usb-copy-remove.sh"

Os scripts de cópia usb podem ser feitos de várias maneiras. Eles vão se parecer com algo como Isto é o remover, inverter as coisas para o add (não funciona recursivamente):

#!/bin/sh
localf={/your/local/folder/}
for x in 'ls -1 "$localf"'
do
    file='basename $x'
    cd {mounted dir}
    if [ "$file" -nt "$x" ]
    then
        cp "$file" "$localf"
    fi
done

ou do superusuário answer há um link que descreve cp --update (com -r recursiva). Esta é a remoção, reversa para o add:

cp -r -u {mounted dir} {/your/local/folder/}

também do mesmo superusuário answer , esta é a remoção, reversa para o add:

rsync --progress -r -u {mounted dir} {/your/local/folder/}

Hare são algumas outras ideias .

    
por grantbow 23.04.2015 / 19:14