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.