Restauration partielle

Rechercher un fichier à restaurer

Pour rechercher un fichier ou un répertoire dans le support de sauvegarde (sur la dernière sauvegarde uniquement), on utilise l'option --search :

# bacularestore.py --search nom_du_fichier

Il est possible d'utiliser les caractères  ? ou * pour remplacer respectivement un ou plusieurs caractères en les échappant de la façon suivante :

# bacularestore.py --search nom_du_\*

Il est également possible de lister le contenu d'un répertoire sauvegardé avec l'option --ls_folder :

# bacularestore.py --ls_folder /etc/eole

liste du contenu de /etc/eole

config.eol

Restauration d'un fichier ou d'un répertoire

Pour restaurer un fichier de la dernière sauvegarde, on peut utiliser la commande :

# bacularestore.py --file /chemin_absolu/nom_du_fichier

Exemple :

# bacularestore.py --file /etc/eole/config.eol

Pour restaurer un répertoire et l'intégralité de son contenu, on peut utiliser la commande :

# bacularestore.py --folder /chemin_absolu/nom_du_répertoire

Exemple :

# bacularestore.py --folder /usr/share/ead2/backend/config

Restauration de l'ensemble des fichiers sauvegardés

Pour restaurer l'ensemble des fichiers sauvegardés, il est possible d'utiliser la commande :

# bacularestore.py --all_files

Restauration spécifique

Les bases de données, les quotas, l'annuaire, ... ne sont pas sauvegardés sous forme de fichiers binaires.

Ils sont extraits avant la sauvegarde.

Pour restaurer, il existe une procédure particulière, différente suivant l'application.

Pour connaître les possibilités, faire :

# bacularestore.py --help

Exemple

Pour restaurer l'annuaire :

# bacularestore.py --ldap

Restauration manuelle

Avant de lancer la restauration il est préférable de vérifier que le chemin du nœud du périphérique est toujours bon.

Il peut changer en fonction du nombre de périphériques connectés :

# baculamount.py -t

Si le périphérique n'a plus le même nœud la commande baculamount.py renvoie :

ERREUR : le périphérique /dev/sdb1 n'existe pas

Il faut alors changer la configuration du support :

# baculaconfig.py -s usb --usb_path=/dev/device_usb

Le test de montage doit renvoyer OK :

# baculamount.py -t

Test de montage OK

Lister l'ensemble de la configuration :

# baculaconfig.py -d

La restauration manuelle s'effectue au moyen d'un programme en ligne de commande, bconsole :

# bconsole

Il est possible de spécifier le fichier de configuration :

# bconsole -c /etc/bacula/bconsole.conf

Une fois bconsole démarré, il est possible d'abandonner la procédure à tout moment en quittant la console avec la commande quit, done ou avec les touches ctrl + c.

Le prompt de bconsole est une étoile.

Exemple

Dans cet exemple nous verrons comment restaurer le fichier /home/a/admin/perso/icones.url.

Dans bconsole, taper la commande restore qui indique à bconsole d'initialiser une restauration :

*restore

Il est possible de choisir directement le support de sauvegarde des fichiers, ce qui évite d'avoir à le choisir par la suite, pour cela utiliser la commande suivante (attention aux majuscules/minuscules et à la saisie sans accents) :

*restore fileset=FileSetSauvegarde

Vous avez alors plusieurs choix :

To select the JobIds, you have the following choices:

[...]

Les plus pertinents sont :

  • Depuis que l'utilisateur a supprimé le fichier, le système n'a effectué que des sauvegardes incrémentales alors le fichier est toujours présent dans la sauvegarde, choisissez la sauvegarde la plus récente pour un client :

    5: Select the most recent backup for a client (sélectionner la sauvegarde réussie la plus récente)

  • Depuis que l'utilisateur a supprimé le fichier, le système a effectué une sauvegarde complète (Full) alors le fichier n'est présent que dans les sauvegardes précédant la sauvegarde complète, sélectionner la dernière sauvegarde pour un client avant une certaine date et entrez une date antérieure à la dernière sauvegarde complète :

    6: Select backup for a client before a specified time (sélectionner la dernière sauvegarde réussie avant une date spécifiée)

La console propose trois options (excepté si le choix du support de sauvegarde des fichiers a été spécifié à l'appel de la commande restore) :

The defined FileSet ressources are :

1 : FileSetCatalog

2 : FileSetDefault

3 : FileSetSauvegarde

Il faut ensuite choisir le support de sauvegarde des fichiers (et non celui du catalogue) :

3 : FileSetSauvegarde

Un prompt apparaît et permet de naviguer dans l'arborescence des fichiers sauvegardés :

cwd is : /

$ ls

etc/

home/

root/

usr/

var/

$ cd /home/a/admin/perso

Il faut marquer les fichiers/dossiers à restaurer avec la commande mark (attention, la commande mark est récursive) :

$ mark icones.url

1 file marked.

Pour "dé-marquer" un fichier marqué par erreur :

$ unmark icones.url

1 file unmarked.

Lorsque les fichiers et les dossiers à restaurer sont sélectionnés, passer à l'étape suivante avec la commande :

$ done

bconsole propose plusieurs options, il faut choisir le job de restauration, ici l'option numéro 3 :

3: Restore_file

On obtient alors le message suivant :

Bootstrap records written to /var/lib/bacula/xxxxxxxxx.restore.2.bsr

[...]

Ok to run ? (yes/mod/no) :

La restauration peut maintenant être lancée en répondant yes à la question.

Il ne sera plus possible d'abandonner après cette étape.

OK to run? (yes/mod/no): yes

La restauration est alors placée dans une file d'attente. Le numéro JobId est affiché à l'écran.

Il est possible de changer les paramètres de restauration en répondant mod à la question :

OK to run? (oui/mod/non): mod

Parameters to modify :

1 : Level

2 : Storage

[...]

Par exemple pour restaurer dans un autre répertoire, il faut choisir Where (9 dans le cas présent) et saisir le chemin de la restauration :

9 : Where

Please enter path prefix for restore (/ for none) : /home/restauration

Ok to run ? (yes/mod/no) : yes

La restauration est alors placée dans une file d'attente. Le numéro JobId est affiché à l'écran.

Pour quitter la console :

* quit

Truc & astuce

Il est possible de suivre l'évolution des restaurations dans le fichier de log : /var/log/bacula/restore.txt

Les informations peuvent mettre un peu de temps avant d'apparaître car Bacula ne les "flush" pas tout de suite dans son fichier de log.

Si rien n'apparaît dans un délai raisonnable il faut vérifier le chemin du nœud du périphérique.

Attention

Pour conserver les droits étendus associés à un fichier (ACL), il faut restaurer un fichier issu d'une partition avec ACL (par exemple le répertoire /home sur le module Scribe) dans une partition supportant les ACL.