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.