Aujourd’hui, je vous propose un petit dossier sur la mise en place d’un système de sauvegarde automatique (backup) sur son serveur dédié de type linux (Debian, Ubuntu, etc…). Le but : sauvegarder des données importantes automatiquement comme l’ensemble des sites internet hébergés, leurs bases de données (BDD), des mails, vos configurations virtual hosts, etc…
Pour cela, nous allons utiliser Backup Manager, gestionnaire de sauvegarde qui vous évitera de perdre des données importantes de votre machine personnelle et / ou de votre serveur dédié d’entreprise.
Rapide tour d’horizon… la solution Backup-manager vous permet tout simplement de réaliser des sauvegardes de fichiers locaux sous formes d’archives (compressées ou pas – ex : tar, tar.gz, tar.bz2, zip, dar) puis de les exporter sur un autre espace de stockage via FTP, SSH, RSYNC ou encore sur CD/DVD. Ces backups peuvent êtres fait de manière complète, incrémentielle et ce de manière périodique avec l’association d’une tache CRON. Vous vous retrouvez donc avec des sauvegardes automatiques totalement paramétrées !
La restauration des données, elle, n’est cependant pas automatisée : il faudra extraire les données des archives pour pouvoir les travailler.
Installation de Backup Manager
Aller, entrons dans le vif du sujet et installons Backup-manager avec la commande suivante :
apt-get install backup-manager
Configuration de Backup Manager
Tout se passe désormais dans le fichier de configuration backup-manager.conf situé dans le répertoire /etc/. Pour cela, éditez le fichier avec la commande suivante :
vi /etc/backup-manager.conf
Il faut ensuite configurer les options selon le type de sauvegarde souhaité. Voici un tableau récapitulatif de différents choix (pas tous mais les plus importants) qui s’offrent à vous :
Option | Exemple de valeur | Description de l’option |
Archivage local |
||
---|---|---|
BM_REPOSITORY_ROOT | /files/backup | Répertoire local où stocker les archives |
BM_ARCHIVE_TTL | 5 | Nombre d’archives conservées en local |
BM_ARCHIVE_METHOD | tarball | Type de sauvegarde à réaliser. Peut-être tarball, tarball-incremental, mysql, svn ou pipe |
Éléments à sauvegarder | ||
BM_TARBALL_DIRECTORIES | /var/www /var/lib/mysql | Liste des répertoires à sauvegarder |
BM_TARBALL_BLACKLIST | /files/backup /var/log | Liste de répertoires à ne pas sauvegarder |
Transfert des sauvegardes |
||
BM_UPLOAD_METHOD | ftp | Méthode de transfert des sauvegardes |
BM_UPLOAD_FTP_USER | usr-jul | Identifiant à utiliser pour le serveur FTP |
BM_UPLOAD_FTP_PASSWORD | juli1bck | Mot de passe à utiliser pour le serveur FTP |
BM_UPLOAD_FTP_HOSTS | backup.monhebergeur.fr | Hôte du serveur FTP |
BM_UPLOAD_FTP_PURGE | true | Purge le répertoire lorsque qu’une archive est expirée |
BM_UPLOAD_FTP_DESTINATION | / | Répertoire de destination où copier les sauvegardes |
Sauvegarde incrémentielle |
||
BM_TARBALLINC_MASTERDATETYPE | weekly | Fréquence de de la sauvegarde complète. Peut être weekly ou monthly |
BM_TARBALLINC_MASTERDATEVALUE | 1 | Jour de création de la sauvegarde 1 = lundi, 3 = mercredi par exemple pour une sauvegarde par semaine (weekly) |
Sauvegarde de la base de donnée MySQL | ||
BM_MYSQL_DATABASES | __ALL__ | Nom de la base de donnée MySQL. __ALL__ sauvegarde toutes les bases |
BM_MYSQL_ADMINLOGIN | root | Identifiant à utiliser pour se connecter au serveur MySQL |
BM_MYSQL_ADMINPASS | juli1bck | Mot de passe associé à l’identifiant précédent |
BM_MYSQL_HOST | “localhost” | Hôte du serveur MySQL |
BM_MYSQL_PORT | 3306 | Port d’écoute du serveur MySQL |
BM_MYSQL_FILETYPE | bzip2 | Format de compression. Peut être gzip or bzip2 |
Serveur SVN | ||
BM_SVN_REPOSITORIES | / | Chemin absolu du répertoire SVN |
BM_SVN_COMPRESSWITH | bzip2 | Format de compression. Peut être gzip or bzip2 |
Avancé | ||
BM_PRE_BACKUP_COMMAND | Permet d’exécuter un script shell avant la première action de Backup Manager | |
BM_POST_BACKUP_COMMAND | Permet d’exécuter un script shell après la dernière action de Backup Manager |
Pour notre part, dans cet exemple, nous allons réaliser une sauvegarde complète automatique journalière (à 4H du matin) de l’ensemble des éléments suivant :
- Répertoire /var/www ou est situé un site internet
- Répertoire /sites-internet/websites ou sont situés plusieurs sites internet
- Répertoire /var/mail ou sont situés les mails
- Répertoire /etc/apache2/sites-avalable qui contient tous les Virtual Hosts
- Répertoire /var/lib/mysql qui contient l’ensemble des bases de données MySQL
Voici donc les options principales modifiées de notre fichier backup-manager.conf
export BM_REPOSITORY_ROOT="/sites-internet/archives-bckpm" export BM_REPOSITORY_ROOT="/var/archives" export BM_ARCHIVE_TTL="5" export BM_ARCHIVE_METHOD="tarball" export BM_TARBALL_FILETYPE="tar.gz" export BM_TARBALL_DIRECTORIES="/sites-internet/websites /var/lib/mysql /etc/apache2/sites-available /var/www /var/mail"
Sauvegardes automatisées via un CRON
Alors, comment automatiser tout cela ? Oui, car, jusqu’à présent rien ne nous dit comment faire cette sauvegarde automatiquement de manière journalière. Pour cela exécutez le code suivant dans un shell :
cat << EOF > /var/backup-manager.sh && chmod 700 /var/backup-manager.sh #!/bin/sh test -x /usr/sbin/backup-manager || exit 0 /usr/sbin/backup-manager EOF #J'ai mis /var/ comme répertoire mais vous pouvez mettre celui de votre choix à partir du moment ou vous le créez auparavant.
Ensuite, éditez le crontab pour y ajouter votre ficher backup-manager.sh :
crontab -e
puis insérez la ligne :
0 4 */1 * * /var/backup-manager.sh
Et voilà, c’est terminé ! Vous n’avez plus qu’à vérifier sur votre ftp serveur ou autre que votre sauvegarde a bien été transférée.
Le 28 avril 2013 à 14:12 Nicolaï