Voici le deuxième article de ma série sur la sauvegarde d'un réseau local. Nous allons étudier le processus de sauvegarde/restauration (sur le serveur) puis configurer la sauvegarde d'une nouvelle machine.

Notez que l'affichage des commandes a été allégé dans un but de simplification de l'article. Si vous les executez vous même, beaucoup plus d'informations apparaîtront. J'ai essayé de ne garder que le plus pertinent. Les ... signalent à peu pret les endroits ou j'ai coupé.
Rappelons aussi que le serveur de sauvegarde est nommé FortCigogne et le nouveau client Penfret. Les commandes sont préfixées par le nom de machine sur laquelle elles doivent être executées.

Sauvegarder

Voyons comment lancer une sauvegarde à la main.

Creer les Volumes de stockage

Les exemples sont pour des bandes, mais une procedure similaire est à faire dans les autres cas (Fichiers, dvd...).

Il faut affecter un Label aux différents média (les nommer) et les ajouter au Pool de sauvegarde (nous utilisons celui par défaut). Cette opération permet à bacula de connaître chaque média. Pensez aussi à étiquetter (physiquement) vos médias avec le label affecté.

Si la bande n'est pas vierge ou a déjà servi pour des tests, commencez par la nettoyer.

## arretons le Storage daemon qui a peut-être vérouillé le lecteur
$ sudo invoke-rc.d bacula-sd stop
## on rembobine
$ sudo mt -f /dev/st0 rewind
## on "efface"
$ sudo mt -f /dev/st0 weof
## on redemarre le Storage daemon
$ sudo invoke-rc.d bacula-sd start

Note: Si elle est deja utilisée dans un Pool de bacula utilisez plutôt purge et relabel

Puis labelisez la à l'aide de la Console (Plus d'infos dans la doc rapide ou de référence) :

$ sudo bconsole
*label
Using default Catalog name=MyCatalog DB=bacula
Automatically selected Storage: DDS-3
Enter new Volume name: Backup01
Automatically selected Pool: Default
...
3001 Device /dev/st0 is mounted with Volume "Backup01"
*list media
Pool: Default
+---------+------------+-----------+-----------+------------+ ...
| MediaId | VolumeName | VolStatus | MediaType |LastWritten |
+---------+------------+-----------+-----------+------------+
| 1       | Backup01   | Append    | DDS-3     | 0          |
+---------+------------+-----------+-----------+------------+
*quit

Démarrer une Sauvegarde

Pour lancer notre sauvegarde à la main, nous allons utiliser la Console :

FortCigogne$ sudo bconsole
*show filesets
FileSet: name=Config
      I /etc
FileSet: name=Catalog
      I /var/lib/bacula/bacula.sql
...
*status dir
FortCigogne-dir Version: 1.36.3 (22 April 2005) i486-pc-linux-gnu debian testing/unstable
Scheduled Jobs:
Level          Type     Pri  Scheduled          Name               Volume
===================================================================================
Incremental    Backup    10  28-Nov-06 01:05    FortCigogne_Config Backup01
Full           Backup    11  28-Nov-06 01:10    BackupCatalog      Backup01
...
*run
A job name must be specified.
The defined Job resources are:
     1: FortCigogne_Config
     2: BackupCatalog
     3: RestoreFiles
Select Job resource (1-3): 1
Run Backup job
JobName:  FortCigogne_config
...
OK to run? (yes/mod/no): yes
Job started. JobId=1
*status dir
...
Running Jobs:
 JobId Level   Name                       Status
======================================================================
     1 Full    FortCigogne_Config.2006-11-27_21.21.51 is running
...

Quand il est terminé, vous pouvez voir le rapport en tapant messages. Si vous avez configuré correctement l'envoi de mail, vous devriez aussi en recevoir un.

Restaurer des fichiers

Toujours à partir de la Console :

*restore all
Using default Catalog name=MyCatalog DB=bacula
To select the JobIds, you have the following choices:
    1: List last 20 Jobs run
    2: List Jobs where a given File is saved
    3: Enter list of comma separated JobIds to select
    4: Enter SQL list command
    5: Select the most recent backup for a client
    6: Select backup for a client before a specified time
    7: Enter a list of files to restore
    8: Enter a list of files to restore before a specified time
    9: Cancel
Select item:  (1-9): 5
+-------+----------+---------------------+------------+ ...
| JobId | JobFiles | StartTime           | VolumeName |
+-------+----------+---------------------+------------+
| 1     | 1157     | 2006-11-27 21:21:53 | Backup01   |
+-------+----------+---------------------+------------+
You have selected the following JobId: 1
...
cwd is: /
#### A ce moment vous pouvez selectionner quels fichiers vous allez restaurer
#### Pour la manière de faire, voyez toujours dans la documentation
$ done
The job will require the following Volumes:
   Backup01
1157 files selected to be restored.
Run Restore job
JobName:    RestoreFiles
Where:      /tmp/bacula-restores
...
OK to run? (yes/mod/no): yes
Job started. JobId=2
*quit

Vous notez que la restauration se fait dans un repertoire temporaire. Cela se change dans bacula-dir.conf ou via la Console.

Vous pouvez tester la restauration :

FortCigogne$ sudo diff /tmp/bacula-restores/etc/ /etc/

Ajouter un client

Nous allons maintenant ajouter la sauvegarde d'une autre machine : Penfret.

Installer et Configurer le client

Sur les clients, seul le service de fichier est necessaire :

Penfret$ sudo apt-get install bacula-fd
Penfret$ sudo vi /etc/bacula/bacula-fd.conf

Modifiez le de cette manière :

# Authorise le serveur a se connecter
Director {
Name = FortCigogne-dir # Correspond au Name de Director dans bacula-dir.conf sur le serveur
Password = ""
}

Verifiez la syntaxe de votre fichier et redémarrez le File daemon :

Penfret$ sudo bacula-fd -t -c /etc/bacula/bacula-fd.conf
Penfret$ sudo invoke-rc.d bacula-fd restart

Configurer le serveur

Nous allons donc modifier la configuration du serveur pour y ajouter un nouveau Job et un nouveau Client. Editez le fichier bacula-dir.conf
Les modifications sont assez similaires à celles que nous avons vu pour la sauvegarde du serveur FortCigogne.



Job {
Name = "Penfret_Config"
JobDefs = "DefaultJob"
FileSet = "Config" # Ici le même que pour FortCigogne
Client = Penfret-fd # Voir Client ci-dessous
Write Bootstrap = "/var/lib/bacula/Penfret.bsr"
}

Client {
Name = Penfret-fd # voir Job ci-dessus
Address = Penfret # La nouvelle machine à sauver
FDPort = 9102
Catalog = MyCatalog
Password = "" # password for FileDaemon
File Retention = 30 days # 30 days
Job Retention = 6 months # six months
AutoPrune = yes # Prune expired Jobs/Files
}

Redémarrez le Director daemon pour prendre en compte vos modifications.

FortCigogne$ sudo bacula-dir -t -c /etc/bacula/bacula-dir.conf
FortCigogne$ sudo invoke-rc.d bacula-director restart

Pour vérifier que le nouveau client est bien connu, utilisez la console :

FortCigogne$ sudo bconsole
*status dir
Scheduled Jobs:
Level          Type     Pri  Scheduled          Name               Volume
===================================================================================
Incremental    Backup    10  28-Nov-06 01:05    FortCigogne_Config Backup01
Incremental    Backup    10  28-Nov-06 01:05    Penfret_Config     Backup01
Full           Backup    11  28-Nov-06 01:10    BackupCatalog      Backup01
...

Vous pouvez alors le sauvegarder de la même manière que vue pour le serveur.

A noter, nous n'avons pas modifié la programation automatique des sauvegardes. Par défaut, elles sont toutes les nuits à partir de 1h05 :

  • Complètes (Full) le 1er dimanche de chaque mois
  • Différentielles (Difeferential) les autres dimanches
  • Incrémentales (Incremental) les autres jours

Pour plus d'explications, allez lire ... la documentation ;)

Dans le dernier article nous découvrirons les possibilités d'utiliser une interface graphique, comment paufiner un peu notre configuration et enfin tous les liens pour aller plus loin.