questa è una funzione che uso in uno script di backup personalizzato:
#verifica destinazione
DoCheckMount() {
#chech se esiste il mount point locale
if [ ! -d "$MOUNTPOINT" ]; then
echo "il mount point locale $MOUNTPOINT non esiste.. exiting"
exit 7
fi
#check se esiste il file jollyroger sulla directory remota, per evitare di eseguire il backup in locale
if [ ! -e "$TESTMOUNT" ]; then
echo "mount point not found.."
$MOUNT -t cifs -ousername=$username,password=$password $remoteserver $MOUNTPOINT
sleep 10
fi
## secondo test del mount point, se fallisce, esco con errore ###
if [ ! -e "$TESTMOUNT" ]; then
echo $TESTMOUNT
echo "mount point not found, error in mounting.. exiting"
echo "verificare che la share $remoteserver sia raggiungibile, che le credenziali siano corrette e che esista il file remoto jollyroger.txt"
exit 2
fi
#verifica se esiste la directory remota
if [ ! -d "$DESTINATION" ]; then
echo "la directory remota $DESTINATION su $remoteserver non esiste.. exiting"
exit 8
fi
echo "mount point presente"
}
$MOUNTPOINT: è una variabile che è tipo /mnt/tmp
$TESTMOUNT: è una stringa comporta da $MOUNTPOINT/jollyroger.txt
in altre parole, sul NAS esiste un file vuoto jollyroger.txt che serve per verificare se la share è stata montata o meno
$DESTINATION è il percorso $MOUNTPOINT/cartella_dove_fare_il_backup
$username e password sono credenziali per l'accesso alla share (in questo caso cifs), $remoteserver è la macchina remota
la funzione quindi:
- verifica se /mnt/tmp (esempio) esiste.. se no, esce
- verifica se il file jollyroger.txt esiste.. se si, la share è montata, se no, prova a montare la share remota sul mountpoint ed attende 10 secondi per dar tempo all'operazione
- riverifica se il file è raggiungibile: se no, evidentemente il server remoto non c'è o qualcosa altro non funziona, ergo esce
- verifica se sulla share remota esiste la directory di destinazione: se no, esce
se tutto va bene, il programma prosegue.
ergo, uno script
- deve avere una sezione dove mettere i valori alle variabili
- deve contenere questa funzione
- deve richiamare questa funzione semplicemente con DoCheckMount()
- subito dopo esegue il backup (qualsiasi esso sia)
nel tuo caso è da modificare la parte di mount (non ti servono credenziali e cambia la sintassi) ed è da scrivere l'istruzione per fare rsync tra la directory locale e la cartella remota