Eu escrevi um script para resolver isso. Algumas coisas estão em italiano, mas acho que você pode entender facilmente como os scripts funcionam. De qualquer forma você pode facilmente traduzir tudo.
O script basicamente verifica se o BlackBerry está conectado à rede. Se sim, verifica se existe um arquivo fictício, se isso acontecer, significa que outra instância do script já está em execução, portanto, ele sai. Se não houver outras istances em execução, ele verifica quando é a última vez que o script foi executado (para não fazer backup do BlackBerry a cada 10 minutos). Se um dummy.file.time tiver mais de 3 horas (10800 segundos), ele inicia o backup usando o rsync.
#!/bin/sh
# BlackBerry backup via SMB share
#
# Cosa fa lo script?
#
# Lo script fa il ping del blackberry
# Se il ping va a buon fine, controlla se esiste "$dummyfile"
# (per non eseguire più backup in parallelo).
# Se esiste "$dummyfile", controlla se "$dummyfiletime" è più
# vecchio di due ore (per non ripetere il backup in continuazione).
# Se "$dummyfiletime" è più vecchio di due ore, monta lo SMB share
# del blackberry e inizia il backup con rsync.
#
##### PARAMETERS START #####
logdate=$(date +"%m-%Y")
ip="192.168.1.5"
dummyfile="/media/truecrypt2/blackberry SMB Backup/dummy.file"
dummyfiletime="/media/truecrypt2/blackberry SMB Backup/dummy.file.time"
monta="mount -t cifs -o username=USER,password=PASSWORD //$ip/media/ /media/blackberrySMB/"
sincronizza="rsync -a /media/blackberrySMB /media/truecrypt2/blackberry\ SMB\ Backup"
scriptlog="/var/log/blackberrySMBbackup/script_$logdate.log"
rsynclog="/var/log/blackberrySMBbackup/rsync_$logdate.log"
dummyfiletimeage=$(( 'date +%s' - 'stat -L --format %Y "$dummyfiletime"' )) #age of the dummy.file.time
defaultage="10800" #in seconds
###### PARAMETERS END ######
echo "$(date +"%D %T") : BlackBerry SMB backup lanciato." >>$scriptlog
echo "Effettuo ping verso $ip" >>$scriptlog
if fping -c 1 -t 500 $ip >>/dev/null
then
echo "Risposta al ping ricevuta da $ip" >>$scriptlog
if [ -f "$dummyfile" ]
then
echo -e "dummy.file esistente. Forse il processo e gia in esecuzione. Esco.\n" >>$scriptlog
exit
else
echo "dummy.file non esistente. Controllo se dummy.file.time e piu vecchio di 3 ore." >>$scriptlog
if [ "$dummyfiletimeage" -gt "$defaultage" ]
then
echo "dummy.file.time e piu vecchio di 3 ore. Inizio il backup." >>$scriptlog
touch "$dummyfile"
rm "$dummyfiletime"
touch "$dummyfiletime"
umount //$ip/media/
umount //$ip/media/
$monta
echo "$(date +"%D %T") : BlackBerry SMB rsync lanciato." >>$rsynclog
rsync --verbose -a /media/blackberrySMB /media/truecrypt2/blackberry\ SMB\ Backup >>$rsynclog
echo "***************************" >>$rsynclog
umount //192.168.1.5/media/
rm "$dummyfile"
echo -e "Backup completato. Esco.\n" >>$scriptlog
exit
else
echo -e "dummy.file.time e piu recente di 3 ore. Esco.\n" >>$scriptlog
exit
fi
fi
else
echo -e "Nessuna risposta al ping da $ip. Blackberry non connesso. Esco.\n" >>$scriptlog
exit
fi