MaDoVi - Le wiki

Machines - Données - Virtualisation

Outils pour utilisateurs

Outils du site


archives:vm:rdiff_backup

Backup du VHS sur un disque dur externe avec Rdiff-Backup (en VM)

1. Présentation

Rdiff-backup (http://www.nongnu.org/rdiff-backup/) est un logiciel de sauvegarde différentielle et incrémentale “dossier à dossier” utilisable en local ou sur un espace de stockage distant (avec support ssh). Rdiff-backup préserve les sous-dossiers, les 'hard links', les 'dev files', les uid/gid, les dates de modifications, les acl, etc.

A l'issue de la sauvegarde, le dossier cible contient une copie du dossier source. Le dossier cible contient également des fichiers différentiels stockés dans un sous-dossier spécial, qui permettent de récupérer, soit des fichiers effacés, soit des versions antérieures de fichiers modifiés.

Ce tuto est rédigé dans le cas de figure d'une sauvegarde en local sur un disque dur externe directement connecté sur le VHS et en utilisant une VM Ubuntu Server. Cependant rdiff-backup fonctionne aussi sous Mac OS X. Des essais réussis semblent avoir également été effectués sous MS Windows mais le développeur indique que cette configuration est moins bien testée.

[Note : A compléter avec une méthode de backup sur un pc distant (par ssh?)]

2. Ce qu'il vous faut

  • Un VHS avec adresse fixe
  • Un disque dur externe usb2 ou usb3 d'une capacité nettement supérieure à celle des données à sauvegarder (Rdiff-backup conserve les changements intervenus dans les x sauvegardes précédentes, ce qui prend de la place)
  • Une VM Ubuntu Server

3. Configuration de l'environnement de votre sauvegarde

3.1 Montage de votre VHS dans la VM par le fichier fstab

Vous trouverez les instructions sur la page linux. C'est la même méthode pour un poste Linux que pour une VM Linux avec ou sans interface graphique.

3.2 Configuration de votre disque dur externe

En V2, le VHS monte votre disque dur externe sous public/peripherique/usbsdfx, x étant un numéro que vous devrez identifier (par exemple en allant dans l'interface de votre VHS). Je prendrai usbsdf1 pour la suite du tuto.

En V3, le VHS monte votre disque dur externe sous public/peripherique/<nom du volume correspondant au DD externe>.1)

(1) Naviguez vers votre disque dur externe

cd ~/vhs/public/peripherique/usbsdf1

(2) Créez le dossier cible pour vos sauvegardes

mkdir dossier-de-backup

Note : Il pourra arriver que votre DD externe ne soit pas accessible en écriture par la VM. Cela est dû au fait que le DD, connecté sur le VHS, est monté par l'OS Ve-Hotech avec des droits spécifiques. Dans ce cas, vous devrez :

  • Déconnecter le DD du VHS
  • Connecter le DD sur votre pc
  • Changer les droits du DD à partir de votre pc. Sous Linux, à exécuter en root :
    chmod 777 <chemin du montage du DD>/<nom du volume correspondant au DD>
  • Reconnecter le DD sur le VHS

4. Installation et configuration de rdiff-backup sur la VM

4.1 Installation

Rien de compliqué à ce niveau

sudo apt-get install rdiff-backup

4.2 Configuration

Si vous souhaitez exclure certains dossiers ou fichiers de vos sauvegardes, le plus simple est de les définir dans un fichier d'exclusions, que vous placerez, par exemple sous ~/vhs.

Pour le créer aller sous ~/vhs et créer un fichier vide – par exemple fichier-exclusions.list

 sudo pico fichier-exclusions.list

Ajoutez le chemin complet des différents dossiers ou fichiers que vous voulez exclure des backup, sauvez et quittez.

:!: Si votre dossier de sauvegarde est dans l'arborescence des dossiers à sauvegarder, n'oubliez pas de le mettre dans la liste d'exclusion.

5. Script de sauvegarde

J'ai fait le choix de faire tourner le script de backup en root donc démarré par le crontab root (voir paragraphe 7 ci-dessous).

(1) En conséquences, je vous suggère de placer votre script sous /usr/local/bin

cd /usr/local/bin

(2) Créer un script vide, par exemple backup-vhs

sudo pico backup-vhs

(3) Ecriture du script bash

Maintenant la partie peut-être la plus difficile pour certains d'entre vous. Vous devez écrire le script bash, que vous lancerez pour faire vos sauvegardes.

Le propos de ce tuto n'est pas de vous former au bash. Pour ceux, qui ne sont pas familiers avec ce mode d'écriture, il existe de nombreux tutos, qui peuvent vous aider. J'en mets quelques-uns ci-dessous

http://mywiki.wooledge.org/BashGuide

http://linuxcommand.org/writing_shell_scripts.php

http://fr.wikibooks.org/wiki/Programmation_Bash (en français ;-) )

http://www.siteduzero.com/tutoriel-3-12827-reprenez-le-controle-a-l-aide-de-linux.html (en français également)

Quelques suggestions, qui, à mon humble avis, peuvent se révéler utiles :

a) Définissez des variables. Cela simplifiera vos lignes de script et vous rendra la vie plus facile le jour où vous aurez des modifs à faire

b) Faites d'abord tourner votre script avec des dossiers et fichiers test de quelques Mo. J'en reparlerai au paragraphe 6 ci-dessous.

c) Une fois votre script écrit, vérifier qu'il est exécutable. Sous /usr/local/bin, commande

ls -l

Si le fichier n'est pas exécutable,lancez la commande

sudo chmod 755 <nom-du-script-de-backup>

Je mets ci-dessous un exemple de fichier bash, que vous pourrez adapter à votre propre cas. Il inclut :

  • Un test de montage du VHS et le lancement de la commande “mount –a” pour monter le VHS si le test conclut qu'il ne l'est pas
  • Un test de présence du disque dur externe

Script de backup

#!/bin/bash
## Rdiff-Backup VHS-4
#
#========================================================================
#
# Définition des variables
#
# Liste d'exclusions
EXCL_LIST="emplacement-du-dossier-d'exclusion"
# Options d'exclusion
EXCL_OPTIONS="--exclude-globbing-filelist ${EXCL_LIST} --exclude "**iso"" # exclusion des fichiers .iso trop gros
# Emplacement des dossiers à sauvegarder (dossier source)
DOSSIER_ORI="emplacement-du-dossier-source"
# Emplacement des sauvegardes (dossier cible)
DOSSIER_DES="emplacement-du-dossier-cible"
#
#=========================================================================#
#
# Test de montage du VHS-4 par fstab
#
mountpoint -q <emplacement-du-point-de-montage-du-vhs-dans-la-vm>
if [ $? == "1" ]
then echo "VHS-4 non monté; mount -a lancé" && mount -a && mountpoint -q <emplacement-du-point-de-montage-du-vhs-dans-la-vm>
  if [ $? == "1" ]
  then echo "La commande 'mount -a' n'a pas fonctionné => BACKUP INTERROMPU" && exit
  else echo "La commande 'mount -a' a fonctionné; VHS-4 monté"
  fi
else echo "Test OK; VHS-4 monté"
fi
#
#=========================================================================
#
# Test de présence du disque dur externe
#
if [ -d $DOSSIER_DES ]
then echo "Test OK; disque dur externe présent"
else echo "Disque dur externe non présent => BACKUP INTERROMPU" && exit
fi
#
#=========================================================================
#
# Backup
#
rdiff-backup $EXCL_OPTIONS $DOSSIER_ORI $DOSSIER_DES 
#
#=========================================================================
#
# Suppression des vieilles sauvegardes (> 3mois)
#
rdiff-backup --remove-older-than 3M --force $DOSSIER_DES
#
#=========================================================================
#
# Reboot pour vidage du cache
#
/sbin/reboot
#

6. Test du script

Comme indiqué plus haut, si vous n'êtes pas un spécialiste du bash, il est conseillé de faire des tests avant de vous lancer en vraie grandeur. Pour cela, créez un dossier source et un dossier cible de test, mettez quelques fichiers de test dans le dossier source, modifiez les valeurs des 2 variables dans le script de backup (ou créez un 2ème script de test identique au 1er) et lancez le script à la console par la commande

sudo sh -v <votre-script-de-test>

Cela vous permettra de suivre le déroulement du script, d'identifier les erreurs éventuelles et de debugger.

7. Automatisation du lancement du script de sauvegarde

Vous voudrez certainement automatiser le lancement de votre script de backup afin d'éviter d'avoir à le lancer manuellement. Pour cela Crontab va vous aider. L'ouverture de Crontab se fait avec la commande

sudo crontab -e

:!: Attention, n'oubliez pas le “sudo”, sinon vous n'ouvrirez pas le crontab root mais votre crontab utilisateur et, comme je l'ai indiqué plus haut, j'ai fait le choix de faire tourner le script de sauvegarde sous root.

Vous trouverez des infos sur crontab ici http://crontab.org/

Par exemple, l'ajout de la ligne suivante

30    00    *    *    1    /usr/local/bin/<nom-du-script-de-backup>

lancera une sauvegarde tous les lundi à 00h30

Voilà, à vous de jouer!

=)

1)
Attribué lors du formatage du DD
archives/vm/rdiff_backup.txt · Dernière modification: 05/10/2019 02:11 de 84.254.187.202