Outils pour utilisateurs

Outils du site


serveur_bacula

Bacula

Liens

Brouillon

Bacula Directorest le programme qui supervise toutes les opérations de sauvegarde, restauration, vérification et archivage. Le Director est exécuté en tant que daemon ou service (c'est à dire en tâche de fond). Bacula Consoleest le programme qui permet à l'administrateur ou à l'utilisateur de communiquer avec le Bacula Director (voir ci-dessus). Actuellement, le service Bacula Console est disponible en trois versions. Bacula File (ou programme client)est le programme installé sur la machine à sauvegarder. Il est spécifique au système sur lequel il est exécuté et a la charge de fournir les attributs des fichiers et les données requis par le Director. Bacula Storageest le programme qui transfère les données et les attributs de fichiers aux média physiques ou aux volumes et les restitue lors de restaurations. Les services Catalogue ont pour tâche de maintenir à jour la base de données des index de fichiers et volumes pour tous les fichiers sauvegardés. Bacula supporte actuellement trois bases de données différentes, MySQL, PostgreSQL, et SQLite. L'une des trois doit être choisie à la compilation de Bacula. Bacula Monitorest le programme qui permet à l'administrateur ou à l'utilisateur de contrôler le statut des daemons Bacula (Bacula Directors, Bacula File Daemons et Bacula Storage Daemons). Actuellement, la seule version disponible est une version GTK+.


Pour réaliser avec succès les opérations de sauvegarde et restauration, les quatre services suivants doivent être configurés et lancés : le Director Daemon, le File Daemon, le Storage Daemon et MySQL, PostgreSQL ou SQLite.


bextract Bacula's 'Extract from tape' Fichier Bootstrap (Bootstrap File) Le bootstrap est un fichier ASCII qui contient, sous une forme compacte, les commandes qui permettent à Bacula ou à l'utilitaire autonome bextract de restaurer les contenus d'un ou plusieurs volumes

Volume Un volume est une unité d'archivage, usuellement une cartouche ou un fichier nommé sur disque où Bacula stocke les données pour un ou plusieurs jobs de sauvegarde.

Director bacula-dir 9101/tcp
File Daemon bacula-fd 9102/tcp
Storage Daemon bacula-sd 9103/tcp

Name et Password

Installation

  1. apt-cache show bacula-director-mysql
 Package: bacula-director-mysql
 ...
 Source: bacula
 Version: 1.38.11-1
 ...

Installons…

Sur le serveur

 apt-get install bacula-director-mysql

Ca a fait un truc dans MySQL

 mysql> show databases;
 ...
 | bacula             |
 ...

Tiens, j'ai un daemon:

 $ ps aux | grep bacula
 bacula   20118  0.0  0.4  25836  2140 ?        Ssl  16:54   0:00 /usr/sbin/bacula-dir -c /etc/bacula/bacula-dir.conf -u bacula -g bacula
 $ dpkg -S bacula-director
 ...
 bacula-director-common: /etc/init.d/bacula-director

Il faut aussi installer le File Daemon (FD) parce qu'il en aura besoin (le director) lorsqu'il voudra sauvegarder le Catalog. Il y a notamment des scripts qui seront installé dans /etc/bacula/scripts.

 # apt-get install bacula-fd
 # apt-get install bacula-sd-mysql

ou

 # apt-get install bacula-sd
 $ dpkg -S bacula-sd
 ...
 bacula-sd: /etc/init.d/bacula-sd
 ...

Tiens, un nouveau daemon:

 ps aux | grep bacula
 bacula   20118  0.0  0.4  25836  2140 ?        Ssl  16:54   0:00 /usr/sbin/bacula-dir -c /etc/bacula/bacula-dir.conf -u  bacula -g bacula
 bacula   20264  0.0  0.3  23100  1828 ?        Ssl  17:16   0:00 /usr/sbin/bacula-sd -c /etc/bacula/bacula-sd.conf -u bacula -g tape

Serveur: Editer /etc/bacula/bacula-dir.conf et faire en sorte que la section Director contienne:

  DirAddress = 0.0.0.0

Suivit d'un:

 /etc/init.d/bacula-director restart

C'est bien aussi:

 sudo adduser **user** bacula

Configuring Director

Sur mon poste

 sudo apt-get install bacula-console  

bacula-console ou bconsole …

 sudo adduser **user** bacula

Mon poste/Moniteur: Dans /etc/bacula/bconsole.conf copier le Password extrait de bacula-dir.conf et modifier address=… pour designer le serveur.

Configurer la console: Console Configuration


Vous pouvez tester la validité syntaxique de vos fichiers de configuration, afficher tout message d'erreur et terminer. Par exemple, en supposant que vous avez installé vos binaires et fichiers de configuration dans le même répertoire,

 cd <installation-directory>
 ./bacula-dir -t -c bacula-dir.conf
 ./bacula-fd -t -c bacula-fd.conf
 ./bacula-sd -t -c bacula-sd.conf
 ./bconsole -t -c bconsole.conf
 ./gnome-console -t -c gnome-console.conf
 ./wx-console -t -c wx-console.conf
 su <normal user> -c "./bacula-tray-monitor -t -c tray-monitor.conf"

??? Rotation des logs

Si vous utilisez le bacula-dir.conf par défaut ou une variante, vous constaterez qu'il récupère toutes les sorties de Bacula dans un fichier. Pour éviter que ce fichier ne croisse sans limites, nous vous recommandons de copier le fichier logrotate depuis scripts/logrotate vers /etc/logrotate.d/bacula. Ainsi les fichiers de logs subiront une rotation mensuelle et seront conservés pour une durée maximum de cinq mois. Vous pouvez éditer ce fichier pour adapter la rotation à votre convenance.

Selon moi, c'est deja le cas par defaut.


J'aurai voulu être plus securitaire sur les IP, mais je n'arrive pas a configurer comme ceci:

Dans /etc/bacula/bacula-dir.conf :

  DirAddresses = {
   ip = { addr = 127.0.0.1; port=9101; }
   ip = { addr = 172.16.0.39; port=9101; }
  }

Bug? La configuration est accepté, mais impossible de connecté la machine 172.16.0.39.

Alors je laisse comme ça:

  DIRport = 9101                # where we listen for UA connections
  1. DirAddress = 127.0.0.1
  DirAddress = 0.0.0.0          # tout le monde, mais avec le password

Pas bien grave, car il y a un password, mais je ne sais pas s'il passe en clair…

A chaque fois qu'on modifie le fichier de conf, il faut faire:

 # /etc/init.d/bacula-director restart

Apparement le 'Director' et le 'Storage Daemon' ne se voyait pas (Erreur dans /etc/hosts).

 $ bconsole
 ...
 *status dir
 bourse2-dir Version: 1.38.11 (28 June 2006) i486-pc-linux-gnu debian testing/unstable
 Daemon started 29-aoû-06 12:26, 0 Jobs run since started.
 Scheduled Jobs:
 Level          Type     Pri  Scheduled          Name               Volume
 ===================================================================================
 Incremental    Backup    10  29-aoû-06 23:05    Client1            *unknown*
 Full           Backup    11  29-aoû-06 23:10    BackupCatalog      *unknown*
 ====
 Running Jobs:
 Console connected at 29-aoû-06 12:27
 No Jobs running.
 ====
 No Terminated Jobs.
 ====

c'est bien ça ? je crois pas.

  • status sd

Automatically selected Storage: File

 Connecting to Storage daemon File at bourse2:9103
 bourse2-sd Version: 1.38.11 (28 June 2006) i486-pc-linux-gnu debian testing/unstable
 Daemon started 28-aoû-06 17:16, 0 Jobs run since started.
 Running Jobs:
 No Jobs running.
 ====
 Jobs waiting to reserve a drive:
 ====
 No Terminated Jobs.
 Device status:
 Device "FileStorage" (/tmp) is not open or does not exist.
 ====
 In Use Volume status:
 ====

Installons le **File Daemon** sur mon poste

 # apt-get install bacula-fd

Editons le fichier /etc/bacula/bacula-fd.conf et corrigeons le nom du director et le password:

 #
 # List Directors who are permitted to contact this File daemon
 #
 Director {
   Name = bourse2-dir
   Password = "d2783JDzklz...plein de lettres..."
 }

Le password a été decouvert sur le serveur hebergeant le directeur dans /etc/bacula/bacula-dir.conf:

 # Client (File Services) to backup
 Client {
   Name = bourse2-fd
 #<TJ>
 #  Address = bourse2
   Address = nin
 #</TJ>
   FDPort = 9102
   Catalog = MyCatalog
   Password = "d2783JDzklz...plein de lettres..."          # password for FileDaemon
   File Retention = 30 days            # 30 days
   Job Retention = 6 months            # six months
   AutoPrune = yes                     # Prune expired Jobs/Files
 }

Et là attention, sur la bconsole:

  • status client

Automatically selected Client: bourse2-fd

 Connecting to Client bourse2-fd at nin:9102
 kubunin-fd Version: 1.36.3 (22 April 2005) i486-pc-linux-gnu debian testing/unstable
 Daemon started 29-Aug-06 16:27, 0 Jobs run since started.
 No Terminated Jobs.
 Running Jobs:
 Director connected at: 29-Aug-06 16:27
 No Jobs running.
 ====
 *                    

JobDefsThe JobDefs resource permits all the same directives that can appear in a Job resource. However, a JobDefs resource does not create a Job, rather it can be referenced within a Job to provide defaults for that Job. This permits you to concisely define several nearly identical Jobs, each one referencing a JobDefs resource which contains the defaults. Only the changes from the defaults need to be mentioned in each Job.

JobDefs n'existe que pour definir une configuration par defaut à un Job, si le Job en expressement usage par une déclaration de la forme:

 Job {
   Name = "nin-test"
   JobDefs = "DefaultJob"
   Write Bootstrap = "/var/lib/bacula/nin-test.bsr"
 }

Donc, l'interessant, c'est surtout pour Job

Job

Where = <directory>This directive applies only to a Restore job and specifies a prefix to the directory name of all files being restored. This permits files to be restored in a different location from which they were saved. If Where is not specified or is set to backslash (/), the files will be restored to their original location. By default, we have set Where in the example configuration files to be /tmp/bacula-restores. This is to prevent accidental overwriting of your files.

un mail de bacula pour root

 29-aoû 23:05 bourse2-dir: No prior Full backup Job record found.
 29-aoû 23:05 bourse2-dir: No prior or suitable Full backup found. Doing FULL backup.
 29-aoû 23:05 bourse2-dir: Start Backup JobId 3, Job=Client1.2006-08-29_23.05.00
 29-aoû 23:05 bourse2-sd: Job Client1.2006-08-29_23.05.00 waiting. Cannot find any appendable volumes.
 Please use the "label"  command to create a new Volume for:
     Storage:      "FileStorage" (/tmp)
     Media type:   File
     Pool:         Default
 ...

Avec bconsole :

  • run

A job name must be specified.

 The defined Job resources are:
      1: Client1
      2: nin-test
      3: BackupCatalog
      4: RestoreFiles
 Select Job resource (1-4): 1
 Run Backup job
 JobName:  Client1
 FileSet:  Full Set
 Level:    Incremental
 Client:   bourse2-fd
 Storage:  File
 Pool:     Default
 When:     2006-08-30 12:23:54
 Priority: 10
 OK to run? (yes/mod/no): yes
 Job started. JobId=6
 *messages
 30-aoû 12:25 bourse2-dir: No prior Full backup Job record found.
 30-aoû 12:25 bourse2-dir: No prior or suitable Full backup found. Doing FULL backup.
 30-aoû 12:25 bourse2-dir: Start Backup JobId 6, Job=Client1.2006-08-30_12.24.59
 30-aoû 12:25 bourse2-sd: Job Client1.2006-08-30_12.24.59 waiting. Cannot find any appendable volumes.
 Please use the "label"  command to create a new Volume for:
     Storage:      "FileStorage" (/tmp)
     Media type:   File
     Pool:         Default
 *           

Wouah cool. En clair:

“le (troisième) message vous informe que Bacula ne peut trouver aucun volume dans le pool Default sur lequel écrire les données du job. Ceci est normal, car nous n'avons encore créé (ou étiqueté) aucun volume. Bacula vous fournit tous les détails concernant le volume dont il a besoin.” “A ce point, le job est bloqué en attente d'un volume. Vous pouvez le vérifier en utilisant la commande status dir.”


On va donc “labeler”:

  • label

Automatically selected Storage: File

 Enter new Volume name: TestVol001
 Automatically selected Pool: Default
 Connecting to Storage daemon File at 127.0.0.1:9103 ...
 Sending label command for Volume "TestVol001" Slot 0 ...
 3000 OK label. Volume=TestVol001 Device="FileStorage" (/tmp)
 Catalog record for Volume "TestVol001", Slot 0  successfully created.
 Requesting to mount FileStorage ...
 3001 OK mount. Device="FileStorage" (/tmp)
 *
 30-aoû 12:32 bourse2-sd: Wrote label to prelabeled Volume "TestVol001" on device "FileStorage" (/tmp)
 30-aoû 12:32 bourse2-fd:      Could not stat /home/jgoerzen/work/bacula/debian/tmp-build-sqlite: ERR=Aucun fichier ou répertoire de ce type
 30-aoû 12:32 bourse2-dir: Bacula 1.38.11 (28Jun06): 30-aoû-2006 12:32:17
  JobId:                  6
   Job:                    Client1.2006-08-30_12.24.59
   Backup Level:           Full (upgraded from Incremental)
   Client:                 "bourse2-fd" i486-pc-linux-gnu,debian,testing/unstable
   FileSet:                "Full Set" 2006-08-28 23:05:02
   Pool:                   "Default"
   Storage:                "File"
   Scheduled time:         30-aoû-2006 12:23:54
   Start time:             30-aoû-2006 12:25:03
   End time:               30-aoû-2006 12:32:17
   Elapsed time:           7 mins 14 secs
   Priority:               10
   FD Files Written:       0
   SD Files Written:       0
   FD Bytes Written:       0 (0 B)
   SD Bytes Written:       0 (0 B)
   Rate:                   0,0 KB/s
   Software Compression:   None
   Volume name(s):         TestVol001
   Volume Session Id:      3
   Volume Session Time:    1156778204
   Last Volume Bytes:      379 (379 B)
   Non-fatal FD errors:    1
   SD Errors:              0
   FD termination status:  OK
   SD termination status:  OK
   Termination:            Backup OK -- with warnings
 30-aoû 12:32 bourse2-dir: Begin pruning Jobs.
 30-aoû 12:32 bourse2-dir: No Jobs found to prune.
 30-aoû 12:32 bourse2-dir: Begin pruning Files.
 30-aoû 12:32 bourse2-dir: No Files found to prune.
 30-aoû 12:32 bourse2-dir: End auto prune.

Arf, c'qu'on rigole :-)

A propos de la commande messages (qui affiche des …)

“Si rien ne se passe dans l'immédiat, vous pouvez continuer de rentrer la commande messages jusqu'à ce que le job se termine, ou utiliser la commande autodisplay on afin que les messages soient affichés dès-qu'ils sont disponibles.”

Mais où sont stocker les sauvegardes

Regarder d'abord dans /etc/bacula/bacula-dir.conf : Examiner Job qui renvoi dans JobDefs.

 JobDefs {
 #<tj>
 #  Enabled=no
 #</tj>
   Name = "DefaultJob"
   Type = Backup
   Level = Incremental
   Client = bourse2-fd
   FileSet = "Full Set"
   Schedule = "WeeklyCycle"
   Storage = File
   Messages = Standard
   Pool = Default
   Priority = 10
 }
 #
 # Define the main nightly save backup job
 #   By default, this job will back up to disk in /tmp
 Job {
   Name = "Client1"
   JobDefs = "DefaultJob"
   Write Bootstrap = "/var/lib/bacula/Client1.bsr"
 }

JobDefs renvoi a la section Storage ci-dessous.

 # Definition of file storage device
 Storage {
   Name = File
 # Do not use "localhost" here
 #<tj>
 #  Address = bourse2                # N.B. Use a fully qualified name here
   Address = 127.0.0.1               # N.B. Use a fully qualified name here
 #</tj>
   SDPort = 9103
   Password = "zuiuzaizua_doit_etre_le_meme_la_ou_il_faut"
   Device = FileStorage
   Media Type = File
 }

On regarde maintenant dans: /etc/bacula/bacula-sd.conf :

 #
 # Devices supported by this Storage daemon
 # To connect, the Director's bacula-dir.conf must have the
 #  same Name and MediaType.
 #
 Device {
   Name = FileStorage
   Media Type = File
   Archive Device = /tmp
   LabelMedia = yes;                   # lets Bacula label unlabeled media
   Random Access = Yes;
   AutomaticMount = yes;               # when device opened, read it
   RemovableMedia = no;
   AlwaysOpen = no;
 }

Donc, c'est /tmp. Great !
Voyons ça:

  1. rw-r—– 1 bacula tape 575 2006-08-30 12:32 TestVol001

“Il s'agit du volume File que vous venez juste d'écrire, et qui contient toutes les données du job que vous venez d'exécuter. Si vous exécutez d'autres jobs, il seront ajoutés à la suite de ce volume, à moins que vous n'ayez spécifié un autre comportement.”

Supprimer tout

“Si vous souhaitez en rester là, saisissez simplement quit dans la console, puis stoppez Bacula avec ./bacula stop. Pour nettoyer votre installation des résultats de vos tests, supprimez le fichier /tmp/TestVolume001, et réinitialiser votre catalogue en utilisant :

 ./drop_bacula_tables<sup>*</sup>
 ./make_bacula_tables<sup>*</sup>

* : pas trouvé ces scripts, mais je vois l'idée.“Notez bien que ceci supprimera toutes les informations concernant les jobs précédemment exécutés et que, si c'est sans doute ce que vous souhaitez faire en fin de phase de test, ce n'est généralement pas une opération souhaitable en utilisation normale. ”

Restaurer 1/2

Retour a la bconsole :

  • restore all

Using default Catalog name=MyCatalog DB=bacula

 First you select one or more JobIds that contain files
 to be restored. You will be presented several methods
 of specifying the JobIds. Then you will be allowed to
 select which files from those JobIds are to be restored.
 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: Find the JobIds of the most recent backup for a client
     10: Find the JobIds for a backup for a client before a specified time
     11: Enter a list of directories to restore for found JobIds
     12: Cancel
 Select item:  (1-12):5
 Defined Clients:
      1: bourse2-fd
      2: nintest-fd
 Select the Client (1-2): 1
 The defined FileSet resources are:
      1: Catalog
      2: Full Set
 Select FileSet resource (1-2): 2
 +-------+-------+----------+----------+---------------------+------------+-----------+
 | JobId | Level | JobFiles | JobBytes | StartTime           | VolumeName | StartFile |
 +-------+-------+----------+----------+---------------------+------------+-----------+
 |     6 | F     |        0 |        0 | 2006-08-30 12:25:03 | TestVol001 |         0 |
 +-------+-------+----------+----------+---------------------+------------+-----------+
 You have selected the following JobId: 6
 Building directory tree for JobId 6 ...
 There were no files inserted into the tree, so file selection
 is not possible.Most likely your retention policy pruned the files
 Do you want to restore all the files? (yes|no):

Euh… y a rien, je recommence autrement.

Restaurer 2/2

En essayant de runner un job a moi:
Rien ne se passe… alors:

  • status client

The defined Client resources are:

      1: bourse2-fd
      2: nintest-fd
 Select Client (File daemon) resource (1-2): 2
 Connecting to Client nintest-fd at nin:9102
 kubunin-fd Version: 1.36.3 (22 April 2005) i486-pc-linux-gnu debian testing/unstable
 Daemon started 29-Aug-06 16:27, 0 Jobs run since started.
 No Terminated Jobs.
 Running Jobs:
 Director connected at: 30-Aug-06 16:32
 JobId 7 Job nin-test.2006-08-30_16.17.10 is running.
     Unknown Type Job started: 30-Aug-06 16:17
     Files=0 Bytes=0 Bytes/sec=0
     Files Examined=0
     SDSocket closed.
 ====

Aprés de longue minute, j'annule le Job

  • cancel JobId=7

2001 Job nin-test.2006-08-30_16.17.10 marked to be canceled.

 3000 Job nin-test.2006-08-30_16.17.10 marked to be canceled.
 You have messages.
 *
 30-aoû 16:17 kubunin-fd: nin-test.2006-08-30_16.17.10 Warning: bnet.c:769 Could not connect to Storage daemon on 127.0.0.1:9103. ERR=Connection refused
 Retrying ...
 30-aoû 16:22 kubunin-fd: nin-test.2006-08-30_16.17.10 Warning: bnet.c:769 Could not connect to Storage daemon on 127.0.0.1:9103. ERR=Connection refused
 Retrying ...
 30-aoû 16:27 kubunin-fd: nin-test.2006-08-30_16.17.10 Warning: bnet.c:769 Could not connect to Storage daemon on  127.0.0.1:9103. ERR=Connection refused
 Retrying ...
 30-aoû 16:32 kubunin-fd: nin-test.2006-08-30_16.17.10 Fatal error: Failed to connect to Storage daemon: 127.0.0.1:9103
 30-aoû 16:32 bourse2-dir: nin-test.2006-08-30_16.17.10 Fatal error: Socket error on Storage command: ERR=Aucune donnée disponible
 30-aoû 16:32 bourse2-dir: Bacula 1.38.11 (28Jun06): 30-aoû-2006 16:32:34
   JobId:                  7
   Job:                    nin-test.2006-08-30_16.17.10
   Backup Level:           Full (upgraded from Incremental)
   Client:                 "nintest-fd" i486-pc-linux-gnu,debian,testing/unstable
   FileSet:                "nintest-Set" 2006-08-30 12:03:06
   Pool:                   "Default"
   Storage:                "File"
   Scheduled time:         30-aoû-2006 16:16:56
   Start time:             30-aoû-2006 16:17:12
   End time:               30-aoû-2006 16:32:34
   Elapsed time:           15 mins 22 secs
   Priority:               10
   FD Files Written:       0
   SD Files Written:       0
   FD Bytes Written:       0 (0 B)
   SD Bytes Written:       0 (0 B)
   Rate:                   0,0 KB/s
   Software Compression:   None
   Volume name(s):
   Volume Session Id:      4
   Volume Session Time:    1156778204
   Last Volume Bytes:      379 (379 B)
   Non-fatal FD errors:    0
   SD Errors:              0
   FD termination status:
   SD termination status:  Waiting on FD
   Termination:            Backup Canceled

**Shit**

En fait, il faut faire trés attention a adresse local que j'ai ajouté: 127.0.0.1
Le Storage Daemon communique au File Daemon son IP… en fait, l'IP qu'on a bien voulu lui donner… Je ne comprend pas bien. Editons /etc/bacula/bacula-sd.conf :

 Storage {                             # definition of myself
   Name = bourse2-sd
   SDPort = 9103                  # Director's port
   WorkingDirectory = "/var/lib/bacula"
   Pid Directory = "/var/run/bacula"
   Maximum Concurrent Jobs = 20
 #<tj>
 #  SDAddress = 127.0.0.1
   SDAddress = 172.16.0.33<sup>*</sup>
 #</tj>
 }

*:je n'ai pas encore compris les implicationsCitation: “Assurez-vous que le paramètre Address de la ressource Storage a pour valeur le nom pleinement qualifié et non quelque chose comme “localhost”. L'adresse spécifiée est envoyée au client et doit être un nom pleinement qualifié. Si vous utilisez “localhost”, l'adresse du Storage Daemon ne sera pas résolue correctement, il en résultera un timeout lorsque le File Daemon échouera à connecter le Storage Daemon.

J'ai aussi editer /etc/bacula/bacula-dir.conf :

 # Definition of file storage device
 Storage {
   Name = File
 # Do not use "localhost" here
 #<tj>
 #  Address = bourse2                # N.B. Use a fully qualified name here
 #  Address = 127.0.0.1               # N.B. Use a fully qualified name here
   Address = 172.16.0.33            # N.B. Use a fully qualified name here
 #</tj>
   SDPort = 9103
   Password = "ze_password"
   Device = FileStorage
   Media Type = File
 }

Et hop ! ca marche…

A verifier: il me semble qu'il m'a fallu relancer le director aprés avoir modifier la configuration du storage daemon. Sinon, les jobs etaient dans les choux…

Restaurer

  • restore all
 ...
 To select the JobIds, you have the following choices:
      ...
      5: Select the most recent backup for a client
      ...
 Select item:  (1-12): 5
 Defined Clients:
      1: bourse2-fd
      2: nintest-fd
 Select the Client (1-2): 2
 Automatically selected FileSet: nintest-Set
 +-------+-------+----------+------------+---------------------+------------+-----------+
 | JobId | Level | JobFiles | JobBytes   | StartTime           | VolumeName | StartFile |
 +-------+-------+----------+------------+---------------------+------------+-----------+
 |     8 | F     |      481 | 11,743,093 | 2006-08-30 16:51:14 | TestVol001 |         0 |
 |    14 | I     |        0 |          0 | 2006-08-30 17:16:10 | TestVol001 |         0 |
 +-------+-------+----------+------------+---------------------+------------+-----------+
 You have selected the following JobIds: 8,14
 Building directory tree for JobId 8 ...  ++++++++++++++++++++++++++++++++++++++++++++
 Building directory tree for JobId 14 ...
 2 Jobs, 444 files inserted into the tree and marked for extraction.
 You are now entering file selection mode where you add (mark) and
 remove (unmark) files to be restored. No files are initially added, unless
 you used the "all" keyword on the command line.
 Enter "done" to leave this mode.
 cwd is: /
 $

Ready to mark.

 $ help
  Command    Description
  =======    ===========
  cd         change current directory
  count      count marked files in and below the cd
  dir        long list current directory, wildcards allowed
  done       leave file selection mode
  estimate   estimate restore size
  exit       same as done command
  find       find files, wildcards allowed
  help       print help
  ls         list current directory, wildcards allowed
  lsmark     list the marked files in and below the cd
  mark       mark dir/file to be restored recursively, wildcards allowed
  markdir    mark directory name to be restored (no files)
  pwd        print current working directory
  unmark     unmark dir/file to be restored recursively in dir
  unmarkdir  unmark directory name only no recursion
  quit       quit and do not do restore
  ?          print help

Par defaut, tout est restoré aprés le done. On ne peut unmark que les sauvegardes, c'est à dire : pas le chemin vers la sauvegarde. Dans mon cas, le répertoire sauvé est:

 /home/thierry/tmp/

Le marquage commence dans '…/tmp'

 cwd is: /home/thierry/tmp/
 $ dir
 drwxr-xr-x   8 thierry  thierry       4096  2006-08-30 16:16:22 */home/thierry/tmp/meat4bacula/

Donc on y va:

 $ unmark meat4bacula
 481 files unmarked.
 $ cd meat4bacula
 cwd is: /home/thierry/tmp/meat4bacula/
 $ dir
 drwxr-xr-x   2 thierry  thierry       4096  2006-08-30 16:16:20  /home/thierry/tmp/meat4bacula/X11/
 -rw-r--r--   1 thierry  thierry      25795  2006-08-30 16:16:22  /home/thierry/tmp/meat4bacula/__dlog_USER_Thierry~tmp.txt
 drwxr-xr-x   2 thierry  thierry       4096  2006-08-30 16:16:21  /home/thierry/tmp/meat4bacula/arch2now/
 ... snip ...
 drwxr-xr-x   2 thierry  thierry       4096  2006-08-30 16:16:21  /home/thierry/tmp/meat4bacula/xorg/
 $ mark X11
 17 files marked.
 $ mark xorg
 2 files marked.
 $ mark she*
 1 file marked.
 $ count
 481 total files/dirs. 21 marked to be restored.
 $                                          

C'est beau, encore !

 $ done
 Bootstrap records written to /var/lib/bacula/bourse2-dir.2.restore.bsr
 The job will require the following Volumes:
    TestVol001
 20 files selected to be restored.
 Run Restore job
 JobName:    RestoreFiles
 Bootstrap:  /var/lib/bacula/bourse2-dir.2.restore.bsr
 Where:      /tmp/bacula-restores
 Replace:    always
 FileSet:    Full Set
 Client:     nintest-fd
 Storage:    File
 When:       2006-08-30 17:40:12
 Catalog:    MyCatalog
 Priority:   10
 OK to run? (yes/mod/no):          

Oh oui !

 OK to run? (yes/mod/no): yes
 Job started. JobId=16
 *                         

  • status jobid=16

JobId 16 is not running.

 You have messages.

Chouette, un mail:

 ...
 kubunin-fd: drwxr-xr-x   8 thierry  thierry     4096 2006-08-30 16:16:32  /tmp/bacula-restores/home/thierry/tmp/meat4bacula/
 30-aoû 17:41 bourse2-dir: Bacula 1.38.11 (28Jun06): 30-aoû-2006 17:41:05
   JobId:                  16
   Job:                    RestoreFiles.2006-08-30_17.41.01
   Client:                 nintest-fd
   Start time:             30-aoû-2006 17:41:03
   End time:               30-aoû-2006 17:41:05
   Files Expected:         20
   Files Restored:         21
   Bytes Restored:         8,553,403
   Rate:                   4276,7 KB/s
   FD Errors:              0
   FD termination status:  OK
   SD termination status:  OK
   Termination:            Restore OK
 30-aoû 17:41 bourse2-dir: Begin pruning Jobs.
 30-aoû 17:41 bourse2-dir: No Jobs found to prune.
 30-aoû 17:41 bourse2-dir: Begin pruning Files.
 30-aoû 17:41 bourse2-dir: No Files found to prune.
 30-aoû 17:41 bourse2-dir: End auto prune.
 *

Un client sous Windows

On peut trouver un client pour windows a partir de www.bacula.org, et notamment, par exemple, celui-ci:

 http://switch.dl.sourceforge.net/sourceforge/bacula/winbacula-1.38.10.exe

On installe 'bacula-fd' dans C:/Program Files/bacula par exemple, puis on edite le fichier C:/Program Files/bacula/bin/bacula-fd.conf, pour avoir quelques choses du genre:

 Director {
   Name = bourse2-dir
   Password = "oa72Jssa__le_mot_de_passe"
   Address = bacula-dir
 }
 #
 # "Global" File daemon configuration specifications
 #
 FileDaemon {                          # this is me
   Name = wazoonetel-fd
   FDport = 9102                  # where we listen for the director
 #<tj>
 #  WorkingDirectory = /bacula/working
 #  Pid Directory = /bacula/working
   WorkingDirectory = "C:/Program Files/bacula/working"
   Pid Directory = "C:/Program Files/bacula/working"
 #</tj>
 }
 # Send all messages except skipped files back to Director
 Messages {
   Name = Standard
   director = bourse2-dir = all, !skipped
 }

Editons le fichier dans C:/WINNT/system32/drivers/etc/hosts j'ajoute la ligne suivante:

 172.16.0.33	bacula-dir

Revenons sur le serveur dans /etc/bacula/bacula-dir.conf et ajoutons le nouveau Client :

 Client {
   Name = wazoonetel-fd
   Address = wazoonetel-fd
   FDPort = 9102
   Catalog = MyCatalog
   Password = "oa72Jssa__le_mot_de_passe"         # password for FileDaemon
   File Retention = 30 days            # 30 days
   Job Retention = 6 months            # six months
   AutoPrune = yes                     # Prune expired Jobs/Files
 }

Tiens, verifions d'abord la configuration:

 # bacula-dir -t -c /etc/bacula/bacula-dir.conf

Puis on reload la config

 # /etc/init.d/bacula-director reload
 Reloading Bacula Director...bacula-dir.

Retour sous Windoz. Le service Bacula File Server n'etant pas demarré (on a dit NON lors de l'installation), on le demarre maintenant:

 > Control Panel > Administrative Tools > Services > Bacula File Server > Start

Puis on test avec bconsole :

  • status client

 Connecting to Client wazoonetel-fd at wazoonetel-fd:9102
 wazoonetel-fd Version: 1.38.10 (08 June 2006)  VSS Windows 2000 MVS NT 5.0.2195
 Daemon started 31-Aug-06 15:51, 0 Jobs run since started.
 No Terminated Jobs.
 Running Jobs:
 Director connected at: 31-Aug-06 15:52
 No Jobs running.
 ====
 *    

Waouh! Trop fort titi !

BackupCatalog Error

J'ai une erreur persistante:

 10-sep 23:10 bourse2-dir: BackupCatalog.2006-09-10_23.10.00 Fatal error: RunBeforeJob error: ERR=Child exited with code 1

Je regarde dans /etc/bacula/bacula-fd.conf et je vois:

 Job {
  Name = "BackupCatalog"
  ... snip ...
  # This creates an ASCII copy of the catalog
  RunBeforeJob = "/etc/bacula/scripts/make_catalog_backup -u<user> -p<password>"
  ... snip ...
 }

Il faut donc (surement) remplir les tags <user> et <password>. Mais je ne connais pas le password du user bacula pour MySQL.

On trouve ça dans la section suivante :

 Catalog {
  Name = MyCatalog
  dbname = bacula; DB Address = ""; user = bacula; password = "le_password"
 }

Justement “le_password” m'etait inconnu, puisqu'il est defini par un scripte sans mon intervention lors de la creation du compte bacula sur MySQL (tiens, ca sonne bien: “le compte bacula”…:) )

Donc je reviens dans la section “Job BackupCatalog” et j'ecris:

  RunBeforeJob = "/etc/bacula/scripts/make_catalog_backup bacula bacula le_password"

Pour paramètre:

 1 - nom de la base **bacula**
 2 - nom du user **bacula**
 3 - le mot de passe

C'est ce qu'en j'en ai deduis en parcourant le script make_catalog_backup.

Tips

reload config

A partir de bconsole : reload

serveur_bacula.txt · Dernière modification : 2008/08/28 09:27 de thierry