BackupPC et les notifications par courriels + sauvegardes SQL
Ces dernier mois je me suis attelé à la mise en place d’un serveur de Backup, pour l’occasion, j’ai fait l’acquisition d’un nouveau nain, nommé Bashful, est comme son nom l’indique, il est timide, tellement qu’il est situé de l’autre côté du globe (Au Canada).
Après plusieurs essai, l’outil utilisé est BackupPC (Pas mis à jour depuis longtemps, mais relativement simple à prendre en main) :
– http://backuppc.sourceforge.net/
La configuration par défaut est un peu pauvre, et je me suis aperçu qu’aucun courriels n’est envoyés ni en cas d’erreurs de backups, ni en cas de succès !
Donc voici comment j’ai résolu mon problème :
Création d’un script d’envoi des courriels « /usr/share/backuppc/bin/BackupPC_NotifyByEmail »
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #!/bin/bash #Config FILE_CONFIG=/etc/backuppc/config.pl DIR_CONFIG=/etc/backuppc # Parametres recus ! succes=$1 # Correpond a $xferOK client=$2 [[ $succes == 0 ]] && { mail=`grep 'Conf{EMailAdminUserName}' $DIR_CONFIG/$client.pl | sed "s/.*'\(.*\)'.*/\1/"` [[ -z $mail ]] && { mail=`grep 'Conf{EMailAdminUserName}' $FILE_CONFIG | sed "s/.*'\(.*\)'.*/\1/"` } sujet="[BackupPc] Erreur(s) lors du backup '$client'"; echo | mail -s "$sujet" $mail <<EOT Au moins une erreur est survenue dans la sauvegarde de l'hote '$client' ! Merci de vous connecter au backoffice de supervision : http://ip/backuppc/index.cgi?host=$client EOT echo mail -s "$sujet" $mail } |
Ensuite il suffit d’aller dans la modification de la configuration, puis les paramatrères de sauvegardes pour modifier la valeur par défaut de « DumpPostUserCmd »
1 | /usr/share/backuppc/bin/BackupPC_NotifyByEmail $xferOK $client |
Pour finir, j’ai eu besoin d’un système de Backup SQL :
Pré-requis : Je backup des serveur mutualisé, donc pas toujours accès SSH, heureusement, on a toujours accès à mysqldump, via du php, de fait, la suite :
Attention : Cette partie est un peu brut, je le met surtout pour moi et pour garder trace.
1. Mettre en ligne un script PHP pour le dump SQL (accessible depuis l’extérieur), par exemple : /.sauvegardes/sqldumpall.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | $i = 0; $serv[$i]['name'] = "nom-du-serveur"; $serv[$i]['user'] = "user"; $serv[$i]['pass'] = "pass"; $serv[$i]['host'] = "localhost"; $serv[$i]['port'] = "3306"; $serv[$i]['ignore-table'][] = 'performance_schema.events_waits_current'; // Supprimer les backups anciens `find *.sql -atime +20 -exec rm \{\} \;`; // Parcourir les serveurs, pour les sauver foreach ($serv as $ss) { $fichier = 'dump_all_'.$ss['name'].'_'.date('Y-m-d_H-i').'.sql'; // Nom du fichier de sorti dump_all_NAME_YYYY-MM-DD_HH-mm.sql $cmd_add = "--set-charset --default-character-set=UTF8 --add-drop-table"; $cmd_add = isset($ss['ignore-table']) && is_array($ss['ignore-table']) ? '--ignore-table '.implode(' --ignore-table ', $ss['ignore-table']) : ''; // Execution $cmd = "mysqldump $cmd_add --host=$ss[host] --user=$ss[user] --passwor $ss[pass] --port=$ss[port] --all-databases --force --skip-comments -r $fichier"; $retour = system($cmd, $retour2); // On protège le fichier `chmod o-r $fichier`; if ($retour2 != 0) echo "\n\n-----\n- Erreur lors de la sauvegarde de : $ss[name]\n--\n- $cmd$\n--\n- $retour2\n-----\n\n"; } |
2. Faire un script pour BackupPc « /usr/share/backuppc/bin/BackupPC_DumpSql » :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #!/bin/bash #Config FILE_CONFIG=/etc/backuppc/config.pl DIR_CONFIG=/etc/backuppc # Parametres recus ! client=$1 http=$2 [[ -z $http ]] || { ret=$(wget -O - -- "$http" 2>/dev/null) mail=`grep 'Conf{EMailAdminUserName}' $DIR_CONFIG/$client.pl | sed "s/.*'\(.*\)'.*/\1/"` [[ -z $mail ]] && { mail=`grep 'Conf{EMailAdminUserName}' $FILE_CONFIG | sed "s/.*'\(.*\)'.*/\1/"` } sujet="[BackupPc] Erreur(s) lors du dump SQL '$client'"; echo | mail -s "$sujet" $mail <<EOT Au moins une erreur est survenue lors de la sauvegarde SQL de l'hote '$client' ! Merci de vous connecter au backoffice de supervision : http://ip/backuppc/index.cgi?host=$client /!\ Attention : Cela n'entrave pas la suite de la sauvegarde, BackupPc peux ne pas avoir remarqué le probléme. EOT echo "Erreur lors du Dump SQL" exit(2); } |
3. Configurer « DumpPreUserCmd », pour chaque Hôte :
1 | /usr/share/backuppc/bin/BackupPC_DumpSql $client http://ip/.sauvegardes/sqldumpall.php |