#!/bin/bash
#
# Declarations des variables a modifier
BACKUPDIR="/var/testbackup"
BACKUPLOG="/var/log/sauvegardes-test"
DATE=$(date +%d/%m/%Y)
HEURED=$(date +%Hh:%Mm:%Ss)
DOMAINE=""
ZIMBRA_CLI_PATH=/opt/zimbra/bin
#### Mail
SENDMAIL="/usr/sbin/sendmail"
DE="zimbra@votre-domaine.fr";
A="admin-zimbra@votre-domaine.fr";
# Fin des Declarations des variables
total_erreur=0
# creer les 2 repertoire (log et backup)
if [ ! -d ${BACKUPLOG} ];then
mkdir ${BACKUPLOG}
fi
if [ ! -d ${BACKUPDIR} ];then
mkdir ${BACKUPDIR}
fi
# toute sortie sont logger
exec 1>> ${BACKUPLOG}/backup-mail.log
exec 2>> ${BACKUPLOG}/error.log
# Saisie de l'heure de debut
echo "#"
echo "##### Debut de la sauvegarde du" $DATE "a" $HEURED "#####"
for account in $(${ZIMBRA_CLI_PATH}/zmprov -l gaa ${DOMAINE})
do
# Filtres des comptes
if [[ $account =~ 'spam' ]] || [[ $account =~ 'ham' ]] || [[ $account =~ 'virus' ]] || [[ $account =~ 'galsync' ]]
then
echo "Pas de backup pour: $account"
else
# liste des comptes pour les log
list="$list"'
 - '"$account"
# renaime des backups precedents
file="$BACKUPDIR"/"$account"
if [ -e "${file}_2.tgz" ]
then
mv ${file}_2.tgz ${file}_3.tgz
fi
if [ -e "${file}_1.tgz" ]
then
mv ${file}_1.tgz ${file}_2.tgz
fi
if [ -e "${file}.tgz" ]
then
mv ${file}.tgz ${file}_1.tgz
fi
# sauvegardes et j'envoie le resultat vers les fichier de log
${ZIMBRA_CLI_PATH}/zmmailbox -z -m "$account" getRestURL "//?fmt=tgz" > $BACKUPDIR/"$account".tgz 2>> ${BACKUPLOG}/error.log
# si la sortie gener une erreur
if [[ "$?" > 0 ]]
then
((total_erreur++))
fi
fi
done
# si erreur, je log et j'envoie un mail
if [[ "$total_erreur" > 0 ]]
then
echo "#
Il y a eu "$total_erreur" erreur(s) dans la sauvegarde. regarder le fichier: "${BACKUPLOG}"/error.log"
echo "La ligne du dessus est du: "$DATE" a "$HEURED 1>> ${BACKUPLOG}/error.log
# Creation du mail
SUBJECT="Subject: Erreur pendant la sauvegarde des comptes Zimbra";
BODY="Bonjour,

Le script de sauvegarde des mails a généré "$total_erreur" erreur(s).
Il est important de verrifier ces 2 fichiers:
"${BACKUPLOG}/error.log"
et
"${BACKUPLOG}/backup-mail.log"

Ce message est envoyé par: /var/testbackup.sh"
# Envoie du Mail
echo "from:"$DE > /tmp/mail-backup.txt
echo "to:"$A >> /tmp/mail-backup.txt
echo "$SUBJECT" >> /tmp/mail-backup.txt
echo "MIME-Version: 1.0" >> /tmp/mail-backup.txt
echo "Content-Type: text/plain; charset=\"utf-8\"" >> /tmp/mail-backup.txt
echo "$BODY" >> /tmp/mail-backup.txt
cat /tmp/mail-backup.txt | "$SENDMAIL" -t
fi
echo "#"
echo "Liste des comptes sauvegardés: ${list-account}"
echo "##### Fin de la sauvegarde a" $(date +%Hh:%Mm:%Ss) "#####"
