Next: Configuration du Client/File Daemon
Up: Bacula User's Guide
Previous: Adapter les fichiers de
Contents
Index
Subsections
Configurer le Director
Parmi tous les fichiers de configuration requis pour exécuter Bacula,
celui du Director est le plus compliqué, et c'est celui que vous modifierez
le plus souvent, en ajoutant des clients ou en modifiant les FileSets.
Pour une discussion générale concernant les fichiers et ressources ainsi
que les types de données reconnus par Bacula, veuillez consulter le
chapitre
Configuration de ce manuel.
Les types de ressources du Director sont :
Job, JobDefs, Client, Storage, Catalog, Schedule, FileSet, Pool, Director, et
Messages. Nous les présentons ici dans l'ordre le plus logique (relativement
au fichier de configuration du Director) :
- Director -- Pour définir le nom du
Director et son mot de passe pour l'authentification du programme Console. Il
ne doit y avoir qu'une seule définition de ressource Director dans le
fichier de configuration. Si vous avez soit /dev/random soit bc
sur votre machine, Bacula génèrera un mot de passe aléatoire lors du
processus de configuration, sinon, il sera laissé blanc.
- Job -- Pour définir les Jobs de types
sauvegarde et restauration, et pour lier les ressources Client, FileSet et
Schedules à utiliser conjointement pour chaque Job.
- JobDefs -- Ressource optionnelle destinée à
fournir des valeurs par défaut pour les ressources Job.
- Schedule -- Pour définir le moment
où un Job doit être lancé automatiquement par le scheduler
interne de Bacula.
- FileSet -- Pour définir l'ensemble des
fichiers à sauvegarder pour chaque client.
- Client -- Pour définir quel Client est
à sauvegarder.
- Storage -- Pour définir sur quel
périphérique physique les volumes seront montés.
- Pool -- Pour définir quel le pool de volumes
qui peut être utilisé pour un Job donné
- Catalog -- Pour définir la base de
données où conserver les listes des fichiers sauvegardés et des volumes
où ils ont été sauvegardés.
- Messages -- Pour définir les
destinataires (ou les fichiers de logs) des messages d'erreur et
d'information.
La ressource Director
La ressource Director définit les attributs du Director exécuté sur le
réseau. Dans l'implémentation actuelle, il n'y a qu'une ressource
Director, mais la réalisation finale contiendra plusieurs Directors pour
maintenir la redondance de la base des indexes et média.
- Director
-
Début de la ressource Director. Une ressource Director et une seule doit
être définie.
- Name = <nom>
-
Le nom du Director utilisé par l'administrateur système. Cette directive
est requise
- Description = < texte>
-
Le champ texte contient une description du Director qui sera affichée dans
l'interface graphique. Cette directive est optionnelle.
- Password = <UA-password>
-
Spécifie le mot de passe qui doit être fourni par la Console Bacula par
défaut pour être autorisée. Le même mot de passe doit apparaître
dans la ressource Director du fichier de configuration de la console.
Pour plus de sécurité, le mot de passe ne transite jamais sur le réseau,
l'authentification se fait via un échange de type challenge-response
d'un hash code créé avec le mot de passe. Cette directive est
requise. Si vous disposez de /dev/random ou bc sur votre machine,
Bacula génèrera un mot de passe aléatoire lors du processus
d'installation, sinon il sera laissé blanc et vous devrez en définir un
manuellement.
- Messages = <Nom-de-ressource-Messages>
-
La ressource messages spécifie où doivent être délivrés les messages du Director
qui ne sont pas associés à un job spécifique. La plupart des messages sont relatifs
à un job et seront dirigés vers la ressource messages spécifiée par le job.
Cependant, quelques messages peuvent être générés lorsque aucun job n'est actif.
Cette directive est requise.
- Working Directory = <Répertoire>
-
Cette directive spécifie un répertoire où le Director peut déposer ses fichiers
d'états. Ce répertoire ne devrait être utilisé que par Bacula, mais il peut être
partagé par d'autres daemons Bacula. Notez cependant que si ce répertoire est
partagé avec d'autres daemons Bacula, vous devez vous assurer que le nom Name
donné à chaque daemon est unique afin d'éviter des collisions entre les fichiers
temporaires utilisés. Par défaut, le processus de configuration de Bacula créé des noms
de daemons uniques en les postfixant avec -dir, -fd et -sd.
Les substitutions shell standard sont effectuées à la lecture du fichier de
configuration, de sorte que des valeurs telles que $HOME seront correctement
substituées. Cette directive est requise.
Si vous avez spécifié un utilisateur et/ou un groupe pour le Director lors de la
configuration avec les options --with-dir-user et/ou --with-dir-group de
la commande ./configure, le répertoire de travail Working Directory doit appartenir
doit appartenir à ce groupe et à cet utilisateur.
- Pid Directory = <Répertoire>
-
Cette directive spécifie un répertoire où le Director peut déposer son fichier
d'Id de processus. Ce fichier est utilisé pour stopper Bacula et prévenir l'exécution
simultanée de plusieurs copies de Bacula. Les substitutions shell standard sont
effectuées à la lecture du fichier de configuration, de sorte que des valeurs
telles que $HOME seront correctement substituées.
Typiquement, sur les systèmes Linux, vous utiliserez ici /var/run. Si vous
n'installez pas Bacula dans les répertoires système, vous pouvez utiliser le
répertoire de travail Working Directory défini plus haut.
Cette directive est requise.
- Scripts Directory = <Directory>
-
Cette directive spécifie le répertoire dans lequel le Director devra rechercher
le script Python de démarrage DirStartup.py. Ce répertoire peut être
partagé par d'autres daemons Bacula.Les substitutions shell standard sont effectuées
à la lecture du fichier de configuration, de sorte que des valeurs telles que
$HOME seront correctement substituées. Cette directive est optionnelle.
- QueryFile = <Path>
-
Cette directive spécifie un répertoire et un fichier dans lequel le
Director peut trouver les requêtes SQL préétablies pour la commande
Query de la Console. Les substitutions shell standard sont
effectuées à la lecture du fichier de configuration, de sorte que des valeurs
telles que $HOME seront correctement substituées.
Cette directive est requise.
- Maximum Concurrent Jobs = <nombre>
-
Où <nombre> est le nombre maximal de jobs qui peuvent être exécutés
simultanément par le Director. La valeur par défaut est 1, mais vous pouvez utiliser
une valeur plus grande.
Notez que le format des volumes devient beaucoup plus compliqué avec plusieurs jobs
exécutés simultanément. De ce fait, les restaurations peuvent prendre beaucoup plus
de temps si Bacula doit faire le tri parmi les segments entremélés de ces jobs. Ceci
peut être évité en s'arrangeant pour que chacun des jobs exécutés simultanément
écrive sur un volume distinct. Une autre possibilité consiste à utiliser le
data spooling : les données seront d'abord "spoolées" sur disque
simultanément, ensuite les fichiers "spool" seront écrits séquentiellement
sur le volume.
Dans certains cas, des directives telles que Maximum Volume Jobs ne sont pas
correctement synchronisées avec le nombre de jobs simultanés, et des problèmes
de synchronisation subtils peuvent survenir, aussi des tests minutieux sont recommandés.
Actuellement, il n'y a aucun paramètre de configuration pour régler ou limiter
le nombre de connections par console. Un maximum de cinq connection simultanées
est autorisé.
Pour plus de détails concernant l'exécution simultanée de plusieurs jobs, consultez la
partie Exécution simultanée de plusieurs jobs du chapitre Astuces de ce manuel.
- FD Connect Timeout = <durée>
-
Où durée est le délai durant lequel le Director tente de contacter
le File Daemon pour démarrer un job. Une fois ce délai écoulé, le Director supprimera le job.
La valeur par défaut est 30 minutes.
- SD Connect Timeout = <durée>
-
Où durée est le délai durant lequel le Director tente de contacter
le Storage Daemon pour démarrer un job. Une fois ce délai écoulé, le Director supprimera le job.
La valeur par défaut est 30 minutes.
- DirAddresses = <Spécification-adresses-IP>
-
Spécifie les ports et adresses sur lesquels le Director se met en attente de
connections de Consoles Bacula. La meilleure explication est sans doute un exemple :
DirAddresses = {
ip = { addr = 1.2.3.4; port = 1205;}
ipv4 = {
addr = 1.2.3.4; port = http;}
ipv6 = {
addr = 1.2.3.4;
port = 1205;
}
ip = {
addr = 1.2.3.4
port = 1205
}
ip = { addr = 1.2.3.4 }
ip = { addr = 201:220:222::2 }
ip = {
addr = bluedot.thun.net
}
}
où "ip", "ip4", "ip6", "addr", et "port sont les mots clef. Notez que
les adresses peuvent être spécifiées sous forme de quadruplets pointés, ou
suivant la notation à doubles points IPv6, ou encore sous forme de nom symbolique
(seulement pour la spécification ip). D'autre part, le port peut être spécifié
par un nombre, ou par une valeur mnémonique du fichier /etc/services. Si un port
n'est pas précisé, celui par défaut sera utilisé. Si une section ip est spécifiée,
la résolution peut être faite soit par IPv4, soit par IPv6. Si ip4 est spécifié,
seules les résolutions IPv4 seront permises. Il en va de même avec ip6.
Notez que si vous utilisez la directive DirAddresses, vous ne devez utiliser ni la directive
DirPort, ni la directive DirAddress dans la même ressource.
- DIRport = <numéro-de-port>
-
Spécifie le port (un entier positif) sur lequel le Director est à l'écoute
de connections de Consoles Bacula. Ce même numéro de port doit être spécifié
dans la ressource Director du fichier de configuration de la console. La
valeur par défaut est 9101, aussi, il n'est en principe pas nécessaire
de renseigner cette directive. Elle n'est pas requise si vous spécifiez des
DirAdresses.
- DirAddress = <Adresse-IP>
-
Cette directive est optionnelle. Lorsqu'elle est spécifiée, le Director n'accepte
de connections Console que de l'adresse spécifiée Adresse-IP, qui peut être
soit un nom de domaine, soit une adresse IP au format quadruplet pointé ou chaîne quotée.
Si cette directive n'est pas spécifiée, le Director acceptera des connections de Console
de toute adresse valide. Notez que contrairement à la spécification DirAdresses décrite
plus haut, cette directive ne permet de spécifier qu'une seule adresse. Cette directive
n'est pas requise si vous utilisez la directive DirAdresses.
Voici un exemple d'une ressource Director valide :
Director {
Name = HeadMan
WorkingDirectory = "$HOME/bacula/bin/working"
Password = UA_password
PidDirectory = "$HOME/bacula/bin/working"
QueryFile = "$HOME/bacula/bin/query.sql"
Messages = Standard
}
La ressource Job
La ressource Job définit un Job (sauvegarde, restauration,...) que Bacula doit
exécuter. Chaque définition de ressource Job contient le nom d'un client, la
liste des éléments à sauvegarder (FileSet), la planification (Schedule) pour
ce Job, le lieu où sauvegarder ces données (Storage Device) et quel groupe de
media utiliser (Pool). En effet, chaque ressource Job doit répondre aux questions :
"Quoi ?", "Où ?", "Quand ?" et "Comment ?" soit, respectivement Fileset, Storage,
Schedule, Type et Niveau (Sauvegarde/Restauration - Full/Differentielle/Incrémentale).
Notez que le FileSet doit être spécifié lors des restaurations pour des raisons
historiques, mais il n'est plus utilisé.
Un seul type (Backup, Restore, ...) peut être spécifié pour un Job donné.
Si vous voulez sauvegarder plusieurs FileSets sur le même client, vous devez définir un
Job pour chacun d'entre eux.
- Job
-
Début de la ressource Job. Il faut définir au moins une ressource Job.
- Name = <name>
-
Le nom du Job. Ce nom peut être utilisé avec la commande Run du
programme Console pour lancer un Job. Si le nom contient des espaces,
il doit être placé entre quotes. C'est généralement une bonne idée de
nommer vos Jobs du nom du Client qu'ils sauvegardent, afin de les
identifier aisément.
Lors de l'exécution d'un Job, son nom unique est composé du nom que vous avez
spécifié ici suffixé avec la date et l'heure de sa planification.
Cette directive est requise.
- Enabled = <yes|no>
-
Cette directive permet d'activer ou désactiver l'exécution automatique d'un job
par le planificateur.
- Type = <job-type>
-
La directive Type spécifie le type de Job, qui peut être l'un des
suivants : Backup, Restore, Verify, ou Admin.
Cette directive est requise. Pour chaque type de Job, il existe différents
niveaux, qui seront décrits dans les prochains paragraphes.
- Backup
-
Définit une sauvegarde. En principe, vous aurez au moins un job de type Backup
par client sauvegardé. A moins que vous ne désactiviez le catalogue, la
plupart des données et statistiques concernant les fichiers sauvegardées
seront écrites dans le catalogue.
- Restore
-
Définit une restauration. En principe, vous ne créerez qu'un seul job de ce
type, que vous utiliserez comme un prototype que vous modifierez à l'aide
de la console lorsque vous devrez restaurer. Bien que certaines informations
basiques soient conservées dans le catalogue lors de restaurations, leur
quantité est infime en regard des informations stockées pour une sauvegarde --
par exemple, aucune entrée de nom de fichier n'est générée, puisqu'aucun fichier
n'est sauvegardé.
- Verify
-
Définit un Job de type Verify. Le Jobs de type verify permettent de
comparer le catalogue au système de fichiers ou à ce qui a été sauvegardé.
Vous pouvez l'utiliser pour vous assurer qu'une cartouche de données est
lisible, mais aussi comme un système de détection d'intrusion à la fade
Tripwire.
- Admin
-
Définit un Job de type Admin. Un Admin peut s'utiliser pour "élaguer"
périodiquement le catalogue, si vous ne souhaitez pas que ceci soit fait à la fin
de chaque sauvegarde. Bien que les Jobs de type admin soient enregistrés dans le
catalogue, la quantité de données générée est infime.
- Level = <job-level>
-
La directive Level spécifie le niveau d'exécutiondu job par défaut.
Chaque type de job a son propre jeu de niveaux qui peuvent être spécifiés.
Le niveau d'exécution est en général surchargé par une valeur différente
spécifiée dans la ressource Schedule. Cette directive n'est pas
requise mais doit être spécifiée soit ici, soit en tant que surcharge
dans la ressource Schedule.
Pour un job de type Backup le niveau doit être l'un des suivants :
- Full
-
Tous les fichiers du FileSet, qu'ils aient été modifiés ou non.
- Incremental
-
Tous les fichiers modifiés depuis la dernière sauvegarde valide du FileSet
spécifié pour le même job. Si le Director ne peut trouver une sauvegarde Full antérieure,
le niveau du job sera élevé en une sauvegarde Full. Lorsque le Director
recherche une Full valide dans le catalogue, il recherche un job avec
les caractéristiques suivantes :
- le même nom de job ;
- le même nom de client ;
- le même FileSet (toute modification de la définition du FileSet telle
que l'ajout ou la suppression de fichiers dans les sections Include ou
Exclude constitue un changement de FileSet).
- le niveau requis (Full, Differential ou Incremental)
- le job s'est terminé normalement, c'est à dire un qu'il ne s'est pas terminé
en échec, et n'a pas été effacé.
Si toutes les conditions ci-dessus ne sont pas réalisées, le Director
augmentera la sauvegarde incrémentale en une sauvegarde Full. Dans le cas
contraire, la sauvegarde incrémentale sera effectuée normalement.
Le File Daemon (Client) détermine les fichiers à sauvegarder pour une
incrémentale par comparaison de l'heure de démarrage du Job précédent
(Full, Différentiel ou Incrémental) avec les dates de dernière modification
de chaque fichier (st_mtime) et de ses attributs (st_ctime). Si le fichier
ou ses attributs ont changés depuis cette date de démarrage, alors le fichier
sera sauvegardé.
Veuillez noter que certains logiciels anti-virus peuvent modifier la date
st_time lors de leurs opérations de scan. Ainsi, si l'antivirus modifie
la date d'accès (st_atime), qui n'est pas utilisée par Bacula, il
provoquera une modification du st_ctime et conduira Bacula à sauvegarder
les fichiers concernés lors des incrémentales et différentielles. Dans le
cas de l'antivirus Sophos, vous pouvez éviter cet inconvénient en utilisant
l'option --no-reset-atime. Pour les autres logiciels, voyez
leurs manuels.
Lorsque Bacula effectue une sauvegarde incrémentale, tous les fichiers modifiés
présents sur le système sont sauvegardés. Cependant, tout fichier supprimé depuis
la dernière Full demeure dans le catalogue, ce qui signifie que si vous effectuez
une restauration à partir de sauvegardes incrémentales (et de la Full associée),
les fichiers supprimés depuis la dernière Full seront aussi restaurés. Ces fichiers
n'apparaîtront plus dans le catalogue après avoir fait une nouvelle sauvegarde
Full. Le processus pour supprimer ces fichiers du catalogue lors d'une
incrémentale ralentirait fortement les sauvegardes incrémentales. Il n'est
actuellement pas implémenté dans Bacula.
De plus, si vous déplacez un répertoire plutôt que de le copier, les fichiers qu'il
contient voient leurs dates de dernière modification (st_mtime) et de dernier accès
(st_ctime) inchangés. Par conséquent, ces fichiers ne seront probablement
sauvegardés par aucune incrémentale ou différentielle, puisque ces dernières
ne se réfèrent qu'à ces indicateurs. Aussi, il est préférable de copier un dossier
avant de supprimer l'original plutôt que de le déplacer, si vous voulez qu'il soit
correctement sauvegardé.
- Differential
-
Tous les fichiers modifiés depuis la dernière sauvegarde Full valide du FileSet
spécifié pour le même job. Si le Director ne peut trouver une sauvegarde Full
antérieure, le niveau du job sera élevé en une sauvegarde Full. Lorsque le
Director recherche une Full valide dans le catalogue, il recherche un job avec
les caractéristiques suivantes :
- le même nom de job ;
- le même nom de client ;
- le même FileSet (toute modification de la définition du FileSet telle
que l'ajout ou la suppression de fichiers dans les sections Include ou
Exclude constitue un changement de FileSet).
- le Job était une sauvegarde FULL
- le Job s'est terminé normalement, c'est à dire qu'il ne s'est pas terminé
en échec, et n'a pas été effacé.
Si toutes les conditions ci-dessus ne sont pas réalisées, le Director
augmentera la sauvegarde différentielle en une sauvegarde Full. Dans le cas
contraire, la sauvegarde différentielle sera effectuée normalement.
Le File Daemon (Client) détermine les fichiers à sauvegarder pour une
différentielle par comparaison de l'heure de démarrage de la dernière
sauvegarde Full avec les dates de dernière modification
de chaque fichier (st_mtime) et de ses attributs (st_ctime). Si le fichier
ou ses attributs ont changés depuis cette date de démarrage, alors le fichier
sera sauvegardé. La date de démarrage utilisée est affiché après le Since
du rapport de Job. Dans de rares cas, certains fichiers sont sauvegardés deux fois
à cause de l'utilisation de la date de démarrage de la sauvegarde précédente,
mais ceci assure qu'aucun changement n'est perdu. Comme pour les incrémentales,
vous devriez vous assurer que les horloges de votre serveur Bacula et de vos clients
sont synchronisées, ou aussi proches que possible, pour éviter le risque d'omission
d'un fichier. Notez qu'à partir de la version 1.33, Bacula effectue automatiquement
ces ajustements de sorte que les horloges utilisées par Bacula soient synchrones.
Veuillez noter que certains logiciels anti-virus peuvent modifier la date
st_time lors de leurs opérations de scan. Ainsi, si l'antivirus modifie
la date d'accès (st_atime), qui n'est pas utilisée par Bacula, il
provoquera une modification du st_ctime et conduira Bacula à sauvegarder
les fichiers concernés lors des incrémentales et différentielles. Dans le
cas de l'antivirus Sophos, vous pouvez éviter cet inconvénient en utilisant
l'option --no-reset-atime. Pour les autres logiciels, voyez
leurs manuels.
Lorsque Bacula effectue une sauvegarde différentielle, tous les fichiers modifiés
présents sur le système sont sauvegardés. Cependant, tout fichier supprimé depuis
la dernière Full demeure dans le catalogue, ce qui signifie que si vous effectuez
une restauration à partir de sauvegardes différentielles (et de la Full associée),
les fichiers supprimés depuis la dernière Full seront aussi restaurés. Ces fichiers
n'apparaîtront plus dans le catalogue après avoir fait une nouvelle sauvegarde
Full. Le processus pour supprimer ces fichiers du catalogue lors d'une
incrémentale ralentirait fortement les sauvegardes différentielles. Il n'est
actuellement pas implémenté dans Bacula, mais plannifié pour une future version
de Bacula.
Comme noté ci-dessus, si vous déplacez un répertoire plutôt que de le copier, les fichiers
qu'il contient voient leurs dates de dernière modification (st_mtime) et de dernier accès
(st_ctime) inchangés. Par conséquent, ces fichiers ne seront probablement
sauvegardés par aucune incrémentale ou différentielle, puisque ces dernières
ne se réfèrent qu'à ces indicateurs. Aussi, il est préférable de copier un dossier
avant de supprimer l'original plutôt que de le déplacer, si vous voulez qu'il soit
correctement sauvegardé.
Régulièrement, quelqu'un demande à quoi servent les sauvegardes différentielles
du moment que les incrémentales récupèrent tous les fichiers modifiés. Il existe
plusieurs réponses à cette question, mais la plus importante à mes yeux est de
combiner toutes les incrémentales et différentielles depuis la dernière full en
une seule différentielle. Ceci a deux effets : 1. La redondance. 2. Plus important,
la réduction du nombre de volumes requis pour faire une restauration en
éliminant la nécessité de lire tous les volumes des précédentes incrémentales
depuis la dernière full.
Pour un Job de type Restore, aucun niveau ne doit être spécifié.
Pour un Job de type Verify, le niveau peut être l'un des suivants :
- InitCatalog
-
Examine le FileSet spécifié et stocke les attributs de fichiers dans le
catalogue. Vous pouvez vous interroger sur l'intérêt d'un Job qui ne
sauvegarde aucun fichier. La réponse est de pouvoir utiliser Bacula comme
vous utiliseriez Tripwire, en d'autres termes, ce type de Jobs vous permet
de sauvegarder l'état d'un ensemble de fichiers défini par un FileSet
afin de pouvoir ultérieurement contrôler si rien n'a été modifié, supprimé ou
ajouté. Ceci peut être utilisé pour détecter une intrusion. Typiquement,
vous spécifiez un FileSet qui contient l'ensemble des fichiers qui ne
devraient pas changer (par exemple /sbin, /boot, /lib, /bin, ...). Ensuite,
vous exécutez le Job verify de niveau InitCatalog après l'installation
de votre système, puis après chaque modification (mise à jour). Ensuite,
lorsque vous souhaitez contrôler l'état de votre système de fichiers,
vous utilisez un Job Verify, level = Catalog afin de comparer
le résultat de votre InitCatalog avec l'état actuel de votre système
de fichiers.
- Catalog
-
Compare l'état actuel des fichiers et l'état précédemment sauvegardé
lors d'un InitCatalog. Toutes les anomalies sont rapportées.
Les objets du rapport sont déterminés par les options verify
spécifiées dans la directive Include du FileSet spécifié
(voyez la ressource FileSet ci-dessous pour plus de détails).
Typiquement, cette commande sera exécutée quotidiennement pour
contrôler toute modification de votre système de fichier.
Attention ! Si vous exécutez deux jobs Verify Catalog simultanément sur le même client,
les résultats seront probablement erronnés. En effet, Verify Catalog modifie
le catalogue lors de son exécution afin de détecter les nouveaux fichiers.
- VolumeToCatalog
-
Ce niveau permet de lire les attributs de fichiers écrits sur le Volume
lors du dernier Job. Les attributs de fichiers sont comparés aux valeurs
sauvegardées dans le catalogue et toute différence est rapportée. Ceci
est similaire au niveau Catalog, sauf que ce sont les
attributs des fichiers du volume plutôt que ceux des fichiers du disque
qui sont comparés aux attributs sauvegardés dans le catalogue. Bien que
les attributs et signatures (MD5 ou SHA1) soient comparés, les données
réelles ne le sont pas (elles ne figurent pas dans le catalogue).
Attention ! Si vous exécutez deux jobs Verify VolumeToCatalog simultanément sur le même client,
les résultats seront probablement erronnés. En effet, Verify VolumeToCatalog modifie
le catalogue lors de son exécution afin de détecter les nouveaux fichiers.
- DiskToCatalog
-
Ce niveau permet de lire les fichiers tels qu'ils sont actuellement sur le
disque et de comparer leurs attributs actuels avec ceux stockés dans le
catalogue lors de la dernière sauvegarde pour le Job spécifié par la
directive VerifyJob. Ce niveau diffère du niveau Catalog
décrit plus haut en ce qu'il ne se réfère pas à un Job Verify antérieur,
mais à la dernière sauvegarde. Lorsque vous utilisez ce niveau , vous devez
renseigner les option Verify de la section Include. Ces options déterminent
quels attributs seront comparés.
Cette commande peut se révéler très utile si vous avez des problèmes de disque
car elle comparera l'état actuel de votre disque avec la dernière sauvegarde
valide, qui peut remonter à plusieurs jobs.
Notez que l'implémentation actuelle (1.32c) n'identifie pas les fichiers qui
ont été supprimés.
- Verify Job = <Job-Resource-Name>
-
Si vous exécutez un job verify sans cette directive, le dernier job
exécuté sera comparé avec le catalogue, ce qui signifie que votre commande
verify doit succéder immédiatement à une sauvegarde. Si vous spécifiez
un Verify Job, Bacula trouvera le dernier job exécuté avec ce nom.
Ceci vous permet d'exécuter toutes vos sauvegardes, puis d'exécuter les jobs
Verify sur les sauvegardes de votre choix (le plus souvent, un VolumeToCatalog
de sorte que la cartouche qui vient juste d'être écrite est relue).
- JobDefs = <JobDefs-Resource-Name>
-
Si un nom de JobDef est spécifié dans la définition d'un Job, toutes les valeurs
définies dans la ressource JobDef concernée seront utilisées en tant que valeurs
par défaut pour le Job. Toute valeur explicitement spécifiée dans la
définition du Job outrepasse la valeur par défaut définie par le JobDef.
L'utilisation de cette directive permet d'écrire des ressources Job plus
compactes, où la majeure partie des directives sont définies dans un ou
plusieurs JobDefs. C'est particulièrement pratique si vous avez de nombreux
Jobs similaires avec des variations mineures telles que différents clients.
Un exemple basique de l'utilisation d'un Jobdef est fourni dans le fichier
bacula-dir.conf par défaut.
- Bootstrap = <bootstrap-file>
-
La directive Bootstrap spécifie un fichier bootstrap qui, s'il est fourni,
sera utilisé lors des restaurations et ignoré par tout les autres Jobs.
Le fichier bootstrap contient la liste des cartouches nécessaires
pour la restauration ainsi que les index des fichiers à restaurer
(localisation sur la cartouche). Cette directive
est optionnelle, et n'est utilisée que pour les restaurations. De plus,
elle peut être modifiée lorsqu'une restauration est lancée depuis la console.
Si vous utilisez la commande Restore dans la console pour lancer une
restauration, le fichier bootstrap sera créé automatiquement à partir des
fichiers que vous avez sélectionnés pour la restauration.
Pour plus de détails concernant les fichiers bootstrap, veuillez
consulter le chapitre Restaurer des fichiers avec le fichier Bootstrap
de ce manuel.
- Write Bootstrap = <bootstrap-file-specification>
-
La directive writebootstrap spécifie le de fichier Bootstrap où Bacula
écrira lors de chaque sauvegarde. Ainsi, cette directive s'applique
exclusivement aux jobs de type sauvegarde. Si la sauvegarde est une Full,
Bacula écrase le contenu du fichier spécifié. Sinon, Bacula ajoute les
nouveaux enregistrements Bootstrap à la fin du fichier.
En utilisant cette fonction, vous aurez constamment un fichier bootstrap
capable de recouvrer l'état le plus récent de votre système. Le fichier
bootstrap devrait être écrit sur un disque monté sur une autre machine, de
sorte que vous puissiez en disposer immédiatement en cas de défaillance
de votre disque dur. Une alternative consiste à copier le fichier sur une autre
machine après chaque mise à jour.
Si la spécification de fichier bootstrap débute par une barre verticale (|),
Bacula considère la spécification comme un nom de programme vers lequel les
les enregistrement bootstrap seront redirigés. Ce peut être, par exemple, un
script qui vous envoie par e-mail les enregistrements bootstrap.
A partir de la version 1.40, Bacula effectue des
character substitution comme dans une directive
RunScript. Pour gérer automatiquement vos fichiers bootstrap, vous pouvez utiliser
ceci dans vos JobDefs :
JobDefs {
Write Bootstrap = "%c_%n.bsr"
...
}
Pour plus de détails sur l'utilisation de fichiers bootstrap, veuillez
consulter le chapitre intitulé Le Fichier Bootstrap
de ce manuel.
- Client = <client-resource-name>
-
La directive Client spécifie le Client (File Daemon) à utiliser dans le Job.
Le client est exécuté sur la machine à sauvegarder. Il expédie les fichiers requis
au Storage Daemon lors des sauvegardes, et reoit les fichiers du Storage Daemon
lors des restaurations. Pour plus de détails, consultez la section
Ressource Client de ce chapitre. Cette deirective est requise.
- FileSet = <FileSet-resource-name>
-
La directive FileSet spécifie le FileSet à utiliser dans le Job concerné. Le
FileSet définit les répertoires et fichiers à sauvegarder, ainsi que les options
à utiliser pour les sauvegarder (par exemple la compression,...). Un Job ne peut
contenir qu'un seul FileSet. Pour plus de détails, consultez la section
Ressource FileSet de ce chapitre.
Cette directive est requise.
- Messages = <messages-resource-name>
-
La directive Messages définit la ressource Message qui doit être utilisée
pour le job concerné. Ainsi, elle détermine le comment et où seront
délivrés les différents messages de Bacula. Par exemple, vous pouvez diriger
certains messages vers un fichier de logs, tandis que d'autres seront
envoyés par e-mail. Pour plus de détails, consultez le chapitre
Ressource Messages de ce manuel. Cette directive
est requise.
- Pool = <pool-resource-name>
-
La directive Pool spécifie le jeu de volumes qui doit être utilisé pour
sauvegarder vos données. De nombreuses installations de Bacula
n'utiliseront que le pool défini par défaut Default. Toutefois,
si vous voulez spécifier différents jeux de volumes pou différents clients
ou différents jobs, vous voudrez probablement utiliser les Pools.
Pour plus de détails, consultez la section Ressource Pool
de ce chapitre. Cette directive est requise
- Full Backup Pool = <pool-resource-name>
-
La directive Full Backup Pool spécifie un Pool à utiliser pour les
sauvegardes Full. Cette directive outrepasse toute autre spécification
de Pool lors d'une sauvegarde Full. Cette directive est optionnelle.
- Differential Backup Pool = <pool-resource-name>
-
La directive Differential Backup Pool spécifie un Pool à utiliser pour les
sauvegardes Différentielles. Cette directive outrepasse toute autre spécification
de Pool lors d'une sauvegarde Différentielle. Cette directive est optionnelle.
- Incremental Backup Pool = <pool-resource-name>
-
La directive Incremental Backup Pool spécifie un Pool à utiliser pour les
sauvegardes Incrémentales. Cette directive outrepasse toute autre spécification
de Pool lors d'une sauvegarde Incrémentale. Cette directive est optionnelle.
- Schedule = <schedule-name>
-
La directive Schedule définit la planification du job. Le schedule détermine
la date et l'instant où le job doit être lancé automatiquement, et le niveau
(Full, Différentiel, Incrémental...) du job en question. Cette directive est
optionnelle. Si elle est omise, le job ne pourra être exécuté que manuellement via
la Console. Bien que vous puissiez vous contenter d'une ressource Schedule simple
pour tout job, vous pouvez aussi définir des ressources Schedule avec plusieurs
directives Run, afin de lancer le job à différentes heures. Chacune de ces
directives Run permet d'outrepasser les valeurs par défaut de Level, Pool,
Storage et Messages ressources. Ceci autorise une grande souplesse d'utilisation
d'un simple job.
Pour plus de détails, consultez le chapitre.
Ressource Schedule de ce manuel.
- Storage = <storage-resource-name>
-
La directive Storage définit le nom du service storage que vous souhaitez
utiliser pour sauvegarder les données du FileSet. Pour plus de détails, consultez le
chapitre Ressource Storage de ce manuel.
Cette directive est requise.
- Max Start Delay = <time>
-
La directive Max Start Delay spécifie le délai maximal entre l'horaire
planifié (dans le schedule) et l'horaire effectif de démarrage du job.
Par exemple, un job peut être programmé pour démarrer à 1h, mais être
mis en attente à cause d'autres jobs en cours d'exécution. Si le
Max Start Delay a été réglé à 3600, le job sera supprimmé s'il n'a pas
démarré à 2h. Ceci peut se révéler utile pour, par exemple, éviter qu'un job
s'exécute duant les heures ouvrables. La valeur par défaut est 0 (pas de limite).
- Max Run Time = <time>
-
La directive Max Run Time spécifie le délai alloué pour l'exécution
complète d'un job depuis son lancement (pas nécessairement à l'heure
de sa programmation) jusqu'à sa fin. Cette directive est implémentée
depuis la version 1.33.
- Max Wait Time = <time>
-
La directive Max Wait Time spécifie le délai maximum durant lequel un
job peut rester bloqué en attente d'une ressource (par exemple, en attente du
montage d'une cartouche ou encore en attente des Storage ou File Daemon occupés
à d'autres tâches) depuis son lancement (pas nécessairement à l'heure
de sa programmation) jusqu'à sa fin. Cette directive est implémentée
depuis la version 1.33.
- Incremental Max Wait Time = <time>
-
Cette directive spécifie le temps maximum durant lequel une sauvegarde
incrémentale peut rester bloquée en attente d'une ressource (par exemple, en
attente d'une cartouche ou des File ou Storage daemons), compté à partir
du démarrage du job, (pas nécessairement l'heure à laquelle le job
a été programmé). Notez que si un Max Wait Time a été spécifié,
il peut aussi s'appliquer au job.
- Differential Max Wait Time = <time>
-
Cette directive spécifie le temps maximum durant lequel une sauvegarde
différentielle peut rester bloquée en attente d'une ressource (par exemple, en
attente d'une cartouche ou des File ou Storage daemons), compté à partir
du démarrage du job, (pas nécessairement l'heure à laquelle le job
a été programmé). Notez que si un Max Wait Time a été spécifié,
il peut aussi s'appliquer au job.
- Prefer Mounted Volumes = <yes|no>
-
Si cette directive est activée (c'est le cas par défaut), le Director
ordonne au Storage daemon de sélectionner de préférence soit une
librairie, soit un lecteur avec un volume valide déjà monté, plutôt qu'un
lecteur pas prèt. Si aucun lecteur n'est prèt, c'est le premier lecteur
prèt qui sera sélectionné.
Si cette directive est désactivée, le Storage daemon privilégiera
les lecteurs inutilisés. Ce mode de fonctionnement peut être très utile
pour ces sites avec de nombreux lecteurs qui où il peut être préférable
de maximiser le flux des sauvegardes au prix d'une utilisation d'un plus
grand nombre de lecteurs et de cartouches. Afin d'optimiser l'utilisation
de plusieurs lecteurs, vous voudrez probablement lancer chacun de vos
jobs l'un après l'autre avec un intervalle de 5 secondes environ. Ceci
aidera à assurer que chaque nuit, le même lecteur (volume) est
sélectionné pour le même job. Autrement, lors d'une restauration, vous
pourriez trouver vos fichiers dispersés sur beaucoup plus de volumes que
nécessaire.
- Prune Jobs = <yes|no>
-
En principe, l'élagage des jobs du catalogue est spécifié pour chaque client
dans sa propre ressource Client par la directive AutoPrune. Si cette
directive est spécifiée (normalement, non) et si la valeur est yes,
elle outrepasse la valeur spécifiée dans la ressource Client. La valeur
par défaut est no.
- Prune Files = <yes|no>
-
En principe, l'élagage des fichiers du catalogue est spécifié pour chaque client
dans sa propre ressource Client par la directive AutoPrune. Si cette
directive est spécifiée (normalement, non) et si la valeur est yes,
elle outrepasse la valeur spécifiée dans la ressource Client. La valeur
par défaut est no.
- Prune Volumes = <yes|no>
-
En principe, l'élagage des volumes du catalogue est spécifié pour chaque client
dans sa propre ressource Client par la directive AutoPrune. Si cette
directive est spécifiée (normalement, non) et si la valeur est yes,
elle outrepasse la valeur spécifiée dans la ressource Client. La valeur
par défaut est no.
- RunScript {...}
-
La commande spécifiée est exécutée en tant que programme externe avant le
lancement du job. Cette directive est optionnelle.
Vous disposez des options suivantes :
| Options |
Valeur |
Defaut |
Informations |
| Runs On Success |
Yes/No |
Yes |
La commande est exécutée si le job s'est terminé avec succès |
| Runs On Failure |
Yes/No |
No |
La commande est exécutée si le job a échoué |
| Runs On Client |
Yes/No |
Yes |
La commande est exécutée sur le client |
| Runs When |
Before|After|Always |
Never |
Le moment où la commande doit être exécutée |
| Abort Job On Error |
Yes/No |
Yes |
Abandonne le job si le script retourne
un résultat non nul |
| Command |
|
|
Le chemin vers votre script |
Tout retour de la commande sur la sortie standard est
incluse dans le rapport de job de Bacula. La chaîne bf command doit être
un nom de programme valide ou un script shell
D'autre part,
la chaîne bf command est parcourue puis envoyée vers la fonction execvp(), ce qui
signifie que le chemin de la commande est recherché pour son exécution, mais
qu'il n'y a aucune interprétation shell. Par conséquent, si vous voulez utiliser
des commandes complexes ou toute fonctionnalité du shell telle que la
redirection, vous devez appeler un script shell où vous mettrez vos commandes.
Avant de soumettre la commande spécifiée au système d'exploitation, Bacula
effectue les substitutions suivantes :
%% = %
%c = Nom du client
%d = Nom du Director
%e = Statut de sortie du job
%i = JobId
%j = Nom unique du job
%l = Niveau du job
%n = Nom du job
%s = Temps Depuis (NDT : Since Time)
%t = Type de job (Backup,...)
%v = Nom de volume
Le code de statut de fin de job peut prendre les valeurs suivantes :
- OK
- Error
- Fatal Error
- Canceled
- Differences
- Unknown term code
Aussi, si vous l'utilisez dans une ligne de commande, il vous faudra l'encadrer
de quotes.
Vous disposez des raccourcis suivants :
| Mot clef |
RunsOnSuccess |
RunsOnFailure |
AbortJobOnError |
Runs On Client |
RunsWhen |
| Run Before Job |
|
|
Yes |
No |
Before |
| Run After Job |
Yes |
No |
|
No |
After |
| Run After Failed Job |
No |
Yes |
|
No |
After |
| Client Run Before Job |
|
|
Yes |
Yes |
Before |
| Client Run After Job |
Yes |
No |
|
Yes |
After |
| Client Run After Failed Job |
No |
Yes |
|
Yes |
After |
Exemple :
RunScript {
RunsWhen = Before
AbortJobOnError = No
Command = "/etc/init.d/apache stop"
}
RunScript {
RunsWhen = After
RunsOnFailure = yes
Command = "/etc/init.d/apache start"
}
Considérations particulières à Windows
D'autre part, pour les clients Windows à partir de la version 1.33, notez bien
que vous devez fournir un chemin correct pour votre script, et que le script
peut avoir l'extension .com, .exe, ou .bat. Si vous spécifiez un chemin,
vous devez aussi spécifier l'extension complète. Les commandes à la façon
d'Unix ne fonctionneront pas, à moins que vous n'ayez installé et
correctement configuré Cygwin en plus (et séparément) de Bacula.
La commande peut être n'importe quel programme reconnu par cmd.exe ou command.com
comme un fichier exécutable. Spécifier une extension de fichier exécutable
est optionnel, à moins qu'il y ait une ambiguïté (par exemple ls.bat, ls.exe).
Bacula cherche la commande dans le répertoire "System %Path%" (Dans la
boîte de dialogue des variables d'environnement vous avez les variables
"système" et "utilisateurs". Si bacula-fd fonctionne en tant que
service, seules les variables d'environnement systèmes sont accessibles.)
Les variables d'environnement système peuvent être invoquées avec la
syntaxe %var% et utilisées comme portion du nom de la commande ou des
arguments.
Lorsque la spécification du chemin absolu d'un exécutable ou le nom de
l'exécutable contient des espaces ou des caractères spéciaux, ils doivent
être quotés. Il en va de même pour les arguments.
ClientRunBeforeJob = "\"C:/Program Files/Software
Vendor/Executable\" /arg1 /arg2 \"foo bar\""
Les caractères spéciaux &()[]{}^=;!'+,`~ devront être quotés s'ils font
partie d'un nom de fichier ou d'un argument.
If someone is logged in a blank ``command'' window running the commands will
be present during the execution of the command.
Quelques suggestions de Phil Stracchino pour l'exécution sur les machines
Win32 avec le File Daemon Win32 natif :
- Vous pourriez utiliser la directive ClientRunBeforeJob pour spécifier
un fichier .bat qui exécute les commandes coté client plutôt que
d'essayer d'exécuter (par exemple) regedit /e directement.
- Le fichier batch devrait retourner explicitement 0 lors des exécutions correctes.
- Le chemin vers le fichier batch devrait être spécifié au format Unix :
ClientRunBeforeJob = ``c:/bacula/bin/systemstate.bat''
plutôt qu'au format DOS/Windows :
ClientRunBeforeJob =
``c:\bacula\bin\systemstate.bat''
INCORRECT
L'exemple suivant d'utilisation de la directive Client Run Before Job a été soumis
par un utilisateur :
Vous pourriez écrire un script shell pour sauvegarder une base DB2 dans un FIFO. Voici
le script en question :
#!/bin/sh
# ===== backupdb.sh
DIR=/u01/mercuryd
mkfifo $DIR/dbpipe
db2 BACKUP DATABASE mercuryd TO $DIR/dbpipe WITHOUT PROMPTING &
sleep 1
La ligne suivante dans la ressource Job du fichier bacula-dir.conf :
Client Run Before Job = "su - mercuryd -c \"/u01/mercuryd/backupdb.sh '%t'
'%l'\""
Lorsque le job est exécuté, vous obtiendrez un message de sortie du script
annonçant que la sauvegarde a démarré. Même si la commande est exécutée en
arrière plan avec &, le job bloquera jusqu'à la commande "db2 BACKUP DATABASE", et
la sauvegarde se fige.
Pour remédier à cette situation, la ligne "db2 BACKUP DATABASE"
devrait être modifiée en :
db2 BACKUP DATABASE mercuryd TO $DIR/dbpipe WITHOUT PROMPTING > $DIR/backup.log
2>&1 < /dev/null &
Il est important de rediriger l'entrée et la sortie d'une commande en arrière plan
vers /dev/null pour éviter le bloquage du script.
- Run Before Job = <command>
-
La commande spécifiée est exécutée en tant que programme externe avant le
lancement du job. Cette directive n'est pas requise,mais si elle est définie,
et si le code retour d'exécution du programme est différent de zéro, le job qui
a lancé le programme est effacé.
Run Before Job = "echo test"
est équivalent à :
RunScript {
Command = "echo test"
RunsOnClient = No
RunsWhen = Before
}
Lutz Kittler a fait remarquer que ceci peut être un moyen aisé pour modifier
vos schedules pour les vacances. Par exemple, supposons que vous fassiez
habituellement des sauvegardes Full le vendredi, mais que jeudi et vendredi
soient fériés. Pour éviter d'avoir à changer les cartouches entre jeudi et vendredi
alors que personne n'est au bureau, vous pouvez créer un RunBeforeJob qui retourne
un statut non nul jeudi et zéro les autres jours. Ainsi, le job de jeudi ne sera pas
exécuté, et la cartouche que vous avez inséré mercredi sera disponible pour la Full
de vendredi.
- Run After Job = <command>
-
La commande spécifiée est exécutée en tant que programme externe après la fin
du job. La chaîne bf command doit être un nom de programme valide ou un
script shell. Cette directive n'est pas requise. Si le code de sortie du
programme est non nul, Bacula affiche un message d'avertissement (warning).
Avant de soumettre
la commande spécifiée au système d'exploitation, Bacula effectue les
substitutions de caractères décrites au paragraphe RunScript
Un exemple d'utilisation de cette directive est donné au chapitre
Astuces de ce manuel.
Lisez le paragraphe Run After Failed Job si vous voulez exécuter
une commande lorqu'un job se termine avec un statut anormal.
- Run After Failed Job = <command>
-
La commande spécifiée est exécutée en tant que programme externe après la fin
du job lorqu'il se termine avec un statut d'erreur. Cette directive est optionnelle.
La chaîne command doit être le nom d'un programme ou d'un script shell.
Si le code de sortie du programme est non nul, Bacula affiche un mesage d'avertissement
(warning). Avant de soumettre
la commande spécifiée au système d'exploitation, Bacula effectue les
substitutions de caractères décrites au paragraphe RunScript. Notez que
vous pouvez, si vous souhaitez que
votre programme soit exécuté quel que soit l'issue du job, utiliser une définition
telle que :
RunScript
Command = "echo test"
RunsWhen = After
RunsOnFailure = yes
RunsOnClient = no
RunsOnSuccess = yes # default, you can drop this line
Le chapitre Trucs et astuces de ce manuel propose un
exemple d'utilisation de cette directive.
- Client Run Before Job = <command>
-
Cette directive est similaire à Run Before Job excepté que la
commande est exécutée sur la machine cliente. Les mêmes restrictions
s'appliquent aux sytèmes Unix que celles signalées pour Run Before Job.
- Client Run After Job = <command>
-
Cette directive est similaire à Run After Job sauf qu'elle est exécutée
sur la machine cliente. Veuillez consulter les notes concernant les clients
Windows dans le paragraphe RunScript ci-dessus.
- Rerun Failed Levels = <yes|no>
-
Si la valeur de cette directive est yes (no par défaut), et si
Bacula détecte qu'un job antérieur d'un niveau plus élevé (Full ou
différentiel), alors le job est élevé au niveau le plus haut. Ceci est
particulièrement utile pour sauvegarder les pc portables qui peuvent
être fréquemment inaccessibles. En effet, après l'échec d'une Full, vous
souhaiterez probablement que la prochaine sauvegarde soit de niveau Full
plutôt qu'Incremental ou Différentiel.
- Spool Data = <yes|no>
-
Si la valeur de cette directive est yes (no par défaut), le
Storage Daemon aura pour consigne de stocker les données dans un
fichier spoule sur disque plutôt que de les écrire directement sur bande.
Lorsque toutes les données sont dans le spoule ou lorsque la taille
maximale fixée pour le fichier spoule est atteinte, les données sont
déchargées du spoule vers les bandes. Lorsque la valeur de cette directive
est yes, la directive Spool Attributes est aussi automatiquement
mise à la valeur yes. L'utilisation de cette fonctionnalité
prévient les arrêts et redémarrage incessants lors des incrémentales.
Elle ne doit pas être utilisée si vous sauvegardez sur disque.
- Spool Attributes = <yes|no>
-
La valeur par défaut est no, ce qui signifie que le Storage Daemon
envoie les attributs de fichiers au Director au moment où ils (les fichiers)
sont ecrits sur la bande. Cependant, si vous souhaitez éviter le risque
de ralentissement dû aux mises à jour du catalogue, vous pouvez régler
cette directive à yes, dans ce cas, le Storage Daemon stockera les
attributs de fichiers dans un fichier tampon du Working Directory pour ne les
transmettre au Director qu'à la fin de l'écriture sur bande des données du job.
- Where = <directory>
-
Cette directive ne concerne que les jobs de type Restauration. Elle permet
de spécifier un préfixe au nom du répertoire où tous les fichiers sont
restaurés. Ceci permet de restaurer les fichiers en un emplacement
différent de celui où ils ont été sauvegardés. Si Where n'est pas
renseigné, ou si sa valeur est backslash (/), les fichiers sont
restaurés à leur emplacement d'origine. Par défaut, nous avons donné à
Where la valeur /tmp/bacula-restores dans les fichiers de
configuration fournis en exemple, ceci afin d'éviter l'écrasement
accidentel de vos fichiers.
- Replace = <replace-option>
-
Cette directive ne concerne que les jobs de type Restauration. Elle précise
la conduite à adopter dans l'éventualité où Bacula serait conduit à restaurer
un fichier ou un répertoire qui existe déjà. Les options suivantes sont
disponibles :
- always
-
Lorsque le fichier à restaurer existe déjà, il est supprimé et remplacé par la
copie sauvegardée.
- ifnewer
-
Si le fichier sauvegardé (sur bande) est plus récent que le fichier existant,
le fichier existant est supprimé et remplacé par la copie sauvegardée.
- ifolder
-
Si le fichier sauvegardé (sur bande) est plus ancien que le fichier existant,
le fichier existant est supprimé et remplacé par la copie sauvegardée.
- never
-
Si le fichier sauvegardé existe déjà, Bacula renonce à restaurer ce fichier.
- Prefix Links=<yes|no>
-
Si la valeur de cette directive est Yes et si un préfixe de chemin
Where est spécifié, alors ce dernier s'applique aussi aux liens
absolus. La valeur par défaut est No. Lorsque cette directive est à
Yes, tous les liens absolus seront aussi modifiés pour
pointer vers le nouveau répertoire. En principe, c'est ce qui est souhaité :
l'ensemble du répertoire restauré conserve sa cohérence interne. Cependant,
si vous voulez replacer les fichiers ultérieurement à leurs emplacements
d'origine, tous les liens absolus seront brisés.
- Maximum Concurrent Jobs = <number>
-
Où <number> est le nombre maximum de jobs de la ressource Job courrante
qui peuvent être exécutés simultanément. Notez que cette directive ne limite
que les jobs avec le même nom que la ressource dans laquelle elle
figure. Toute autre restriction du nombre maximum de jobs simultanés, que ce soit au
niveau du Director, du Client ou de la ressource Storage, s'applique en plus de
de la limite stipulée ici. La valeur par défaut est 1, mais vous pouvez utiliser
une valeur plus grande. Nous vous recommandons fortement de lire
attentivement le paragraphe WARNING sous Maximum Concurrent Jobs
dans la section concernant la ressource Director.
- Reschedule On Error = <yes|no>
-
Si cette directive est activée, alors si le job se termine en erreur, il sera
reprogrammé en accord avec les directives Reschedule Interval et
Reschedule Times. Si vous supprimez le job, il ne sera pas reprogrammé.
La valeur par défaut est no.
Cette spécification peut se révéler utile pour les pc portables ainsi que pour toutes
les machines qui ne sont pas connectées au réseau en permanence.
- Reschedule Interval = <time-specification>
-
Si cette directive est activée, alors si le job se termine en erreur, il sera
reprogrammé après l'intervalle de temps stipulé par time-specification.
Consultez la section the time specification formats du chapitre
Configurer Bacula pour plus de détails sur les spécifications de temps. Si
aucun intervalle n'est spécifié, le job ne sera pas reprogrammé en cas d'erreur.
- Reschedule Times = <count>
-
Cette directive précise le nombre maximal de tentatives d'exécution du job.
S'il est fixé à zéro (valeur par défaut), le job sera reprogrammé
indéfiniment.
- Run = <job-name>
-
La directive Run (à ne pas confondre avec l'option Run dans un
Schedule) vous permet de démarrer ou de cloner des jobs. En utilisant les
mots-clef de clonage (voir ci dessous), vous pouvez sauvegarder les mêmes
données (ou presque les mêmes) vers deux (ou plus) lecteurs en même temps.
Le nom de job job-name est en principe le même que celui de la
ressource job courante (créant ainsi un clone). Cependant, ce peut être
n'importe quel nom de job, de sorte qu'un job peut démarrer d'autre jobs liés.
La partie après le signe égale doit être encadrée de double quotes, et peut
contenir toute chaîne ou jeu d'options (surcharges) qui pourraient être
spécifiées à l'utilisation de la commande Run dans la Console. Par exemple,
storage=DDS-4 .... De plus, deux mots-clef spéciaux vous permettent de
cloner le job courant : level=%l et since=%s. le %l du mot clef
level permet d'entrer le niveau réel du job courant et le %s du mot clef since
permet d'imposer la même date pour la comparaison que celle utilisée par le job courant.a
Notez que dans le cas du mot-clef since, le %s doit être encadré de double quotes,
qui doivent être elles mêmes précédées de barres obliques arrières puisque elles sont
déjà entre double quotes. Par exemple :
run = "Nightly-backup level=%s since=\"%s\" storage=DDS-4"
Un job cloné ne démarrera pas de nouveaux clones, aussi il n'est pas possible de les cascader.
- Priority = <number>
-
Cette directive vous permet de contrôler l'ordre d'exécution des jobs en
spécifiant un entier positif non nul. Plus grand est ce nombre, plus basse
est la priorité du job. En supposant que vous n'exécutiez pas de jobs
simultanés, tous les jobs en file d'attente avec la priorité 1 seront
exécutés avant ceux avec la priorité 2, et ainsi de suite, sans prise en
compte de l'ordre original de planification.
La priorité affecte seulement les jobs en file d'attente, et non les jobs déja
en cours d'exécution. Si un ou plusieurs jobs de priorité 2 sont déjà en cours
d'exécution, et si un nouveau job est programmé avec la priorité 1, les jobs
en cours d'exécution doivent se terminer pour que le job de priorité 1 puisse
démarrer.
La priorité par défaut est 10.
Si vous voulez exécutez plusieurs jobs simultanés,
vous devriez garder les points suivants à l'esprit :
- Pour exécuter plusieurs jobs simultanés, vous devez ajuster la directive
Maximum Concurrent Jobs (utiliser une valeur supérieure à 1)
en cinq ou six endroits différents : dans le
fichier bacula-dir.conf, les ressources Job, Client, Storage;
dans le fichier bacula-fd, la ressource FileDaemon; et dans le fichier
bacula-sd.conf, la ressource Storage. Si vous omettez l'un d'entre eux,
les jobs seront exécutés un par un.
- Bacula n'exécute pas simultanément les jobs de priorités distinctes.
- Si Bacula exécute un job de priorité 2 et si un nouveau job de priorité
1 est programmé, il attendra la fin du job de priorité 1, même si les
paramètres Maximum Concurrent Jobs pourraient permettre l'exécution
simultanée de deux jobs.
- Supposons que Bacula soit en train d'exécuter un job de priorité 2 et qu'un
job de priorité 1 soit programmé et mis en queue en attente de la fin du
job de priorité 2. Si vous démarrez alors un second job de priorité 2, le job
en attente de priorité 1 empèchera le nouveau job de priorité 2 de s'exécuter
en parallèle au premier. Ainsi : tant qu'il reste un job de priorité supérieure
à exécuter, aucun nouveau job de priorité inférieure ne pourra démarrer, même si
les paramètres Maximum Concurrent Jobs devraient le permettre. Ceci permet
d'assurer que les jobs de priorité supérieure seront exécutés dès que possible.
Si vous avez plusieurs jobs de priorités différentes, il est préférable de ne pas les
démarrer exactement à la même heure, car Bacula doit les examiner un à la fois. Si,
par hazard, Bacula commence par traiter un job de priorité inférieure, il sera
exécuté avant votre job de priorité élevé. Pour éviter cette situation,
démarrez l'un quelconque des jobs de priorité élevée quelques secondes avant
ceux de basse priorité. Ainsi, vous serez assuré que Bacula examine les jobs
dans l'ordre voulu et que votre schéma de priorités sera respecté.
- Write Part After Job = <yes|no>
-
Cette directive est implémentée depuis la version 1.37.
Si la valeur de cette directive est yes (no par défaut), un nouveau
"fichier partition" (ndt : part file) sera créé après la fin du job.
Cette directive devrait être activée lors de l'écriture sur des périphérique
qui requièrent un montage (par exemple, les DVDs), afin de vous assurer que
le fichier partition courant, celui qui contient les données de ce job, est
envoyé vers le périphérique, et qu'aucune donnée n'est laissée dans le fichier
temporaire sur le disque dur. Quoi qu'il en soit, avec certains supports tels
que les DVD+R et DVD-R, beaucoup d'espace (environ 10 Mb) est perdu à chaque fois
qu'un fichier partition est écrit. Aussi, si vous exécutez plusieurs jobs à la
suite, vous devriez régler cette directive à no pour tous ces jobs sauf
le dernier, pour éviter un gaspillage important d'espace, tout en ayant la certitude
que les données sont bien écrites sur le médium lorsque tous les jobs sont
achevés.
Cette directive est ignorée avec les bandes et les périphériques FIFO.
Voici un exemple de définition de ressource Job valide.
Job {
Name = "Minou"
Type = Backup
Level = Incremental # default
Client = Minou
FileSet="Minou Full Set"
Storage = DLTDrive
Pool = Default
Schedule = "MinouWeeklyCycle"
Messages = Standard
}
La ressource JobDefs
La ressource Jobdefs admet toutes les directives qui peuvent apparaître dans
une ressource Job. Une ressource Jobdefs ne créé en aucun cas un Job, son rôle
est de pouvoir être désignée dans une ressource Job comme un ensemble de
paramètres par défaut. Ceci permet de définir plusieurs jobs similaires avec
concision, en ne mentionnant, pour chaque job, que les différences avec les
valeurs par défaut spécifiées dans la ressource Jobdefs.
La ressource Schedule
La ressource Schedule offre un moyen pour planifier automatiquement un Job,
mais aussi la possibilité de surcharger les paramètres par défaut de Level,
Pool, Storage, et Messages ressources. Si une ressource Schedule n'est pas
spécifiée dans un job, ce job ne peut être exécuté que manuellement.
En général, vous spécifierez une action et le moment de son lancement.
- Schedule
-
Début des directives Schedule. La ressource Schedule n'est pas requise,
mais il vous en faudra au moins une si vous souhaitez que vos jobs soient
exécutés automatiquement.
- Name = <name>
-
Le nom du Schedule défini. Cette directive est requise.
- Run = <Job-overrides> <Date-time-specification>
-
La directive Run définit quand un job doit être exécuté, et les éventuelles
surcharges à appliquer. Il est possible de spécifier plusieurs directives
run au sein d'une ressource Schedule, elles seront toutes
appliquées. Si vous avez deux directives Run qui démarrent au même
moment, deux jobs seront lancés simultanément (en fait, avec une seconde d'écart).
La directive Job-overrides permet d'outrepasser les spécifications de
Level, Storage, Messages et Pool écrites dans la ressource Job. De plus,
les spécifications FullPool, DifferentialPool et IncrementalPool permettent
de passer outre les spécification de Pool, en accord avec le niveau (level)
effectif d'exécution du job.
L'utilisation de surcharges permet de peaufiner le paramétrage d'un job
particulier. Par exemple, vous pourriez surcharger une spécification
Messages qui enverrait vos logs de backups vers un fichier, de faon à ce qu'ils
vous soient envoyés par mails pour les Fulls hebdomadaires ou mensuelles.
Les directives Job-overrides sont spécifiées en tant que mot-clef=valeur
où le mot-clef est l'un des suivants : Level, Storage, Messages, Pool, FullPool,
DifferentialPool ou IncrementalPool, et la valeur est définie selon le format
adapté à la directive. Vous pouvez spécifier plusieurs surcharges Job-overrides
en une seule directive Run en les séparant par des espaces ou des
trailing comas (traduction ?). Par exemple :
- Level=Full
-
Tous les fichiers du FileSet qu'ils aient ou non changé.
- Level=Incremental
-
Tous les fichiers qui ont changé depuis la dernière sauvegarde.
- Pool=Weekly
-
Spécifie l'utilisation du Pool nommé Weekly.
- Storage=DLT_Drive
-
Spécifie l'utilisation du lecteur DLT_Drive pour périphérique de stockage.
- Messages=Verbose
-
Spécifie l'utilisation de la ressource messages Verbose pour le job.
- FullPool=Full
-
Spécifie l'utilisation du Pool nommé Full si le job est une sauvegarde Full,
ou s'il a été élevé en Full bien qu'ayant été lancé en tant que différentiel ou
incrémental.
- DifferentialPool=Differential
-
Spécifie l'utilisation du Pool nommé Differential si le job est une
sauvegarde différentielle.
- IncrementalPool=Incremental
-
Spécifie l'utilisation du Pool nommé Incremental si le job est une
sauvegarde incrémentale.
- SpoolData=yes|no
-
Indique à Bacula d'ordonner au Storage Daemon de placer les données sur un
spool disque avant de les envoyer vers les cartouches.
- WritePartAfterJob=yes|no
-
Indique à Bacula d'ordonner au Storage Daemon d'écrire le fichier partition
courant vers le périphérique lorsque le job s'achève (voir
la directive Write Part After Job dans la ressource Job).
Date-time-specification Détermine la planification d'exécution du job.
La spécification est une répétition, et, par défaut, Bacula est paramétré
pour exécuter un job au début de chaque heure de chaque jour de chaque semaine
de chaque mois de chaque année. Ce n'est probablement pas ce que vous souhaitez,
aussi vous devez préciser ou limiter les moments où vous souhaitez voir vos jobs
exécutés. Toute spécification est supposée cyclique et servira à limiter le
cycle par défaut. Ceci se fait en spécifiant des masques ou des horaires,
jours de la semaine, jours du mois, semaines du mois, semaines de l'année et
mois de l'année où vous voulez exécuter le job. En combinant ces possibilités,
vous pouvez définir une planification qui se répète à presque n'importe quelle
fréquence.
Concrètement, vous devez définir les mois, jour, heure et
minute où le job est à exécuter. Parmis ces quatre objets, le jour
est particulier en ce qu'il peut spécifier un jour du mois (1,2,...31) ou de la
semaine (Monday, Tuesday,...Sunday). Enfin, vous pouvez aussi spécifier un
jour de la semaine pour restreindre la planification à la première, deuxième,
troisième, quatrième ou cinquième semaine du mois.
Par exemple, si vous spécifiez seulement un jour de la semaine, disons Mardi,
le job sera exécuté toutes les heures de chaque mardi de chaque mois. La raison
en est que les paramètres Mois et Heure sont restés à leurs valeurs
par défaut : chaque mois et chaque heure.
Notez que, par défaut, sans autre spécification, votre job s'exécutera au
début de chaque heure. Si vous souhaitez que votre job s'exécute plus souvent
qu'une fois par heure, il vous faudra définir plusieurs spécifications run
avec pour chacune une minut différente.
Les dates et horaires d'exécutions des jobs peuvent être spécifiés comme suit,
en pseudo-BNF :
<void-keyword> = on
<at-keyword> = at
<week-keyword> = 1st | 2nd | 3rd | 4th | 5th | first |
second | third | forth | fifth
<wday-keyword> = sun | mon | tue | wed | thu | fri | sat |
sunday | monday | tuesday | wednesday |
thursday | friday | saturday
<week-of-year-keyword> = w00 | w01 | ... w52 | w53
<month-keyword> = jan | feb | mar | apr | may | jun | jul |
aug | sep | oct | nov | dec | january |
february | ... | december
<daily-keyword> = daily
<weekly-keyword> = weekly
<monthly-keyword> = monthly
<hourly-keyword> = hourly
<digit> = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0
<number> = <digit> | <digit><number>
<12hour> = 0 | 1 | 2 | ... 12
<hour> = 0 | 1 | 2 | ... 23
<minute> = 0 | 1 | 2 | ... 59
<day> = 1 | 2 | ... 31
<time> = <hour>:<minute> |
<12hour>:<minute>am |
<12hour>:<minute>pm
<time-spec> = <at-keyword> <time> |
<hourly-keyword>
<date-keyword> = <void-keyword> <weekly-keyword>
<day-range> = <day>-<day>
<month-range> = <month-keyword>-<month-keyword>
<wday-range> = <wday-keyword>-<wday-keyword>
<range> = <day-range> | <month-range> |
<wday-range>
<date> = <date-keyword> | <day> | <range>
<date-spec> = <date> | <date-spec>
<day-spec> = <day> | <wday-keyword> |
<day-range> | <wday-range> |
<week-keyword> <wday-keyword>
<day-range> | <wday-range> |
<daily-keyword>
<month-spec> = <month-keyword> | <month-range> |
<monthly-keyword>
<date-time-spec> = <month-spec> <day-spec> <time-spec>
Notez que les spécifications de semaine et d'année suivent les définitions ISO
standard de semaine et année, où la semaine 1 est la semaine qui contient le
premier jeudi de l'année, ou alternativement, la semaine qui contient le
quatrième jour de janvier. Les semaines sont numérotées w01 à w53. w00 est
pour Bacula la semaine qui précède la première semaine ISO (c'est à dire celle
qui contient les quelques premiers jours de l'année si aucun n'est un jeudi).
w00 n'est pas définie dans les spécifications ISO. Une semaine commence le Lundi
et se termine le Dimanche.
Voici un exemple de ressource Schedule nommée WeeklyCycle qui exécute
un job de niveau Full chaque Dimanche à 1h05 et un job de niveau incrémental
du Lundi au Samedi à 1h05 :
Schedule {
Name = "WeeklyCycle"
Run = Level=Full sun at 1:05
Run = Level=Incremental mon-sat at 1:05
}
Voici un exemple de cycle mensuel :
Schedule {
Name = "MonthlyCycle"
Run = Level=Full Pool=Monthly 1st sun at 1:05
Run = Level=Differential 2nd-5th sun at 1:05
Run = Level=Incremental Pool=Daily mon-sat at 1:05
}
Le premier de chaque mois :
Schedule {
Name = "First"
Run = Level=Full on 1 at 1:05
Run = Level=Incremental on 2-31 at 1:05
}
Toutes les dix minutes :
Schedule {
Name = "TenMinutes"
Run = Level=Full hourly at 0:05
Run = Level=Full hourly at 0:15
Run = Level=Full hourly at 0:25
Run = Level=Full hourly at 0:35
Run = Level=Full hourly at 0:45
Run = Level=Full hourly at 0:55
}
Au niveau interne, Bacula considère un schedule en tant que bit masque.
Il y a six masques et un champ minute pour chaque schedule. Les masques sont
heure, jour du mois (mday), jour de la semaine (wday), semaine du mois (wom),
et semaine de l'année (woy). Le schedule est initialisé de faon à avoir les
bits de chacun de ces masques positionnés, ce qui signifie qu'au début de chaque
heure, le job sera exécuté. Quand vous spécifiez un mois pour la première
fois, le masque est effacé et le bit correspondant au mois sélectionné est
ajouté au masque. Si vous spécifiez un second mois, le bit correspondant
est aussi ajouté. Ainsi, lorsque Bacula examine le masque pour voir si
les bits placés correspondent à la date courante, votre job ne sera exécuté
que pendant les deux mois que vous avez spécifiés. De même, si vous spécifiez
un horaire, le masque Heure est effacé et le bit correspondant à l'heure que
vous avez spécifiée est placé, les minutes sont quant à elles stockées dans le
champ Minutes.
Pour chacun de vos schedules, vous pouvez visualiser le masque associé
grâce à la commande show schedules du programme Console.
Notez que le bit masque est "zero based", et que Dimanche est le premier
jour de la semaine (bit 0)
La ressource FileSet
La ressource FileSet définit les fichiers à inclure dans une sauvegarde. Pour
chaque job de type sauvegarde, il est nécessaire de définir au moins une
ressource FileSet. Un FileSet consiste en une liste de fichiers
ou répertoires à inclure, une liste de fichiers ou répertoires à exclure, et
diverses options de sauvegardes telles que compression, chiffrement et
signatures qui doivent être appliquées à chaque fichier.
Toute modification de la liste des fichiers inclus provoque la création par Bacula
d'un nouveau FileSet (défini par le nom et la somme de contrôle MD5 du contenu
du paragraphe Include). Chaque fois qu'un nouveau FileSet est créé, Bacula
s'assure que la première sauvegarde est une Full.
- FileSet
-
Début de la ressource FileSet. Au moins une ressource FileSet doit
être définie.
- Name = <name>
-
Le nom de la ressource FileSet. Cette directive est requise.
- Ignore FileSet Changes = <yes|no>
-
Si cette directive est activée (yes), toute modification des listes
d'inclusion ou d'exclusion du FileSet sera ignorée et Bacula n'élèvera
pas la prochaine sauvegarde en Full. La valeur par défaut est no, ainsi,
si vous modifiez une des listes d'inclusion ou d'exclusion du FileSet, Bacula
forcera une sauvegarde Full pour assurer que tout soit bien sauvegardé
proprement. Il n'est pas recommandé d'activer cette directive. Cette directive
est disponible à partir de Bacula 1.35.4.
- Include { [ Options {<file-options>} ...]
<file-list> }
-
- Options { <file-options> }
-
- Exclude { <file-list> }
-
La ressource Include doit contenir une liste de répertoires et/ou fichiers
à traiter lors de la sauvegarde. Normalement, tous les fichiers trouvés dans
tous les sous-répertoires de tout répertoire de la liste d'inclusion des
fichiers seront sauvegardés. La ressource Include peut aussi comporter une
ou plusieurs ressources Options qui spécifient des paramètres tels que
la compression à appliquer à tous les fichiers ou à n'importe quel sous ensemble
de fichiers à sauvegarder.
Le nombre de ressources Include par FileSet n'est pas limité, chacune ayant
sa propre liste de répertoires et/ou fichiers à sauvegarder et ses propres
paramètres définis par une ou plusieurs ressources Options. La liste de fichiers
file-list consiste en un nom de fichier ou répertoire par ligne.
Les noms de répertoire doivent être spécifiés sans slash final.
Vous devez toujours spécifier des chemins absolus pour tout fichier ou
répertoire que vous placez dans un FileSet. De plus, sur les machines Windows,
vous devez toujours préfixer le répertoire ou nom de fichier d'une
spécification de disque (par exemple : c:/xxx) en utilisant le séparateur
de répertoire Unix (slash /).
Le comportement par défaut de Bacula en ce qui concerne le traitement des
répertoires est de descendre récursivement dans chaque répertoire
et de sauvegarder tous les fichiers et sous-répertoires. Par défaut, Bacula
ne suit pas les systèmes de fichiers transverses (en terminologie Unix, les
points de montage). Ceci signifie que si vous spécifiez la partition racine
( par exemple /), Bacula sauvegardera seulement la partition racine, et aucun
des systèmes de fichiers montés. De faon analogue, sur les systèmes Windows,
vous devez expliciter chacun des disques que vous souhaitez sauvegarder (par
exemple c:/ et d:/...). De plus, au moins pour les systèmes
Windows, il sera la plupart du temps nécessaire d'encadrer chaque spécification
de doubles quotes, particulièrement si le nom du répertoire (ou du fichier)
comporte des espaces. La commande df des systèmes Unix vous fournira
la liste des répertoires qu'il vous faudra spécifier pour tout sauvegarder.
Voyez ci-dessous pour un exemple.
Soyez attentif à ne pas inclure un répertoire deux fois, car il serait
sauvegardé deux fois, ce qui gaspillerait l'espace sur votre périphérique
de sauvegarde. Cette erreur est facile à commettre. Par exemple :
Include {
File = /
File = /usr
Options { compression=GZIP }
}
Sur un système Unix où /usr est un sous répertoire (plutôt qu'un système de
fichiers monté), cette ressource Include sauvegarderait /usr deux fois.
Dans ce cas, sur les versions antérieures à 1.32f-5-09Mar04, en raison
d'un bug, vous ne pourriez restaurer les fichiers liés physiquement sauvegardés
deux fois.
Si vous avez utilisé des versions de Bacula antérieures à 1.34.3, vous noterez
ces modifications dans la syntaxe des FileSets :
- il n'y a pas de signe égale (=) après le "include" et avant l'accolade
ouvrante ({) ;
- chaque répertoire (ou nom de fichier) à sauvegarder est précédé de
"File =" ;
- les options qui apparaissaient précédemmant sur la ligne Include doivent
désormais être spécifiées dans leur propre ressource Options.
La ressource Options est optionnelle, mais lorsqu'elle est spécifiée, elle doit
contenir une liste de lignes "mot-clef=valeur" relatives aux options à appliquer
à la liste de fichiers/répertoires. Plusieurs ressources Options peuvent être
spécifiées l'une après l'autre. Lorsqu'un fichier se trouve dans un dossier
spécifié, les options sont appliquées au nom de fichier pour savoir s'il doit
être sauvegardé, et comment. Les ressources Options sont appliquées dans l'ordre
où elles apparaîssent dans le FileSet jusqu'à ce qu'il y en ait une qui corresponde.
Une ressource Options qui ne contient pas de directive wild (spécification
de caractère joker, voir ci-dessous) est considérée comme concernant tous les
fichiers. Il est important de bien comprendre ceci, car une fois que Bacula a
déterminé que des Options s'appliquent à un fichier donné, ce fichier sera
sauvegardé sans tenir compte d'aucunes des éventuelles autres ressources Options.
Ceci signifie que toute ressource Options avec caractères joker doit apparaître
avant une ressource Options sans caractères joker.
Si, pour quelque raison, Bacula applique toutes les ressources Options à un
fichier sans qu'aucune ne corresponde (en général à cause de caractères joker
qui ne correspondent pas), par défaut Bacula sauvegardera le fichier. Ceci est
assez logique si vous considérez la situation sans options, où vous souhaitez
que tout soit sauvegardé. De plus, dans le cas ou aucune correspondance n'est
trouvée, Bacula utilise les options de la dernière ressource Options. Par conséquent,
si vous souhaitez définir un jeu d'options par défaut, vous devriez les placer
dans la dernière ressource Options.
Les directives disponibles pour les ressources Options sont les suivantes :
- compression=GZIP
-
Tous les fichiers sauvegardés sont compressés (NDT : compression logicielle,
par opposition à la compression matérielle effectuée par le lecteur) au
format GNU ZIP. Chaque fichier est compressé individuellement par le File
Daemon. S'il y a un problème à la lecture d'une cartouche au niveau de
l'enregistrement d'un fichier, il affectera tout au plus ce fichier et aucun
des autres fichiers de la cartouche. La plupart du temps, cette option n'est
pas nécessaire si vous avez un lecteur de bandes moderne qui applique sa
propre compression. En fait, si vous activez les deux compressions
simultanément, il se peut que vos fichiers occupent plus d'espace sur le
volume qu'avec une seule.
La compression logicielle est particulièrement intéressante lorsque vous
sauvegardez sur disque, et peut être d'un grand secours si vous avez un
ordinateur rapide mais un réseau lent.
La spécification GZIP utilise le niveau de compression six par défaut
(i.e. GZIP est équivalent à GZIP6). Si vous voulez utiliser un
niveau différent (de 1 à 9), vous pouvez le spécifier en ajoutant le numéro
du niveau voulu à la fin du mot GZIP, sans espace. Ainsi, compression=GZIP1
désigne la compression la moins efficace, mais l'algorithme le plus rapide,
tandis que compression=GZIP9 est le niveau de compression le plus élevé,
mais requière plus de puissance de calcul. Selon la documentation GZIP, les
niveaux de compression supérieurs à 6 ne procurent généralement que peu
de compression supplémentaire alors qu'ils sont plutôt exigeants en puissance
de calcul.
- signature=SHA1
-
La signature SHA1 est calculée pour tous les fichiers sauvegardés.
L'algorithme SHA1 est
réputé plus lent que MD5, mais bien meilleur d'un point de vue cryptographique
(i.e. beaucoup moins de collisions et probabilité de piratage bien inférieure.).
Nous recommandons fortement d'activer l'une ou l'autre des options SHA1 ou MD5
par défaut pour tous les fichiers. Notez que seule l'une de ces deux options
peut être activée pour tout fichier.
- signature=MD5
-
La signature MD5 est calculée pour tous les fichiers sauvegardés. Activer cette
option résulte en une charge CPU supplémentaire de l'ordre de 5% pour chaque
fichier sauvegardé. D'autre part, la signature MD5 ajoute 16 octets
supplémentaires au catalogue pour chaque fichier sauvegardé. Nous recommandons
fortement d'activer l'une ou l'autre des options SHA1 ou MD5 par défaut pour tous
les fichiers.
- verify=<options>
-
Les "options-lettres" sont utilisées lors de l'exécution de jobs de type Verify
de niveau Level=Catalog et de niveau Level=DiskToCatalog. Les options
peuvent être n'importe quelle combinaison de ces lettres.
- i
- compare les inodes
- p
- compare bits de permissions
- n
- compare le nombre de liens
- u
- compare les user ids
- g
- compare les group ids
- s
- compare les tailles
- a
- compare les date d'accès (access time)
- m
- compare les dates de modification (st_mtime)
- c
- compare les dates de changement (st_ctime)
- s
- signale tout fichier dont la taille a diminué
- 5
- compare les signatures MD5
- 1
- compare les signatures SHA1
Le jeu d'options pins5 (qui compare les bits de permissions, les inodes,
les nombres de liens, la taille des fichiers et les signatures MD5) est très
utile pour des jobs de type verify de niveaux Level=Catalog ou
Level=DiskToCatalog.
- onefs=yes|no
-
Si cette option est activée (valeur yes, par défaut), Bacula ne
changera pas de système de fichiers. Autrement dit, il ne sauvegardera pas
les systèmes de fichiers montés sur des sous-répertoires. Si vous souhaitez
sauvegarder plusieurs systèmes de fichiers, vous pouvez les énumérer
explicitement. Une autre possibilité consiste à désactiver l'option onefs
(onefs=no) afin que Bacula sauvegarde les systèmes de fichiers montés
trouvés dans les répertoires listés dans votre FileSet. Ainsi, si vous avez
des systèmes de fichiers NFS ou Samba montés sur un répertoire listé dans le
FileSet, ils seront aussi sauvegardés. En principe, il est préférable
d'activer cette option et de nommer explicitement chaque système de fichier
que vous voulez sauvegarder. Ce nommage explicite évite le risque de tomber
dans une boucle infinie de systèmes de fichiers. Voyez l'exemple ci-dessous
pour plus de détails.
- portable=yes|no
-
Si cette option est activée (la valeur par défaut est no), le File Daemon
sauvegarde les fichiers win32 dans un format portable, mais tous les attributs
de fichiers win32 ne seront pas sauvegardés ni restaurables. La valeur par
défaut est no, ce qui signifie que sur les systèmes Win32, les données
sont sauvegardées en utilisant les appels Windows API et sur les WinNT/2k/XP,
tous les attributs de sécurité et de propriété sont correctement sauvegardés
et restaurés. Cependant, ce format n'est pas portable aux autres systèmes
-- par exemple UNIX, Win95/98/Me. Lors de la sauvegarde de systèmes Unix,
cette option est ignorée, et à moins que vous n'ayez un besoin spécifique de
portabilité de vos sauvegardes, nous recommandons d'accepter la valeur par
défaut (no) de sorte qu'un maximum d'informations concernant vos
fichiers soit sauvegardé.
- recurse=yes|no
-
Si cette option est activée (la valeur par défaut est yes), Bacula
descend récursivement dans tout sous-répertoire trouvé, à moins qu'il ne soit
explicitement exclu par une définition exclude. Si vous désactivez cette
option (recurse=no), Bacula sauvegardera toutes les entrées de sous-
répertoires, mais n'entrera pas dans ces sous-répertoires, et ainsi ne
sauvegardera pas les fichiers ou épertoires contenus dans ces sous-répertoires.
En principe, vous préfèrerez la valeur par défaut (yes).
- sparse=yes|no
-
Cette option active un code spécial qui détecte les fichiers clairsemés tels
ceux créés par ndbm. Elle est désactivée par défaut (sparse=no), de sorte
qu'aucun contrôle n'est fait pour rechercher les fichiers clairsemés. Vous
pouvez l'activer sans danger sur des fichiers non clairsemés, cependant elle
entraîne une légère charge supplémentaire pour la détection de tampons remplis
de zéros (buffers of all zero), et un léger surplus d'espace sur l'archive
de sortie sera utilisé pour ssauver les adresses de recherche de chaque
enregistrement non-nul trouvé.
Restrictions: Bacula lit les fichiers dans des tampons de 32K. Si le tampon
entier est rempli de zéros, il sera traité en tant que bloc clairsemé, et ne sera pas
écrit sur la cartouche. En revanche, si une partie quelconque du tampon est
non-nulle, le tampon sera intégralement copié sur la cartouche, avec éventuellement
des secteurs de disque (généralement 4098 octets) entièrement nuls. La détection par
Bacula des blocs clairsemés a lieu sur des blocs de 32K plutôt que sur des blocs de
taille déterminée par le système. Si quelqu'un considère ceci comme un réelle
problème, merci d'envoyer une demande de modification en exposant les raisons.
Ce code est apparu avec la version 1.27 de Bacula.
Si vous n'êtes pas familier avec les notions de fichiers clairsemés, prenons
pour exemple un fichier où vous écrivez 512 octets à l'adresse 0, puis 512 octets
à l'adresse 1 million. Le système d'exploitation n'allouera que deux blocs, et
rien n'est alloué pour l'espace vide. Pourtant, lorsque vous lisez le fichier
clairsemé, le système retourne tous les zéros comme si l'espace était alloué,
et si vous sauvegardez un tel fichier, vous utiliserez beaucoup d'espace
sur le volume pour écrire des zéros. Pire encore, lorsque vous restaurez ce
fichier à son emplacement initial, tous les emplacements précédemment vides
seront cette fois alloués, occupant ainsi beaucoup plus d'espace disque.
En activant l'option sparse, Bacula recherchera spécifiquement l'espace
vide dans les fichiers afin d'éviter ces inconvénients. Le prix à payer est que
Bacula doit d'abord examiner chaque bloc lu avant de l'écrire. Sur un système lent,
ceci peut-être important. Si vous suspectez certains de vos fichiers d'être
clairsemés, vous devriez mesurer les performances et gains d'espace avec et
sans l'options, ou ne l'activer que pour les fichiers effectivement
clairsemés.
- readfifo=yes|no
-
Cette option, si elle est activée, indique au client de lire les données
(lors d'une sauvegarde) et de les écrire (lors d'une restauration) sur
un FIFO (pipe) explicitement explicitement mentionné dans le FileSet.
Dans ce cas, vous devez avoir un programme actif qui écrit sur ce FIFO
dans le cas d'une sauvegarde, ou qui le lit dans le cas d'une restauration.
(Ceci peut être accompli par la directive RunBeforeJob). Si cette
condition n'est pas satisfaite, Bacula demeurera en suspens indéfiniment
en lecture/écriture du FIFO. Lorsque cette option est désactivée (par défaut),
le Client sauvegarde simplement l'entrée du répertoire pour le FIFO.
- mtimeonly=yes|no
-
Cette option, si elle est activée, indique au client que la sélection de fichiers
lors d'une sauvegarde incrémentale ou différentielle ne doit se référer qu'aux valeurs
de st_mtime du paquet stat(). La valeur par défaut est no, ce qui signifie
que la sélection de fichiers à sauvegarder se base sur les deux valeurs st_mtime et
st_ctime. En général, il n'est pas recommandé d'activer cette option.
- keepatime=yes|no
-
Avec cette option activée, Bacula rétablit le champ st_atime (date d'accès) des
fichiers qu'il sauvegarde à leur valeur d'avant la sauvegarde. Cette option
n'est généralement pas recommandée car il existe peu de programmes qui utilisent
st_atime, et la charge de la sauvegarde se trouve augmentée par les appels
systèmes nécessaires pour rétablir les dates. (Je ne suis pas sur que ceci
fonctionne sous Win32).
- wild=<string>
-
Spécifie une chaîne de caractères jokers à appliquer aux fichiers. Notez
que si Exclude n'est pas activée, cette chaîne sélectionnera les fichiers
à sauvegarder. Si au contraire Exclude=yes est spécifié, la chaîne
sélectionnera les fichiers à exclure de la sauvegarde. Plusieurs directives
wild-card peuvent être spécifiées et sont appliquées séquentiellement
jusqu'à ce que l'une d'elles corresponde.
- regex=<string>
-
Spécifie une expression régulière étendue POSIX à appliquer aux fichiers.
Cette directive est disponible à partir de Bacula 1.35. Si Exclude n'est
pas activée, cette expression régulière sélectionnera les fichiers à
sauvegarder. Si au contraire Exclude=yes est spécifié, elle sélectionnera
les fichiers à exclure de la sauvegarde. Plusieurs directives regex peuvent être
spécifiées et sont appliquées séquentiellement jusqu'à ce que l'une d'elles corresponde.
- exclude=yes|no
-
Lorsque cette option est activée, tout fichier qui correspond aux options est exclu de
la sauvegarde. La valeur par défaut est no.
- aclsupport=yes|no
-
Si cette option est activée, et si vous avez installé la librarie POSIX libacl
sur votre système, Bacula sauvegardera Listes de Contrôles d'Accès (ACL) UNIX des
fichiers et répertoires telles que définies dans IEEE Std 1003.1e version 17 et
"POSIX.1e" (abandonné). Cette fonction n'est disponible que sur UNIX et dépend de
la librairie ACL. Bacula est automatiquement compilé avec le support ACL si la
librairie libacl est installée sur votre système (ceci est reporté dans
le fichier config.out). Lors de la restauration, Bacula tentera de restaurer les
ACLs. S'il n'y a pas de support ACL sur le système cible, Bacula ne restaurera que les
fichiers et répertoires sans les informations ACL. Veuillez noter que si vous
sauvegardez un système de fichiers EXT3 ou XFS avec le support des ACLs, et que vous
restaurez vers un système de fichiers sans ACLs (tel , peut-être reiserfs), les
ACLs seront ignorées.
<file-list> est une liste de répertoires et/ou noms de fichiers spécifiés
avec la directive File =. Pour inclure des noms contenant des espaces,
entourez-les de guillemets (doubles quotes).
Il existe quelques notations particulières pour spécifier des fichiers et répertoires
dans une liste de fichiers file-list. Les voici :
- Tout nom précédé d'un signe "at" (@) est compris comme le nom d'un fichier,
lequel contient une liste de fichiers, chacun précédé d'une directive "File=".
Ce fichier est lu lorsque le fichier de configuration est parcouru au démarrage
du Director. Notez bien que le fichier est lu sur sur la machine qui héberge le
Director (autrement dit, le serveur de sauvegardes) et non sur le Client.
En fait, le "@NomDeFichier" peut apparaître n'importe où dans le fichier de
configuration où un objet pourrait être lu, le contenu du fichier désigné sera
logiquement inséré à l'emplacement du "@NomDeFichier". Ce qui doit figurer dans le
fichier dépend de l'emplacement du "@NomDeFichier" au sein du fichier de
configuration.
- Tout nom précédé d'une barre verticale (|) est compris comme le nom d'un
programme. Ce programme sera exécuté sur la machine qui héberge le Director au
moment où le job démarre (et non lorsque le Director lit son fichier de
configuration), et toute sortie de ce programme sera peru en tant que liste
de fichiers ou répertoires, un par ligne, à inclure. Ceci vous permet d'avoir un
job qui, par exemple, inclue toutes les partitions locales même si vous changez le
partitionnement en ajoutant des disques. En général, il vous faudra précéder
votre commande d'un "sh -c" afin qu'elle soit invoquée par un shell.
Ce ne sera pas le cas si vous invoquez un script comme dans le second exemple
ci-dessous. Vous devez aussi prendre soin d'échapper (précéder d'un \)
les caractères jokers, les caractères du shell, ainsi que toute espace dans votre
commande. Si vous utilisez des simples quotes (') dans des doubles quotes (``),
Bacula traitera tout ce qui est entre simples quotes comme un seul champ, et il ne
dera donc pas nécessaire d'échapper les espaces. En général, parvenir à avoir
toutes les quotes et échappements corrects est un calvaire, comme vous pouvez
le constater dans le prochain exemple. Par conséquent, il est souvent plus facile
de tout mettre dans un fichier et d'utiliser simplement le nom de fichier dans
Bacula. Dans ce cas le "sh -c" ne sera plus nécessaire, pourvu que la
première ligne du fichier soit #!/bin/sh.
Par exemple :
Include {
Options { signature = SHA1 }
File = "|sh -c 'df -l | grep \"^/dev/hd[ab]\" | grep -v \".*/tmp\" \
| awk \"{print \\$6}\"'"
}
produira une liste de toutes les partitions locales sur un système RedHat Linux.
Notez que la ligne si dessus a été coupée, mais devrait normalement être écrite
sur une seule ligne. Quoter est un réel problème car vous devez d'une part le faire
pour Bacula - ce qui consiste à précéder tout \ et tout '' avec un
\ - et d'autre part pour les commandes shell. En définitive, il est
probablement plus aisé d'exécuter un petit fichier tel que :
Include {
Options {
signature=MD5
}
File = "|my_partitions"
}
où le fichier my_partitions contient :
#!/bin/sh
df -l | grep "^/dev/hd[ab]" | grep -v ".*/tmp" \
| awk "{print \$6}"
Si la barre verticale (|) devant "my_partitions" est précédée d'une barre oblique
(\), le programme sera exécuté sur la machine cliente plutôt que sur
la machine hébergeant le Director -- (ceci est implémenté, mais n'est pas complètement
testé, et a été rapporté fonctionner sous Windows). Veuillez noter que si le nom de
fichier est donné entre quotes, vous devrez utiliser deux barres obliques. Voci un
exemple, fourni par John Donagher, qui sauvegarde toutes les partitions UFS locales
sur un système distant :
FileSet {
Name = "All local partitions"
Include {
Options { signature=SHA1; onefs=yes; }
File = "\\|bash -c \"df -klF ufs | tail +2 | awk '{print \$6}'\""
}
}
Notez que deux barres obliques \ sont requises après les doubles quotes
(l'une préserve l'autre). Si vous utilisez Linux, changez simplement ufs en ext3
(ou votre système de fichiers préféré) et l'affaire sera dans le sac.
- Tout élément de la liste de fichiers file-list précédé par un signe "inférieur" (<)
est interprété comme un fichier qui sera lu sur la machine qui héberge le Director
au moment où le job démarre. Son contenu est supposé être une liste de répertoires ou
fichiers, un par ligne, à inclure dans la sauvegarde. Les noms ne doivent pas être quotés, même
s'ils comportent des espaces. Cette fonction vous permet de modifier le fichier externe,
et ainsi ce qui est sauvegardé sans avoir à redémarrer Bacula comme il le faudrait avec
le modificateur @ décrit plus haut.
Si vous précédez le signe "inférieur" (<) d'une barre oblique \<, le
fichier mentionné sera lu sur la machine cliente au lieu de celle hébergeant le Director.
Veullez noter que si le nom de fichier est donné entre quotes, il vous faudra utiliser deux
barres obliques.
- Si vous spécifiez explicitement un block device (NDT ?) tel que /dev/hda1, alors
Bacula considèrera ceci comme une partition raw à sauvegarder. Dans ce cas, vous êtes
fortement invité à utiliser l'option sparse=yes, faute de quoi vous sauvegarderez
la partition entière plutôt que seulement les données réellement contenues dans la
partition. Par exemple :
Include {
Options { signature=MD5; sparse=yes }
File = /dev/hd6
}
va sauvegarder les données de la partition /dev/hd6.
will backup the data in device /dev/hd6.
Ludovic Strappazon a fait remarquer que cette fonction pouvait servir à sauvegarder
un disque Microsoft Windows. Il suffit de booter avec un Linux Rescue Disk, puis de
charger un client Bacula statiquement lié comme décrit dans le chapitre
Disaster Recovery avec Bacula de ce manuel. Sauvegardez alors
la partition complète. En cas de désastre, vous pouvez alors restaurer la partition
désirée en bootant une fois encore sur le Linux Rescue Disk et en utilisant le
client Bacula statiquement lié.
- Si vous spécifiez explicitement un périphérique FIFO nommé (créé avec mkfifo),
ets si vous ajoutez l'option readfifo=yes, Bacula lira le FIFO et sauvegardera ses
données sur le volume. Par exemple :
Include {
Options {
signature=SHA1
readfifo=yes
}
File = /home/abc/fifo
}
si /home/abc/fifo est un FIFO, Bacula va l'ouvrir, le lire, et stocker
toutes les données ainsi obtenues sur le volume. Notez qu'il faut que vous ayez
un processus qui écrit sur le FIFO, faute de quoi Bacula restera en suspens, et
abandonnera au bout d'une minute pour passer au fichier suivant. Les données
lues peuvent être de nature quelconque puisque Bacula les traite comme un flux.
Cette fonction est un excellent moyen de faire une sauvegarde "à chaud" d'une
très grosse base de données. Vous pouvez utiliser la directive RunBeforeJob
pour créer le FIFO et démarrer un programme qui lit dynamiquement votre base de
données et l'écrit sur le FIFO. Bacula l'écrira alors sur le volume.
Lors de l'opération de restauration, l'inverse se produit : après que Bacula ait créé
le FIFO, s'il y avait des données stockées par son biais (inutile de les lister
explicitement ni d'ajouter aucune option), elles seront renvoyées vers le FIFO.
Par conséquent, s'il existe un tel FIFO à restaurer, vous devez vous assurer
qu'il y a un programme lecteur ou Bacula se bloquera et passera au fichier suivant
après une minute.
Voici un exemple de définition de ressource FileSet valide. Notez que le premier
Include insère le contenu du fichier /etc/backup.list lors du démarrage
de Bacula (i.e. le @).
FileSet {
Name = "Full Set"
Include {
Options {
Compression=GZIP
signature=SHA1
Sparse = yes
}
File = @/etc/backup.list
}
Include {
Options {
wild = *.o
Exclude = yes
}
File = /root/myfile
File = /usr/lib/another_file
}
}
Notez que dans l'exemple ci-dessus, tous les fichiers mentionnés dans
/etc/backup.list seront compressé avec GZIP, qu'une signature SHA1 sera
calculée sur le contenu des fichiers (leurs données), et que la prise en
charge particulière des fichiers clairsemés (sparse) s'appliquera.
Les deux répertoires /root/myfile et /usr/lib/another_file seront aussi
sauvegardés sans aucune option, mais tous les fichiers à extension .o
de ces répertoires seront exlus de la sauvegarde.
Supposons que vous vouliez sauvegarder tout sauf /tmp sur votre système.
La commande df vous fournit le résultat suivant :
[kern@rufus k]$ df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda5 5044156 439232 4348692 10% /
/dev/hda1 62193 4935 54047 9% /boot
/dev/hda9 20161172 5524660 13612372 29% /home
/dev/hda2 62217 6843 52161 12% /rescue
/dev/hda8 5044156 42548 4745376 1% /tmp
/dev/hda6 5044156 2613132 2174792 55% /usr
none 127708 0 127708 0% /dev/shm
//minimatou/c$ 14099200 9895424 4203776 71% /mnt/mmatou
lmatou:/ 1554264 215884 1258056 15% /mnt/matou
lmatou:/home 2478140 1589952 760072 68% /mnt/matou/home
lmatou:/usr 1981000 1199960 678628 64% /mnt/matou/usr
lpmatou:/ 995116 484112 459596 52% /mnt/pmatou
lpmatou:/home 19222656 2787880 15458228 16% /mnt/pmatou/home
lpmatou:/usr 2478140 2038764 311260 87% /mnt/pmatou/usr
deuter:/ 4806936 97684 4465064 3% /mnt/deuter
deuter:/home 4806904 280100 4282620 7% /mnt/deuter/home
deuter:/files 44133352 27652876 14238608 67% /mnt/deuter/files
Si vous vous contentez de spécifier / dans votre liste d'inclusions,
Bacula ne sauvegardera que le système de fichiers /dev/hda5. Pour
sauvegarder tous vos systèmes de fichiers sans inclure les systèmes de fichiers
montés Samba ou NFS et en excluant /tmp, /proc, .journal, et .autofsck, que
vous ne voulez ni sauvegarder ni restaurer, vous pouvez utiliser ce qui suit :
FileSet {
Name = Include_example
Include {
Options {
wild = /proc
wild = /tmp
wild = \.journal
wild = \.autofsck
exclude = yes
}
File = /
File = /boot
File = /home
File = /rescue
File = /usr
}
}
/tmp étant sur son propre système de fichiers et n'étant pas explicitement nommé
dans la liste d'inclusion, il n'est pas nécessaire de le spécifier dans la liste
d'exclusion. Cependant, il peut être préférable de le faire malgré tout par
souci de clarté et au cas où il ne serait plus sur sa propre partition après un
remplacement de disques.
Ayez conscience qu'il peut être très dangereux de permettre à Bacula de traverser ou
changer de système de fichiers au gré des ppoints de montage. Par exemple, avec ce qui suit :
FileSet {
Name = "Bad example"
Include {
Options { onefs=no }
File = /mnt/matou
}
}
vous sauvegardez une partition NFS montée (/mnt/matou), et puisque
onefs est désactivée, Bacula traverse les systèmes de fichiers.
Si jamais /mnt/matou contient lui même un point de montage où le système
de fichiers de la machine sauvegardée est monté, ce qui est souvent le cas,
vous vous retrouvez pris dans un boucle récursive, et la sauvegarde ne se
terminera jamais.
Le FileSet suivant sauvegarde une partition raw :
FileSet {
Name = "RawPartition"
Include {
Options { sparse=yes }
File = /dev/hda2
}
}
Lorsque vous sauvegardez et restaurez une partition raw, vous devriez vous
assurer qu'aucun autre processus, y compris le système, n'écrit sur cette
partition. En guise de précaution, nous recommandons ardemment de ne sauvegarder
en mode raw que des partitions non montées, ou montées en lecture seule. Ceci peut
être fait si nécessaire avec la directive RunBeforeJob.
Si vous saisissez des noms de fichiers Windows, les chemins des répertoires devraient
être précédés de double-points (comme dans "c:"). Cependant, les séparateurs de
champs doivent être spécifiés selon la convention Unix (c'est à dire, la barre oblique
avant : "/"). Si vous souhaitez inclure une apostrophe dans un nom de fichier, précédez-la
d'une barre oblique arrière (\\). Par exemple, vous pourriez
utiliser ce qui suit pour sauvegarder le répertoire "My Documents" d'une machine Windows :
FileSet {
Name = "Windows Set"
Include {
Options {
wild = *.obj
wild = *.exe
exclude = yes
}
File = "c:/My Documents"
}
}
Pour que les listes d'exclusion fonctionnent correctement sous Windows, vous devez
observer les règles suivante :
- les noms de fichiers sont sensibles à la casse, aussi vous devez utilise la
casse correcte ;
- vous ne devez pas spécifier de barre oblique finale pour exclure un répertoire ;
- si vos noms de fichiers comportent des espaces, vous devez les encadrer de
quillemets. Les barres obliques arrières (\\) ne
fonctionnent pas ;
- si vous utilisez l'ancienne syntaxe des listes d'exclusion (mentionnée ci-dessous),
vous ne devriez pas spécifier la lettre référenant le disque dans une liste d'exclusion.
La nouvelle syntaxe décrite ci-dessus devrait fonctionner correctement en incluant la lettre
du disque.
Merci à Thiago Lima pour nous avoir résumé les points ci-dessus. Si vous rencontrez
des difficultés pour faire fonctionner vos listes d'inclusion ou d'exclusion,
songez à utiliser la commande estimate job=xxx listing documentée
dans le chapitre Console chapter de ce manuel.
Sur les systèmes Win32, si vous déplacez un répertoire ou si vous renommez
un fichier de la liste à sauvegarder, et si une Full a déjà eu lieu, Bacula
ne saura reconnaître qu'il existe de nouveaux fichiers à sauvegarder lors d'une
incrémentale ou d'une différentielle (faites-en le reproche à Microsoft, pas à moi !).
Pour pallier à ce problème, veuillez copier tout répertoire ou fichier de la
zone sauvegardée. Si vous ne disposez pas de suffisamment d'espace disque,
déplacez-les, mais lancez alors une sauvegarde Full.
Vous pouvez aussi inclure des noms de fichiers ou chemins absolus, en plus
de l'utilisation de caractères jokers et de la directive Exclude=yes dans
les ressources Options comme exposé ci-dessus, en ajoutant simplement
les fichiers à exclure dans une ressource Exclude du FileSet. Par exemple :
FileSet {
Name = Exclusion_example
Include {
Options {
Signature = SHA1
}
File = /
File = /boot
File = /home
File = /rescue
File = /usr
}
Exclude {
File = /proc
File = /tmp
File = .journal
File = .autofsck
}
}
Cet exemple est une contribution de Phil Stracchino :
This is my Windows 2000 fileset:
FileSet {
Name = "Windows 2000 Full Set"
Include {
Options {
signature=MD5
}
File = c:/
}
Exclude {
# Most of these files are excluded not because we don't want
# them, but because Win2K won't allow them to be backed up
# except via proprietary Win32 API calls.
File = "/Documents and Settings/*/Application Data/*/Profiles/
*/*/Cache/*"
File = "/Documents and Settings/*/Local Settings/Application Data/
Microsoft/Windows/[Uu][Ss][Rr][Cc][Ll][Aa][Ss][Ss].*"
File = "/Documents and Settings/*/[Nn][Tt][Uu][Ss][Ee][Rr].*"
File = "/Documents and Settings/*/Cookies/*"
File = "/Documents and Settings/*/Local Settings/History/*"
File = "/Documents and Settings/*/Local Settings/
Temporary Internet Files/*"
File = "/Documents and Settings/*/Local Settings/Temp/*"
File = "/WINNT/CSC"
File = "/WINNT/security/logs/scepol.log"
File = "/WINNT/system32/config/*"
File = "/WINNT/msdownld.tmp/*"
File = "/WINNT/Internet Logs/*"
File = "/WINNT/$Nt*Uninstall*"
File = "/WINNT/Temp/*"
File = "/temp/*"
File = "/tmp/*"
File = "/pagefile.sys"
}
}
Remarque : les trois lignes coupées de cette liste d'exclusion ne l'ont été
que pour des motifs de mise en page, elles doivent en réalité être écrites
sur une seule ligne.
L'ancienne Ressource FileSet des versions antérieures à 1.34.3 est obsolète,
mais fonctionne encore. Nous vous encourageons à utiliser la nouvelle forme,
car le code correspondant sera supprimé à partir de la version 1.37.
Si vous voulez vous faire une idée précise de ce qui sera effectivement
sauvegardé par un FileSet, ou si vous voulez vous assurer de l'efficacité
d'une liste d'exclusion, vous pouvez utiliser la commande estimate
du programme Console. Voyez estimate command dans le
chapitre Console de ce manuel.
Les noms de fichiers NTFS contenant des caractères Unicode (i.e. > 0xFF) ne
peuvent, pour le moment, être nommé eplicitement. Vous devez inclure de tels
fichiers en désignant un répertoire de niveau supérieur ou une lettre de disque
ne contenant pas de caractère Unicode.
La ressource Client
La ressource Client définit les attributs des clients servis (sauvegardés)
par ce Director. Il faut une ressource Client par machine sauvegardée.
- Client (ou FileDaemon)
-
Début des directives Client.
- Name = <name>
-
Le nom du client qui sera utilisé dans la directive Job de la ressource ou
dans une commande run de la Console. Cette directive est requise.
- Address = <address>
-
L'adresse d'un File Daemon Bacula est un nom d'hôte, un nom pleinement qualifié
ou une adresse réseau au format quatre octets pointés. Cette directive est requise.
- FD Port = <port-number>
-
Où le port est le numéro de port auquel le le File Daemon peut être contacté.
La valeur par défaut est 9102.
- Catalog = <Catalog-resource-name>
-
Cette directive spécifie le nom de la ressource catalog à utiliser pour ce
client. Cette directive est requise.
- Password = <password>
-
Il s'agit ici du mot de passe à utiliser lors de la connection avec le
File Daemon, aussi le fichier de configuration de la machine à sauvegarder
doit définir le même mot de passe pour être connecté par ce Director.
Cette directive est requise. Si vous disposez de /dev/random ou de bc
sur votre machine, Bacula génère des mots de passe aléatoires lors du processus
de configuration. Dans le cas contraire, le mot de passe est laissé blanc.
- File Retention = <time-period-specification>
-
La directive File Retention définit la période pendant laquelle Bacula conservera
les enregistrements File dans le catalogue. Lors de l'expiration de cette période,
si la directive AutoPrune est active (yes), Bacula élague le catalogue
des enregistrements File dont l'âge est supérieur à la période de rétention.
Notez que ceci n'affecte que les enregistrements du catalogue, et non vos
sauvegardes archivées.
Les enregistrements File peuvent en fait être conservés pour une période inférieure
à celle affectée à cette directive dans les cas où vous avez spécifié des périodes
plus courtes pour les directives Job Retention ou Volume Retention.
La plus courte des trois prend le pas sur les autres. Les durées peuvent être exprimées
en secondes, minutes, heures, jours, semaines, mois, trimestres ou années. Consultez
le chapitre Adapter les fichiers de configuration de ce manuel pour plus de détails sur les
spécifications de durées.
La valeur par défaut est de 60 jours.
- Job Retention = <time-period-specification>
-
La directive Job Retention définit la période pendant laquelle Bacula conservera
les enregistrements Job dans le catalogue. Lors de l'expiration de cette période,
si la directive AutoPrune est active (yes), Bacula élague le catalogue
des enregistrements File dont l'âge est supérieur à la période de rétention.
Notez que ceci n'affecte que les enregistrements du catalogue, et non vos
sauvegardes archivées.
Si un enregistrement de Job est sélectionné pour élagage, tous les enregistrements File
et JobMedia associés seront aussi élagués du catalogue, sans qu'il ne soit tenu compte
de la période File Retention définie. Par conséquent, vous utiliserez, en principe,
une période File Retention inférieure à la période Job retention. La période
Job retention peut en fait s'avérer inférieure à la valeur que vous avez spécifiée
si vous avez affecté une valeur inférieure à la directive Volume Retention dans
la ressource Pool. Les périodes Job retention et Volume retention sont appliquées
indépendamment, la plus petite prend le pas sur l'autre.
Les durées peuvent être exprimées
en secondes, minutes, heures, jours, semaines, mois, trimestres ou années. Consultez
le chapitre Adapter les fichiers de configuration de ce manuel pour plus de détails sur les
spécifications de durées.
La valeur par défaut est 180 jours.
- AutoPrune = <yes|no>
-
Si AutoPrune est réglé à yes (valeur par défaut), Bacula (dans les versions au delà
de 1.20) applique automatiquement les périodes File retention et Job retention pour le
client à la fin du job. Si vous spécifiez AutoPrune = no, l'élagage ne se fera pas
et votre catalogue grossira à chaque job. L'élagage n'affecte que les données du catalogue,
et non les données stockées sur les volumes.
- Maximum Concurrent Jobs = <number>
-
<number> désigne le nombre maximum de jobs qui peuvent être lancés simultanément
sur le client concerné. Notez que cette directive ne limite que les jobs pour les clients
qui ont le même nom que la ressource dans laquelle elle apparaît. Toutes les autres restrictions
du nombre maximum de jobs simultanés telles que celles spécifiées dans les ressources
Director, Job, ou Storage s'appliquent aussi en plus de toute limite fixée ici. La valeur
par défaut est 1, mais vous pouvez spécifier une valeur plus grande. Nous recommandons
fortement de lire les MISES EN GARDE de la section Maximum Concurrent
Jobs du chapitre Configurer le Director.
- Priority = <number>
-
<number> spécifie la priorité de ce client par rapport aux autres clients
que le Director sauvegarde simultanément. La priorité admet une valeur entre 1 et 1000.
Les clients sont ordonnés de sorte que ceux dont la valeur de priorité sont les plus petites
sont traités les premiers (Ceci n'est pas encore implémenté).
Voici un exemple d'une définition de ressource Client valide :
Client {
Name = Minimatou
FDAddress = minimatou
Catalog = MySQL
Password = very_good
}
La ressource Storage
La ressource Storage définit les Storage Daemons disponibles pour le Director.
- Storage
-
Début des ressources Storage. Il faut en spécifier au moins une.
- Name = <name>
-
Le nom de la ressource Storage. Ce nom apparaît au niveau de la directive
Storage spécifiée dans la ressource Job et est requise.
- Address = <address>
-
Où l'adresse est un nom d'hôte, une adresse pleinement qualifiée, ou une
adresse IP. Notez bien que l'adresse spécifiée ici sera transmise au
File Daemon qui l'utilisera alors pour contacter le Storage Daemon. Aussi, ce
n'est pas une bonne idée d'utiliser localhost en tant que nom,
il vaut mieux utiliser un nom de machine pleinement qualifié, ou une adresse IP.
Cette directive est requise.
- SD Port = <port>
-
Où "port" est le port à utiliser pour contacter le Storage Daemon pour les
informations et pour exécuter les jobs. Ce même numéro de port doit
apparaître dans la ressource Storage du fichier de configuration du
Storage Daemon. Le port par défaut est 9103.
- Password = <password>
-
Il s'agit du mot de passe à utiliser lors de l'établissement de la connection
avec les services Storage. Ce même mot de passe doit aussi apparaître dans la
ressource Director du fichier de configuration du Storage Daemon. Cette
directive est requise. Si vous avez soit /dev/random, soit bc
sur votre machine, Bacula génèrera un mot de passe aléatoire lors du processus
de configuration. Dans le cas contraire, ce champ sera laissé blanc.
- Device = <device-name>
-
Cette directive spécifie le nom (pour le Storage Daemon) du périphérique à
utiliser pour le stockage.
Ce nom n'est pas le nom de périphérique physique, mais le nom de périphérique
logique qui a été défini par la directive Name de la ressource Device
du fichier de configuration du Storage Daemon. Si le périphérique est une librairie, vous
devez utiliser le nom défini au niveau de la directive Name défini dans la définition
de la ressource Autochanger du Storage Daemon. Vous pouvez utiliser le nom de
votre choix (y compris le nom de périphérique physique) à concurrence de
127 caractères. Le nom de périphérique physique associé à ce périphérique est
spécifié dans le fichier de configuration du Storage Daemon
(en tant qu'Archive Device). Prenez garde à ne pas définir deux directives
Storage Resource dans le Director qui pointent vers le même périphérique du
Storage Daemon. Il pourrait en résulter un blocage du Storage Daemon si celui-ci
tente d'utiliser le même périphérique deux fois. Cette directive est requise.
- Media Type = <MediaType>
-
Cette directive spécifie le type de média à utiliser pour stocker les données.
Il s'agit d'une chaîne de caractères arbitraire n'excédant pas 127 caractères.
Ce peut être ce que vous voulez, cependant, il est préférable de la choisir de
manière à décrire le médium de stockage utilisé (par exemple : Fichier, DAT,
''HP DLT8000``, 8mm,...). D'autre part, il est esentiel d'avoir une spécification
Media Type unique pour chaque type de média de stockage. Si vous avez deux
lecteurs DDS-4 avec des formats incompatibles et une librairie DDS-4, vous devriez
certainement spécifier des Media Types distincts. Lors d'une restauration,
supposons qu'un Media Type DDS-4 est associé avec le le job, Bacula peut
décider d'utiliser tout Storage Daemon qui supporte le Media Type DDS-4 sur
tout lecteur qui le supporte.
Actuellement, Bacula n'autorise qu'un seul type de media. Par conséquent, si vous
disposez d'un lecteur qui en supporte plusieurs, vous pouvez utiliser une chaîne
unique pour désigner les volumes de l'un ou l'autre type, par exemple Media Type = DDS-3-4
pour les types DDS-3 et DDS-4, mais ces volumes ne seront montés que sur les lecteurs
spécifiés comme acceptant les deux types : DDS-3-4
Si vous voulez contraindre Bacula à utiliser un
seul Storage Daemon ou un seul lecteur, vous devez spécifier un Media Type unique
pour ce lecteur. C'est un point important qui devrait être bien compris. Notez que
ceci s'applique également aux volumes disque. Si vous définissez plus d'une ressource
Device disque dans votre fichier de configuration du Storage Daemon, les volumes sur ces
deux devices seront en fait incompatibles car l'un ne pourra être monté sur l'autre
puisqu'ils se trouvent dans des répertoires différents. C'est pourquoi vous devriez
probablement plutôt utiliser deux Media Types distincts pour vos deux devices disque
(même si vous pensez à eux comme ayant l'un et l'autre le type File).
Vous trouverez pus de détails à ce sujet dans le chapitre
Gestion des volumes : fondements (NDT:basic volumes management) de ce manuel.
Le MediaType spécifié ici doit correspondre au MediaType
spécifié dans la ressource Device du fichier de configuration du
Storage Daemon. Cette directive est requise, et est utilisée par le Director
et le Storage Daemon pour s'assurer qu'un volume sélectionné automatiquement
dans un Pool correspond à un périphérique physique. Si un Storage Daemon
gère plusieurs périphériques (par exemple, s'il écrit sur plusieurs volumes
de type File sur différentes partitions), cette directive vous permet de
préciser exactement quel périphérique utiliser.
Comme mentionné ci-dessus, la valeur spécifiée dans la ressource Storage du
Director doit s'accorder avec celle spécifiée dans la ressource Device du
fichier de configuration du Storage Daemon. Ceci représente aussi un contrôle
supplémentaire pour assurer que vous n'essayez pas d'écrire les données destinées
à un lecteur DLT sur un lecteur 8mm.
- Autochanger = <yes|no>
-
Si vous spécifiez yes pour cette commande (la valeur par défaut est no),
alors Bacula requérira un numéro de Slot lorsque vous utiliserez les commandes
label et add pour créer un nouveau volume. Ceci simplifie la création
des enregistrements de Volumes dans le catalogue si vous disposez d'une librairie.
Si vous omettez de spécifier le Slot, la robotique ne sera pas utilisée. Cependant,
vous pouvez modifier le Slot associé à un volume à tout moment grâce à la commande
update volume du programme Console. Lorqu'autochanger est activée,
l'algorithme utilisé par Bacula pour rechercher des volumes utilisables est
modifié de faon à prendre en compte tout volume supposé contenu dans la librairie.
Si aucun volume in changer n'est trouvé, Bacula tente de recycler, élaguer...,
et s'il ne trouve toujours aucun volume, Bacula recherche un volume présent ou non
dans la librairie. Privilégier les volumes présents dans la librairie permet de
minimiser les interventions d'un opérateur.
Pour que la robotique soit utilisée, vous devez aussi spécifier Autochanger = yes
dans la ressource La Ressource Device du fichier de configuration du
Storage Daemon, ainsi que d'autres paramètres importants du Storage Daemon. Vous
trouverez plus d'information à ce sujet dans le chapitre
Utiliser une librairie de ce manuel.
- Maximum Concurrent Jobs = <number>
-
Où <number> est le nombre maximum de jobs utilisant la
ressource Storage courante qui peuvent être exécutés simultanément. Notez que cette
directive ne limite que les jobs qui utilisent ce Storage Daemon. Toute autre
limitation du nombre maximum de jobs simultanés au niveau des ressources
Director, Job ou Client est aussi appliquée en plus de celle fixée ici. La valeur
par défaut est 1, mais vous pouvez utiliser une valeur plus importante. Nous vous
recommandons fortement de lire les MISES EN GARDE de la section Maximum Concurrent
Jobs du chapitre Configurer le Director.
Alors qu'il est possible de définir des nombres maximum de jobs simultanés supérieurs
à 1 dans les ressource Director, Job et Client, vous devriez porter une attention
particulière au paramétrage de cette directive pour le Storage Daemon. En conservant
la valeur 1, vous évitez que deux jobs écrivent simultanément sur le même volume ce qui,
quoique supporté, n'est pas recommandé actuellement.
Voici un exemple de ressource Storage valide :
# Definition of tape storage device
Storage {
Name = DLTDrive
Address = lpmatou
Password = storage_password # password for Storage daemon
Device = "HP DLT 80" # same as Device in Storage daemon
Media Type = DLT8000 # same as MediaType in Storage daemon
}
La ressource Pool
La ressource Pool définit l'ensemble des volumes de stockage (cartouches ou fichiers)
à la disposition de Bacula pour écrire les données. En configurant différents
Pools, vous pouvez déterminer quel ensemble de volumes (ou média) reoit les
données sauvegardées. Ceci permet, par exemple, de stocker toutes les sauvegardes
Full sur un ensemble de volumes, et les sauvegardes différentielles et
incrémentales sur un autre. De même, vous pouvez assigner un ensemble de volumes
à chaque machine sauvegardée. Tout ceci peut être réalisé aisément en définissant
plusieurs pools.
Un autre aspect important d'un pool est qu'il contient des attributs par défaut
(Nombre maximum de jobs, période de rétention, drapeau de recyclage,...) qui sont
conférés à tout volume lui appartenant lors de sa création. Ceci vous évite d'avoir
à répondre à un grand nombre de questions lorsque vous étiquettez (label) un nouveau
volume. Chacun de ces attributs peut ensuite être modifié sur chaque volume
individuellement avec la commande update du programme Console. Notez que
vous devez préciser explicitement quel pool est à utiliser avec chaque job. Bacula
ne recherche pas automatiquement le pool correct.
Dans la plupart des installations de Bacula, toutes les sauvegardes de toutes
les machines vont vers un unique jeu de volumes. Dans ce cas, vous n'utiliserez
probablement que le pool par défaut Default. Si votre stratégie de
sauvegarde vous impose à monter chaque jour une cartouche différente, vous voudrez
probablement définir des pools distincts pour chaque jour. Pour plus d'informations
à ce sujet, consultez le chapitre Stratégies de sauvegarde
de ce manuel.
Pour utiliser un pool, vous devez suivre trois étapes :
D'abord, le pool doit
être défini dans le fichier de configuration du Director. Ensuite le pool doit
être enregistré dans le catalogue. Ceci est fait automatiquement par le Director
à chaque fois qu'il démarre, ou peut être réalisé manuellement à l'aide de la
commande create du programme Console. Enfin, si vous modifiez la définition
du pool dans le fichier de configuration du Director et redémarrez Bacula,
le pool sera mis à jour automatiquement, ce qui peut aussi être réalisé
manuellement avec la commande update pool du programme Console pour
rafraichir l'image du catalogue. C'est cette image du catalogue plutôt
que l'image de la ressource du Director qui est utilisée pour les attributs
de volume par défaut. Notez que pour que le pool soit automatiquement
créé ou mis à jour, il doit être référencé explicitement par une ressource Job.
Ensuite le médium physique doit être étiquetté. L'étiquettage peut être réalisé
soit par la commande label du programme Console, soit en utilisant le
programme btape. La méthode à privilégier est la première.
Finallement, vous devez ajouter des noms de volumes (et leurs attributs) au
pool. Pour que les volumes soient utilisés par Bacula, ils doivent être
du même Media Type que l'Archive Device spécifiée pour le job.
(Autrement dit, si vous vous apprétez à sauvegarder vers un lecteur DLT,
le pool doit contenir des volumes DLT, puisque des volumes 8mm ne peuvent
être montés sur un lecteur DLT). Le Media Type revêt une importance
particulière si vous sauvegardez vers des fichiers. Lorsque vous exécutez
un job, vous devez explicitement préciser le pool. Bacula sélectionne dès lors
automatiquement le prochain volume du pool à utiliser, en s'assurant que le
Media Type de tout volume sélectionné est bien celui requis par la
ressource Storage spécifiée pour le job.
Si vous utilisez la commande label du programme Console pour
étiquetter les volumes, il sont automatiquement ajoutés au pool, aussi cette
dernière étape n'est généralement pas requise.
Il est aussi possible d'ajouter des volumes au catalogue sans avoir
explicitement étiquetté les volumes physiques. Ceci s'effectue avec la commande
add du programme Console.
Comme mentionné plus haut, à chaque démarrage, Bacula examine tous les pools
associés à chaque catalogue, et si un enregistrement n'existe pas encore, il
est créé à partir de la définition du pool dans la ressource. Bacula devrait
probablement effectuer un update pool si vous modifiez la définition
du pool mais, actuellement, vous devez le faire manuellement avec la
commande update pool du programme Console.
La ressource Pool définie dans le fichier de configuration du Director peut
contenir les directives suivantes :
- Pool
-
Début de la ressource Pool. Il faut définir au moins une ressource Pool.
- Name = <name>
-
Le nom du pool. Pour la plupart des applications, vous utiliserez le pool
par défaut nommé Default. Cette directive est requise.
- Number of Volumes = <number>
-
Cette directive spécifie le nombre de volumes (cartouches ou fichiers) contenus
dans le pool. En principe, il est défini et mis à jour automatiquement par la
routine de maintenance du catalogue de Bacula.
- Maximum Volumes = <number>
-
Cette directive spécifie le nombre maximum de volumes contenus dans le pool.
Cette directive est optionnelle. Si elle est omise ou réglée à 0, tout nombre
de volumes est permis. En général, cette directive est utile pour les librairies,
où il y a un nombre fixé de volumes, ou pour le stockage sur fichier si vous voulez
vous assurer que les sauvegardes sur disque ne deviennent pas trop nombreuses ou ne
consomment pas trop d'espace.
- Pool Type = <type>
-
Cette directive définit le type du pool, qui correspond au type du job
exécuté. Cette directive est requise et peut prendre l'une des valeurs suivantes :
- Backup
-
- *Archive
-
- *Cloned
-
- *Migration
-
- *Copy
-
- *Save
-
- Use Volume Once = <yes|no>
-
Cette directive, si elle est active (valeur yes) stipule que chaque volume
ne doit être utilisé qu'une seule fois. C'est particulièrement utile si le
volume est un fichier et si vous voulez un nouveau fichier pour chaque nouvelle
sauvegarde. La valeur par défaut est no (autrement dit, les volumes peuvent
être utilisés plusieurs fois). Cette directive sera très certainement bientôt
obsolète, aussi nous vous recommandons d'utiliser Maximum Volume Jobs = 1
à la place.
La valeur définie par cette directive dans le fichier de
configuration du Director est la valeur par défaut utilisée lorsqu'un nouveau
volume est créé. Modifier la valeur dans le fichier de configuration ne changera
pas ce qui est stocké sur le volume. Pour changer cette valeur pour un volume
existant, vous devez utiliser la commande update du programme Console.
- Maximum Volume Jobs = <positive-integer>
-
Cette directive spécifie le nombre maximum de jobs qui peuvent être écrits sur le volume.
La valeur par défaut est zéro, ce qui signifie que le nombre de jobs sur un volume
n'est pas limité. Sinon, lorsque le nombre de jobs sauvegardés sur le volume atteint
la valeur positive-integer spécifiée, le volume est marqué Used. Dès lors,
il ne peut plus être utilisé pour y ajouter des jobs, tout comme dans le cas d'un volume
avec le statut Full, mais il peut être recyclé si le recyclage est activé. En
spécifiant MaximumVolumeJobs = 1 vous obtenez le même effet que celui que vous
obtiendriez avec UseVolumeOnce = yes.
Notez que la valeur définie par cette directive dans le fichier de configuration du
Director est la valeur par défaut utilisée lors de la création d'un volume. Une fois
le volumes créé, modifier la valeur dans le fichier de configuration ne changera
pas ce qui est stocké sur le volume. Pour changer cette valeur pour un volume
existant, vous devez utiliser la commande update du programme Console.
- Maximum Volume Files = <positive-integer>
-
Cette directive spécifie le nombre maximum de fichiers qui peuvent être écrits sur
le volume. La valeur par défaut est zéro, ce qui signifie que le nombre de fichiers
sur un volume n'est pas limité. Sinon, lorsque le nombre de fichiers sauvegardés sur
le volume atteint la valeur positive-integer spécifiée, le volume est marqué
Used. Dès lors, il ne peut plus être utilisé pour y ajouter des jobs, tout comme
dans le cas d'un volume avec le statut Full, mais il peut être recyclé si le
recyclage est activé. Ce n'est qu'à la fin d'un job que Cette valeur est controlée,
et que le statut du volume est éventuellement changé en Used.
La valeur définie par cette directive dans le fichier de configuration du
Director est la valeur par défaut utilisée lors de la création d'un volume. Une fois
le volumes créé, modifier la valeur dans le fichier de configuration ne changera
pas ce qui est stocké sur le volume. Pour changer cette valeur pour un volume
existant, vous devez utiliser la commande update du programme Console.
- Maximum Volume Bytes = <size>
-
Cette directive spécifie le nombre maximum d'octets qui peuvent être écrits sur le
volume. La valeur par défaut est zéro, ce qui signifie qu'il n'y a d'autre limite
que la capacité physique du volume. Sinon, lorsque le nombre d'octets sauvegardés sur
le volume atteint la valeur size spécifiée, le volume est marqué
Used. Dès lors, il ne peut plus être utilisé pour y ajouter des jobs, tout comme
dans le cas d'un volume avec le statut Full, mais il peut être recyclé si le
recyclage est activé. Ce n'est qu'à la fin d'un job que Cette valeur est controlée,
et que le statut du volume est éventuellement changé en Used.
La valeur définie par cette directive dans le fichier de configuration du
Director est la valeur par défaut utilisée lors de la création d'un volume. Une fois
le volumes créé, modifier la valeur dans le fichier de configuration ne changera
pas ce qui est stocké sur le volume. Pour changer cette valeur pour un volume
existant, vous devez utiliser la commande update du programme Console.
- Volume Use Duration = <time-period-specification>
-
Cette directive définit la période durant laquelle le volume peut être utilisé en
écriture, à compter de la première opération d'écriture de données.
La valeur par défaut est zéro, ce qui signifie que le volume peut être écrit
indéfiniment . Sinon, lorsque la durée depuis la première écriture excède la période
time-period-specification spécifiée, le volume est marqué
Used. Dès lors, il ne peut plus être utilisé pour y ajouter des jobs, tout comme
dans le cas d'un volume avec le statut Full, mais il peut être recyclé si le
recyclage est activé. L'usage de la commande status dir applique des algorithmes
similaires à l'éxecution de jobs, aussi lors d'une telle commande, le statut du volume
peut être modifié. Lorsque le volume est recyclé, il peut à nouveau être utilisé.
Vous pourriez utiliser cette directive, par exemple, si vous avez un volume dédié
aux sauvegardes incrémentales, et un volume dédié aux Fulls hebdomadaires. Une fois que
la Full est passée, vous pouvez préférer utiliser un autre volume pour les incrémentales.
Ceci peut être accompli en règlant la période Volume Use Duration à six jours pour
les volumes des incrémentales. Autrement dit, celui-ci sera utilisé durant les six jours
qui suivent une full, puis un autre volume d'incrémentales sera utilisé. Veillez à utiliser
des périodes relativement courtes telles que 23 heures, ou vous pourriez placer Bacula en situation
de devoir attendre tout un week-end le montage d'une cartouche par l'opérateur pour pouvoir terminer
une sauvegarde.
Ce n'est qu'à la fin d'un job que Cette valeur est controlée,
et que le statut du volume est éventuellement changé en Used, ce qui signifie que
bien que la période Volume Use Duration puisse avoir expiré, l'entrée correspondante
du catalogue ne sera pas mise à jour jusqu'à ce que le prochain job utilisant ce
volume soit exécuté.
La valeur définie par cette directive dans le fichier de configuration du
Director est la valeur par défaut utilisée lors de la création d'un volume. Une fois
le volumes créé, modifier la valeur dans le fichier de configuration ne changera
pas ce qui est stocké sur le volume. Pour changer cette valeur pour un volume
existant, vous devez utiliser la commande update volume du
programme Console.
- Catalog Files = <yes|no>
-
Cette directive précise si les noms des fichiers sauvegardés doivent ou non être
enregistrés dans le catalogue. La valeur par défaut est yes. L'avantage de
désactiver cette option (Catalog Files = No) est d'avoir un catalogue
significativement plus petit. L'inconvénient est de ne pas pouvoir produire de
liste des fichiers sauvegardés pour chaque job à partir du catalogue (autrement
dit, vous ne pourrez naviguer dans les fichiers sauvegardés). Ainsi, sans les
enregistrements de fichiers, vous ne pourrez utiliser la commande restore,
ni aucune des autres commandes du programme Console qui se réfèrent aux
enregistrements de fichiers.
- AutoPrune = <yes|no>
-
Si AutoPrune est activée (yes), ce qui est le cas par défaut, Bacula
(depuis la version 1.20) applique automatiquement la période de rétention des
volumes lorsqu'un nouveau volumes est requis ou lorsqu'il n'existe aucun volume
utilisable dans le pool. L'élagage des volumes consiste à supprimer du catalogue
les jobs expirés (ceux qui sont plus anciens que la période de rétention), et rend
possible le recyclage de ces volumes
- Volume Retention = <time-period-specification>
-
La directive Volume Retention définit la période durant laquelle Bacula
conserve les enregistrements Job associés au volume dans le catalogue.
Lors de l'expiration de cette période, si AutoPrune est activée, Bacula
peut supprimer les enregistrements Job plus anciens que la période time-period-specification
spécifiée s'il est nécessaire de libérer un volume. Tous les enregistrements de fichiers
associés à des jobs supprimés sont aussi supprimés. Les durées peuvent être exprimées
en secondes, minutes, heures, jours, semaines, mois, trimestres ou années.
La période Volume Retention s'applique indépendamment des périodes Job Retention
et File Retention définies dans la ressource Client. Ceci signifie que la
période la plus courte est celle qui s'applique.Notez bien que lorsque la période
Volume Retention a été atteinte les enregistrements de Job et ceux de fichiers
sont supprimmés les uns et les autres.
Cet élagage peut aussi se produire à l'exécution de la commande status dir car elle
applique des algorithmes similaires à ceux utilisés pour déterminer le prochain volume
disponible.
Il est important de savoir que lorsque la période Volume Retention expire,
Bacula ne recycle pas systématiquement le volume concerné. Il tente de conserver
les données intactes aussi longtemps que possible avant d'écrire sur ce volume.
La valeur par défaut est 365 jours. Notez que cette directive règle la valeur par
défaut pour chaque enregistrement de volume du catalogue lorsque le volume
est créé. Cette valeur du catalogue peut ensuite être modifiée avec la commande
update du programme Console.
En définissant plusieurs pools avec différentes périodes de rétention (volume
retention), vous pouvez efficacement gérer vos cartouches avec, par exemple
un pool de cartouches recyclé chaque semaine, un autre recyclé chaque mois, et
ainsi de suite. Cependant, il faut bien garder à l'esprit que si votre période
de rétention Volume Retention est trop courte, il peut arriver que votre
dernière sauvegarde Full valide soit supprimée, de sorte que vous n'ayez plus
une sauvegarde complète de votre système, et que votre prochaine incrémentale
soit élevée en une Full. Par conséquent, la valeur minimum de la période
Volume Retention devrait être au moins le double de l'intervalle
séparant vos Fulls. Autrement dit, pour des Fulls mensuelles, la période
Volume Retention devrait être supérieure ou égale à deux mois.
Notez que la valeur définie par cette directive dans le fichier de configuration du
Director est la valeur par défaut utilisée lors de la création d'un volume. Une fois
le volumes créé, modifier la valeur dans le fichier de configuration ne changera
pas ce qui est stocké sur le volume. Pour changer cette valeur pour un volume
existant, vous devez utiliser la commande update du programme Console.
- Recycle = <yes|no>
-
Cette directive spécifie la valeur par défaut pour le recyclage des volumes purgés.
Si elle est activée (yes) et si Bacula a besoin d'un volume mais n'en trouve
aucun utilisable, il recherche alors les volumes purgés (c'est à dire ceux dont tous
les jobs et fichiers ont expiré et ont, de fait, été supprimés du catalogue). Si un
volume est recyclé, toutes les données précedemment écrites sur ce volumes seront
écrasées. Si le recyclage est désactivé (no), le volume ne sera pas recyclé, et ainsi
les données resteront valides. Si vous souhaitez réutiliser un volume dont le drapeau de
recyclage est no (0 dans le catalogue), vous devez manuellement le changer en yes (commande
update).
Notez que la valeur définie par cette directive dans le fichier de configuration du
Director est la valeur par défaut utilisée lors de la création d'un volume. Une fois
le volumes créé, modifier la valeur dans le fichier de configuration ne changera
pas ce qui est stocké sur le volume. Pour changer cette valeur pour un volume
existant, vous devez utiliser la commande update du programme Console.
- Recycle Oldest Volume = <yes|no>
-
Cette directive indique au Director de rechercher le volume le plus ancien
du pool lorsq'un nouveau est requis par le Storage Daemon et qu'aucun autre
n'est disponible. Le catalog est alors élagué dans le respect des
périodes Job, File et Volume Retention, c'est pourquoi cette
directive est, de très loin, préférable à directive Purge Oldest Volume.
Cette directive peut être utile si vous avez un nombre fixe de volumes dans
un pool et que vous voulez cycler sur ces volumes après avoir spécifié
les périodes de rétention qui conviennent.
- Recycle Current Volume = <yes|no>
-
Si Bacula a besoin d'un nouveau volume, cette directive lui indique d'élaguer
le volume dans le respect des périodes Job, File et
Volume Retention. Si tous les jobs sont élagués, (c'est à dire si le
volume est purgé), alors le volume est recyclé et sera utilisé pour la
prochaine opération d'écriture. Cette directive respecte toutes les
périodes Job, File et Volume Retention, c'est pourquoi
elle est , de très loin, préférable à la directive Purge Oldest Volume.
Cette directive peut être utile si vous avez un nombre fixe de volumes dans
un pool et que vous voulez cycler sur ces volumes après avoir spécifié
les périodes de rétention qui élaguent les volumes avant que vous n'ayez
terminé le cycle sur les volumes.
- Purge Oldest Volume = <yes|no>
-
Cette directive indique au Director de rechercher le volume utilisé le plus
ancien dans le pool lorsqu'un nouveau volume est requis par le Storage
Daemon et qu'aucun n'est disponible. Le catalogue est alors purgé sans
égards pour les périodes de rétention des fichiers et jobs écrits sur ce
volume. Le volume est alors recyclé pour être utilisé pour la prochaine
opération d'écriture. Cette directive outrepasse toute période de rétention
(Job, File, ou Volume) que vous avez pu spécifier par ailleurs.
Cette directive peut être utile si vous avez un nombre fixe de volumes dans
un pool et que vous voulez cycler sur ces volumes lorsque tous les volumes
sont pleins, sans avoir à vous soucier de paramétrer les périodes de
rétentions qui conviendraient. Cependant, en l'utilisant, vous courrez le
risque de perdre toutes vos données.
Soyez conscient que Purge Oldest Volume ne fait aucun cas d'aucune
période de rétention. Si vous activez cette directive alors que vous ne possédez
qu'un seul volume, ce volume sera systématiquement écrasé tout de suite après
avoir été rempli ! Aussi, assurez vous au moins d'avoir un nombre décent de
volumes dans votre pool avant d'exécuter un job. Si vous voulez que les périodes
de rétention soient prises en compte, n'utilisez pas cette directive. Pour
spécifier une période de rétention, utilisez la directive Volume Retention
(voir ci dessus).
Je recommande fortement de ne pas utiliser cette directive, car il est certain que
tôt ou tard, Bacula recyclera un volume contenant des données valides et récentes.
La valeur par défaut est no
- Cleaning Prefix = <string>
-
Cette directive définit un préfixe qui, s'il correspond au début du nom d'un
volume lors de son étiquettage, indique à Bacula que le volume en question est
une cartouche de nettoyage, qui aura le statut VolStatus = Cleaning.
Ainsi Bacula ne tentera jamais d'utiliser cette cartouche. Cette option est
particulièrement utile avec les librairies équipées de lecteurs de codes barres où,
conventionnellement, les codes barres commenant par CLN sont traités en
tant que cartouches de nettoyage.
- Label Format = <format>
-
Cette directive précise le format des étiquettes des volumes de ce pool.
La directive Format est utilisée comme un patron pour créer de nouveaux
noms de volumes lors de l'étiquettage automatique.
Le format devrait être spécifié entre guillemets, et consiste en une
chaîne de lettres, chiffres et caractères spéciaux tiret (-), souligné
(_), double point (:) et point (.), qui sont considérés valides
pour un nom de volume.
De plus, le format peut comporter des caractères variables qui seront
substituées par un algorithme complexe, ce qui permet de créer des noms de volumes
avec plusieurs formats différents. En tous les cas, le processus d'expansion des
variables doit aboutir au jeu de caractères définis comme légaux dans le
dernier paragraphe. Généralement, ces caractères variables commencent par
un signe dollar ($) ou un crochet droit ([). Si vous spécifiez
des caractères variables vous devriez toujours les encadrer de guillemets.
Pour plus de détails sur ce sujet, veuillez consulter le chapitre
Variable Expansion de ce manuel.
Si aucun caractère variable n'est découvert dans la chaîne, le nom de volume
sera constitué de la chaîne format suffixée du nombre de volumes dans le
pool plus un, au format 4 chiffres et avec des zéros en tête. Par exemple,
avec Label Format = ''File-``, les volumes seront nommés
File-0001, File-0002, ...
Exception faite des variables spécifiques aux jobs, vous pouvez tester votre
LabelFormat en utilisant la section var command du
chapitre Console de ce manuel.
Dans la plupart des cas, vous devriez encadrer la spécification de format (la
partie à droite du signe égale) entre guillemets. Notez que cette directive est
obsolète et qu'elle est remplacée, à partir de la version 1.37 par un script Python
pour la création des noms de volumes.
Pour qu'un pool puisse être utilisé lors d'une sauvegarde, il faut qu'il lui soit
associé au moins un volume. Les volumes sont créés et affectés aux pools avec les
commandes label ou add du programme Bacula Console. Outre
l'affectation du volume au pool (c'est à dire son référencement
dans le catalogue), le volume physique doit recevoir une étiquette logicielle
valide pour que Bacula l'accepte. Ceci peut être réalisé automatiquement grâce
à la commande label. D'autre part, Bacula peut effectuer cette opération
automatiquement si l'instruction lui en est donné, mais cette fonctionnalité
n'est pas encore pleinement implémentée.
Voici un exemple d'une définition de ressource Pool valide :
Pool {
Name = Default
Pool Type = Backup
}
En général, vous pouvez nommer vos pool à votre guise, il existe cependant
une importante restriction : le pool nommé Scratch, s'il existe,
se comporte comme une réserve de volumes où Bacula pourra puiser s'il ne trouve
aucun volume utilisable dans le pool normalement utilisé par le job. Le volume
est alors déplacé du pool Scratch vers le pool en défaut.
La ressource Catalog
La ressource Catalog précise quel catalogue utiliser pour le job courant.
Actuellement, Bacula ne peut utiliser qu'un type de serveur de bases de
données défini lors de sa configuration : SQLite, MySQL, PostgreSQL.
En revanche, vous pouvez utiliser autant de
catalogues que vous le souhaitez. Par exemple, vous pouvez avoir un
catalogue par client, ou encore un catalogue pour les sauvegardes, un autre
pour les jobs de type Verify et un troisième pour les restaurations.
- Catalog
-
Début de la ressource Catalog. Il faut au moins une ressource Catalogue.
- Name = <name>
-
Le nom du Catalog. Il n'a pas besoin d'être en relation avec le nom sur le serveur
de base de données. Ce nom sera repris dans la ressource Client, indiquant ainsi
que toutes les données relatives à ce client sont maintenues dans ce catalogue.
Cette directive est requise.*
- password = <password>
-
Cette directive spécifie le mot de passe à utiliser pour se connecter au
catalogue. Cette directive est requise.
- DB Name = <name>
-
Cette directive spécifie le nom de la base de données. Si vous utilisez plusieurs
catalogues, vous spécifiez lequel ici. Si vous utilisez un serveur de bases de
données externe plutôt que l'intégré, vous devez spécifier un nom connu du
serveur (autrement dit, le nom que vous avez utilisé lorsque vous avez créé les
tables Bacula.). Cette directive est requise.
- user = <user>
-
L'utilisateur habilité à se connecter au catalogue. Cette directive est requise.
- DB Socket = <socket-name>
-
Il s'agit du nom d'un socket à utiliser sur la machine locale pour se
connecter au catalogue. Cette directive n'est utilisée que par MySQL, elle est
ignorée par SQLite. Normalement, si ni DB Socket, ni DB Address ne sont
spécifiées, MySQL utilise le socket par défaut.
- DB Address = <address>
-
Il s'agit de l'adresse du serveur de bases de données. En principe, vous
utiliserez cette directive plutôt que DB Socket si le serveur de bases de
données est une autre machine. Dans ce cas, vous spécifierez aussi le port DB Port.
Cette directive n'est utilisée que par MySQL, et ignorée par SQLite. Elle est
optionnelle.
- DB Port = <port>
-
Cette directive définit le port à utiliser en conjonction avec DB Address pour
accéder au catalogue s'il est hébergé sur une autre machine. Elle n'est utilisée que par
MySQL, et ignorée par SQLite. Elle est optionnelle.
Voici un exemple d'une définition de ressource Catalog valide :
Catalog
{
Name = SQLite
dbname = bacula;
user = bacula;
password = "" # no password = no security
}
en voici une deuxième pour un catalogue sur une autre machine :
Catalog
{
Name = MySQL
dbname = bacula
user = bacula
password = ""
DB Address = remote.acme.com
DB Port = 1234
}
La ressource Messages
Pour les détails sur la ressource Messages, veuillez consulter
le chapitre La ressource Messages de ce manuel.
La ressource Console
A partir de la version 1.33 de Bacula, l'administrateur dispose de trois sortes de
consoles différentes pour interagir avec le Director. Ces trois types de consoles
comportent trois niveaux de sécurité différents.
- Le premier type de console est une console anonyme ou par défaut,
qui détient tous les privilèges. La ressource Console n'est pas requise pour
ce type puisque le mot de passe est spécifié dans la ressource Director et par
conséquent, de telles consoles n'ont pas de nom défini par une directive Name =.
C'est le premier type de console implémenté dans les versions antérieures à 1.33, il
demeure valide. Sont usage est typiquement réservé aux administrateurs.
- Le second type de console, apparu avec la version 1.33 est une console "nommée"
définie dans une ressource Console simultanément dans le fichier de configuration du
Director et dans le fichier de configuration de la Console, les noms et mots de passe
devant être en conjonction dans ces deux fichiers.
Ce type de console ne détient absolument aucun privilège, exceptés ceux explicitement
spécifiés dans la ressource Console du fichier de configuration du Director.
Ainsi, vous pouvez définir plusieurs consoles avec des noms et mots de passe distincts
destinées à différents utilisateurs avec différents privilèges. Par défaut ces consoles
ne peuvent absolument rien faire. Il vous revient de leur accorder des privilèges
ou plutôt des accès aux commandes et ressources en spécifiant des listes de
contrôle d'accès (ACL) dans la ressource Console du fichier de configuration du
Director. Les ACLs sont spécifiées par une directive suivie d'une liste de noms
d'accès. Vous trouverez des exemples ci-dessous.
- Le troisième type de console est similaire au second en ce qu'il requiert
une définition de ressource Console dans le fichier de configuration du
Director et dans le fichier de configuration de la Console. De plus, si le nom de
la console spécifié par la directive Name = est le même que le nom du client,
cette console est autorisée à utiliser la commande SetIP pour modifier la
directive Address dans la ressource client du fichier de configuration du
Director en l'adresse IP de la console. Ceci permet aux portables et autres machines
utilisant DHCP (adresses IP dynamiques) de "notifier" le Director de leur adresse
IP courante.
La ressource Console est optionnelle. Les directives suivantes sont permises
dans le fichier de configuration du Director.
- Name = <name>
-
Le nom de la console. Ce nom doit être en conjonction avec celui spécifié
dans le fichier de configuration de la Console (comme c'est le cas pour les
définitions de clients).
- Password = <password>
-
Spécifie le mot de passe qu'une console nommée doit fournir pour être autorisée.
Le même mot de passe doit apparaître dans la ressource Console du fichier
de configuration de la Console. Pour plus de sécurité, le mot de passe n'est
jamais réellement transmis à travers le réseau, mais plutôt un code de
hachage de type challenge response créé à partir du mot de passe.
Cette directive est requise. Si vous disposez de /dev/random ou bc
sur votre machine, Bacula génèrera aléatoirement ce mot de passe lors du
processus de configuration, autrement, il sera laissé blanc.
- JobACL = <name-list>
-
Cette directive est utilisée pour spécifier une liste de noms de ressources Job
qui peuvent être accédés par la console. Sans cette directive, la console ne peut
accéder à aucune des ressources Job définies dans le fichier de configuration
du Director. Plusieurs ressources Job peuvent être spécifiées en les séparant par
des virgules, et/ou en spécifiant plusieurs directives JobACL. Par exemple, la
directive peut être spécifiée ainsi :
JobACL = kernsave, "Backup client 1", "Backup client 2"
JobACL = "RestoreFiles"
Avec cette spécificaton, la console peut accéder aux ressources du Director pour
les quatre jobs désignés par la directive JobACL, et uniquement à eux.
- ClientACL = <name-list>
-
Cette directive est utilisée pour spécifier une liste de noms de ressources Client
iaccessibles par la console.
- StorageACL = <name-list>
-
Cette directive est utilisée pour spécifier une liste de noms de ressources Storage
accessibles par la console.
- ScheduleACL = <name-list>
-
Cette directive est utilisée pour spécifier une liste de noms de ressources Schedule
accessibles par la console.
- PoolACL = <name-list>
-
Cette directive est utilisée pour spécifier une liste de noms de ressources Pool
accesibles ar la console.
- FileSetACL = <name-list>
-
Cette directive est utilisée pour spécifier une liste de noms de ressources FileSet
accessibles par la console.
- CatalogACL = <name-list>
-
Cette directive est utilisée pour spécifier une liste de noms de ressources Catalog
accessibles par la console.
- CommandACL = <name-list>
-
Cette directive est utilisée pour spécifier une liste de commandes de la console
qui peuvent être exécutées par la console.
En plus des différents noms de ressources du Director et de commandes, le mot-clef
spécial *all* peut être spécifié dans chacune des directives ACL ci-dessus.
Sa présence signifie que toute ressource ou commande (pourvu qu'elle soit appropriée
à la directive) est acceptée. Pour un exemple de fichier de configuration, voyez le
chapitre Configuration de la console de ce manuel
La ressource Counter
La ressource Counter définit une variable-compteur qui peut être accédée par le
processus d'expansion de variables utilisé pour la création de d'étiquettes (labels)
de volumes avec la directive LabelFormat. Consultez le paragraphe sur la directive
LabelFormat de ce chapitre pour plus de détails.
- Counter
-
Début de la ressource Counter. les directives Counter sont optionnelles.
- Name = <name>
-
iLe nom de la variable-compteur. Il s'agit du nom que vous utiliserez pour vous référer
à cette variable et accéder à sa valeur.
- Minimum = <integer>
-
Spécifie la valeur minimale de la variable-compteur. Cette valeur devient celle par défaut.
Si elle n'est pas fournie, sa valeur est zéro.
- Maximum = <integer>
-
Spécifie la valeur maximale de la variable-compteur. Si elle n'est pas fournie, ou si elles
est réglée à zéro, la variable compteur peut prendre une valeur maximale de 2 147 483 648
(
). Au delà de cette valeur, le compteur est remis au minimum.
- *WrapCounter = <counter-name>
-
Si cette valeur est spécifiée, lorsque la variable-compteur dépasse le maximum et
est remise au minimum, le compteur spécifié par la directive WrapCounter est
incrémenté. (Ceci n'est, pour le moment, pas implémenté.)
- Catalog = <catalog-name>
-
Si cette directive est spécifiée, le compteur et sa valeur sont sauvegardés dans le
catalogue spécifié. Dans le cas contraire, le compteur est redéfini à chaque
démarrage de Bacula.
Voici un exemple complet de fichier de configuration du Director.
Un exemple de fichier de configuration du Director pourrait être le suivant :
#
# Default Bacula Director Configuration file
#
# The only thing that MUST be changed is to add one or more
# file or directory names in the Include directive of the
# FileSet resource.
#
# For Bacula release 1.15 (5 March 2002) -- redhat
#
# You might also want to change the default email address
# from root to your address. See the "mail" and "operator"
# directives in the Messages resource.
#
Director { # define myself
Name = rufus-dir
QueryFile = "/home/kern/bacula/bin/query.sql"
WorkingDirectory = "/home/kern/bacula/bin/working"
PidDirectory = "/home/kern/bacula/bin/working"
Password = "XkSfzu/Cf/wX4L8Zh4G4/yhCbpLcz3YVdmVoQvU3EyF/"
}
# Define the backup Job
Job {
Name = "NightlySave"
Type = Backup
Level = Incremental # default
Client=rufus-fd
FileSet="Full Set"
Schedule = "WeeklyCycle"
Storage = DLTDrive
Messages = Standard
Pool = Default
}
Job {
Name = "Restore"
Type = Restore
Client=rufus-fd
FileSet="Full Set"
Where = /tmp/bacula-restores
Storage = DLTDrive
Messages = Standard
Pool = Default
}
# List of files to be backed up
FileSet {
Name = "Full Set"
Include {
Options { signature=SHA1 }
#
# Put your list of files here, one per line or include an
# external list with:
#
# @file-name
#
# Note: / backs up everything
File = /
}
Exclude { }
}
# When to do the backups
Schedule {
Name = "WeeklyCycle"
Run = Full sun at 1:05
Run = Incremental mon-sat at 1:05
}
# Client (File Services) to backup
Client {
Name = rufus-fd
Address = rufus
Catalog = MyCatalog
Password = "MQk6lVinz4GG2hdIZk1dsKE/LxMZGo6znMHiD7t7vzF+"
File Retention = 60d # sixty day file retention
Job Retention = 1y # 1 year Job retention
AutoPrune = yes # Auto apply retention periods
}
# Definition of DLT tape storage device
Storage {
Name = DLTDrive
Address = rufus
Password = "jMeWZvfikUHvt3kzKVVPpQ0ccmV6emPnF2cPYFdhLApQ"
Device = "HP DLT 80" # same as Device in Storage daemon
Media Type = DLT8000 # same as MediaType in Storage daemon
}
# Definition for a DLT autochanger device
Storage {
Name = Autochanger
Address = rufus
Password = "jMeWZvfikUHvt3kzKVVPpQ0ccmV6emPnF2cPYFdhLApQ"
Device = "Autochanger" # same as Device in Storage daemon
Media Type = DLT-8000 # Different from DLTDrive
Autochanger = yes
}
# Definition of DDS tape storage device
Storage {
Name = SDT-10000
Address = rufus
Password = "jMeWZvfikUHvt3kzKVVPpQ0ccmV6emPnF2cPYFdhLApQ"
Device = SDT-10000 # same as Device in Storage daemon
Media Type = DDS-4 # same as MediaType in Storage daemon
}
# Definition of 8mm tape storage device
Storage {
Name = "8mmDrive"
Address = rufus
Password = "jMeWZvfikUHvt3kzKVVPpQ0ccmV6emPnF2cPYFdhLApQ"
Device = "Exabyte 8mm"
MediaType = "8mm"
}
# Definition of file storage device
Storage {
Name = File
Address = rufus
Password = "jMeWZvfikUHvt3kzKVVPpQ0ccmV6emPnF2cPYFdhLApQ"
Device = FileStorage
Media Type = File
}
# Generic catalog service
Catalog {
Name = MyCatalog
dbname = bacula; user = bacula; password = ""
}
# Reasonable message delivery -- send most everything to
# the email address and to the console
Messages {
Name = Standard
mail = root@localhost = all, !skipped, !terminate
operator = root@localhost = mount
console = all, !skipped, !saved
}
# Default pool definition
Pool {
Name = Default
Pool Type = Backup
AutoPrune = yes
Recycle = yes
}
#
# Restricted console used by tray-monitor to get the status of the director
#
Console {
Name = Monitor
Password = "GN0uRo7PTUmlMbqrJ2Gr1p0fk0HQJTxwnFyE4WSST3MWZseR"
CommandACL = status, .status
}
Next: Configuration du Client/File Daemon
Up: Bacula User's Guide
Previous: Adapter les fichiers de
Contents
Index
Kern Sibbald
2007-04-02