Script de backup com rsync quando drive é montado

Iniciado por irtigor, 22 de Abril de 2010, 23:48

tópico anterior - próximo tópico

irtigor

Olá, a minha idéia era rodar automaticamente um script quando meu pendrive fosse plugado no computador de casa, para isso achei a seguinte solução :

http://ninetynine.be/blog/2009/03/ubuntu-backup-to-usb-drive-on-mount/

Como é antigo é necessário alterar alguns passos, fica fácil de entender vendo esse tutorial:

http://hackaday.com/2009/09/18/how-to-write-udev-rules/

Criei os seguintes arquivos:

SUBSYSTEMS=="usb", KERNEL=="sd?1", ATTRS{idVendor}=="0951", ATTRS{idProduct}=="1607", MODE="0666", GROUP="casa", ATTRS{product}=="DataTraveler 2.0", NAME="irtigor_d", RUN+="/usr/bin/usb_backup.sh"

#!/bin/sh
user=`whoami`
pids=`pgrep -u $user gnome-panel`
title=$1
text=$2
timeout=$3
icon=$4

if [ -z "$title" ]; then
echo You need to give me a title >&2
exit 1
fi
if [ -z "$text" ]; then
text=$title
fi
if [ -z "$timeout" ]; then
timeout=60000
fi

for pid in $pids; do
# find DBUS session bus for this session
DBUS_SESSION_BUS_ADDRESS=`grep -z DBUS_SESSION_BUS_ADDRESS \
/proc/$pid/environ | sed -e 's/DBUS_SESSION_BUS_ADDRESS=//'`
# use it

#icon hack:
if [ -z $icon ]; then
DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS \
notify-send -u low -t $timeout "$title" "$text"
else
DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS \
notify-send -u low -t $timeout -i "$icon" "$title" "$text"
fi
done


#!/bin/bash
{
mount_point=$(grep IRTIGOR_D /etc/mtab)
attempts=1
while [ -z "$mount_point" ] && [ "$attempts" -le 50 ]; do
    # $mount_point has not been found
    # quit if this fails more than 50 times.
    # This should not be necessary, but it better to be safe
    # than have the script trapped in this loop forever for
    # some unforeseen reason.
    sleep 1
    mount_point=$(grep IRTIGOR_D /etc/mtab)
    attempts=$(($attempts+1))
done

if [ -n "$mount_point" ]; then
    su casa alt-notify-send --chmod=+x "Pendrive irtigor_d" "Fazendo backup" 5 "/home/casa/usbpendrive.png"

    rsync -cr --delete /media/IRTIGOR_D/ /home/casa/Backup/Pendrive
    chown casa: -R /home/casa/Backup/Pendrive

    su casa alt-notify-send "Pendrive irtigor_d" "Backup completo" 5 "/home/casa/usbpendrive.png"
fi
} &


/etc/udev/rules.d/81-local.rules, /usr/local/bin/alt-notify-send e /usr/bin/usb_backup.sh respectivamente.

O script funciona para o que é proposto só que possui algumas coisas que, com a ajuda dos membros do fórum, eu gostaria de alterar:

1-No script original a variável $timeout recebe o valor 0 só que se eu executo com esse valor no lugar da mensagem aparecer no canto da tela (d-bus Notify?), ela aparece como um pop-up no centro da tela. O ideal seria a primeira mensagem ficar em loop até o fim do backup e ai sim mostrar a segunda mensagem (com tempo fixo como está).

2-Eu gostaria de usar como imagem o ícone usado pelo sistema para drive usb mas com abstração, eu não quero especificar o caminho para o ícone do meu tema atual.

Alguma sugestão?



Obrigado pela atenção.