Créer un serveur de sauvegarde

0

Si la plupart des hébergeurs proposent des solutions de sauvegarde dans leurs offres, ces sauvegardes s'avèrent souvent insuffisantes, nécessitant la mise en place d'un serveur de sauvegardes incrémentales externe. Tout ça pour à peine 5 € euros par mois

Qu’est ce qu’une sauvegarde incrémentale / incrémentielle?

Une sauvegarde complète est réalisée le jour J. Le jour J+1, la sauvegarde incrémentielle est réalisée par référence au jour J. Le jour J+2, la sauvegarde incrémentielle est réalisée par référence au jour J+1. Et ainsi de suite. (source:wikipedia)

BackupPC

Si certains préfèreront l’utilisation de scripts personnalisés, j’ai décidé pour ma part de mettre en place un serveur de sauvegarde grâce à un outil sous licence GPL, le fameux BackupPC (http://backuppc.sourceforge.net). Le gros avantage de cet outil, c’est qu’il permet de mettre en place des sauvegardes Linux, mais aussi Windows. Et surtout, il ne nécessite pas de logiciel client. On utilisera par exemple SMB sous Windows, et un simple Rsync pour Linux. De plus il dispose d’une interface Web très pratique permettant de configurer vos sauvegardes sans connaitre la moindre ligne de commande.

Maintenant que nous avons notre solution logicielle, intéressons-nous à la solution hardware. Un serveur de backup ne nécessite pas beaucoup de puissance. Il faut donc privilégier l’espace disque, voir le processeur, aux dépens de la mémoire.  Kimsufi propose justement un serveur avec 500 Go de disque pour seulement 4,99 € par mois. Online propose une configuration similaire pour 5,99 € par mois

L’interface d’administration de BackupPC tourne sous cgi, pas besoin donc de MySQL ou encore de PHP. On va donc se contenter du strict minimum, et partir sur une distribution Ubuntu server de base.

Configuration du serveur

J’ai réalisé ce tutoriel sur la base d’une distribution Ubuntu Server 14.04 « Trusty Tahr » LTS (64bits). Après l’installation de votre distribution, je commence toujours par désactiver l’utilisateur ROOT, et donc, créer un nouvel utilisateur

Création du nouvel utilisateur et choisissez un mot de passe :

adduser bckroot

Privilèges Root (édition avec VI):

vi /etc/sudoers

Ajouter la ligne suivante :

bckroot ALL=(ALL:ALL) ALL

Commenter la ligne pour l’utilisateur root:

#root ALL=(ALL:ALL) ALL

Sauvegardez et déconnectez-vous

logout

Maintenant, vous pouvez vous reconnecter avec le compte bckroot
Vous devrez lancer les opérations nécessitants le privilège root avec sudo

ssh bckroot@votredomaine

Désactivation du root :

sudo passwd -l root

Comme à chaque nouvelle installation, faites une mise à jour:

sudo apt-get update
sudo apt-get upgrade

Synchronisation de l’heure

sudo apt-get install ntp ntpdate

Installation d’Apache

sudo apt-get install apache2 apache2-doc apache2-utils

Installation des librairies recommandés

sudo apt-get install rsync libfile-rsyncp-perl par2 bzip2 libarchive-tar-perl libcompress-bzip2-perl libxml-rss-perl libfile-rsyncp-perl

Voilà, le serveur est configuré avec les éléments indispensables pour faire tourner BackupPC

Installation de BackupPc

sudo apt-get install backuppc

Suivez les instructions de l’écran d’installation (pour ma part j’ai choisi Web), les options par défaut sont généralement celles qu’il vous faut. Sur le dernier écran, BackupPC va générer un mot de passe pour l’utilisateur backuppc. Notez le bien.
Vous pouvez aussi modifier ce mot de passe :

htpasswd /etc/backuppc/htpasswd backuppc

C’est tout pour backupPC. Nous allons configurer maintenant le vhost pour accéder à l’interface web. A titre personnelle, j’ai fait pointer un sous-domaine vers ce serveur. Mais vous pouvez tout à fait utiliser le vhost d’origine et l’adapter à vos besoins.

vi /etc/apache2/sites-available/backuppc.conf

Ajouter les lignes suivantes (création du vhost, des directives cgi et ajout de l’authentification) :

<VirtualHost *:80>
 ServerName backup.votredomaine.com
 DocumentRoot /usr/share/backuppc/cgi-bin/
 <Directory /usr/share/backuppc/cgi-bin/>
 AllowOverride None
 Options ExecCGI FollowSymlinks
 AddHandler cgi-script .cgi
 DirectoryIndex index.cgi
 AuthGroupFile /etc/backuppc/htgroup
 AuthUserFile /etc/backuppc/htpasswd
 AuthType basic
 AuthName "Admin BackupPC"
 require valid-user
 </Directory>
 </VirtualHost>

Il ne reste pus qu’à activer cet hôte virtuel

sudo a2ensite backuppc
sudo service apache2 reload

A partir de ce point, votre interface Web est accessible. Avant de poursuivre, nous allons changer le dossier par défaut du stockage des sauvegardes. Initialement, vos backups sont stockés dans /var/lib/backuppc. Malheureusement, chez ovh par exemple, le dossier var est monté sur une petite partition. L’essentiel de l’espace disque étant alloué au dossier /home. Pour vérifier quelle est votre plus grande partition :

df -h

Dans mon cas, ils s’agit de /dev/sda3 monté sur /home. Je vais donc déplacer le dossier de sauvegarde sur /home :

sudo mkdir /home/backup
sudo chown backuppc:backuppc /home/backup
sudo cp -dpR /var/lib/backuppc/. /home/backup
sudo rm -rf /var/lib/backuppc
sudo ln -s /home/backup /var/lib/backuppc

Concrètement : création du dossier dans /home – droits pour l’utilisateur backuppc – copie de l’ancien dossier dans le nouveau – Suppression de l’ancien dossier – création d’un lien symbolique.

A ce stade, vous disposez d’un serveur de sauvegarde opérationnel. Il ne reste plus qu’à configurer les accès SSH entre les différents serveurs, dans le cadre d’une sauvegarde Linux, et enfin de configurer le client depuis l’interface web. Ce sera l’objet de la deuxième partie de ce tutoriel.



Recevoir la newsletter

Recevoir la newsletter

Recevez les dernières news et astuces Wordpress & Développement Web par email une fois par semaine

Bravo, vous êtes inscrits