80 lines
3.3 KiB
Bash
Executable file
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 :
|
|
|