evobackup/evobackup_verify
2011-06-09 14:44:59 +02:00

80 lines
3.3 KiB
Bash
Executable file

#!/bin/sh
# Procedure de sauvegarde sur disque USB
DATE=$(date +"%Y-%m-%d")
MAIL=jdoe@example.com
MAIL2=jdoe+critique@example.com
# Mounter le disque USB
if [ "$1" = "on" ]; then
# On verifie que l'on etait bien en idle
STATE=`cat /etc/evobackup/lock`
if [ "$STATE" = "idle" ]; then
mount /backup 2> /dev/null
sleep 2
else
echo -e "La sauvegarde est bloquee (cf fichier lock)" | mail -s "[erreur] [Sauvegarde] Depart non effectuee" $MAIL
exit 1
fi
# On verifie que le montage est bien effectue
if df | grep /backup > /dev/null ; then
echo "Le disque dur USB est pret pour la sauvegarde." | mail -s "[info] EvoBackup - Disque dur USB OK" $MAIL
echo -n > /etc/evobackup/lock
else
echo -e "Le disque USB est mal active ou un probleme logiciel est intervenu.\nVeuillez verifier que les cables USB et alimentation sont correctement branches,\n et que le disque est bien allume (diode orange).\n\nUne fois ces verifications faites, veuillez en informer equipe@evolix.fr\n\nMerci." | mail -s "[erreur] [Sauvegarde] Probleme disque dur USB" $MAIL
echo error > /etc/evobackup/lock
exit 1
fi
# Fin de la sauvegarde
elif [ "$1" = "off" ]; then
# Lock ?
if [ ! -s /etc/evobackup/lock ]; then
# On verifie que le disque USB est toujours la
if df | grep /backup > /dev/null ; then
# Copie incrementale
cp -al /backup/last/ /backup/$DATE
# Alerte si l'espace disponible sur le disque devient faible
df_usb0=`df -h /backup`
disk_usage=`echo "$df_usb0"|perl -wlne 'print $1 if /(\d+)%/'`
if [ "$disk_usage" -gt "90" ]; then
echo -e "ATTENTION : L'espace disque maximal utilise lors de la derniere sauvegarde s'eleve a plus de 90% !!!\n\nVeuillez verifier que les backups se font correctement.\n\nUtilisation maximale : $disk_usage%\n" | mail -s "[alerte] [Sauvegarde] Occupation du disque USB critique" $MAIL2
fi
# Suppresion des vieux backups incrementaux
for backupdir in `ls -d /backup/20* | head -n -30`; do
echo "Suppression du backup $backupdir"
rm -rf $backupdir
done | mail -s "[info] EvoBackup - incrementaux" $MAIL
# On demonte et on passe en idle
umount /backup
echo idle > /etc/evobackup/lock
# On peut debrancher le disque USB
echo -e "La sauvegarde s'est correctement deroulee.\nBonne journee !" | mail -s "[info] EvoBackup - Debranchement du disque USB" $MAIL
else
# Si le disque n'est pas monte
echo -e "La sauvegarde n'a pas pu se terminer correctement pour une raison inconnue.\n\nMerci de ne pas debrancher le disque dur USB." | mail -s "[erreur] [Sauvegarde] Fin de sauvegarde non effectuee" $MAIL
fi
else
# Si la sauvegarde etait lockee
echo -e "La sauvegarde n'a pas pu se terminer correctement.\nCela est du a une duree trop longue de la sauvegarde ou bien a une erreur logicielle.\nL'administrateur a ete prevenu.\n\nMerci de ne pas debrancher le disque dur USB." | mail -s "[erreur] [Sauvegarde] Fin de sauvegarde non effectuee" $MAIL
exit 1
fi
fi
# vim: set filetype=sh expandtab shiftwidth=4 softtabstop=4 tabstop=4 :