Sauvegarde et restauration avec Rdiff-Backup

I. Présentation

Rdiff-backup est un script écrit en Python qui permet de faire des sauvegardes d'un répertoire source vers un répertoire de destination. Il permet la sauvegarde incrémentielle c'est à dire qu'à chaque nouvelle sauvegarde, les fichiers créés ou modifiés sont sauvegardés, peu importe si la sauvegarde précédente fût une sauvegarde complète, différentielle ou incrémentielle.

II. Installer le paquet rdiff-backup

Dans un premier temps, mettez à jour la liste de vos paquets et installez le paquet, faites cela grâce aux commandes suivantes :

apt-get update
apt-get install rdiff-backup

 

III. Visualisez la documentation

Pour en savoir plus sur l'utilisation, vous pouvez visualisez la documentation à l'aide de la commande :

man rdiff-backup

 

IV. Sauvegarder un répertoire source vers un répertoire de destination

Pour commencer, nous allons faire une sauvegarde basique c'est à dire que l'on va indiquer un répertoire source et indiquer vers qu'elle destination il doit être sauvegardé. Par exemple, nous allons sauvegarder le répertoire "/home/neoflow/tuto/" vers "/home/neoflow/sauvegarde/". Pour se faite il faut utiliser la commande suivante :

rdiff-backup /home/neoflow/tuto/ /home/neoflow/sauvegarde/

Dès que vous allez exécuter cette commande, la sauvegarde va s'effectuer.

V. Sauvegarder des répertoires sources vers un répertoire de destination

Pour se faire, on va utiliser un fichier qui contiendra le chemin vers chaque répertoire source à sauvegarder.

Par exemple, nous allons sauvegarder "/home/neoflow/tuto/" et "/home/neoflow/docs/" vers le répertoire de sauvegarde "/home/neoflow/sauvegarde/". Tout d'abord on crée un fichier texte et on inscrit le chemin des répertoires sources à sauvegarder :

nano dir-source.txt

Dans ce fichier on saisit :

/home/neoflow/tuto/
/home/neoflow/docs/

Puis, bien sur, on saisit la commande qui va permettre d'exécuter la sauvegarde :

rdiff-backup --include-globbing-filelist dir-source.txt --exclude '**' / /home/neoflow/sauvegarde/

La commande est légèrement complexe mais je trouve que le fait d'utiliser un fichier pour lister les répertoires à sauvegarder rend la modification plus simple et plus claire. Il suffit d'ajouter le chemin du répertoire dans le fichier, la commande quant à elle ne change pas. Le "--exclude '**'" indique qu'on exclu tout le reste de la sauvegarde et donc qu'on sauvegarde uniquement les répertoires listés dans le fichier.

VI. Sauvegarde sur une machine distante via SSH

Il est possible d'effectuer une sauvegarde vers une machine distante, ce qui permet d'externaliser les données et, donc, d'augmenter la sécurité en ce qui concerne la conservation des données. De plus, le fait que le transfert des données soit réalisé grâce au protocole SSH sécurise la transmission des données.

Pour pouvoir faire un transfert entre les deux machines, elles doivent avoir toutes les deux un serveur SSH d'installé (vous pouvez l'installer grâce à la commande : apt-get install ssh) et le paquet rdiff-backup sinon ca ne fonctionnera pas. Ensuite, il suffira d'indiquer l'hôte de destination, l'utilisateur à utiliser et le répertoire de destination à la suite de la commande rdiff-backup et de la source.

rdiff-backup /source utilisateur@ip_machine_destination::répertoire_de_sauvegarde

Par exemple, si on sauvegarde le répertoire "/home/neoflow/" sur la machine qui a pour IP 192.168.1.102 dans le répertoire "/sauvegarde/" on saisit cette commande :

rdiff-backup /home/neoflow/ root@192.168.1.102::/sauvegarde/

VII. La notion de "exclude" et "include"

En utilisant "--exclude" et "--include" on peut exclure ou inclure des fichiers/dossiers d'une sauvegarde. Il suffit de préciser ce que l'on veut inclure ou exclure avant d'indiquer la destination. Il existe une multitude d'options pour ces deux paramètres, vous pouvez obtenir plus de détails dans la documentation de rdiff-backup.

VIII. La notion de "max-file-size" et "min-file-size"

Grâce à ce paramètre vous pouvez exclure les fichiers qui dépasse la taille maximale (max-file-size) que vous indiquez ou qui ne dépasse pas la taille minimale d'un fichier pour qu'il soit sauvegarder (min-file-size). Vous devez indiquer cette taille en octets.

IX. Supprimer des sauvegardes avec "remove-older-than"

Rdiff-backup inclue un paramètre qui permet de supprimer les sauvegardes dans le dossier de destination qui sont plus vieilles que "n"...

rdiff0

...où "n" est un entier. De plus il est possible, de supprimer les sauvegardes plus vieilles de "7 jours, 10 heures et 15 minutes" en indiquant "7D10H15m". La commande que l'on devra utiliser sera la suivante :

rdiff-backup --remove-older-than 7D10H15m /home/neoflow/sauvegardes/

Vous pouvez également indiquer la directive "--force" si il y a plusieurs sauvegardes à effacer sinon l'application vous retournera une erreur.

X. Listing sur les sauvegardes effectuées

Vous pouvez lister le nombre de sauvegardes effectuées pour un de vos répertoire de sauvegarde et la date de la dernière incrémentation en saisissant la commande suivante :

rdiff-backup -l /répertoire_de_la_sauvegarde/

Pour avoir plus de précision sur les différentes incrémentations de vos sauvegardes, vous pouvez utiliser la commande suivante :

rdiff-backup --list-increment-size /répertoire_de_la_sauvegarde/

Ainsi, vous allez avoir l'heure de l'incrémentation, sa taille et la taille totale de la sauvegarde.
rdiff1

XI. Statistiques sur les sauvegardes effectuées

rdiff-backup-statistics /répertoire_de_la_sauvegarde/ |more

Les statistiques nous donnes un paquet d'informations, par exemple, voici les statistiques pour le répertoire de sauvegarde "/home/neoflow/sauvegarde/" :

rdiff2

XII. Restaurer une sauvegarde

Bien sur, il est possible de restaurer les sauvegardes que l'on effectue sinon ce n'aurait pas grand intérêt si on ne pourrait pas automatiser la restauration et devoir tout restaurer manuellement.

Pour restaurer une sauvegarde à son état d'il y a 1 jour, 1 mois, 1 heure,... cela dépend de ce que permettent vos sauvegardes et de ce que vous souhaitez. Pour indiquer à combien de temps en arrière faut-il revenir, vous pouvez utiliser le tableau ci-dessus, ça fonctionne sur le même principe. Si vous souhaitez restaurer la sauvegarde la plus récente indiquez le paramètre "now".

La commande devra être sous cette forme (exemple avec 15 minutes) :

rdiff-backup -r 15m /répertoire_de_la_sauvegarde/ /répertoire_de_la_restauration/

XIII. Création d'un script

Plutôt que d'avoir à saisir les commandes de sauvegarde à chaque fois que l'on veut effectuer la sauvegarde, nous allons créer un script Shell qui permet d'exécuter les commandes que l'on souhaite et il suffira de lancer ce script pour que la sauvegarde s'effectue.

  •  On crée le script, que l'on appelle "sauvegarde.sh" :
nano /sauvegarde.sh

Vous devez indiquer ceci au début du script, sur la première ligne :

#!/bin/sh

A la suite de ça, on peut ajouter les commandes que l'on souhaite exécuter, par exemple :

rdiff-backup /home/neoflow/ root@192.168.1.102::/sauvegardes/

N'oubliez pas d'indiquer dans votre script de supprimer les sauvegardes datant de plus de 5 jours par exemple afin d'éviter d'encombrer votre espace de stockage trop rapidement. Sinon, vous allez avoir des surprises.

Pour que le script puisse être exécuter on lui attribue des droits d'exécution pour tout le monde en saisissant cette commande :

chmod +x sauvegarde.sh

Si vous souhaitez essayer votre script vous pouvez l'exécuter grâce à la commande suivante :

./sauvegarde.sh

 

XIV. Automatiser la sauvegarde

Il est vraiment intéressant d'automatiser les sauvegardes parce que si on doit s'amuser à exécuter manuellement les sauvegardes ça peut vite devenir ennuyeux. De plus ce n'est pas très pratique surtout qu'en général on exécute les sauvegardes pendant les heures creuses, donc dans la soirée ou dans la nuit et le week-end. Pour se faire, on va planifier l'exécution d'un script en créant une tâche cron grâce au fichier crontab qui permet l'exécution de commande à un moment précis.

Pour éditer ce fichier, saisissez la commande suivante :

crontab -e

Ensuite précisez quel éditeur de texte vous souhaitez utiliser pour modifier le fichier /etc/crontab :

rdiff3

Nous devons maintenant indiquer la commande que nous souhaitons exécuter et à quel moment elle doit s'exécuter. Voici une ligne type pour l'ajout dans le crontab :

* * * * * nom_utilisateur commande_a_exécuter

Les 5 astérisques correspondent, dans l'ordre, à ceci :

  •  minute,
  •   heure,
  •   jour du mois,
  •  mois,
  •   jour de la semaine.

Reprenons notre script de sauvegarde se trouvant à la racine et qui s'appelle "sauvegarde.sh" et que nous souhaitons qu'il s'exécute tous les jours à 23h30, voici ce que donnera la commande :

30 23 * * * root /sauvegarde.sh

rdiff4

XV. Tester un serveur

Vous pouvez tester si un serveur distant est prêt pour être utilisé avec rdiff-backup en indiquant son adresse IP et le répertoire de destination des sauvegardes, en utilisant la commande suivante :

rdiff-backup --test-server ip_serveur::répertoire_destination

 

rdiff5

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian Burnel

Co-Fondateur d'IT-Connect, je souhaite partager mes connaissances et expériences avec vous, et comme la veille techno' est importante je partage aussi des actus.

florian a publié 1601 articles sur IT-Connect.See all posts by florian

2 réactions sur “Sauvegarde et restauration avec Rdiff-Backup

  • 20/03/2014 à 09:18
    Permalink

    Le gros problème avec rdiff-backup est dans le cas où sauvegarde échoue eil relance une copie complète du coups il devient difficile de gérer les temps et volumes.

    Répondre
  • 24/04/2016 à 13:25
    Permalink

    En effet, Gros problème avec Rdiff-backup non seulement lorsqu’il échoue il se stop et ne sauvegarde plus et reste bloqué à la dernier data. pour ma part la seul solution que j’ai trouvé c’est de supprimé de dossier rdiff-backup-data et de relancer la sauvegarde. Si quelqu’un a une solution je suis preneur merci

    Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *