Controllare se il disco esterno montato per poter fare il backup con Rsnapshot

Salve, il problema principale quando si fanno i backup con Rsnapshot è quello di verificare che i dischi esterni siano montati.
Questo vale sia per partizioni in volumi fisici, sia in volumi logici. Quello che conta è che il sistema deve accertarsi che i dischi o le partizioni siano montate e siano scrivibili.
Il work around che andremo a vedere è piuttosto semplice: scriviamo degli scriptini come quello che segue e li metteremo poi in crontab:

1. Ecco il file my_snapshot_hourly.sh
#!/bin/bash
#-----------------------------------------------------------------------------------------------------
# Script che esegue rsnapshot su disco esterno di nome disco_backup
#-----------------------------------------------------------------------------------------------------
#
backupdir="/mnt/disco_backup/Mio_backup_orario/"
if [ -w $backupdir ] ; then
echo "Sto eseguendo lo snapshot sul disco esterno" /opt/local/bin/rsnapshot hourly
else clear
echo
echo "_____________________________"
echo
echo " A T T E N Z I O N E !!"
echo "_____________________________"
echo
echo
echo "Il Disco disco_backup non e' montato."
echo
exit 1
fi
exit 0
#********************************************************************************
# Lo scriptino eseguira' lo snapshot predisposto nel crontab hourly;


2. Ecco il file my_snapshot_daily.sh
#!/bin/bash
# Script che esegue rsnapshot su disco esterno di nome disco_backup
backupdir="/mnt/disco_backup/Mio_backup_giornaliero/"
if [ -w $backupdir ] ; then
echo "Sto eseguendo lo snapshot sul disco esterno"
/opt/local/bin/rsnapshot daily
else clear
echo
echo "_____________________________"
echo
echo " A T T E N Z I O N E !!"
echo "_____________________________"
echo
echo
echo "Il Disco disco_backup non e' montato."
echo
exit 1
fi
exit 0
#********************************************************************************+*****
# lo scriptino eseguira' lo snapshot predisposto nel crontab daily;


3. Ecco il file my_snapshot_weekly.sh
#!/bin/bash
#Script che esegue rsnapshot su disco esterno di nome disco_backup
backupdir="/mnt/disco_backup/Mio_backup_settimanale/"
if [ -w $backupdir ] ; then
echo "Sto eseguendo lo snapshot sul disco esterno"
/opt/local/bin/rsnapshot weekly else
clear
echo
echo "_____________________________"
echo
echo " A T T E N Z I O N E !!"
echo "_____________________________"
echo
echo
echo "Il Disco disco_backup non e' montato."
echo
exit 1
fi
exit 0
#***********************************************************************************
# Lo scriptino eseguira' lo snapshot predisposto nel crontab weekly;


4. Ecco il file my_snapshot_monthly.sh
#!/bin/bash
#Script che esegue rsnapshot su disco esterno di nome SNAPSHOTS
backupdir="/mnt/disco_backup/Mio_backup_mensile/"
if [ -w $backupdir ] ; then
echo "Sto eseguendo lo snapshot sul disco esterno" /opt/local/bin/rsnapshot monthly
else
clear
echo
echo "_____________________________"
echo
echo " A T T E N Z I O N E !!"
echo "_____________________________"
echo
echo
echo "Il Disco disco_backup non e' montato."
echo
exit 1
fi
exit 0
#***********************************************************************************
# Lo scriptino eseguira' lo snapshot predisposto nel crontab monthly.


Copiamo tutti questi scriptini in /bin con Midnight Commander[1], se vi fa piacere, oppure a mano con il solito comando da terminale
cp -a oppure mv. Dopo aver predisposto tutto quanto, e' necessario automatizzare il sistema, per non dover richiamare gli scriptini e lanciarli a mano.
Utilizziamo pertanto crontab dell'utente root, lanciando l'editor integrato VI con il comando:

# crontab -e

Nell'editor copiamoci questo testo:

#********************************************************
# ATTENZIONE: questo e' il "crontab -e" di root
#
# non serve quindi mettere:
#
# user-name commando to be executed
#
#
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * *
#
#
#************************************************************************************
# G | FA PARTIRE IL BACKUP CON RSNAPSHOT:
# U |________________________________________________________________________________
# A |
# R | [minuto | ora |giorno del mese | mese dell'anno | giorno della settimana]
# D |________________________________________________________________________________
# A | QUESTI COMANDI NON BADANO SE IL DISCO ESTERNO E' MONTATO E QUINDI
#     | ERRONEAMENTE CREANO UNA DIRECTORY SUL DISCO DI SISTEMA, SE NON TROVANO
# S | SUBITO LA DIRECTORY .rsnapshots. Piu' sotto ho modificato le 4 righe seguenti
# O | in modo da far partire degli scriptini che verificano se il disco esterno dal
# T | nome "SNAPSHOTS" e' montato.
# T | 3 * * * * /opt/bin/rsnapshot hourly
# O | 30 19 * * * /opt/local/bin/rsnapshot daily
#     | 00 20 * * 1 /opt/local/bin/rsnapshot weekly
#     | 00 20 1 * * /opt/local/bin/rsnapshot monthly #__|________________________________________________________________________________
# |
# | ECCO UN ESEMPIO DI UNO DEGLI SCRIPTINI:
# |
# | #!/bin/bash
# | #-----------------------------------------------------------------------------------------------------
# | # Script che esegue rsnapshot su disco esterno di nome disco_backup
# | #-----------------------------------------------------------------------------------------------------
# | #
# | backupdir="/mnt/disco_backup/Mio_backup_orario/"
# | if [ -w $backupdir ] ; then
# |     echo "Sto eseguendo lo snapshot sul disco esterno" /opt/local/bin/rsnapshot hourly
# |     else clear
# |     echo
# |     echo "_____________________________"
# |     echo
# |     echo " A T T E N Z I O N E !!"
# |     echo "_____________________________"
# |     echo
# |     echo
# |     echo "Il Disco disco_backup non e' montato."
# |     echo
# |     exit 1
# |     fi
# |     exit 0
# |     #********************************************************************************
# |     # Lo scriptino eseguira' lo snapshot predisposto nel crontab hourly;
# |_________________________________________________________________________________
#
3 * * * * /bin/my_rsnapshot_hourly.sh
30 19 * * * /bin/my_rsnapshot_daily.sh
00 20 * * * /bin/my_rsnapshot_weekly.sh
00 20 1 * * /bin/my_rsnapshot_monthly.sh
#
#*************************************** F I N E ************

E' tutto. E funziona anche bene.

Eugenio

SMF 2.0.15 | SMF © 2013, Simple Machines
TinyPortal © 2005-2012

Indietro all'articolo