0

BackupPC et les notifications par courriels + sauvegardes SQL

Posted by Division-par-zero on 20 janvier 2013 in Autres nains, Backup, Bashful, Technique |

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

Laisser un commentaire

Copyright © 2010-2024 Le blog de Grumpy All rights reserved.
This site is using the Desk Mess Mirrored theme, v2.5, from BuyNowShop.com.