Documentation

HomePage

Backupeur est un script qui va vous permettre d'effectuer des sauvegardes des fichiers, de bases mysql vers un disque dur ou alors vers un lecteur de bande type DAT ou LTO. Il est très facile d'ajouter des fonctions par l'écriture de Plugins.

Ce programme est distribué telle quel et sans aucune garantit. Il est distribué sous la licence GPL.

Structure

Backupeur est décomposé en plusieurs fichiers :

  • /etc/backupeur/backupeur.conf est le fichier de configuration principal. Pour simplifier les mises à jours j'ai opté pour un système que l'on retrouve souvent sur Debian. Je vous conseil de dupliquer ce fichier en le nommant backupeur.conf.local et c'est dans ce fichier que vous devrez faire la configuration. De cette manière lors d'une mise à jour votre configuration restera;
  • /etc/backupeur/plugins est le répertoire où mettre vos plugins;
  • /usr/bin/backupeur est le cœur du programme.

Fonctionnement

Depuis la mise en place des plugins il existe deux type de sauvegardes :

  • La création des archives;
  • Les méthodes de transfert.

Création des archives

Ces plugins permettent de créer des sauvegardes à partir de n'importe qu'elle source, à condition d'écrire le plugin qui va bien. Par défaut backupeur est fourni avec :

  • file : sauvegarde des fichiers depuis le système de fichiers;
  • mysql : sauvegarde des bases de données mysql;
  • ldap : sauvegarde un annuaire ldap;
  • config : sauvegarde les fichiers de configuration de vos serveur.

Les méthodes de transfert

Ces plugins permettent de choisir vers quel support vont être transféré les archives créé avec l'un des plugins d'archives. Par défaut backupeur est fourni avec :

  • bande : transfert les archives sur une bande type lto ou dat;
  • ftp : transfert les archives vers un serveur ftp.

Configuration

Comme expliqué au début backupeur comporte un fichier de configuration de base /etc/plugins/backupeur.conf. Pour simplifier la mise à jour dupliqué le en backupeur.conf.local. Il comporte la configuration de base du script.

# --------------------------------------
# Paramatre generique
# --------------------------------------
BIN="/bin"
BINDIR="/usr/bin"
MAILDIR=$(which mail)
TARDIR=$(which tar)
RMDIR=$(which rm)
DATEDIR=$(which date)
CATDIR=$(which cat)
FINDDIR=$(which find)
EXPRDIR=$(which expr)
STATDIR=$(which stat)
MKTEMPDIR=$(which mktemp)
ECHODIR=$(which echo)
TOUCHDIR=$(which touch)
WCDIR=$(which wc)
SEDDIR=$(which sed)
 
# Fichier utilisé pour écrire les logs
LOGDIR="/var/log/backupeur.log"
 
# Personnes à qui envoyé le rapport d'erreur
# separe par une virgule
MAIL="root"
 
# Duree de temps de rétention en jours
# ne s'applique par à la sauvegarde sur bande
# par exemple pour une durée de rétention de 1
# ça veut dire qu'une archive créée le 20/01
# sera supprime le 22/01.
# N'est pas utilise pour la sauvegarde sur bande
RETENTION=1
 
# Nombre de fichier log temporaire à conserver
RETENTION_TEMP=5
 
# Nombre de jour de sauvegarde à tranférer sur
# bande ou ftp
# Exemple :
# La copie des archives sur bande est lancé le 10/07/2008 a 10h00
# Si NBJOUR_TRANSFERT=1 alors les archives 10/07/2008 et 09/07/2008
# seront transférées.
# Plus la valeur de NBJOUR_TRANSFERT est grande plus le nombre de jour
# d'archives seront transférées. Pour transférer uniquement l'archive du
# jour mettre 0.
NBJOUR_TRANSFERT=1
 
# Nom de la machine qui lance la sauvegarde
NAME_HOST=`hostname`
 
# Options utilisé par tar pour créer les
# archives
# ATTENTION ne pas activer l'option -v
# ATTENTION l'option -f doit être la dernière de la liste
TAR_OPT="-c -z -p -f"
 
# Liste des fichiers ou extension
# exclue de la sauvegarde
TAR_EXCLUDE[0]="*.mp3"
TAR_EXCLUDE[1]="*.avi"
TAR_EXCLUDE[2]="*.mpg"
TAR_EXCLUDE[3]="*.mpeg"
TAR_EXCLUDE[4]="*.mov"
TAR_EXCLUDE[5]="*.qt"
TAR_EXCLUDE[6]=".recycle"
TAR_EXCLUDE[7]="*.tmp"
TAR_EXCLUDE[8]="Thumbs.db"
TAR_EXCLUDE[9]="lost+found"
# -------------------------------------
 
# -------------------------------------
# Répertoire de sauvegarde des fichiers
# sans le / après, n'est pas utilisé dans
# le cas d'une sauvegarde sur bande
BACKUP_DEST="/backup"
# -------------------------------------

Je détaillerais la configuration exacte dans un exemple.

Plugins

Depuis la version 0.1-3 l'ajout de fonctions de sauvegarde a été simplifié par la gestion de plugins. Dans le répertoire /etc/backupeur/plugins vous pouvez ajouter vos propres scripts shell (je l'expliquerais plus loin). Tout comme le fichier de configuration backupeur.conf, la configuration des plugins utilise un fichier nomplugin.conf que vous devez dupliquer en nomplugin.conf.local. Nous verrons un peu plus tard en exemple comment configurer chaque plugins.

Exemple

Pour l'exemple j'ai créé une plateforme de test, un petit shéma pour mieux comprendre. Backupeur

Sur le serveur svbackup vous devez créer un répertoire qui va accueillir tout les répertoires de chaque serveurs à sauvegarder. Pour l'exemple nous allons le créer à la racine de votre système et nous l'appellerons backup/. Dans ce répertoire créé des sous répertoires au noms de vos autres serveurs. Le nomage est libre mais pour mieux retrouvé vos petits je vous conseil d'être logique. Pour notre exemple nous allons créer les répertoires :

  • svdom;
  • svintra.

La liaison entre chaque serveur est faites par nfs (je ne détail pas la configuration ici).

svdom

Ce serveur est utilisé comme contrôleur de domaine samba et il est couplé avec un annuaire ldap. Pour le sauvegarder nous allons utiliser les plugins d'archives file et ldap. Dans un premier temps la configuration de backupeur.conf.local.

BIN="/bin"
BINDIR="/usr/bin"
MAILDIR=$(which mail)
TARDIR=$(which tar)
RMDIR=$(which rm)
DATEDIR=$(which date)
CATDIR=$(which cat)
FINDDIR=$(which find)
EXPRDIR=$(which expr)
STATDIR=$(which stat)
MKTEMPDIR=$(which mktemp)
ECHODIR=$(which echo)
TOUCHDIR=$(which touch)
WCDIR=$(which wc)
SEDDIR=$(which sed)
 
LOGDIR="/var/log/backupeur.log"
 
MAIL="root"
 
RETENTION=1
 
RETENTION_TEMP=5
 
NBJOUR_TRANSFERT=1
 
NAME_HOST=`hostname`
 
TAR_OPT="-c -z -p -f"
 
TAR_EXCLUDE[0]="*.mp3"
TAR_EXCLUDE[1]="*.avi"
TAR_EXCLUDE[2]="*.mpg"
TAR_EXCLUDE[3]="*.mpeg"
TAR_EXCLUDE[4]="*.mov"
TAR_EXCLUDE[5]="*.qt"
TAR_EXCLUDE[6]=".recycle"
TAR_EXCLUDE[7]="*.tmp"
TAR_EXCLUDE[8]="Thumbs.db"
TAR_EXCLUDE[9]="lost+found"
 
BACKUP_DEST="/backup"

Pour simplifier la lecture j'ai supprimé les commentaires. La partie intéressante commence à la variable MAIL.

  • MAIL : adresse e-mail vers qui envoyer les rapports. Il peut avoir plusieurs destinataires, il suffit de séparer les adresses par une virgule;
  • RETENTION : c'est le temps en jour qu'une archive va être conservé;
  • RETENTION_TEMP : à chaque lancement un fichier temporaire est généré pour stocker les messages renvoyés par les différents programme. Cette variable permet de définir le nombre de jour ou un fichier est gardé;
  • NBJOUR_TRANSFERT : c'est le nombre de jour d'archivage ou une archive va être transféré sur un support type bande ou ftp. Ce paramètre peut être pratique si par exemple vous lancé des sauvegardes à 23h et d'autres à 1h. Avec une valeur de 0 seul celle lancé à 1h sera sauvegardé, alors qu'avec une valeur de 1 celle de 23h sera elle aussi copié;
  • TAR_OPT : liste des options utilisé par tar pour créer les archives, attention à bien laissé le paramètre -f en dernier;
  • TAR_EXCLUDE[x] : masque de fichier à ne pas ajouter aux archives.
  • BACKUP_DEST : répertoire de destination des archives créé par tar. Dans notre exemple nous utiliserons le répertoire que vous avez monté sur votre système via un partage nfs, mais ça peut être une toute autre méthode. Il faut absolument que votre point de montage soit vue comme faisait partie de système de fichier local, c'est pour cette raison que je conseil nfs.

Configuration du plugin file

Copier le fichier plugins/file.conf en plugins/file.conf.local, édité ce dernier :

0 1 2 3
BACKUP_DIR[0]="/home"
BACKUP_DIR[1]="/home/netlogon"
BACKUP_DIR[2]="/home/profiles"
BACKUP_DIR[3]="/home/public"

La configuration est très simple. Il faut juste lui indiquer les répertoires que vous souhaitez sauvegarder.

Configuration du plugin ldap

Copier le fichier plugins/ldap.conf en plugins/ldap.conf.local, édité de dernier :

0 1 2 3 4 5 6
LDAPSEARCHDIR=$(which ldapsearch)
LDAP_HOST="ldap.domaine"
LDAP_DN="dc=root,dc=fr"
LDAP_USER=""
LDAP_PWD=""
LDAP_OPT="-h ${LDAP_HOST} -x -LLL -D ""cn=${LDAP_USER}"",${LDAP_DN}"" -w ${LDAP_PWD}"
LDAP_PREFIX="ldap"
  • LDAP_HOST : nom de domaine ou adresse ip de votre serveur ldap
  • LDAP_DN : distinguished name de votre annuaire;
  • LDAP_USER : nom d'utilisateur autorisé à parcourir en lecture la totalité de votre annuaire;
  • LDAP_PWD : mot de passe de l'utilisateur;
  • LDAP_OPT : liste des options à utiliser avec ldapsearch;
  • LDAP_PREFIX : prefix du nom des archives générées.

La partie configuration est terminé. Pour lancer la sauvegarde des fichiers (plugin file) utilisé la commande :

<blockquote>/usr/bin/backupeur file</blockquote>

Surveiller le fichier /var/log/backupeur.log pour voir ce qu'il ce passe.

Pour lancer la sauvegarde de l'annuaire ldap (plugin ldap) utilisé la commande :

<blockquote>/usr/bin/backupeur ldap</blockquote>

Surveiller le fichier /var/log/backupeur.log pour voir ce qu'il ce passe.

svintra

Ce serveur est utilisé comme serveur intranet et il est couplé avec un serveur mysql comportant plusieurs bases de données. Pour le sauvegarder nous allons utiliser les plugins d'archives file et mysql. Dans un premier temps la configuration de backupeur.conf.local.

BIN="/bin"
BINDIR="/usr/bin"
MAILDIR=$(which mail)
TARDIR=$(which tar)
RMDIR=$(which rm)
DATEDIR=$(which date)
CATDIR=$(which cat)
FINDDIR=$(which find)
EXPRDIR=$(which expr)
STATDIR=$(which stat)
MKTEMPDIR=$(which mktemp)
ECHODIR=$(which echo)
TOUCHDIR=$(which touch)
WCDIR=$(which wc)
SEDDIR=$(which sed)
 
LOGDIR="/var/log/backupeur.log"
 
MAIL="root"
 
RETENTION=1
 
RETENTION_TEMP=5
 
NBJOUR_TRANSFERT=1
 
NAME_HOST=`hostname`
 
TAR_OPT="-c -z -p -f"
 
TAR_EXCLUDE[0]="*.mp3"
TAR_EXCLUDE[1]="*.avi"
TAR_EXCLUDE[2]="*.mpg"
TAR_EXCLUDE[3]="*.mpeg"
TAR_EXCLUDE[4]="*.mov"
TAR_EXCLUDE[5]="*.qt"
TAR_EXCLUDE[6]=".recycle"
TAR_EXCLUDE[7]="*.tmp"
TAR_EXCLUDE[8]="Thumbs.db"
TAR_EXCLUDE[9]="lost+found"
 
BACKUP_DEST="/backup"

Pour simplifier la lecture j'ai supprimé les commentaires. La partie intéressante commence à la variable MAIL.

  • MAIL : adresse email vers qui envoyer les rapports. Il peut avoir plusieurs destinataires, il suffit de séparer les adresses par une virgule;
  • RETENTION : c'est le temps en jour qu'une archive va être conservé;
  • RETENTION_TEMP : à chaque lancement un fichier temporaire est généré pour stocker les messages renvoyés par les différents programme. Cette variable permet de définir le nombre de jour ou un fichier est gardé;
  • NBJOUR_TRANSFERT : c'est le nombre de jour d'archivage ou une archive va être transféré sur un support type bande ou ftp. Ce paramètre peut être pratique si par exemple vous lancé des sauvegardes à 23h et d'autres à 1h. Avec une valeur de 0 seul celle lancé à 1h sera sauvegardé, alors qu'avec une valeur de 1 celle de 23h sera elle aussi copié;
  • TAR_OPT : liste des options utilisé par tar pour créer les archives, attention à bien laissé le paramètre -f en dernier;
  • TAR_EXCLUDE[x] : masque de fichier à ne pas ajouter aux archives.
  • BACKUP_DEST : répertoire de destination des archives créé par tar. Dans notre exemple nous utiliserons le répertoire que vous avez monté sur votre système via un partage nfs, mais ça peut être une toute autre méthode. Il faut absolument que votre point de montage soit vue comme faisait partie de système de fichier local, c'est pour cette raison que je conseil nfs.

Configuration du plugin file

0 1 2
BACKUP_DIR[0]="/data/www/dev/expe"
BACKUP_DIR[1]="/data/www/dev/galleries"
BACKUP_DIR[2]="/data/www/dev/glpi"

Configuration du plugin mysql

0 1 2 3 4 5 6 7 8
MYSQLDUMPDIR=$(which mysqldump)
MYSQL_PREFIX="mysql"
MYSQL_HOST="localhost"
MYSQL_PORT=3306
MYSQL_USER="backupmanager"
MYSQL_PASS=""
MYSQL_OPT="--add-drop-table --complete-insert --quick --quote-names --hex-blob"
BACKUP_MYSQL[0]="mysql"
BACKUP_MYSQL[1]="glpi_prod"
  • MYSQL_PREFIX : prefix du nom des archives générées;
  • MYSQL_HOST : nom dns ou adresse ip du serveur mysql
  • MYSQL_PORT : port de connexion au serveur mysql;
  • MYSQL_USER : nom d'utilisateur mysql authorisé à lire toutes les bases que vous souhaiter sauvegarde;
  • MYSQL_PASS : mot de passe de l'utilisateur mysql;
  • MYSQL_OPT : liste des options utilisé par mysqldump;
  • BACKUP_MYSQL[x] : liste des bases de données à sauvegarder. Une archive par base sera créée.

La configuration est terminé. Pour lancer la sauvegarde des fichiers utiliser la commande :

0
/usr/bin/backupeur file

Pour lancer la sauvegarde des bases de données utiliser la commande :

0
/usr/bin/backupeur mysql

Surveiller le fichier /var/log/backupeur.log pour voir ce qu'il se passe.

svbackup

.... A faire :) ...

Créer un profil de sauvegarde

<b>Attention : fonction disponible uniquement avec la version 0.3</b><br /> Si vous voulez sauvegarder des postes utilisateurs maintenant il est possible de définir des paramètres propres à chaque compte utilisateur. Sur les postes à sauvegarder installer backupeur, connectez-vous en terminal avec le compte utilisateur :

0 1 2 3 4 5
cd ~
mkdir .backupeur .backupeur/plugins
cd .backupeur
cp /etc/backupeur/backupeur.conf backupeur.conf.user
cd plugins
cp /etc/backupeur/plugins/file.conf file.conf.user
 
This page feed: RSS or Atom.
Global feed: RSS or Atom.