Isso não é diretamente sobre sua pergunta, mas sobre o que você está fazendo. Se você iniciar um script de backup do udev, enfrentará dois problemas principais:
- Seu scrpit pode ser iniciado antes que o dispositivo esteja pronto e possa ser montado, você deve manter a condição KERNEL == "sd *" se quiser usar o nó / dev para montá-lo
- Mais importante, se o seu scirpt levar algum tempo para ser executado (o que pode ser facilmente o caso com um script de backup), ele será eliminado logo após ser iniciado (cerca de 5s)
- Você enfrentará muitos problemas complicados de permissão de usuário
Meu conselho é criar um script na página inicial do usuário que ouça um canal nomeado e que seja iniciado de forma assíncrona, como:
#!/bin/bash
PIPE="/tmp/IomegaUsbPipe"
REMOTE_PATH="/path/to/mount/point"
LOCAL_PATH="/local/path/"
doSynchronization()
{
#your backup here
}
trap "rm -f $PIPE" EXIT
#If the pipe doesn't exists, create it
if [[ ! -p $PIPE ]]; then
mkfifo $PIPE
fi
#If the disk is already plugged on startup, do a syn
if [[ -e "$REMOTE_PATH" ]]
then
doSynchronization
fi
#Make the permanent loop to watch the usb connection
while true
do
if read line <$PIPE; then
#Test the message red from the fifo
if [[ "$line" == "connected" ]]
then
#The usb has been plugged, wait for disk to be mounted by KDE
while [[ ! -e "$REMOTE_PATH" ]]
do
sleep 1
done
doSynchronization
else
echo "Unhandled message frome fifo : [$line]"
fi
fi
done
echo "Reader exiting"
Nota: eu uso o auto-mount com o kde para verificar se a pasta aparece. Você pode passar o parâmetro / dev / sd * no fifo da regra do udev e montá-lo no script. Para escrever no fifo, não esqueça que o udev não é um shell e esse redirecionamento não funciona. Seu RUN deve ser como:
EXECUTAR +="/ bin / sh -c '/ bin / echo conectado > > / tmp / IomegaUsbPipe'"