Solution de sauvegarde et de Backup à moins de 5 € par mois

La sauvegarde est un élément de sécurité non négligeable, les sauvegardes incrémentales permettent aisément de voir les fichiers qui ont été ajoutés ou modifiés entre deux dates données.

Au travers de ce billet , je vais présenter un puissant outil de sauvegardes automatisées entièrement paramétrable, à savoir BackupPC, qui est sous licence GPL : http://backuppc.sourceforge.net

Il gère aussi bien les postes de travail que les serveurs, sous Linux et sous Windows, grâce à ses diverses méthodes de copie et synchronisation : Samba, tar sur de SSH/RSH/NFS, ou encore rsync sur SSH/RSH.

BackupPC se compose de plusieurs scripts distincts, faciles à appréhender. c'est un outil extrêmement souple.

BackupPC se distingue des autres solutions de sauvegarde par sa souplesse, sa puissance, sa facilité de mise en oeuvre, et surtout pour les nombreuses fonctionnalités avancées :

  • Système ingénieux de mise en commun des fichiers sur les diverses sauvegardes, des différents serveurs : le fichier /etc/services des différentes machines Linux sera en général le même, idem pour les pages de man.
  • Pas de logiciel client à installer sur les machines : le protocole SMB (partage Windows natif) est utilisé avec les machines Windows, et tar ou rsync avec les machines Linux.
  • Interface web de gestion des sauvegardes effectuées, ainsi que des restaurations à effectuer. La gestion des comptes utilisateur permet à chacun de gérer les sauvegardes de sa ou ses machine(s).
  • Gestion des connexions non permanentes (ordinateurs portables), ainsi que des adresses IP dynamiques (reconnaissance par le nom des machines fournies lors de la requête DHCP).
  • Remontées d'alertes par e-mail pour chaque utilisateur : Ordinateur non sauvegardé depuis trop longtemps (car non connecté au réseau, par exemple), ou erreurs dans la sauvegarde

Serveur Kimsufi chez Ovh à 4.99

Je vais installer BackupPc sur un serveur Kimsufi OVH à 4.99€ https://www.kimsufi.com/fr/index.xml
La réservation et l'installation du serveur sont très simple et l'interface Kisufi d'OVH est agréable à utiliser. Lors de l'installation j'ai choisi la distribution Ubuntu Server 14.04 LTS. Vous pouvez choisir une autre distribution (il y a du Centos, Gentoo ...), mais la procédure d'installation sera légèrement différente.

Configuration du serveur

Ajouter un nouvel utilisateur : 
adduser ukim

Donnez lui les privilèges ROOT :
vi /etc/sudoers
Sous le commentaire # User privilege specification
Ajouter : ukim ALL=(ALL:ALL) ALL
Et commenter la ligne : #root ALL=(ALL:ALL) ALL

Désactiver le user root :
Connecter vous en tant que ukim et lancer la commande suivante :
sudo passwd -l root

Mise à jour de la distribution :
sudo apt-get update
sudo apt-get upgrade

Si vous avez l'habitude d'utiliser vi, je vous conseil d'installer vim-nox :
apt-get install vim-nox

Ajouter un nom de domaine en tant que host à votre installation
vi /etc/hosts

1xx.xx.1xx.222 nsxxx.ip-111-11-1111.eu nsxxx votredomaine
vi /etc/hostname
Remplacer le hostname par défaut par votre domaine.

Relancer le service hostname:
service hostname restart

Synchroniser l'heure de votre serveur
apt-get install ntp ntpdate

Installation Apache
apt-get install apache2 apache2-doc apache2-utils

Installation de BackupPc

sudo apt-get install backuppc

BackupPc va générer un mot de passe aléatoire pour l'utilisateur 'backuppc' qu'on peut changer via la commande suivante
htpasswd /etc/backuppc/htpasswd backuppc

Installation des librairies (recommandées)

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

BackupPc est fourni avec une interface Web très pratique. On va configurer un vhost avec un sous domaine pour accéder à l'interface.

main_page

Ajouter dans votre manager ovh ou autre un sous domaine backuppc.domaine.fr qui pointe vers l'IP de votre serveur.
Ensuite dans le serveur lancer la commande :
vi /etc/apache2/sites-available/backuppc.conf
et ajouter :

<VirtualHost *:80>
     ServerName backuppc.domaine.fr
     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 "BackupPC admin"
           require valid-user
     </Directory>
 </VirtualHost>

Activer le vhost Apache :
sudo a2ensite backuppc
sudo service apache2 reload

L'interface BackupPc est accessible via le sous domaine backuppc.domaine.fr

Configuration SSH entre le serveur de Backup et les clients

Il existe plusieurs méthodes de communication entre le serveur et les clients, mais pour des clients Linux le plus simple est d'utiliser rsync en SSH. On a besoin de configurer une paire de clés SSH (public et privé) sur le serveur et de transférer la clé publique aux serveurs clients.

  • Se connecter sur le serveur de sauvegarde et exécuter :
    • sudo su - backuppc
    • ssh-keygen -t rsa -C "backuppc"
  • Se connecter sur la machine qu'on veut Sauvegarder (le client)
    • Installer RSYNC apt-get install rsync
    • Ajouter un utilisateur spécial avec des droits rsync (root)
      • adduser backuppc
      • echo "backuppc ALL=NOPASSWD: /usr/bin/rsync" >> /etc/sudoers
  • Revenons sur le serveur BackupPc
    • Copier la clé SSH publique vers le client : ssh-copy-id backuppc@client

Pour tester que tout fonctionne bien lancer : ssh backuppc@client

si vous êtes connecté sans demande de mot de passe c'est que c'est Ok sinon il y a eu un soucis.

 Pour optimiser un peu la sécurité de notre clé SSH publique posée chez le client, on vas ajouter la directive from="serveur"
 Se connecter sur le client est lancer : vi ~/.ssh/authorized_keys

Ajouter :
 from="serveur" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAvWh3e .....

Configuration du client via l'interface Web de BackupPC

C'est presque fini , il reste à configurer le client à sauvegarder via l'interface Web de BackupPc

remote_host

Connecter vous à l'interface Web et ajouter le client :

  • cliquer sur "edit" host
  • Supprimer le host local : Cliquer sur "delete" localhost
  • Ajouter le client : Cliquer sur "add" host et ajouter l'adresse IP du serveur à sauvegarder
  • Cliquer sur "xfer"
  • Changer "xfermethod" de "smb" à "rsync"
  • Changer la valeur de "RsyncClientCmd" de $sshPath -q -x -l root $host $rsyncPath $argList+ à $sshPath -x -l backuppc $host /usr/bin/sudo $rsyncPath $argList+
  • Change the value of "RsyncClientRestoreCmd" de $sshPath -q -x -l root $host $rsyncPath $argList+ à $sshPath -x -l backuppc $host /usr/bin/sudo $rsyncPath $argList+
  • Cliquer sur "save"
rsync_settings

Personnaliser la sauvegarde

Par défaut BackupPc sauvegarde la machine entière, pour changer ce fonctionnement, dans la section RsyncShareName changer "/" par le chemin de votre choix par exemple /var/www.
Si vous voulez sauvegarder la machine entière, veuillez à exclure les répertoire "proc" et "sys" qui risquent de perturber les sauvegardes.
Dans la section "BackupFilesExclude" ajouter "*" ensuite insérer les valeurs "/proc" et "/sys" pour exclure ces répertoires de vos sauvegardes.

rsync_excludes

Et voilà le client est configuré, pour tester que tout se passe bien lancer un Backup FULL :

  • Cliquer sur "host summary"
  • Sélectionner l'adresse IP de votre client
  • Cliquer sur "start backup"
  • Cliquer sur "Start full backup"

La politique de sauvegarde par défaut de BackupPc :

  • Un Full Backup :
    • Chaque semaine
    • Garde seulement la dernière version
  • Un Backup Incrémental : 
    • Chaque jour
    • Garde les six derniers Backups

Si vous voulez changer cette politique il suffit de cliquer sur l'onglet "Schedule".

Pour 5 € / mois et avec BuckupPc on a une solution de Backup automatisée et sécurisée. Les possibilités de BackupPC sont immenses, et aisément accessibles au travers d'une interface web simple et efficace.

Ressources :

How To Use BackupPC to Create a Backup Server on an Ubuntu 12.04 VPS
BackupPC : Sauvegardes automatisées de machines

Introduction BackupPC part 1