====== Bacula ====== ===== Liens ===== http://www.bacula.org ===== 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 ===== {{http://kaakool.free.fr/wiki/uploads/Informatique/Conf-Diagram.png}} ===== Installation ===== - 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 [[http://www.bacula.org/dev-manual/Configuring_Director.html|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: [[http://www.bacula.org/dev-manual/Console_Configuration.html|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 ./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 -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 - 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 # # Address = bourse2 Address = nin # 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 = 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 { # # Enabled=no # 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 # # Address = bourse2 # N.B. Use a fully qualified name here Address = 127.0.0.1 # N.B. Use a fully qualified name here # 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: -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* ./make_bacula_tables* * : 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 # # SDAddress = 127.0.0.1 SDAddress = 172.16.0.33* # } *: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 # # 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 # 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 # # WorkingDirectory = /bacula/working # Pid Directory = /bacula/working WorkingDirectory = "C:/Program Files/bacula/working" Pid Directory = "C:/Program Files/bacula/working" # } # 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 -p" ... snip ... } Il faut donc (surement) remplir les tags **** et ****. 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''