From: Kern Sibbald Date: Wed, 3 Mar 2010 18:30:17 +0000 (+0100) Subject: Setup fr/misc fr/problems for translation X-Git-Tag: Release-5.2.1~147 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=a7e5026ae9fb7891f67ecf1d946420bf22fb4d7e;p=bacula%2Fdocs Setup fr/misc fr/problems for translation --- diff --git a/docs/manuals/fr/main/old/installation.tex b/docs/manuals/fr/main/old/installation.tex new file mode 100644 index 00000000..12989c2c --- /dev/null +++ b/docs/manuals/fr/main/old/installation.tex @@ -0,0 +1,1518 @@ +%% +%% + +\chapter{Installer Bacula} +\label{_ChapterStart17} +\index[general]{Installer Bacula } +\index[general]{Bacula!Installer } +\addcontentsline{toc}{section}{Installer Bacula} + +\section{Pr\'erequis} +\index[general]{Pr\'erequis } +\addcontentsline{toc}{section}{Pr\'erequis} + +En g\'en\'eral, il vous faudra les sources de la version courante de Bacula, +et si vous souhaitez ex\'ecuter un client Windows, vous aurez besoin de la +version binaire du client Bacula pour Windows. Par ailleurs, Bacula a besoin +de certains paquetages externes (tels {\bf SQLite}, {\bf MySQL} ou {\bf +PostgreSQL}) pour compiler correctement en accord avec les options que vous +aurez choisies. Pour vous simplifier la t\^ache, nous avons combin\'e +plusieurs de ces programmes dans deux paquetages {\bf depkgs} (paquetages de +d\'ependances). Ceci peut vous simplifier la vie en vous fournissant tous les +paquets n\'ecessaires plut\^ot que de vous contraindre \`a les trouver sur la +Toile, les charger et installer. + +\section{Distribution des fichiers source} +\index[general]{fichiers source} +\index[general]{distrribution fichiers} +\addcontentsline{toc}{section}{Distribution des fichiers source} +A partir de la version 1.38.0, le code source est \'eclat\'e en quatre +fichiers tar correspondant \`a quatre modules diff\'erents dans le CVS +Bacula. Ces fichiers sont : + +\begin{description} +\item [bacula-1.38.0.tar.gz] + Il s'agit de la distribution primaire de Bacula. Pour chaque nouvelle + version, le num\'ero de version (ici, 1.38.0) sera mise \`a jour. + +\item [bacula-docs-1.38.0.tar.gz] + Ce fichier contient une copie du r\'epertoire docs, avec les documents + pr\'e-construits : R\'epertoire html anglais, fichier html unique et + fichier pdf. Les traductions allemande et fran\c {c}aise sont en cours mais + ne sont pas pr\'e-construites. + +\item [bacula-gui-1.38.0.tar.gz] + Ce fichier contient les programmes graphique en dehors du coeur + de l'application. Actuellement, il contient bacula-web, un programme + PHP pour produire une vue d'ensemble des statuts de vos jobs + Bacula consultable dans un navigateur ; et bimagemgr, un programme + qui permet de graver des images de CDROMS depuis un navigateur avec + les volumes Bacula. + +\item [bacula-rescue-1.8.1.tar.gz] + Ce fichier contient le code du CDROM de secours Bacula. Notez + que le num\'ero de version de ce paquetage n'est pas li\'e \`a celui + de Bacula. En utilisant ce code, vous pouvez graver un CDROM contenant + la configuration de votre syst\`eme et une version statiquement li\'ee du + File Daemon. Ceci peut vous permettre de repartitionner et reformater + ais\'ement vos disques durs et de recharger votre syst\`eme avec Bacula + en cas de d\'efaillance du disque dur. + +\item [winbacula-1.38.0.exe] + Ce fichier est l'installeur 32 bits Windows pour l'installation du + client Windows (File Daemon) sur une machine Windows. + A partir de la version 1.39.20, cet exécutable contiendra aussi + le Director Win32 et le Storage Daemon Win32. +\end{description} + +\label{upgrading1} + +\section{Mettre Bacula \`a jour} +\index[general]{Mettre Bacula \`a jour } +\index[general]{Jour!Mettre Bacula \`a } +\addcontentsline{toc}{section}{Mettre Bacula \`a jour} + +Si vous faites une mise \`a jour de Bacula, vous devriez d'abord lire +attentivement les ReleaseNotes de toutes les versions entre votre version +install\'ee et celle vers laquelle vous souhaitez mettre \`a jour. Si la base +de donn\'ees du catalogue a \'et\'e mise \`a jour (c'est presque toujours le cas +à chaque nouvelle version majeure), vous devrez soit +r\'einitialiser votre base de donn\'ees et repartir de z\'ero, soit en +sauvegarder une copie au format ASCII avant de proc\'eder \`a sa mise \`a +jour. Ceci est normalement fait lorsque Bacula est compil\'e et install\'e par : + +\begin{verbatim} +cd (default /etc/bacula) +./update_bacula_tables +\end{verbatim} + +Ce script de mise \`a jour peut aussi \^etre trouv\'e dans le r\'epertoire +src/cats des sources de Bacula. + +S'il y a eu plusieurs mises \`a jour de la base de donn\'ees entre votre +version et celle vers laquelle vous souhaitez \'evoluer, il faudra appliquer +chaque script de mise \`a jour de base de donn\'ees. Vous pouvez trouver tous +les anciens scripts de mise \`a jour dans le r\'epertoire {\bf upgradedb} des +sources de Bacula. Il vous faudra \'editer ces scripts pour qu'ils +correspondent \`a votre configuration. Le script final, s'il y en a un, sera +dans le r\'epertoire {\bf src/cats} comme indiqu\'e dans la ReleaseNote. + +Si vous migrez d'une version majeure vers une autre, vous devrez remplacer +tous vos composants ({\it daemons}) en m\^eme temps car, g\'en\'eralement, le +protocole inter-{\it daemons} aura chang\'e. Par contre, entre deux versions +mineures d'une m\^eme majeure (par exemple les versions 1.32.x), \`a moins +d'un bug, le protocole inter-{\it daemons} ne changera pas. Si cela vous +semble confus, lisez simplement les ReleaseNotes tr\`es attentivement, elles +signaleront si les {\it daemons} doivent \^etre mis \`a jour simultan\'ement. + +Enfin, notez qu'il n'est g\'en\'eralement pas n\'ecessaire d'utiliser +{\bf make uninstall} avant de proc\'eder \`a une mise \`a jour. En fait, si vous le +faites vous effacerez probablement vos fichiers de configuration, ce qui +pourrait \^etre d\'esastreux. La proc\'edure normale de mise \`a jour est simplement : +\begin{verbatim} +./configure (your options) +make +make install +\end{verbatim} + + En principe, aucun de vos fichiers .conf ou .sql ne devrait \^etre \'ecras\'e, + et vous devez exécuter les deux commandes {\bf make} et {\bf make install}. + {\bf make install} sans un {\bf make} préalable ne fonctionnera pas. + +Pour plus d'informations sur les mises \`a jour, veuillez consulter la partie +\ilink{Upgrading Bacula Versions}{upgrading} du chapitre Astuces de ce manuel + +\section{Paquetage de D\'ependences} +\label{Dependency} +\index[general]{Paquetage de D\'ependences} +\index[general]{Paquetage!D\'ependences} +\addcontentsline{toc}{section}{Paquetage de D\'ependences} + +Comme nous l'\'evoquions plus haut, nous avons combin\'e une s\'erie de +programmes dont Bacula peut avoir besoin dans les paquets {\bf depkgs} et {\bf +depkgs1}. Vous pouvez, bien sur, obtenir les paquets les plus r\'ecents +directement des auteurs. Le fichier README dans chaque paquet indique o\`u les +trouver. Pourtant, il faut noter que nous avons test\'e la compatibilit\'e des +paquets contenus dans les fichiers depkgs avec Bacula. + +Vous pouvez, bien sur, obtenir les dernieres versions de ces paquetages de +leurs auteurs. Les r\'ef\'erences n\'ecessaires figurent dans le README de +chaque paquet. Quoi qu'il en soit, soyez conscient du fait que nous avons +test\'e la compatibilit\'e des paquetages des fichiers depkgs. + +Typiquement, un paquetage de d\'ependances sera nomm\'e {\bf +depkgs-ddMMMyy.tar.gz} et {\bf depkgs1-ddMMMyy.tar.gz} o\`u {\bf dd} est le +jour o\`u n'ous l'avons publi\'e, {\bf MMM} l'abbr\'eviation du mois et {\bf +yy} l'ann\'ee. Par exemple: {\bf depkgs-07Apr02.tar.gz}. Pour installer et +construire ce paquetage (s'il est requis), vous devez: + +\begin{enumerate} +\item Cr\'eer un r\'epertoire {\bf bacula}, dans lequel vous placerez les + sources de Bacula et le paquetage de d\'ependances. +\item D\'esarchiver le {\bf depkg} dans le r\'epertoire {\bf bacula}. +\item vous d\'eplacer dans le r\'epertoire obtenu: cd bacula/depkgs +\item ex\'ecuter make + \end{enumerate} + +La composition exacte des paquetages de d\'ependance est susceptible de +changer de temps en temps, voici sa composition actuelle : + +\begin{longtable}{|l|l|l|} + \hline +\multicolumn{1}{|c| }{\bf Paquets externes } & \multicolumn{1}{c| }{\bf depkgs +} & \multicolumn{1}{c| }{\bf depkgs1 } \\ + \hline +{SQLite } & \multicolumn{1}{c| }{X } & \multicolumn{1}{c| }{- } \\ + \hline +{SQLite3 } & \multicolumn{1}{c| }{X } & \multicolumn{1}{c| }{- } \\ + \hline +{mtx } & \multicolumn{1}{c| }{X } & \multicolumn{1}{c| }{- } \\ + \hline +{readline } & \multicolumn{1}{c| }{- } & \multicolumn{1}{c| }{X } \\ + \hline +{pthreads } & \multicolumn{1}{c| }{- } & \multicolumn{1}{c| }{- } \\ + \hline +{zlib } & \multicolumn{1}{c| }{- } & \multicolumn{1}{c| }{- } \\ + \hline +{wxWidgets } & \multicolumn{1}{c| }{- } & \multicolumn{1}{c| }{- } \\ +\hline + +\end{longtable} + +Notez que certains de ces paquets sont de taille respectable, si bien que +l'\'etape de compilation peut prendre un certain temps. Les instructions +ci-dessous construiront tous les paquets contenus dans le r\'epertoire. +Cependant, la compilation de Bacula, ne prendra que les morceaux dont Bacula a +effectivement besoin. + +Une alternative consiste \`a ne construire que les paquets n\'ecessaires. Par +exemple, + +\footnotesize +\begin{verbatim} +cd bacula/depkgs +make sqlite +\end{verbatim} +\normalsize + +configurera et construira SQLite et seulement SQLite. + +Vous devriez construire les paquets requis parmi {\bf depkgs} et/ou {\bf +depkgs1} avant de configurer et compiler Bacula car Bacula en aura besoin +d\`es la compilation. + +M\^eme si vous n'utilisez pas SQLite, vous pourriez trouver le paquet {\bf +depkgs} pratique pour construire {\bf mtx} car le programme {\bf tapeinfo} qui +vient avec peut souvent vous fournir de pr\'ecieuses informations sur vos +lecteurs de bandes SCSI (e.g. compression, taille min/max des blocks,...). + +Le paquet {\bf depkgs-win32} est obsolète à partir de la version 1.39 de Bacula. +Il était autrefois utilisé pour compiler le client natif Win32 qui est +désormais construit sur Linux grâce à un mécanisme de compilation croisée. +Tous les outils et librairies tierces sont automatiquement téléchargées +par l'exécution de scripts apropriés. Lisez le fichier src/win32/README.mingw32 +pour plus de détails. + +\section{Syst\`emes Support\'es} +\label{Systems} +\index[general]{Syst\`emes Support\'es } +\addcontentsline{toc}{section}{Syst\`emes Support\'es} + +Veuillez consulter la section +\ilink{ Syst\`emes support\'es}{SupportedOSes} du chapitre +D\'emarrer avec Bacula de ce manuel. + +\section{Construire Bacula \`a partir des sources} +\label{Building} +\index[general]{Construire Bacula \`a partir des sources } +\index[general]{Sources!Construire Bacula \`a partir des } +\addcontentsline{toc}{section}{Construire Bacula \`a partir des sources} + +L'installation basique est plut\^ot simple. + +\begin{enumerate} +\item Installez et construisez chaque {\bf depkgs} comme indiqu\'e plus haut. + + +\item Configurez et installez MySQL ou PostgreSQL (si vous le souhaitez): + \ilink{Installer et configurer MySQL Phase I}{_ChapterStart} ou + \ilink{Installer et configurer PostgreSQL Phase +I}{_ChapterStart10}. Si vous installez depuis des rpms, et +utilisez MySQL, veillez \`a installer {\bf mysql-devel}, afin que les +fichiers d'en-t\^etes de MySQL soient disponibles pour la compilation de +Bacula. De plus, la librairie client MySQL requi\`ert la librairie de +compression gzip {\bf libz.a} ou {\bf libz.so}. Ces librairies sont dans le +paquet {\bf libz-devel}. Sur Debian, vous devrez charger le paquet {\bf +zlib1g-dev}. Si vous n'utilisez ni rpms, ni debs, il vous faudra trouver le +paquetage adapt\'e \`a votre syst\`eme. + +Notez que si vous avez dej\`a MySQL +ou PostgreSQL sur votre syst\`eme vous pouvez sauter cette phase pourvu que +vous ayez construit "the thread safe libraries'' et que vous ayez d\'ej\`a +install\'e les rpms additionnels sus-mentionn\'es. + +\item En alternative \`a MySQL et PostgreSQL, configurez et installez SQLite, + qui fait partie du paquetage {\bf depkgs}. + \ilink{Installer et configurer SQLite}{_ChapterStart33}. + SQLite n'est probablement pas adapt\'e \`a un environnement de production + de taille respectable, en raison de sa lenteur par rapport \`a MySQL, et de la + pauvret\'e de ses outils de reconstruction de base de donn\'ees endommag\'ee. + +\item D\'esarchivez les sources de Bacula, de pr\'ef\'erence dans le + r\'epertoire {\bf bacula} \'evoqu\'e ci-dessus. + +\item D\'eplacez-vous dans ce r\'epertoire. + +\item Ex\'ecutez ./configure (avec les options appropri\'ees comme d\'ecrit + ci-dessus) + +\item Examinez tr\`es attentivement la sortie de ./configure, + particuli\`erement les r\'epertoires d'installation des binaires et des + fichiers de configuration. La sortie de ./configure est stock\'ee dans le +fichier {\bf config.out} et peut \^etre affich\'ee \`a volont\'e sans +relancer ./configure par la commande {\bf cat config.out}. + +\item Vous pouvez relancer ./configure avec des options diff\'erentes apr\`es + une premi\`ere ex\'ecution, cela ne pose aucun probl\`eme, mais vous devriez + d'abord ex\'ecuter: + +\footnotesize +\begin{verbatim} + make distclean +\end{verbatim} +\normalsize + +afin d'\^etre certain de repartir de z\'ero et d'\'eviter d'avoir un m\'elange +avec vos premi\`eres options. C'est n\'ecessaire parce que ./configure met +en cache une bonne partie des informations. {\bf make distclean} est aussi +recommand\'e si vous d\'eplacez vos fichiers source d'une machine \`a une +autre. Si {\bf make distclean} \'echoue, ignorez-le et continuez. + +\item make + + Si vous obtenez des erreurs durant le {\it linking} dans le r\'epertoire du +Storage Daemon (/etc/stored), c'est probablement parce que vous avez charg\'e +la librairie statique sur votre syst\`eme. J'ai remarqu\'e ce probl\`eme sur +un Solaris. Pour le corriger, assurez-vous de ne pas avoir ajout\'e l'option +{\bf \verb{--{enable-static-tools} \`a la commande {\bf ./configure}. + +Si vous ignorez cette \'etape ({\bf make}) et poursuivez imm\'ediatement avec +{\bf make install}, vous commettez deux erreurs s\'erieuses : d'abord, votre +installation va \'echouer car Bacula a besoin d'un {\bf make} avant un +{\bf make install} ; ensuite, vous vous privez de la possibilit\'e de vous +assurer qu'il n'y a aucune erreur avant de commencer \`a \'ecrire les fichiers dans +vos r\'epertoires syst\`eme. + +\item make install +Avant de lancer cette commande, v\'erifiez consciencieusement que vous avez bien +ex\'ecut\'e la commande {\bf make} et que tout a \'et\'e compil\'e proprement et li\'e +sans erreur. + +\item Si vous \^etes un nouvel utilisateur de Bacula, nous vous recommandons + {\bf fortement} de sauter l'\'etape suivante et d'utiliser le fichier de + configuration par d\'efaut, puis d'ex\'ecuter le jeu d'exemples du prochain +chapitre avant de revenir modifier vos fichier de configuration pour qu'ils +satisfassent vos besoins. + +\item Modifiez les fichiers de configuration de chacun des trois {\it daemons} + (Directory, File, Storage) et celui de la Console. Pour plus de d\'etails, + consultez le chapitre +\ilink{Fichiers de Configuration de Bacula}{_ChapterStart16} Nous +vous recommandons de commencer par modifier les fichiers de configuration +fournis par d\'efaut, en faisant les changements minima indispensables. Vous +pourrez proc\'eder \`a une adaptation compl\`ete une fois que Bacula +fonctionnera correctement. Veuillez prendre garde \`a modifier les mots de +passe qui sont g\'en\'er\'es al\'eatoirement, ainsi que les noms car ils +doivent s'accorder entre les fichiers de configuration pour des raisons de +s\'ecurit\'e. + +\item Cr\'eez la base de donn\'ees Bacula MySQL et ses tables (si vous + utilisez MySQL) + \ilink{Installer et configurer MySQL Phase II}{mysql_phase2} ou +cr\'eez la base de donn\'ees Bacula PostgreSQL et ses tables +\ilink{Installer et configurer PostgreSQL Phase +II}{PostgreSQL_phase2} (si vous utilisez PostgreSQL) ou +encore +\ilink{Installer et configurer SQLite Phase II}{phase2} (si vous +utilisez SQLite) + +\item D\'emarrez Bacula ({\bf ./bacula start}) Notez: Le prochain chapitre + expose ces \'etapes en d\'etail. + +\item Lancez la Console pour communiquer avec Bacula. + +\item Pour les deux \'el\'ements pr\'ec\'edents, veuillez suivre les + instructions du chapitre + \ilink{Ex\'ecuter Bacula}{_ChapterStart1} o\`u vous ferez une +simple sauvegarde et une restauration. Faites ceci avant de faire de lourdes +modifications aux fichiers de configuration, ainsi vous serez certain que +Bacula fonctionne, et il vous sera plus familier. Apr\`es quoi il vous sera +plus facile de changer les fichiers de configuration. +\item Si apr\`es l'installation de Bacula, vous d\'ecidez de le d\'eplacer, + c'est \`a dire de l'installer dans un jeu de r\'epertoires diff\'erents, + proc\'edez comme suit : + +\footnotesize +\begin{verbatim} + make uninstall + make distclean + ./configure (vos-nouvelles-options) + make + make install + +\end{verbatim} +\normalsize + +\end{enumerate} + +Si tout se passe bien, {\bf ./configure} d\'eterminera correctement votre +syst\`eme et configurera correctement le code source. Actuellement, FreeBSD, +Linux (RedHat), et Solaris sont support\'es. Des utilisateurs rapportent que +le client Bacula fonctionne sur MacOS X 10.3 tant que le support readline est +d\'esactiv\'e. + +Si vous installez Bacula sur plusieurs syst\`emes identiques, vous pouvez +simplement transf\'erer le r\'epertoire des sources vers ces autres syst\`emes +et faire un "make install''. Cependant s'il y a des diff\'erences dans les +librairies, ou les versions de syst\`emes, ou si vous voulez installer sur un +syst\`eme diff\'erent, vous devriez recommencer \`a partir de l'archive tar +compress\'ee originale. Si vous transf\'erez un r\'epertoire de sources o\`u +vous avez d\'ej\`a ex\'ecut\'e la commande ./configure, vous DEVEZ faire: + +\footnotesize +\begin{verbatim} +make distclean +\end{verbatim} +\normalsize + +avant d'ex\'ecuter \`a nouveau ./configure. Ceci est rendu n\'ecessaire par +l'outil GNU autoconf qui met la configuration en cache, de sorte que si vous +r\'eutilisez la configuration d'une machine Linux sur un Solaris, vous pouvez +\^etre certain que votre compilation \'echouera. Pour l'\'eviter, comme +mentionn\'e plus haut, recommencez depuis l'archive tar, ou faites un "make +distclean''. + +En g\'en\'eral, vous voudrez probablement sophistiquer votre {\bf configure} +pour vous assurer que tous les modules que vous souhaitez soient construits et +que tout soit plac\'e dans les bons r\'epertoires. + +Par exemple, sur Fedora, RedHat ou SuSE, on pourrait utiliser ceci: + +\footnotesize +\begin{verbatim} +CFLAGS="-g -Wall" \ + ./configure \ + --sbindir=$HOME/bacula/bin \ + --sysconfdir=$HOME/bacula/bin \ + --with-pid-dir=$HOME/bacula/bin/working \ + --with-subsys-dir=$HOME/bacula/bin/working \ + --with-mysql \ + --with-working-dir=$HOME/bacula/bin/working \ + --with-dump-email=$USER +\end{verbatim} +\normalsize + +Notez: l'avantage de cette configuration pour commencer, est que tout sera mis +dans un seul r\'epertoire, que vous pourrez ensuite supprimer une fois que +vous aurez ex\'ecut\'e les exemples du prochain chapitre, et appris comment +fonctionne Bacula. De plus, ceci peut \^etre install\'e et ex\'ecut\'e sans +\^etre root. + +Pour le confort des d\'eveloppeurs, j'ai ajout\'e un script {\bf +defaultconfig} au r\'epertoire {\bf examples}. Il contient les r\'eglages que +vous devriez normalement utiliser, et chaque d\'eveloppeur/utilisateur devrait +le modifier pour l'accorder \`a ses besoins. Vous trouverez d'autres exemples +dans ce r\'epertoire. + +Les options {\bf \verb{--{enable-conio} ou {\bf \verb{--{enable-readline} sont utiles car +elles conf\`erent un historique de lignes de commandes et des capacit\'es +d'\'edition \`a la Console. Si vous avez inclus l'une ou l'autre option, l'un +des deux paquets {\bf termcap} ou {\bf ncurses} sera n\'ecessaire pour +compiler. Sur la plupart des syst\`emes, y compris RedHat et SuSE, vous +devriez inclure le paquet ncurses. Si Le processus de configuration de +Bacula le d\'etecte, il l'utilisera plut\^ot que la librairie termcap. +Sur certains syst\`emes, tels que SUSE, la librairie termcap n'est +pas dans le r\'epertoire standard des librairies par cons\'equent, l'option +devrait \^etre d\'esactiv\'ee ou vous aurez un message tel que: + +\footnotesize +\begin{verbatim} +/usr/lib/gcc-lib/i586-suse-linux/3.3.1/.../ld: +cannot find -ltermcap +collect2: ld returned 1 exit status +\end{verbatim} +\normalsize + +lors de la compilation de la Console Bacula. Dans ce cas, il vous faudra +placer la variable d'environnement {\bf LDFLAGS} avant de compiler. + +\footnotesize +\begin{verbatim} +export LDFLAGS="-L/usr/lib/termcap" +\end{verbatim} +\normalsize + +Les m\^emes contraintes de librairies s'appliquent si vous souhaitez utiliser +les sous-programmes readlines pour l'\'edition des lignes de commande et +l'historique, ou si vous utilisez une librairie MySQL qui requiert le +chiffrement. Dans ce dernier cas, vous pouvez exporter les librairies +additionnelles comme indiqu\'e ci-dessus ou, alternativement, les inclure +directement en param\`etres de la commande ./configure comme ci-dessous : + + \footnotesize + \begin{verbatim} + LDFLAGS="-lssl -lcyrpto" \ + ./configure + \end{verbatim} +\normalsize + + +Veuillez noter que sur certains syst\`emes tels que Mandriva, readline tend +\`a "avaler'' l'invite de commandes, ce qui le rend totalement inutile. Si +cela vous arrive, utilisez l'option "disable'', ou si vous utilisez une +version post\'erieure \`a 1.33 essayez {\bf \verb{--{enable-conio} pour utiliser une +alternative \`a readline int\'egr\'ee. Il vous faudra tout de m\^eme termcap +ou ncurses, mais il est peu probable que le paquetage {\bf conio} gobe vos +invites de commandes. + +Readline n'est plus support\'e depuis la version 1.34. Le code reste +disponible, et si des utilisateurs soumettent des patches, je serai heureux de +les appliquer. Cependant, \'etant donn\'e que chaque version de readline +semble incompatible avec les pr\'ec\'edentes, et qu'il y a des diff\'erences +significatives entre les syst\`emes, je ne puis plus me permettre de le +supporter. + +\section{Quelle base de donn\'ees utiliser ?} +\label{DB} +\index[general]{Utiliser!Quelle base de donn\'ees } +\index[general]{Quelle base de donn\'ees utiliser ? } +\addcontentsline{toc}{section}{Quelle base de donn\'ees utiliser ?} + +Avant de construire Bacula, vous devez d\'ecider si vous voulez utiliser +SQLite, MySQL ou PostgreSQL. Si vous n'avez pas d\'ej\`a MySQL ou PostgreSQL +sur votre machine, nous vous recommandons de d\'emarrer avec SQLite. Ceci vous +facilitera beaucoup l'installation car SQLite est compil\'e dans Bacula et ne +requiert aucune administration. SQLite fonctionne bien et sied bien aux +petites et moyennes configurations (maximum 10-20 machines). Cependant, il nous +faut signaler que plusieurs utilisateurs ont subi des corruptions inexpliqu\'ees +de leur catalogue SQLite. C'est pourquoi nous recommandons de choisir MySQL +ou PostgreSQL pour une utilisation en production. + +Si vous souhaitez utiliser MySQL pour votre catalogue Bacula, consultez le +chapitre +\ilink{Installer et Configurer MySQL}{_ChapterStart} de ce manuel. +Vous devrez installer MySQL avant de poursuivre avec la configuration de +Bacula. MySQL est une base de donn\'ees de haute qualit\'e tr\`es efficace et +qui convient pour des configurations de toutes tailles. MySQL est +l\'eg\`erement plus complexe \`a installer et administrer que SQLite en raison +de ses nombreuses fonctions sophistiqu\'ees telles que userids et mots de +passe. MySQL fonctionne en tant que processus distinct, est r\'eellement une +solution professionnelle et peut prendre en charge des bases de donn\'ees de +dimension quelconque. + +Si vous souhaitez utiliser PostgreSQL pour votre catalogue Bacula, consultez +le chapitre +\ilink{Installer et Configurer PostgreSQL}{_ChapterStart10} de ce +manuel. Vous devrez installer PostgreSQL avant de poursuivre avec la +configuration de Bacula. PostgreSQL est tr\`es similaire \`a MySQL bien que +tendant \`a \^etre un peu plus conforme \`a SQL92. PostgreSQL poss\`ede +beaucoup plus de fonctions avanc\'ees telles que les transactions, les +proc\'edures stock\'ees, etc. PostgreSQL requiert une certaine connaissance +pour son installation et sa maintenance. + +Si vous souhaitez utiliser SQLite pour votre catalogue Bacula, consultez le +chapitre +\ilink{Installer et Configurer SQLite}{_ChapterStart33} de ce manuel. + +\section{D\'emarrage rapide} +\index[general]{D\'emarrage rapide } +\index[general]{Rapide!D\'emarrage } +\addcontentsline{toc}{section}{D\'emarrage rapide} + +Il y a de nombreuses options et d'importantes consid\'erations donn\'ees +ci-dessous que vous pouvez passer pour le moment si vous n'avez eu aucun +probl\`eme lors de la compilation de Bacula avec une configuration +simplifi\'ee comme celles montr\'ees plus haut. + +Si le processus ./configure ne parvient pas \`a trouver les librairies +sp\'ecifiques (par exemple libintl), assurez vous que le paquetage appropri\'e +est install\'e sur votre syst\`eme. S'il est install\'e dans un r\'epertoire non +standard (au moins pour Bacula), il existe dans la plupart des cas une +option parmi celles \'enum\'er\'ees ci-dessous (ou avec "./configure {-}{-}help") +qui vous permettra de sp\'ecifier un r\'epertoire de recherche. D'autres options +vous permettent de d\'esactiver certaines fonctionnalit\'es (par exemple +{-}{-}disable-nls). + +Si vous souhaitez vous jeter \`a l'eau, nous vous conseillons de passer +directement au chapitre suivant, et d'ex\'ecuter le jeu d'exemples. Il vous +apprendra beaucoup sur Bacula, et un Bacula de test peut \^etre install\'e +dans un unique r\'epertoire (pour une destruction ais\'ee) et ex\'ecut\'e sans +\^etre root. Revenez lire les d\'etails de ce chapitre si vous avez un +quelconque probl\`eme avec les exemples, ou lorsque vous voudrez effectuer une +installation r\'eelle. + +TAQUET MISE A JOUR + +\section{Options de la commande {\bf configure}} +\label{Options} +\index[general]{Options de la commande configure } +\index[general]{Configure!Options de la commande } +\addcontentsline{toc}{section}{Options de la commande configure} + +Les options en ligne de commande suivantes sont disponibles pour {\bf +configure} afin d'adapter votre installation \`a vos besoins. + +\begin{description} + +\item [{-}{-}sysbindir=\lt{}binary-path\gt{}] + \index[dir]{{-}{-}sysbindir } + D\'efinit l'emplacement des binaires Bacula. + +\item [{-}{-}sysconfdir=\lt{}config-path\gt{}] + \index[dir]{{-}{-}sysconfdir } + D\'efinit l'emplacement des fichiers de configuration de Bacula. + +\item [ {-}{-}mandir=\lt{}path\gt{}] + \index[general]{{-}{-}mandir} + Notez qu'\`a partir de la version 1.39.14, tout chemin sp\'ecifi\'e + est d\'esormais compris comme le niveau le plus \'elev\'e du + r\'epertoire man. Pr\'ec\'edemment, le {\bf mandir} sp\'ecifiait le + chemin absolu o\`u vous souhaitiez instaler les pages de manuel. + Les fichiers man sont install\'es au format gzipp\'e sous + mandir/man1 et mandir/man8 comme il convient. + Pour que l'installation se d\'eroule normalement, vous devez + disposer de {\bf gzip} sur votre syst\`eme + + Par d\'efaut, Bacula installe une simple page de manuel dans + /usr/share/man. Si vous voulez qu'elle soit install\'ee ailleurs, + utilisez cette options pour sp\'ecifier le chemin voulu. Notez + que les principaux documents Bacula en HTML et PDF sont dans une + archive tar distincte des sources de distribution de Bacula. + +\item [ {-}{-}datadir=\lt{}path\gt{}] + \index[general]{{-}{-}datadir} + Si vous traduisez Bacula ou des parties de Bacula dans une autre + langue, vous pouvez sp\'ecifier l'emplacement des fichiers .po avec + l'option {\bf {-}{-}datadir}. Vous devez installer manuellement tout + fichier .po qui n'est pas (encore) install\'e automatiquement. + +\item [{-}{-}enable-smartalloc ] + \index[dir]{{-}{-}enable-smartalloc } + Permet l'inclusion du code Smartalloc de d\'etection de tampons orphelins +(NDT : orphaned buffer). Cette option est vivement recommand\'ee. Nous n'avons +jamais compil\'e sans elle, aussi vous pourriez subir des d\'esagr\'ements si +vous ne l'activez pas. Dans ce cas, r\'eactivez simplement cette option. Nous +la recommandons car elle aide \`a d\'etecter les fuites de m\'emoire. Ce +param\`etre est utilis\'e lors de la compilation de Bacula. + +\item [{-}{-}enable-gnome ] + \index[dir]{{-}{-}enable-gnome } + Si vous avez install\'e GNOME sur votre ordinateur, vous devez sp\'ecifier +cette option pour utiliser la Console graphique GNOME. Vous trouverez les +binaires dans le r\'epertoire {\bf src/gnome-console}. + +\item [{-}{-}enable-bwx-console ] + \index[general]{{-}{-}enable-bwx-console } + Si vous avez install\'e wxWidgets sur votre ordinateur, vous devez +sp\'ecifier cette option pour utiliser la Console graphique bwx-console. Vous +trouverez les binaires dans le r\'epertoire {\bf src/wx-console}. Ceci peut +\^etre utile aux utilisateurs qui veulent une Console graphique, mais ne +souhaitent pas installer Gnome, car wxWidgets peut fonctionner avec les +librairies GTK+, Motif ou m\^eme X11. + +\item [{-}{-}enable-tray-monitor ] + \index[general]{{-}{-}enable-tray-monitor } + Si vous avez install\'e GTK sur votre ordinateur et utilisez un gestionnaire +de fen\^etre compatible avec le syst\`eme de notification standard FreeDesktop +(tels KDE et GNOME), vous pouvez utiliser une interface graphique pour +surveiller les {\it daemons} Bacula en activant cette option. Les binaires +seront plac\'es dans le r\'epertoire {\bf src/tray-monitor}. + +\item [{-}{-}enable-static-tools] + \index[general]{{-}{-}enable-static-tools } + Avec cette option, les utilitaires relatifs au Storage Daemon ({\bf bls}, +{\bf bextract}, et {\bf bscan}) seront li\'es statiquement, ce qui vous permet +de les utiliser m\^eme si les librairies partag\'ees ne sont pas charg\'ees. +Si vous avez des difficult\'es de type "linking'' \`a la compilation du +r\'epertoire {\bf src/stored}, assurez-vous d'avoir d\'esactiv\'e cette +option, en ajoutant \'eventuellement {\bf \verb{--{disable-static-tools}. + +\item [{-}{-}enable-static-fd] + \index[fd]{{-}{-}enable-static-fd } + Avec cette option, la compilation produira un {\bf static-bacula-fd} en plus +du File Daemon standard. Cette version qui inclut les librairies statiquement +li\'ees est requise pour la reconstruction compl\`ete d'une machine apr\`es +un d\'esastre. Cette option est largement surpass\'ee par l'usage de {\bf +make static-bacula-fd} du r\'epertoire {\bf src/filed}. L'option {\bf +\verb:--:enable-client-only} d\'ecrite plus loin est aussi int\'eressante +pour compiler un simple client sans les autres parties du programme. + +Pour lier un binaire statique, l'\'editeur de liens a besoin des versions +statiques de toutes les librairies utilis\'ees, aussi les utilisateurs +rencontrent fr\'equemment des erreurs d'\'edition de liens \`a l'utilisation +de cette option. La premi\`ere chose \`a faire est de s'assurer d'avoir la +librairie glibc statiquement li\'ee sur votre syst\`eme. Ensuite, il faut +s'assurer de ne pas utiliser les options {\bf {-}{-}openssl} ou +{\bf {-}{-}with-python} de la commande configure, car elle requierent des +librairies suppl\'ementaires. Vous devriez pouvoir activer ces options, mais +il vous faudra charger les librairies statiques additionnelles correspondantes. + +\item [{-}{-}enable-static-sd] + \index[sd]{{-}{-}enable-static-sd } + Avec cette option, la compilation produira un {\bf static-bacula-sd} en plus +du Storage Daemon standard. Cette version qui inclut les librairies +statiquement li\'ees peut se r\'ev\'eler utile pour la reconstruction +compl\`ete d'une machine apr\`es un d\'esastre. + +Pour lier un binaire statique, l'\'editeur de liens a besoin des versions +statiques de toutes les librairies utilis\'ees, aussi les utilisateurs +rencontrent fr\'equemment des erreurs d'\'edition de liens \`a l'utilisation +de cette option. La premi\`ere chose \`a faire est de s'assurer d'avoir la +librairie glibc statiquement li\'ee sur votre syst\`eme. Ensuite, il faut +s'assurer de ne pas utiliser les options {\bf {-}{-}openssl} ou +{\bf {-}{-}with-python} de la commande configure, car elle requierent des +librairies suppl\'ementaires. Vous devriez pouvoir activer ces options, mais +il vous faudra charger les librairies statiques additionnelles correspondantes. + +\item [{-}{-}enable-static-dir] + \index[dir]{{-}{-}enable-static-dir } + Avec cette option, la compilation produira un {\bf static-bacula-dir} en plus +du Director Daemon standard. Cette version qui inclut les librairies +statiquement li\'ees peut se r\'ev\'eler utile pour la reconstruction +compl\`ete d'une machine apr\`es un d\'esastre. + +Pour lier un binaire statique, l'\'editeur de liens a besoin des versions +statiques de toutes les librairies utilis\'ees, aussi les utilisateurs +rencontrent fr\'equemment des erreurs d'\'edition de liens \`a l'utilisation +de cette option. La premi\`ere chose \`a faire est de s'assurer d'avoir la +librairie glibc statiquement li\'ee sur votre syst\`eme. Ensuite, il faut +s'assurer de ne pas utiliser les options {\bf {-}{-}openssl} ou +{\bf {-}{-}with-python} de la commande configure, car elle requierent des +librairies suppl\'ementaires. Vous devriez pouvoir activer ces options, mais +il vous faudra charger les librairies statiques additionnelles correspondantes. + +\item [{-}{-}enable-static-cons] + \index[dir]{{-}{-}enable-static-cons } + Avec cette option, la compilation produira une {\bf static-console} et une +{\bf static-gnome-console} en plus de la Console standard standard. Cette +version qui inclut les librairies statiquement li\'ees peut se r\'ev\'eler +utile pour la reconstruction compl\`ete d'une machine apr\`es un d\'esastre. + +Pour lier un binaire statique, l'\'editeur de liens a besoin des versions +statiques de toutes les librairies utilis\'ees, aussi les utilisateurs +rencontrent fr\'equemment des erreurs d'\'edition de liens \`a l'utilisation +de cette option. La premi\`ere chose \`a faire est de s'assurer d'avoir la +librairie glibc statiquement li\'ee sur votre syst\`eme. Ensuite, il faut +s'assurer de ne pas utiliser les options {\bf {-}{-}openssl} ou +{\bf {-}{-}with-python} de la commande configure, car elle requierent des +librairies suppl\'ementaires. Vous devriez pouvoir activer ces options, mais +il vous faudra charger les librairies statiques additionnelles correspondantes. + +\item [{-}{-}enable-client-only] + \index[general]{{-}{-}enable-client-only } + Avec cette option, la compilation produira seulement le File Daemon et les +librairies qui lui sont n\'ecessaires. Aucun des autres {\it daemons}, outils +de stockage, ni la console ne sera compil\'e. De m\^eme, un {\bf make +install} installera seulement le File Daemon. Pour obtenir tous les {\it +daemons}, vous devez la d\'esactiver. Cette option facilite grandement la +compilation sur les simples clients. + +Pour lier un binaire statique, l'\'editeur de liens a besoin des versions +statiques de toutes les librairies utilis\'ees, aussi les utilisateurs +rencontrent fr\'equemment des erreurs d'\'edition de liens \`a l'utilisation +de cette option. La premi\`ere chose \`a faire est de s'assurer d'avoir la +librairie glibc statiquement li\'ee sur votre syst\`eme. Ensuite, il faut +s'assurer de ne pas utiliser les options {\bf {-}{-}openssl} ou +{\bf {-}{-}with-python} de la commande configure, car elle requierent des +librairies suppl\'ementaires. Vous devriez pouvoir activer ces options, mais +il vous faudra charger les librairies statiques additionnelles correspondantes. + +\item [ {-}{-}enable-build-dird] + \index[general]{{-}{-}enable-build-dird} +Avec cette option activ\'ee (ce qui est le cas par d\'efaut), le processus make +compile le Director ainsi que les outils du Director. Vous pouvez d\'esactiver +la compilation du Director en utilisant {\bf {-}{-}disable-build-dird}. + +\item [ {-}{-}enable-build-stored] + \index[general]{{-}{-}enable-build-stored} +Avec cette option activ\'ee (ce qui est le cas par d\'efaut), le processus make +compile le Storage Daemon. Vous pouvez d\'esactiver +la compilation du Storage Daemon en utilisant {\bf {-}{-}disable-build-stored}. + +\item [{-}{-}enable-largefile] + \index[general]{{-}{-}enable-largefile } + Cette option (activ\'ee par d\'efaut) provoque la compilation de Bacula avec +le support d'adressage de fichiers 64 bits s'il est disponible sur votre +syst\`eme. Ainsi Bacula peut lire et \'ecrire des fichiers de plus de 2 +GBytes. Vous pouvez d\'esactiver cette option et revenir \`a un adressage de +fichiers 32 bits en utilisant {\bf \verb{--{disable-largefile}. + +\item [ {-}{-}disable-nls] + \index[general]{{-}{-}disable-nls} + Bacula utilise par d\'efaut les librairies {\it GNU Native Language Support} (NLS). + Sur certaines machines, ces librairies peuvent \^etre inexistante, ou ne pas + fonctionner correctement (particuli\`erement sur les impl\'ementations non Linux). + dans ce genre de situations, vous pouvez neutraliser l'utilisation de ces librairies + avec l'option {\bf {-}{-}disable-nls}. Dans ce cas, Bacula reviendra \`a l'usage de l'anglais. + +\item [{-}{-}with-sqlite=\lt{}sqlite-path\gt{}] + \index[general]{{-}{-}with-sqlite } + Cette option permet l'utilisation de la base de donn\'ees SQLite versions 2.8.x. Il n'est, +en principe, pas n\'ecessaire de sp\'ecifier le chemin {\bf sqlite-path} car +Bacula recherche les composants requis dans les r\'epertoires standards ({\bf +depkgs/sqlite}). voyez +\ilink{Installer et Configurer SQLite}{_ChapterStart33} pour plus de +d\'etails. + +Voyez aussi la note ci-dessous, apr\`es le paragraphe --with-postgreSQL + +\item [{-}{-}with-sqlite3=\lt{}sqlite3-path\gt{}] + \index[general]{{-}{-}with-sqlite3 } + Cette option permet l'utilisation de la base de donn\'ees SQLite versions 3.x. Il n'est, +en principe, pas n\'ecessaire de sp\'ecifier le chemin {\bf sqlite3-path} car +Bacula recherche les composants requis dans les r\'epertoires standards ({\bf +depkgs/sqlite3}). voyez +\ilink{Installer et Configurer SQLite}{_ChapterStart33} pour plus de +d\'etails. + +Voyez aussi la note ci-dessous, apr\`es le paragraphe --with-postgreSQL + +\item [{-}{-}with-mysql=\lt{}mysql-path\gt{}] + \index[general]{{-}{-}with-mysql } + Cette option permet la compilation des services de Catalogue de Bacula. Elle +implique que MySQL tourne d\'ej\`a sur votre syst\`eme, et qu'il soit +install\'e dans le chemin {\bf mysql-path} que vous avez sp\'ecifi\'e. Si +cette option est absente, Bacula sera compil\'e automatiquement avec le code +de la base Bacula interne. Nous recommandons d'utiliser cette option si +possible. Si vous souhaitez utilisez cette option, veuillez proc\'eder \`a +l'installation de MySQL ( +\ilink{Installer and Configurer MySQL}{_ChapterStart}) avant de +proc\'eder \`a la configuration. + +Voyez aussi la note ci-dessous, apr\`es le paragraphe --with-postgreSQL + +\item [{-}{-}with-postgresql=\lt{}postgresql-path\gt{}] + \index[general]{{-}{-}with-postgresql } + Cette option d\'eclare un chemin explicite pour les librairies PostgreSQL si +Bacula ne les trouve pas dans le r\'epertoire par d\'efaut. + +Notez que pour que Bacula soit configur\'e correctement, vous devez sp\'ecifier l'une des +quatre options de bases de donn\'ees support\'ees : {-}{-}with-sqlite, {-}{-}with-sqlite3, +{-}{-}with-mysql, ou {-}{-}with-postgresql, faute de quoi ./configure \'echouera. + +\item [ {-}{-}with-openssl=\lt{}path\gt{}] + Cette option est requise si vous souhaitez activer TLS (ssl) qui chiffre les + communications entre les daemons Bacula ou si vous voulez utiliser le chiffrement + PKI des données du File Daemon.Normalement, la sp\'ecification du chemin {\bf path} + n'est pas n\'ecessaire car le processus de + configuration recherche les librairies OpenSSL dans les emplacements standard du + syst\`eme. L'activation d'OpenSSL dans Bacula permet des communications s\'ecuris\'ees + entre les {\it daemons}. Pour plus d'informations sur l'usage de TLS, consultez le + chapitre \ilink{Bacula TLS}{_ChapterStart61} de ce manuel. Pour plus d'informations + sur l'usage du chiffrement des données PKI, veuillez consulter le chapitre + \ilink{Bacula PKI -- Data Encryption}{Chiffrement des données} de ce manuel. + +\item [ {-}{-}with-python=\lt{}path\gt{}] + \index[general]{{-}{-}with-python } + Cette option active le support Python dans Bacula. Si le chemin n'est pas + sp\'ecifi\'e, le processus de configuration recherchera les librairies Python + dans leurs emplacements standard. S'il ne peut trouver les librairies , il vous faudra + fournir le chemin vers votre r\'epertoire de librairies Python. Voyez le + \ilink{chapitre Python}{_ChapterStart60} pour plus de d\'etails sur l'utilisation de + scripts Python. + +\item [ {-}{-}with-libintl-prefix=\lt{}DIR\gt{}] + \index[general]{{-}{-}with-libintl-prefix} + Cette option peut \^etre utilis\'ee pour indiquer \`a Bacula de rechercher dans DIR/include + et DIR/lib les fichiers d'en t\^ete libintl et les librairies requises pour + Native Language Support (NLS). + +\item [{-}{-}enable-conio] + \index[general]{{-}{-}enable-conio } + Cette option permet la compilation d'une petite et l\'eg\`ere routine en +alternative \`a readline, beaucoup plus facile \`a configurer, m\^eme si elle +n\'ecessite aussi les librairies termcap ou ncurses. + +\item [{-}{-}with-readline=\lt{}readline-path\gt{}] + \index[general]{{-}{-}with-readline } + Sp\'ecifie l'emplacement de {\bf readline}. En principe, Bacula devrait le +trouver s'il est dans une librairie standard. Sinon, et si l'option +\verb{--{with-readline n'est pas renseign\'ee, readline sera d\'esactiv\'e. Cette +option affecte la compilation de Bacula. Readline fournit le programme +Console avec un historique des lignes de commandes et des capacit\'es +d'\'edition. Readline n'est d\'esormais plus support\'e, ce qui signifie que +vous l'utilisez \`a vos risques et p\'erils + +\item [{-}{-}enable-readline] + \index[general]{{-}{-}enable-readline } + Active le support readline. D\'esactiv\'e par d\'efaut en raison de nombreux +probl\`emes de configuration, et parce que le paquetage semble devenir +incompatible. + +\item [{-}{-}with-tcp-wrappers=\lt{}path\gt{}] + \index[general]{{-}{-}with-tcp-wrappers} + \index[general]{TCP Wrappers} + \index[general]{Wrappers!TCP} + \index[general]{libwrappers} + Cette option pr\'ecise que vous voulez TCP wrappers (man hosts\_access(5)) +compil\'e dans Bacula. Le chemin est facultatif puisque Bacula devrait, en +principe, trouver les librairies dans les r\'epertoires standards. Cette +option affecte la compilation. Lorsque vous sp\'ecifierez vos restrictions +dans les fichiers {\bf /etc/hosts.allow} ou {\bf /etc/hosts.deny}, n'utilisez +pas l'option {\bf twist} (man hosts\_options(5)) ou le processus Bacula sera +stopp\'e. + +Pour plus d'informations sur la configuration et les tests de TCP wrappers, +consultez la section +\ilink{Configurer et Tester TCP Wrappers}{wrappers} du chapitre +sur la s\'ecurit\'e. + +Sur SuSE, les librairies libwrappers requises pour lier Bacula appartiennent +au paquet tcpd-devel. Sur RedHat, le paquet se nomme tcp\_wrappers. + +\item [{-}{-}with-working-dir=\lt{}working-directory-path\gt{}] + \index[dir]{{-}{-}with-working-dir } + Cette option est obligatoire et sp\'ecifie un r\'epertoire dans lequel Bacula +peut placer en toute s\'ecurit\'e les fichiers qui resteront d'une +ex\'ecution \`a l'autre. Par exemple, si la base de donn\'ees interne est +utilis\'ee, Bacula stockera ces fichiers dans ce r\'epertoire. Cette option +n'est utilis\'ee que pour modifier les fichiers de configuration de Bacula. +Vous pourrez \'eventuellement effectuer cette modification directement en les +\'editant plus tard. Le r\'epertoire sp\'ecifi\'e ici n'est pas +automatiquement cr\'e\'e par le processus d'installation, aussi vous devez +veiller \`a ce qu'il existe avant votre premi\`ere utilisation de Bacula. + +\item [{-}{-}with-base-port=\lt{}port=number\gt{}] + \index[dir]{{-}{-}with-base-port } + Bacula a besoin de trois ports TCP/IP pour fonctionner (un pour la Console, +un pour le Storage Daemon et un pour le File Daemon). L'option {\bf +\verb{--{with-baseport} permet d'assigner automatiquement trois ports cons\'ecutifs +\`a partir du port de base sp\'ecifi\'e. Vous pouvez aussi changer les +num\'eros de ports dans les fichiers de configuration. Cependant, vous devez +prendre garde \`a ce que les num\'eros de ports se correspondent fid\`element +dans chacun des trois fichiers de configuration. Le port de base par d\'efaut +est 9101, ce qui assigne les ports 9101 \`a 9103. Ces ports (9101, 9102 et +9103) ont \'et\'e officiellement assign\'e \`a Bacula par l'IANA. Cette +option n'est utilis\'ee que pour modifier les fichiers de configuration de +Bacula. Vous pouvez \`a tout moment faire cette modification en \'editant +directement ces fichiers. + +\item [{-}{-}with-dump-email=\lt{}email-address\gt{}] + \index[dir]{{-}{-}with-dump-email } + Cette option sp\'ecifie l'adresse e-mail qui recevra tous les {\it core dump}. + Cette option n'est en principe utilis\'ee que par les d\'eveloppeurs. + +\item [{-}{-}with-pid-dir=\lt{}PATH\gt{} ] + \index[dir]{{-}{-}with-pid-dir } + Ceci pr\'ecise le r\'epertoire de stockage du fichier d'id de processus lors +de l'ex\'ecution. La valeur par d\'efaut est : {\bf /var/run}. Le r\'epertoire +sp\'ecifi\'e ici n'est pas automatiquement cr\'e\'e par le processus +d'installation, aussi vous devez veiller \`a ce qu'il existe avant votre +premi\`ere utilisation de Bacula. + +\item [{-}{-}with-subsys-dir=\lt{}PATH\gt{} ] + \index[dir]{{-}{-}with-subsys-dir } + Cette option pr\'ecise le r\'epertoire de stockage des fichiers verrous du +sous-syst\`eme lors de l'ex\'ecution. Le r\'epertoire par d\'efaut est {\bf +/var/run/subsys}. Veillez \`a ne pas sp\'ecifier le m\^eme r\'epertoire que +pour l'option {\bf sbindir}. Ce r\'epertoire n'est utilis\'e que par les +scripts de d\'emarrage automatique. Le r\'epertoire sp\'ecifi\'e ici n'est +pas automatiquement cr\'e\'e par le processus d'installation, aussi vous devez +veiller \`a ce qu'il existe avant votre premi\`ere utilisation de Bacula. + +\item [{-}{-}with-dir-password=\lt{}Password\gt{} ] + \index[dir]{{-}{-}with-dir-password } + Cette option vous permet de pr\'eciser le mot de passe d'acc\`es au Director +(contact\'e, en principe, depuis la console). S'il n'est pas pr\'ecis\'e, +configure en cr\'e\'e un al\'eatoirement. + +\item [{-}{-}with-fd-password=\lt{}Password\gt{} ] + \index[fd]{{-}{-}with-fd-password } + Cette option vous permet de pr\'eciser le mot de passe d'acc\`es au File +Daemon (contact\'e, en principe, depuis le Director). S'il n'est pas +pr\'ecis\'e, configure en cr\'e\'e un al\'eatoirement. + +\item [{-}{-}with-sd-password=\lt{}Password\gt{} ] + \index[sd]{{-}{-}with-sd-password } + Cette option vous permet de pr\'eciser le mot de passe d'acc\`es au Storage +Daemon (contact\'e, en principe, depuis le File Daemon). S'il n'est pas +pr\'ecis\'e, configure en cr\'e\'e un al\'eatoirement. + +\item [{-}{-}with-dir-user=\lt{}User\gt{} ] + \index[dir]{{-}{-}with-dir-user } + Cette option vous permet de sp\'ecifier l'UserId utilis\'e pour l'ex\'ecution +du Director. Le Director doit \^etre d\'emarr\'e en tant que root, mais n'a +pas besoin d'\^etre ex\'ecut\'e en tant que root. Apr\`es avoir effectu\'e les +op\'erations d'initialisation pr\'eliminaires, il peut redescendre au niveau +de l'UserId sp\'ecifi\'e dans cette option. Si vous utilisez cette option, vous +devez cr\'eer l'utilisateur User avant d'ex\'ecuter {\bf make install}, car le +r\'epertoire de travail de Bacula appartiendra \`a cet utilisateur. + +\item [{-}{-}with-dir-group=\lt{}Group\gt{} ] + \index[dir]{{-}{-}with-dir-group } + Cette option vous permet de sp\'ecifier le GroupId utilis\'e pour +l'ex\'ecution du Director. Le Director doit \^etre d\'emarr\'e en tant que +root, mais n'a pas besoin d'\^etre ex\'ecut\'e en tant que root. Apr\`es avoir +effectu\'e les op\'erations d'initialisation pr\'eliminaires, il peut +redescendre au niveau du GroupId sp\'ecifi\'e dans cette option. +Si vous utilisez cette option, vous +devez cr\'eer le groupe Group avant d'ex\'ecuter {\bf make install}, car le +r\'epertoire de travail de Bacula appartiendra \`a ce groupe. + +\item [{-}{-}with-sd-user=\lt{}User\gt{} ] + \index[sd]{{-}{-}with-sd-user } + Cette option vous permet de sp\'ecifier l'UserId utilis\'e pour ex\'ecuter le +Storage Daemon. Le Storage Daemon doit \^etre d\'emarr\'e en tant que root, +mais n'a pas besoin d'\^etre ex\'ecut\'e en tant que root. Apr\`es avoir +effectu\'e les op\'erations d'initialisation pr\'eliminaires, il peut +redescendre au niveau de l'UserId sp\'ecifi\'e dans cette option. Si vous +utilisez cette option, veillez \`a ce que le Storage Daemon ait acc\`es \`a +tous les p\'eriph\'eriques de stockage dont il a besoin. + +\item [{-}{-}with-sd-group=\lt{}Group\gt{} ] + \index[sd]{{-}{-}with-sd-group } + Cette option vous permet de sp\'ecifier le GroupId utilis\'e pour ex\'ecuter +le Storage Daemon. Le Storage Daemon doit \^etre d\'emarr\'e en tant que +root, mais n'a pas besoin d'\^etre ex\'ecut\'e en tant que root. Apr\`es avoir +effectu\'e les op\'erations d'initialisation pr\'eliminaires, il peut +redescendre au niveau du GroupId sp\'ecifi\'e dans cette option. + +\item [{-}{-}with-fd-user=\lt{}User\gt{} ] + \index[fd]{{-}{-}with-fd-user } + Cette option vous permet de sp\'ecifier l'UserId utilis\'e pour ex\'ecuter le +File Daemon. Le File Daemon doit \^etre d\'emarr\'e et, dans la plupart des +cas, ex\'ecut\'e en tant que root, de sorte que cette option n'est utilis\'ee +que dans des cas bien particuliers. Malgr\'e tout, apr\`es avoir effectu\'e +les op\'erations d'initialisation pr\'eliminaires, il peut redescendre au +niveau de l'UserId sp\'ecifi\'e dans cette option. + +\item [{-}{-}with-fd-group=\lt{}Group\gt{} ] + \index[fd]{{-}{-}with-fd-group } + Cette option vous permet de sp\'ecifier le GroupId utilis\'e pour ex\'ecuter +le File Daemon. Le File Daemon doit \^etre d\'emarr\'e et, dans la plupart +des cas, ex\'ecut\'e en tant que root, de sorte que cette option n'est +utilis\'ee que dans des cas bien particuliers. Malgr\'e tout, apr\`es avoir +effectu\'e les op\'erations d'initialisation pr\'eliminaires, il peut +redescendre au niveau du GroupId sp\'ecifi\'e dans cette option. +\end{description} + +Notez: de nombreuses options suppl\'ementaires vous sont pr\'esent\'ees +lorsque vous entrez {\bf ./configure \verb{--{help}, mais elles ne sont pas +impl\'ement\'ees. + +\section{Options recommand\'ees pour la plupart des syst\`emes} +\index[general]{Options recommand\'ees pour la plupart des syst\`emes } +\addcontentsline{toc}{section}{Options recommand\'ees pour la plupart des +syst\`emes} + +Pour la plupart des syst\`emes, nous recommandons de commencer avec les +options suivantes : + +\footnotesize +\begin{verbatim} +./configure \ + --enable-smartalloc \ + --sbindir=$HOME/bacula/bin \ + --sysconfdir=$HOME/bacula/bin \ + --with-pid-dir=$HOME/bacula/bin/working \ + --with-subsys-dir=$HOME/bacula/bin/working \ + --with-mysql=$HOME/mysql \ + --with-working-dir=$HOME/bacula/working +\end{verbatim} +\normalsize + +Si vous souhaitez installer Bacula dans un r\'epertoire d'installation +plut\^ot que de l'ex\'ecuter depuis le r\'epertoire de compilation, (comme le +feront les d\'eveloppeurs la plupart du temps), vous devriez aussi inclure les +options \verb{--{sbindir et \verb{--{sysconfdir avec les chemins appropri\'es. Aucune n'est +n\'ecessaire si vous ne vous servez pas de "make install'', comme c'est le +cas pour la plupart des travaux de d\'eveloppement. Le processus +d'installation va cr\'eer les r\'epertoires sbindir et sysconfdir s'ils +n'existent pas, mais il ne cr\'eera pas les r\'epertoires pid-dir, subsys-dir +ni working-dir, aussi assurez vous qu'ils existent avant de lancer Bacula. +L'exemple ci-dessous montre la fa\c{c}on de proc\'eder de Kern. + +\section{RedHat} +\index[general]{RedHat } +\addcontentsline{toc}{section}{RedHat} + +Avec SQLite: + +\footnotesize +\begin{verbatim} + +CFLAGS="-g -Wall" ./configure \ + --sbindir=$HOME/bacula/bin \ + --sysconfdir=$HOME/bacula/bin \ + --enable-smartalloc \ + --with-sqlite=$HOME/bacula/depkgs/sqlite \ + --with-working-dir=$HOME/bacula/working \ + --with-pid-dir=$HOME/bacula/bin/working \ + --with-subsys-dir=$HOME/bacula/bin/working \ + --enable-gnome \ + --enable-conio +\end{verbatim} +\normalsize + +ou + +\footnotesize +\begin{verbatim} + +CFLAGS="-g -Wall" ./configure \ + --sbindir=$HOME/bacula/bin \ + --sysconfdir=$HOME/bacula/bin \ + --enable-smartalloc \ + --with-mysql=$HOME/mysql \ + --with-working-dir=$HOME/bacula/working + --with-pid-dir=$HOME/bacula/bin/working \ + --with-subsys-dir=$HOME/bacula/bin/working + --enable-gnome \ + --enable-conio +\end{verbatim} +\normalsize + +ou une installation RedHat compl\`etement traditionnelle : + +\footnotesize +\begin{verbatim} +CFLAGS="-g -Wall" ./configure \ + --prefix=/usr \ + --sbindir=/usr/sbin \ + --sysconfdir=/etc/bacula \ + --with-scriptdir=/etc/bacula \ + --enable-smartalloc \ + --enable-gnome \ + --with-mysql \ + --with-working-dir=/var/bacula \ + --with-pid-dir=$HOME/var/run \ + --enable-conio +\end{verbatim} +\normalsize + +Notez que Bacula suppose que les r\'epertoires /var/bacula, /var/run et +/var/lock/subsys existent, ils ne seront pas cr\'ees par le processus +d'installation. + +D'autre part, avec gcc 4.0.1 20050727 (Red Hat 4.0.1-5) sur processeur AMD64 +et sous CentOS4 64 bits, un bug du compilateur g\'en\`ere du code erron\'e qui +conduit Bacula \`a des erreurs de segmentation. Typiquement, vous le rencontrerez +d'abord avec le Storage Daemon. La solution consiste \`a s'assurer que Bacula est +compil\'e sans optimisation (normalement -O2) + +\section{Solaris} +\index[general]{Solaris } +\addcontentsline{toc}{section}{Solaris} + +Pour installer Bacula depuis les sources, il vous faudra les paquetages suivants +sur votre syst\`eme (ils ne sont pas install\'es par d\'efaut) : libiconv, gcc 3.3.2, stdc++, libgcc +( pour les librairies stdc++ and gcc\_s ), make 3.8 ou plus r\'ecent. + +Il vous faudra probablement aussi ajouter /usr/local/bin et /usr/css/bin \`a PATH pour ar. + +\footnotesize +\begin{verbatim} +#!/bin/sh +CFLAGS="-g" ./configure \ + --sbindir=$HOME/bacula/bin \ + --sysconfdir=$HOME/bacula/bin \ + --with-mysql=$HOME/mysql \ + --enable-smartalloc \ + --with-pid-dir=$HOME/bacula/bin/working \ + --with-subsys-dir=$HOME/bacula/bin/working \ + --with-working-dir=$HOME/bacula/working +\end{verbatim} +\normalsize + +Comme mentionn\'e ci-dessus, le processus d'installation va cr\'eer les +r\'epertoires sbindir et sysconfdir s'ils n'existent pas, mais il ne cr\'eera +pas les r\'epertoires pid-dir, subsys-dir ni working-dir, aussi assurez vous +qu'ils existent avant de lancer Bacula. + +Notez que vous pouvez aussi avoir besoin des paquetages suivants pour installer Bacula +depuis les sources : +\footnotesize +\begin{verbatim} +SUNWbinutils, +SUNWarc, +SUNWhea, +SUNWGcc, +SUNWGnutls +SUNWGnutls-devel +SUNWGmake +SUNWgccruntime +SUNWlibgcrypt +SUNWzlib +SUNWzlibs +SUNWbinutilsS +SUNWGmakeS +SUNWlibm + +export +PATH=/usr/bin::/usr/ccs/bin:/etc:/usr/openwin/bin:/usr/local/bin:/usr/sfw/bin:/opt/sfw/bin:/usr/ucb:/usr/sbin +\end{verbatim} +\normalsize + + +\section{FreeBSD} +\index[general]{FreeBSD } +\addcontentsline{toc}{section}{FreeBSD} + +Veuillez consulter: +\elink{The FreeBSD Diary}{http://www.freebsddiary.org/bacula.php} pour une +description d\'etaill\'ee de la m\'ethode pour faire fonctionner Bacula sur +votre syst\`eme. De plus, les utilisateurs de versions de FreeBSD +ant\'erieures \`a la 4.9-STABLE du lundi 29 d\'ecembre 2003 15:18:01 qui +envisagent d'utiliser des lecteurs de bandes doivent consulter le chapitre +\ilink{Tester son lecteur de bandes}{FreeBSDTapes} de ce +manuel pour d'{\bf importantes} informations sur la configuration des lecteurs +pour qu'ils soient compatibles avec Bacula. + +Si vous utilisez Bacula avec MySQL, vous devriez prendre garde \`a compiler +MySQL avec les threads natifs de FreeBSD plut\^ot qu'avec ceux de Linux, car +c'est avec ceux l\`a qu'est compil\'e Bacula et le m\'elange des deux ne +fonctionnera probablement pas. + +\section{Win32} +\index[general]{Win32 } +\addcontentsline{toc}{section}{Win32} + +Pour installer la version binaire Win32 du File Daemon, consultez le chapitre +\ilink{ Installation sur syst\`emes Win32}{_ChapterStart7} de ce +document. + +\section{Syst\`emes Windows avec CYGWIN install\'e} +\label{Win32} +\index[general]{Syst\`emes Windows avec CYGWIN install\'e } +\addcontentsline{toc}{section}{Syst\`emes Windows avec CYGWIN install\'e} + +A partir de la version 1.34, Bacula n'utilise plus CYGWIN pour le client +Win32. Il est cependant encore compil\'e sous un environnement CYGWIN -- Bien +que vous puissiez probablement le faire avec seulement VC Studio. Si vous +souhaitez compiler le client Win32 depuis les sources, il vous faudra +Microsoft C++ version 6.0 ou sup\'erieur. Dans les versions de Bacula +ant\'erieures \`a la 1.33, CYGWIN \'etait utilis\'e. + +Notez qu'en d\'epit du fait que la plupart des \'el\'ements de Bacula puissent +compiler sur les syst\`emes Windows, la seule partie que nous avons test\'ee +et utilis\'ee est le File Daemon. + +Finalement, vous devriez suivre les instructions d'installation de la section +\ilink{Win32 Installation sur syst\`emes Win32}{_ChapterStart7} de ce +document en occultant la partie qui d\'ecrit la d\'ecompression de la version +binaire. + +\section{Le script Configure de Kern} +\index[general]{Le script Configure de Kern } +\index[general]{Kern!Le script Configure de } +\addcontentsline{toc}{section}{Le script Configure de Kern} + +Voici le script que j'utilise pour compiler sur mes machines Linux de +"production'': + +\footnotesize +\begin{verbatim} +#!/bin/sh +# This is Kern's configure script for Bacula +CFLAGS="-g -Wall" \ + ./configure \ + --sbindir=$HOME/bacula/bin \ + --sysconfdir=$HOME/bacula/bin \ + --enable-smartalloc \ + --enable-gnome \ + --with-pid-dir=$HOME/bacula/bin/working \ + --with-subsys-dir=$HOME/bacula/bin/working \ + --with-mysql=$HOME/mysql \ + --with-working-dir=$HOME/bacula/bin/working \ + --with-dump-email=$USER \ + --with-smtp-host=mail.your-site.com \ + --with-baseport=9101 +exit 0 +\end{verbatim} +\normalsize + +Notez que je fixe le port de base \`a 9101, ce qui signifie que Bacula +utilisera le port 9101 pour la console Director, le port 9102 pour le File +Daemon, et le 9103 pour le Storage Daemon. Ces ports devraient \^etre +disponibles sur tous les syst\`emes \'etant donn\'e qu'ils ont \'et\'e +officiellement attribu\'es \`a Bacula par l'IANA (Internet Assigned Numbers +Authority). Nous recommandons fortement de n'utiliser que ces ports pour +\'eviter tout conflit avec d'autres programmes. Ceci est en fait la +configuration par d\'efaut si vous n'utilisez pas l'option {\bf +\verb{--{with-baseport}. + +Vous pouvez aussi ins\'erer les entr\'ees suivantes dans votre fichier {\bf +/etc/services} de fa\c{c}on \`a rendre les connections de Bacula plus +ais\'ees \`a rep\'erer (i.e. netstat -a): + +\footnotesize +\begin{verbatim} +bacula-dir 9101/tcp +bacula-fd 9102/tcp +bacula-sd 9103/tcp +\end{verbatim} +\normalsize + +\section{Installer Bacula} +\index[general]{Installer Bacula } +\index[general]{Bacula!Installer } +\addcontentsline{toc}{section}{Installer Bacula} + +Avant de personnaliser vos fichiers de configuration, vous voudrez installer +Bacula dans son r\'epertoire d\'efinitif. tapez simplement: + +\footnotesize +\begin{verbatim} +make install +\end{verbatim} +\normalsize + +Si vous avez pr\'ec\'edemment install\'e Bacula, les anciens binaires seront +\'ecras\'es, mais les anciens fichiers de configuration resteront inchang\'es, +et les "nouveaux'' recevront l'extension {\bf .new}. G\'en\'eralement, si +vous avez d\'ej\`a install\'e et ex\'ecut\'e Bacula, vous pr\'ef\`ererez +supprimer ou ignorer les fichiers de configuration avec l'extension {\bf .new} + + +\section{Compiler un File Daemon (ou Client)} +\index[general]{Compiler un File Daemon (ou Client) } +\index[general]{Client!Compiler un File Daemon ou } +\addcontentsline{toc}{section}{Compiler un File Daemon (ou Client)} + +Si vous ex\'ecutez le Director et le Storage Daemon sur une machine et si vous +voulez sauvegarder une autre machine, vous devez avoir un File Daemon sur +cette machine. Si la machine et le syst\`eme sont identiques, vous pouvez +simplement copier le binaire du File Daemon {\bf bacula-fd} ainsi que son +fichier de configuration {\bf bacula-fd.conf}, puis modifier le nom et le mot +de passe dans {\bf bacula-fd.conf} de fa\c{c}on \`a rendre ce fichier unique. +Veillez \`a faire les modifications correspondantes dans le fichier de +configuration du Director ({\bf bacula-dir.conf}). + +Si les architectures, les syst\`emes, ou les versions de syst\`emes +diff\`erent, il vous faudra compiler un File Daemon sur la machine cliente. +Pour ce faire, vous pouvez utiliser la m\^eme commande {\bf ./configure} que +celle utilis\'ee pour construire le programme principal, soit en partant d'une +copie fraiche du r\'epertoire des sources, soit en utilisant {\bf make\ +distclean} avant de lancer {\bf ./configure}. + +Le File Daemon n'ayant pas d'acc\`es au catalogue, vous pouvez supprimer les +option {\bf \verb{--{with-mysql} ou {\bf \verb{--{with-sqlite}. Ajoutez l'option {\bf +\verb{--{enable-client-only}. Ceci va compiler seulement les librairies et programmes +clients, et donc \'eviter d'avoir \`a installer telle ou telle base de +donn\'ees. Lancez make avec cette configuration, et seul le client sera +compil\'e. +\label{autostart} + +\section{D\'emarrage automatique des Daemons} +\index[general]{Daemons!D\'emarrage automatique des } +\index[general]{D\'emarrage automatique des Daemons } +\addcontentsline{toc}{section}{D\'emarrage automatique des Daemons} + +Si vous souhaitez que vos {\it daemons} soient lanc\'es automatiquement au +d\'emarrage de votre syst\`eme (une bonne id\'ee !), une \'etape +suppl\'ementaire est requise. D'abord, le processus ./configure doit +reconna{\^\i}tre votre syst\`eme -- ce qui signifie que ce doit \^etre une +plate-forme support\'ee et non {\bf inconnue}, puis vous devez installer les +fichiers d\'ependants de la plate-forme comme suit : + +\footnotesize +\begin{verbatim} +(devenez root) +make install-autostart +\end{verbatim} +\normalsize + +Notez que la fonction d'autod\'emarrage n'est impl\'ement\'ee que pour les +syst\`emes que nous supportons officiellement (actuellement FreeBSD, RedHat +Linux, et Solaris), et n'a \'et\'e pleinement test\'ee que sur RedHat Linux. + +{\bf make install-autostart} installe les scripts de d\'emarrage apropri\'es +ainsi que les liens symboliques n\'ecessaires. Sur RedHat Linux, Ces scripts +r\'esident dans {\bf /etc/rc.d/init.d/bacula-dir} {\bf +/etc/rc.d/init.d/bacula-fd}, et {\bf /etc/rc.d/init.d/bacula-sd}. Toutefois, +leur localisation exacte d\'epend de votre syst\`eme d'exploitation. + +Si vous n'installez que le File Daemon, tapez: + +\footnotesize +\begin{verbatim} +make install-autostart-fd +\end{verbatim} +\normalsize + +\section{Autres notes concernant la compilation} +\index[general]{Autres notes concernant la compilation } +\index[general]{Compilation!Autres notes concernant la } +\addcontentsline{toc}{section}{Autres notes concernant la compilation} + +Pour recompiler tout ex\'ecutable, tapez + +\footnotesize +\begin{verbatim} +make +\end{verbatim} +\normalsize + +dans le r\'epertoire correspondant.. Afin d'\'eliminer tous les objets et +binaires (y compris les fichiers temporaires nomm\'es 1,2 ou 3 qu'utilise +Kern), tapez + +\footnotesize +\begin{verbatim} +make clean +\end{verbatim} +\normalsize + +Pour un nettoyage exhaustif en vue de distribution, entrez: + +\footnotesize +\begin{verbatim} +make distclean +\end{verbatim} +\normalsize + +Notez que cette commande supprime les Makefiles. Elle est en principe +lanc\'ee depuis la racine du r\'epertoire des sources pour les pr\'eparer \`a +la distribution. Pour revenir de cet \'etat, vous devez r\'eex\'ecuter la +commande {\bf ./configure} \`a la racine des sources puisque tous les +Makefiles ont \'et\'e d\'etruits. + +Pour ajouter un nouveau fichier dans un sous-r\'epertoire, \'editez +Makefile.in dans ce sous-r\'epertoire, puis faites un simple {\bf make}. Dans +la plupart des cas, le make reconstruira le Makefile \`a partir du nouveau +Makefile.in. Dans certains cas, il peut \^etre n\'ecessaire d'ex\'ecuter {\bf +make} une deuxi\`eme fois. Dans les cas extr\`emes, remontez \`a la racine des +sources et entrez {\bf make Makefiles}. + +Pour ajouter des d\'ependances: + +\footnotesize +\begin{verbatim} +make depend +\end{verbatim} +\normalsize + +La commande {\bf make depend} ins\`ere les fichiers d'en-t\^etes de +d\'ependances aux Makefile et Makefile.in pour chaque fichier objet. Cette +commande devrait \^etre lanc\'ee dans chaque r\'epertoire o\`u vous modifiez +les d\'ependances. En principe, il suffit de l'ex\'ecuter lorsque vous ajoutez +ou supprimez des sources ou fichiers d'en-t\^etes. {\bf make depend} est +invoqu\'e automatiquement durant le processus de configuration. + +Pour installer: + +\footnotesize +\begin{verbatim} +make install +\end{verbatim} +\normalsize + +En principe, vous n'utilisez pas cette commande si vous \^etes en train de +d\'evelopper Bacula, mais si vous vous appr\'etez \`a l'ex\'ecuter pour +sauvegarder vos syst\`emes. + +Apr\`es avoir lanc\'e {\bf make install}, les fichiers suivants seront +install\'es sur votre syst\`eme (\`a peu de choses pr\`es). La liste exacte +des fichiers install\'es et leur localisation d\'epend de votre commande {\bf +c./configure} (e.g. gnome-console et gnome-console.conf ne sont pas +install\'es si vous ne configurez pas GNOME. De m\^eme, si vous utilisez +SQLite plut\^ot que MySQL, certains fichiers seront diff\'erents. + +\footnotesize +\begin{verbatim} +bacula +bacula-dir +bacula-dir.conf +bacula-fd +bacula-fd.conf +bacula-sd +bacula-sd.conf +bacula-tray-monitor +tray-monitor.conf +bextract +bls +bscan +btape +btraceback +btraceback.gdb +bconsole +bconsole.conf +create_mysql_database +dbcheck +delete_catalog_backup +drop_bacula_tables +drop_mysql_tables +fd +gnome-console +gnome-console.conf +make_bacula_tables +make_catalog_backup +make_mysql_tables +mtx-changer +query.sql +bsmtp +startmysql +stopmysql +bwx-console +bwx-console.conf +\end{verbatim} +\normalsize + +\label{monitor} + +\section{Installer Tray Monitor} +\index[general]{Monitor!Installer Tray } +\index[general]{Installer Tray Monitor } +\addcontentsline{toc}{section}{Installer Tray Monitor} + +Le Tray Monitor est d\'ej\`a install\'e si vous avez utilis\'e l'option {\bf +\verb{--{enable-tray-monitor} de la commande configure et ex\'ecut\'e {\bf make +install}. + +Comme vous n'ex\'ecutez pas votre environnement graphique en tant que root (si +vous le faites, vous devriez changer cette mauvaise habitude), n'oubliez pas +d'autoriser votre utilisateur \`a lire {\bf tray-monitor.conf}, et ex\'ecuter +{\bf bacula-tray-monitor} (ceci ne constitue pas une faille de s\'ecurit\'e). + +Puis, connectez vous \`a votre environnement graphique (KDE, Gnome, ou autre), +lancez {\bf bacula-tray-monitor} avec votre utilisateur et observez si l'icone +d'une cartouche appara{\^\i}t quelque part sur l'\'ecran, usuellement dans la +barre des t\^aches. +Sinon, suivez les instructions suivantes relatives \`a votre gestionnaire de +fen\^etres. + +\subsection{GNOME} +\index[general]{GNOME } +\addcontentsline{toc}{subsection}{GNOME} + +System tray, ou zone de notification si vous utilisez la terminologie GNOME, +est support\'e par GNOME depuis la version 2.2. Pour l'activer, faites un +click droit sur un de vos espaces de travail, ouvrez le menu {\bf Ajouter \`a +ce bureau}, puis {\bf Utilitaire} et enfin, cliquez sur {\bf Zone de +notification}. (NDT: A valider) + +\subsection{KDE} +\index[general]{KDE } +\addcontentsline{toc}{subsection}{KDE} + +System tray est support\'e par KDE depuis la version 3.1. Pour l'activer, +faites un click droit sur la barre de t\^aches, ouvrez le menu {\bf Ajouter}, +puis {\bf Applet}, enfin cliquez sur {\bf System Tray}. + +\subsection{Autres gestionnaires de fen\^etres} +\index[general]{Autres gestionnaires de fen\^etres } +\addcontentsline{toc}{subsection}{Autres gestionnaires de fen\^etres} + +Lisez la documentation pour savoir si votre gestionnaire de fen\^etres +supporte le standard {\it systemtray} de FreeDesktop, et comment l'activer le +cas \'ech\'eant. + +\section{Modifier les fichiers de configuration de Bacula} +\index[general]{Modifier les fichiers de configuration de Bacula } +\index[general]{Bacula!Modifier les fichiers de configuration de } +\addcontentsline{toc}{section}{Modifier les fichiers de configuration de +Bacula} + +Consultez le chapitre +\ilink{Configurer Bacula}{_ChapterStart16} de ce manuel pour les +instructions de configuration de Bacula. diff --git a/docs/manuals/fr/main/old/messagesres.tex b/docs/manuals/fr/main/old/messagesres.tex new file mode 100644 index 00000000..49d313e3 --- /dev/null +++ b/docs/manuals/fr/main/old/messagesres.tex @@ -0,0 +1,347 @@ +%% +%% + +\chapter{La ressource Messages} +\label{_ChapterStart15} +\index[general]{Ressource!Messages} +\index[general]{Messages Ressource} +\addcontentsline{toc}{section}{Ressource Messages} + +\section{La ressource Messages} +\label{MessageResource} +\index[general]{Ressource!Messages} +\index[general]{Messages Ressource} +\addcontentsline{toc}{section}{La ressource Messages} + +La ressource Messages d\'efinit la fa\c{c}on dont les messages doivent \^etre construits +et vers quelles destinations ils doivent \^etre transmis. + +Bien que chaque {\it daemon} int\`egre un gestionnaire de messages pleinement +fonctionnel, vous choisirez certainement de centraliser les messages appropri\'es +des File Daemons et du Storage Daemon vers le Director. Ainsi, tous les messages +associ\'es \`a un job donn\'e peuvent \^etre combin\'es et envoy\'es en un simple courrier +\'electronique vers l'utilisateur, ou enregistr\'e dans quelque fichier de logs. + +Chaque message g\'en\'er\'e par un {\it daemon} Bacula poss\`ede un type associ\'e tel +que INFO, WARNING, ERROR, FATAL, etc. La ressource Messages vous permet de +stipuler les types de messages que vous voulez voir, et o\`u les envoyer. De plus, +un message peut \^etre exp\'edi\'e vers plusieurs destinations. Par exemple, vous +pouvez faire en sorte quque tous les messages d'erreur soient consign\'es dans un +fichier de logs tout en vous \'etant envoy\'es par courrier \'elecronique. En +d\'efinissant plusieurs ressources Messages, vous pouvez profiter de diff\'erents +modes de prise en charge pour chaque type de job (par exemple, selon qu'il +s'agit d'une full ou d'un incr\'ementale). + +En g\'en\'eral, les messages sont attach\'es \`a un job et sont inclus dans le rapport de job. +Il existe de rares situations o\`u ce n'est pas possible, par exemple lorsqu'aucun +job n'est en cours d'ex\'ecution, ou si une erreur de communication se produit +entre un daemon et le Director. Dans ce genre de situations, le message demeure +dans le syst\`eme et devrait \^etre purg\'e \`a la fin job suivant. Cependant, comme de tels +messages ne sont pas attach\'es \`a un job, tous ceux qui sont envoy\'es par courrier +\'electronique sont envoy\'es \`a {\bf /usr/lib/sendmail}. Si sur votre syst\`eme, comme c'est +le cas de FreeBSD, sendmail r\'eside en un autre emplacement, veillez \`a le lier +depuis l'emplacement ci-dessus. + +Les enregistrements contenus dans une ressource Messages consistent en une +sp\'ecification de {\bf destination} suivie d'une liste de types de messages +{\bf message-types} au format : + +\begin{description} + +\item [destination = message-type1, message-type2, message-type3, ... ] + \index[dir]{destination} + \end{description} + +ou, pour ces destinations qui n\'ecessitent de sp\'ecifier une adresse (e-mail, par exemple) : + +\begin{description} + +\item [destination = address = message-type1, message-type2, + message-type3, ... ] + \index[dir]{destination} + +o\`u {\bf destination} est l'un des mots-clef pr\'ed\'efinis qui pr\'ecise o\`u le message +doit \^etre exp\'edi\'e ({\bf stdout}, {\bf file}, ...), {\bf message-type} est l'un des +mots-clef pr\'ed\'efinis qui pr\'ecise le type de messages g\'en\'er\'e par Bacula ({\bf ERROR}, +{\bf WARNING}, {\bf FATAL}, ...) et {\bf address} varie selon le mot clef {\bf destination} +mais peut typiquement \^etre une adresse de courrier \'electronique ou un nom de fichier. + +\end{description} + +Voici la liste des directives disponibles pour d\'efinir des ressources Messages : + + +\begin{description} + +\item [Messages] + \index[dir]{Messages} + D\'ebut des enregistrements de Messages + +\item [Name = \lt{}name\gt{}] + \index[dir]{Name} + Le nom de la ressource Message. Ce nom sera utilis\'e pour lier cette ressource +Message \`a un job et/ou au un daemon. + +\label{mailcommand} + +\item [MailCommand = \lt{}command\gt{}] + \index[dir]{MailCommand} +En l'absence de cette directive, Bacula enverra tous ses messages avec la +commande suivante : + +{\bf mail -s "Bacula Message" \lt{}recipients\gt{}} +Dans de nombreusx cas, selon votre machine, cette commande peut ne pas fonctionner. +La directive {\bf MailCommand} vous permet de stipuler pr\'ecis\'ement la fa\c{c}on +d'envoyer vos courrier \'electroniques. Lors de l'ex\'ecution de la commande +{\bf command}, sp\'ecifi\'ee entre guillemets, les substitutions suivantes sont +effectu\'ees : + +\begin{itemize} + \item \%\% = \% + \item \%c = Le nom du client + \item \%d = Le nom du Director + \item \%e = Le code de sortie du job (OK, Error, ...) + \item \%i = L'Id du Job + \item \%j = Le nom unique du job + \item \%l = Le niveau (Full, differential, ...) du job + \item \%n = Le om du job + \item \%r = Les destinataires + \item \%t = Le type du job (Backup, verify, ...) +\end{itemize} + +Voici la commande que j'utilise (Kern) : + +{\bf mailcommand = "/home/kern/bacula/bin/bsmtp -h mail.example.com -f +\textbackslash{}"\textbackslash{}(Bacula\textbackslash{}) +\%r\textbackslash{}" -s \textbackslash{}"Bacula: \%t \%e of \%c +\%l\textbackslash{}" \%r"} + +Notez que la commande enti\`ere devrait appara\^itre sur une seulle ligne plut\^ot +que d\'ecoup\'ee comme ici pour des raisons de pr\'esentation. + +Le programme {\bf bsmtp} est fourni en tant que partie de Bacula. Pour plus +de d\'etails, consultez la section \ilink{ bsmtp -- Personnaliser l'envoi +de vos message par courrier \'electronique}{bsmtp}. Testez soigneusement +toute commande {\bf mailcommand} pour vous assurer que votre passerelle +bsmtp accepte le format d'adressage que vous utilisez. Certains programmes +tels Exim peut se montrer tr\`es s\'electif en ce qui concerne les format +autoris\'es, particuli\`erement en ce qui concerne le champ "from". + +\item [OperatorCommand = \lt{}command\gt{}] + \index[fd]{OperatorCommand} + Cette directive est analogue \`a {\bf MailCommand}, mais elle est utilis\'ee pour + les messages destin\'es \`a l'op\'erateur. Les substitutions effectu\'ees pour la + directive {\bf MailCommand} sont aussi effectu\'ees pour celle-ci. Normalement, + vous mettrez ici la m\^eme valeur que pour {\bf MailCommand}. + +\item [Debug = \lt{}debug-level\gt{}] + \index[fd]{Debug} + Cette directive r\`egle le niveau de d\'ebogage des messages. C'est un entier. + Plus sa valeur est grande, plus grande est la quantit\'e d'informations de + d\'ebogages produites. Nous vous conseillons de ne pas utiliser cette directive + car elle sera bient\^ot obsol\`ete. + +\item [\lt{}destination\gt{} = \lt{}message-type1\gt{}, + \lt{}message-type2\gt{}, ...] + \index[fd]{\lt{}destination\gt{}} + +O\`u la {\bf destination} peut \^etre l'une des suivantes : + +\begin{description} + +\item [stdout] + \index[fd]{stdout} + Envoie le message vers la sortie standard. + +\item [stderr] + \index[fd]{stderr} + Envoie le message vers l'erreur standard + +\item [console] + \index[console]{console} + Envoie le message vers la console Bacula. Ces messages sont gard\'es en attente + jusqu'\`a ce que la console contacte le Director. +\end{description} + +\item {\bf \lt{}destination\gt{} = \lt{}address\gt{} = + \lt{}message-type1\gt{}, \lt{}message-type2\gt{}, ...} + \index[console]{\lt{}destination\gt{}} + +O\`u {\bf address} d\'epend de la {\bf destination}, qui peut \^etre l'une des suivantes : + +\begin{description} + +\item [director] + \index[dir]{director} + Envoie le message vers le Director dont le nom est sp\'ecifi\'e dans le champ + {\bf address}. Notez que dans l'impl\'ementation actuelle, le nom du Director + est ignor\'e, le message \'etant envoy\'e au Directr qui a lanc\'e le job. + +\item [file] + \index[dir]{file} + Envoie le message vers le fichier d\'esign\'e dans le champ {\bf address}. Si le + fichier existe, il est \'ecras\'e. + +\item [append] + \index[dir]{append} + Ajoute le message \`a la suite du fichier d\'esign\'e dans le champ {\bf address}. + Si le fichier n'existe pas encore, il est cr\'e\'e. + +\item [syslog] + \index[fd]{syslog} + Envoie le message vers le syst\`eme de journalisation (syslog) en utilisant le + service d\'esign\'e par le champ {\bf address} Notez que, pour le moment, le champ + {\bf address} est ignor\'e, et que le message est toujours envoy\'e au service + LOG\_DAEMON avec le niveau LOG\_ERR. Consultez la page {\bf man 3 syslog} + pour plus de d\'etails. Exemple : + +\begin{verbatim} + syslog = all, !skipped, !saved +\end{verbatim} + +\item [mail] + \index[fd]{mail} + Exp\'edie le message vers les adresses \'electroniques + sp\'ecifi\'ees dans le champ {\bf address} (s\'epar\'ees par des points-virgule). + Les messages sont rassembl\'es au cours du job, puis exp\'edi\'es lorsqu'il prend + fin en un seul courrier \'electronique. L'avantage de cette Destination est + que vous recevez une notification de chaque job ex\'ecut\'e. Toutefois, si vous + sauvegardez cinq ou dix machines chaque nuit, la quantit\'e de courrier + \'electronique peut devenir importante. Certains utilisateurs mettent en oeuvre + des filtres de courrier tels {\bf procmail} pour classer automatiquement ces + courriers en fonction des codes de fin de job (voyez la commande {\bf mailcommand} + +\item [mail on error] + \index[fd]{mail on error} + Exp\'edie le message vers les adresses \'electroniques + sp\'ecifi\'ees dans le champ {\bf address} (s\'epar\'ees par des points-virgule) + si le job se termine avec un code d'erreur. Les messages MailOnError sont + rassembl\'es au cours du job, puis exp\'edi\'es lorsqu'il prend fin en un seul + courrier \'electronique. Cette Destination diff\`ere de la Destination {\bf mail} + en ce que si le job s'ach\`eve normalement, le message est compl\`etement + abandonn\'e (pour cette Destination). En utilisant d'autres Destinations, telles + que {\bf append}, vous pouvez vous assurer que les informations de sorties + ne seront pas perdues m\^eme si le job se termine normalement. + +\item [operator] + \index[fd]{operator} + Exp\'edie le message vers les adresses \'electroniques + sp\'ecifi\'ees dans le champ {\bf address} (s\'epar\'ees par des points virgule). + Cette directive est similaire \`a {\bf mail} d\'ecrite plus haut, sauf que + chaque message est envoy\'e aussit\^ot re\c{c}u, de sorte qu'il y a un courrier + \'electronique par message . Ceci est surtout utile pour les messages de + type {\bf mount} (voir ci-dessous). + +\end{description} + Pour toutes les Destinations, le champ "type de message" {\bf message-type} est + une liste des types (ou classes) de messages suivants s\'epar\'es par des + points-virgule : + +\begin{description} + +\item [info] + \index[fd]{info} + Messages d'information g\'en\'erale. + +\item [warning] + \index[fd]{warning} + Messages d'avertissement. En g\'en\'eral, il s'agit de quelque situation inhabituelle + sans toutefois \^etre tr\`es s\'erieuse. + +\item [error] + \index[fd]{error} + Messages d'erreur non-fatale. Le job se poursuit. Tout message d'erreur devrait + \^etre suivi d'investigations, car il signifie que quelque chose est all\'e de travers. + +\item [fatal] + \index[fd]{fatal} + Messages d'erreur fatale. Ces erreurs pr\'ecipitent la fin du job. + +\item [terminate] + \index[fd]{terminate} + Messages g\'en\'er\'es lorsque le daemon s'arr\`ete. + +\item [saved] + \index[fd]{saved} + Fichiers sauvegard\'es normalement. + +\item [notsaved] + \index[fd]{notsaved} + Fichiers non sauvegard\'es en raison d'une erreur, en g\'en\'eral, parce que le + fichier n'a pu \^etre acc\'ed\'e (il n'existait pas ou n'\'etait pas mont\'e). + +\item [skipped] + \index[fd]{skipped} + Fichiers qui ont \'et\'e laiss\'es de cot\'e en raison d'une option pos\'ee par un + utilisateur (par exemple le niveau d'une sauvegarde ou une option + d'exclusion. Ceci n'est pas consid\'er\'e comme une condition d'erreur au m\^eme + titre que pour le type {\bf notsaved} puisque le fichier de configuration + stipule explicitement que ces fichiers ne doivent pas \^etre sauvegard\'es. + Des cas typiques de fichiers de type {\bf skipped} : fichiers inchang\'es + lors d'une incr\'ementale, sous-r\'epertoires si l'option {\bf no recursion} + est activ\'ee... + +\item [mount] + \index[dir]{mount} + Montage d'un volume ou intervention d'un op\'erateur requis par le Storage Daemon. + Ces requ\^etes n\'ecessitent une intervention sp\'ecifique de l'op\'erateur pour que le + job puisse se poursuivre. + +\item [restored] + \index[dir]{restored} + La liste, fa\c{c}on {\bf ls}, de tous les fichiers restaur\'es est envoy\'ee vers + cette classe de messages. + +\item [all] + \index[fd]{all} + Tous les types de messages. + +\item [*security] + \index[fd]{*security} + Messages d'information ou d'avertissement relatifs \`a la s\'ecurit\'e, + essentiellement les tentatives de connection non-autoris\'ees. +\end{description} + +\end{description} + +Voici un exemple d'une d\'efinition de ressource Messages valide, o\`u tous les +messages sont envoy\'es par courrier \'electronique \`a enforcement@sec.com \`a +l'exception de ceux concernant les fichiers explicitement exclus (skipped), +et des messages d'arr\^et de daemon (terminate). De plus, tous les messages +de type mount sont envoy\'es \`a l'op\'erateur (courrier \`a enforcement@sec.com). +Enfin, tous les messages autres que ceux relatifs aux fichiers explicitement +exclus et aux fichiers sauvegard\'es sont envoy\'es vers la console : + +\footnotesize +\begin{verbatim} +Messages { + Name = Standard + mail = enforcement@sec.com = all, !skipped, !terminate + operator = enforcement@sec.com = mount + console = all, !skipped, !saved +} +\end{verbatim} +\normalsize + +A l'exception de l'adresse \'electronique (modifi\'ee pour \'eviter le spam), +voici la ressource Message du Director de Kern. Notez que les commandes +{\bf mailcommand} et {\bf operatorcommand} sont sur une seule ligne et +non coup\'ees comme ici pour des besoins de mise en page. + +\footnotesize +\begin{verbatim} +Messages { + Name = Standard + mailcommand = "bacula/bin/bsmtp -h mail.example.com \ + -f \"\(Bacula\) %r\" -s \"Bacula: %t %e of %c %l\" %r" + operatorcommand = "bacula/bin/bsmtp -h mail.example.com \ + -f \"\(Bacula\) %r\" -s \"Bacula: Intervention needed \ + for %j\" %r" + MailOnError = security@example.com = all, !skipped, \ + !terminate + append = "bacula/bin/log" = all, !skipped, !terminate + operator = security@example.com = mount + console = all, !skipped, !saved +} +\end{verbatim} +\normalsize diff --git a/docs/manuals/fr/main/old/postgresql.tex b/docs/manuals/fr/main/old/postgresql.tex new file mode 100644 index 00000000..9bbf8203 --- /dev/null +++ b/docs/manuals/fr/main/old/postgresql.tex @@ -0,0 +1,457 @@ +%% +%% + +\chapter{Installer et configurer PostgreSQL} +\label{_ChapterStart10} +\index[general]{PostgreSQL!Installer et configurer } +\index[general]{Installer et configurer PostgreSQL } +\addcontentsline{toc}{section}{Installer et configurer PostgreSQL} + +\section{Installer et configurer PostgreSQL -- Phase I} +\index[general]{Installer et configurer PostgreSQL -- Phase I } +\index[general]{Phase I!Installer et configurer PostgreSQL -- } +\addcontentsline{toc}{section}{Installer et configurer PostgreSQL -- Phase +I} + +Attention !!! Si vous envisagez d'utiliser PostgreSQL, vous devriez +\^etre conscient de la philosophie des mises \`a jour de PostgreSQL qui +peut \^etre d\'estabilisant dans un environnement de +production. En gros, pour chaque mise \`a jour vers une version majeure, +vous devez exporter vos bases de donn\'ees au format ASCII, faire la +mise \`a jour, et recharger vos bases de donn\'ees. Ceci est d\^u au \`a des +mises \`a jour fr\'equentes du "format de donn\'ees" d'une version \`a l'autre, +et aucun outil n'est fourni pour effectuer la conversion automatiquement. +Si vous omettez d'exporter vos bases au format ASCII, elles peuvent +devenir compl\`etement inutiles si aucun des nouveaux outils ne peut y +acc\'eder en raison d'un changement de format, auquel cas le serveur +PostgreSQL sera dans l'incapacit\'e de d\'emarrer. + +Si vous avez utilis\'e l'option {\bf ./configure +\verb{--{with-postgresql=PostgreSQL-Directory} pour configurer {\bf Bacula}, vous +avez besoin d'installer la version 7.3 ou sup\'erieure de PostgreSQL. +ATTENTION! Les versions pr\'ealables \`a la 7.3 ne fonctionnent pas avec +Bacula. Si PostgreSQL est install\'e dans ses r\'epertoires sandards, seule +l'option {\bf \verb{--{with-postgresql} est n\'ecessaire, le programme de +configuration scrutant tous les r\'epertoires standards. Si PostgreSQL est +install\'e dans votre r\'epertoire de travail ou dans un r\'epertoire +atypique, il faut pr\'eciser l'option {\bf \verb{--{with-postgresql} suivie du +r\'epertoire {\it ad hoc}. + +Installer et configurer PostgreSQL n'est pas compliqu\'e mais peut \^etre +d\'eroutant la premi\`ere fois. Si vous pr\'ef\'erez, vous pouvez utiliser le +paquet de votre distribution. Les paquets binaires sont disponibles sur la +plupart des mirroirs de PostgreSQL. + +Si vous pr\'ef\'erez installer PostgreSQL \`a partir des sources, nous vous +recommandons de suivre les instructions de la +\elink{documentation PostgreSQL}{http://www.postgresql.org/docs/}. + +Si vous utilisez PostgreSQL pour FreeBSD, +\elink{cet article}{http://www.freebsddiary.org/postgresql.php} vous sera peut +\^etre utile. M\^eme si vous n'utilisez pas FreeBSD, l'article contient des +informations utiles \`a la configuration et au param\'etrage de PostgreSQL. + +Apr\`es l'installation de PostgreSQL, terminez l'installation de {\bf Bacula}. +Ensuite, quand Bacula sera install\'e, reprenez ce chapitre pour terminer +l'installation. Notez que les fichiers d'installation utilis\'es dans cette +seconde phase de l'installation de PostgreSQL sont cr\'e\'es durant +l'installation de Bacula. +\label{PostgreSQL_phase2} + +\section{Installer et configurer PostgreSQL -- Phase II} +\index[general]{Phase II!Installer et configurer PostgreSQL -- } +\index[general]{Installer et configurer PostgreSQL -- Phase II } +\addcontentsline{toc}{section}{Installer et configurer PostgreSQL -- Phase +II} + +Si vous en \^etes l\`a, vous avez construit et install\'e PostgreSQL, ou vous +aviez d\'ej\`a un serveur PostgreSQL existant et vous avez configur\'e et +install\'e {\bf Bacula}. Dans le cas contraire, nous vous invitons \`a le +faire avant de poursuivre. + +Notez bien que la commande {\bf ./configure} utilis\'ee pour +construire {\bf Bacula} n\'ecessite d'ajouter l'option {\bf +\verb{--{with-postgresql=repertoire\_de\_PostgreSQL}, o\`u {\bf +repertoire\_de\_PostgreSQL} sp\'ecifie le chemin de PostgreSQL indiqu\'e \`a +la commande ./configure. (si vous n'avez pas sp\'ecifi\'e de r\'epertoire ou +si PostgreSQL est install\'e dans son r\'epertoire par d\'efaut, cette option +n'est pas n\'ecessaire). Cette option est n\'ecessaire pour que Bacula puisse +trouver les fichiers d'en-t\^ete et les librairies d'interface \`a PostgreSQL. + + +{\bf Bacula} installe les scripts pour la gestion de la base de donn\'ees +(cr\'eer, d\'etruire, cr\'eer les tables, etc.) dans le r\'epertoire principal +de l'installation. Ces fichiers sont de la forme *\_bacula\_* (par exemple +create\_bacula\_database). Ces fichiers sont \'egalement disponibles dans le +r\'epertoire \lt{}bacula-src\gt{}/src/cats apr\`es que la commande ./configure +ait \'et\'e lanc\'ee. Si vous consultez le fichier create\_bacula\_database, +vous verrez qu'il fait appel \`a create\_postgresql\_database. Les fichiers +*\_bacula\_* sont fournis pour faciliter les choses. Peu importe la base de +donn\'ees choisie, create\_bacula\_database cr\'eera la base de donn\'ees. + +Maintenant vous allez cr\'eer la base de donn\'ees PostgreSQL et les tables +utilis\'ees par Bacula. On pr\'esume dans la suite que votre serveur +PostgreSQL fonctionne. Vous devez ex\'ecuter les diff\'erentes \'etapes +ci-dessous en tant qu'utilisateur autoris\'e \`a cr\'eer des bases. Ceci peut +\^etre fait avec l'utilisateur PostgreSQL (sur la plupart des syst\`emes il +s'agit de pgsql. NDT: sur debian il s'agit de postgres) + +\begin{enumerate} +\item cd \lt{}r\'epertoire\_d\_installation\gt{} + + Ce r\'epertoire contient le catalogue des routines d'interfaces. + +\item ./create\_bacula\_database + + Ce script cr\'e\'e le catalogue {\bf bacula} PostgreSQL. S'il \'echoue, + c'est probablement que vous n'avez pas les droits requis sur la + base de donn\'ees. Sur la plupart des syst\`emes, le propri\'etaire de + la base de donn\'ees est {\bf pgsql}, et sur d'autres tels que RedHat ou + Fedora, c'est {\bf postgres}. Vous pouvez d\'eterminer lequel en examinant + le fichier /etc/passwd. Pour cr\'eer un nouvel utilisateur avec votre nom + ou le nom {\bf bacula}, vous pouvez faire ce qui suit : + +\begin{verbatim} + su + (entrez le mot de passe root) + su pgsql (ou postgres) + createuser kern (ou peut-\^etre bacula) + Shall the new user be allowed to create databases? (y/n) y + Shall the new user be allowed to create more new users? (y/n) (choisissez ce que vous voulez) + exit +\end{verbatim} + + + A ce stade, vous devriez pouvoir ex\'ecuter la commande ./create\_bacula\_database + +\item ./make\_bacula\_tables + + Cr\'e\'ee les tables utilis\'ees par {\bf Bacula}. +\item ./grant\_bacula\_privileges + + Cr\'e\'ee l'utilisateur de la base de donn\'ees {\bf bacula} avec des droits +d'acc\`es restreints. Vous pouvez modifier ce script pour cadrer avec votre +propre configuration. Attention, cette base n'est pas prot\'eg\'ee par un mot +de passe. + +\end{enumerate} + +Chacun de ces scripts (create\_bacula\_database, make\_bacula\_tables et +grant\_bacula\_privileges) permet l'ajout d'arguments en ligne de commande. +Ceci peut \^etre utile pour sp\'ecifier le nom de l'utilisateur. Par exemple, +vous pouvez avoir besoin d'ajouter {\bf -h nom\_d\_hote} \`a la ligne de +commande pour sp\'ecifier le serveur de base de donn\'ees distant. + +Pour avoir un bon aper\c{c}u des droits d'acc\`es que vous avez sp\'ecifi\'e +vous pouvez utiliser la commande + +\footnotesize +\begin{verbatim} + +repertoire_de_PostgreSQL/bin/psql --command \\dp bacula +\end{verbatim} +\normalsize + +J'ai rencontr\'e un probl\`eme de permissions avec le mot de passe. J'ai finalement +du modifier mon fichier {\bf pg\_hba.conf} (situ\'e dans /var/lib/pgsql/data sur ma +machine) : + +\footnotesize +\begin{verbatim} +de + local all all ident sameuser +vers + local all all trust sameuser +\end{verbatim} +\normalsize + +Ceci a r\'esolu le probl\`eme pour moi, mais ce n'est pas pas forc\'ement une bonne +chose du point de vue de la s\'ecurit\'e, mais j'ai ainsi pu ex\'ecuter mes scripts de +r\'egression sans mot de passe. + +Un moyen plus s\'ecuris\'e pour l'authentification aupr\`es de la base de donn\'ees +consiste \`a utiliser le hachage MD5 des mots de passe. Pour cela, \'editez les +fichier {\bf pg\_hba.conf}, et ajoutez ajoutez ce qui suit juste avant les lignes +"local" et "host" existantes : + +\footnotesize +\begin{verbatim} + local bacula bacula md5 +\end{verbatim} +\normalsize + +Puis red\'emarrez le {\it daemon} Postgres (la plupart du temps, avec + "/etc/init.d/postgresql restart") pour activer cette nouvelle r\`egle +d'authentification. + +Ensuite, en tant qu'administrateur Postgres (connectez-vous en tant +qu'utilisateur postgres ou en utilisant {\bf su} pour devenir root, puis + {\bf su postgres}), ajoutez un mot de passe \`a la base de donn\'ees bacula +pour l'utilisateur bacula avec les commandes suivantes : + +\footnotesize +\begin{verbatim} + \$ psql bacula + bacula=# alter user bacula with password 'secret'; + ALTER USER + bacula=# \\q +\end{verbatim} +\normalsize + +Enfin, il vous faudra ajouter ce mot de passe en deux endroits du fichier +bacula-dir.conf : au niveau de la ressource Catalog et au niveau de la +directive RunBeforeJob de la ressource Job BackupCatalog. Avec les mots de +passe en place, ces deux lignes devraient ressembler \`a ceci : + +\footnotesize +\begin{verbatim} + dbname = bacula; user = bacula; password = "secret" + ... and ... + RunBeforeJob = "/etc/make_catalog_backup bacula bacula secret" +\end{verbatim} +\normalsize + +Naturellement, vous devriez choisir un meilleur mot de passe, et vous assurer +que le fichier bacula-dir.conf qui contient ce mot de passe n'est lisible +que par root. + +M\^eme avec ces restrictions, il reste un probl\`eme de s\'ecurit\'e avec cette approche : +sur certaines plateformes, la variable d'environnement utilis\'ee pour soumettre le +mot de passe \`a Postgres est disponible pour tout utilisateur +local du syst\`eme. Pour supprimer ce probl\`eme, l'\'equipe Postgres a d\'ecr\'et\'e +obsol\`ete ce m\'ecanisme de passage de mot de passe par variable d'environnement et +recommande d'utiliser un fichier .pgpass. Pour utiliser ce m\'ecanisme, cr\'eez un fichier +nomm\'e .pgpass vcontenant une simple ligne : + +\footnotesize +\begin{verbatim} + localhost:5432:bacula:bacula:secret +\end{verbatim} +\normalsize + +Ce fichier devrait \^etre copi\'e dans les r\'epertoires personnels (NDT : home directories) +de tous les comptes susceptibles d'avoir besoin d'acc\'eder \`a la base de donn\'ees : +typiquement, il s'agit de root, bacula et tout utilisateur de la console Bacula. Les fichiers +doivent appartenir aux utilisateur et groupe correspondant : root:root pour la copie +dans ~root, etc. Les permissions doivent \^etre positionn\'ees \`a 600 pour limiter +l'acc\`es au propri\'etaire du fichier. + +\section{R\'einitialiser la base des catalogues (de sauvegardes)} +\index[general]{R\'einitialiser la base des catalogues (de sauvegardes) } +\index[general]{Sauvegardes!R\'einitialiser la base des catalogues de } +\addcontentsline{toc}{section}{R\'einitialiser la base des catalogues (de +sauvegardes)} + +Apr\`es avoir fait un certain nombre de tests avec {\bf Bacula}, vous aurez +tr\`es certainement envie de nettoyer le catalogue des sauvegardes et faire +dispara{\^\i}tre tous les travaux de tests que vous avez lanc\'es. Pour ce +faire, vous pouvez ex\'ecuter les commandes suivantes: + +\footnotesize +\begin{verbatim} + + cd + ./drop_bacula_tables + ./make_bacula_tables + ./grant_bacula_privileges +\end{verbatim} +\normalsize + +Attention! Toutes les informations contenues dans cette base seront perdues et +vous repartirez de z\'ero. Si vous avez \'ecrit sur certains volumes (m\'edia +de sauvegarde), vous devrez \'ecrire une marque de fin de fichier (EOF) sur +chacun d'eux afin que {\bf Bacula} puisse les r\'eutiliser. Pour ce faire: + +\footnotesize +\begin{verbatim} + + (arr\^eter Baula ou demonter les volumes) + mt -f /dev/nst0 rewind + mt -f /dev/nst0 weof +\end{verbatim} +\normalsize + +o\`u vous devrez remplacer {\bf /dev/nst0} par le chemin appropri\'e de votre +lecteur de sauvegarde. + +\section{Installer PostgreSQL avec les RPMs} +\index[general]{PostgreSQL!Installer avec les RPMs} +\index[general]{Installer PostgreSQL avec les RPMs} +\addcontentsline{toc}{section}{Installer PostgreSQL avec les RPMs} +Si vous installez PostgreSQL avec les RPMs, il vous faut installer les +binaires PostgreSQL ainsi que les librairies clientes. Ces derni\`eres font +g\'en\'eralement partie de paquetages de d\'eveloppement, aussi vous devez installer : + +\footnotesize +\begin{verbatim} + postgresql + postgresql-devel +\end{verbatim} +\normalsize + +Il en va de m\^eme avec la plupart des gestionnaires de paquetages. + +\section{Migrer de MySQL \`a PostgreSQL} +\index[general]{Migrer de MySQL \`a PostgreSQL } +\index[general]{PostgreSQL!Migrer de MySQL \`a } +\addcontentsline{toc}{section}{Migrer de MySQL \`a PostgreSQL} + +La proc\'edure de migration pr\'esent\'ee ici \`a fonctionn\'e pour Norm +Dressler \lt{}ndressler at dinmar dot com\gt{} + +Ce process a \'et\'e test\'e en utilisant les versions suivantes des +diff\'erents logiciels: + +\begin{itemize} +\item Linux Mandrake 10/Kernel 2.4.22-10 SMP +\item MySQL Ver 12.21 Distrib 4.0.15, pour mandrake-linux-gnu (i586) +\item PostgreSQL 7.3.4 +\item Bacula 1.34.5 + \end{itemize} + +ATTENTION! Par pr\'ecaution, r\'ealisez une sauvegarde compl\`ete de vos +syst\`emes avant de proc\'eder \`a cette migration. + +\begin{enumerate} +\item Arr\^etez bacula (cd /etc/bacula;./bacula stop) +\item Lancez la commande pour extraire les donn\'ees de votre base MySQL: + + \footnotesize +\begin{verbatim} + + mysqldump -f -t -n >bacula-backup.dmp + +\end{verbatim} +\normalsize + +\item Faites une sauvegarde de votre r\'epertoire /etc/bacula (mais laisser + l'original en place ). +\item Allez dans le r\'epertoire source de {\bf Bacula} et reconstruisez le en + incluant le support PostgreSQL au lieu de celui de MySQL . V\'erifiez que le + fichier config.log de votre configuration originale et remplacez enable-mysql +par enable-postgresql. +\item Recompilez Bacula avec la commande make et si tout se passe correctement + lancez un "make install". +\item Arr\^etez MySQL. +\item Lancez PostgreSQL sur votre syst\`eme. +\item Cr\'eez un utilisateur {\bf Bacula} dans Postgres avec la commande + "createuser". En fonction de votre installation, vous serez peut \^etre + amen\'e \`a faire un "su" vers l'utilisateur ad\'equat (NDT: su postgres). +\item Verifiez que le fichier pg\_hba.conf (NdT sur Debian: + /etc/postgres/pg\_hba.conf) contient les permissions ad\'equates pour + permettre \`a {\bf Bacula} d'acc\'eder au serveur. Le mien contient les +informations suivantes, et il est situ\'e sur un r\'eseau s\'ecuris\'e, + +\footnotesize +\begin{verbatim} + +local all all trust + +host all all 127.0.0.1 255.255.255.255 trust + +ATTENTION: vous devez red\'emmarer PostgreSQL si vous faites des changements dans ce fichier. + +\end{verbatim} +\normalsize + +\item Allez dans le r\'epertoire /etc/bacula et pr\'eparez la base de + donn\'ees avec les commandes suivantes: + +\footnotesize +\begin{verbatim} + +./create_postgresql_database + +./make_postgresql_tables + +./grant_postgresql_privileges + +\end{verbatim} +\normalsize + +\item Verifiez que vous avez acc\`es \`a la base de donn\'ees: + + \footnotesize +\begin{verbatim} + +psql -Ubacula bacula + +\end{verbatim} +\normalsize + +Vous ne devriez avoir aucune erreur. +\item Chargez la base PostgreSQL avec l'extraction MySQL gr\^ace \`a la + commande: + +\footnotesize +\begin{verbatim} + +psql -Ubacula bacula + +\end{verbatim} +\normalsize + +\item R\'eindexez vos tables avec les commandes suivantes: + + \footnotesize +\begin{verbatim} + +psql -Ubacula bacula + +SELECT SETVAL('basefiles_baseid_seq', (SELECT +MAX(baseid) FROM basefiles)); + +SELECT SETVAL('client_clientid_seq', (SELECT +MAX(clientid) FROM client)); + +SELECT SETVAL('file_fileid_seq', (SELECT MAX(fileid) +FROM file)); + +SELECT SETVAL('filename_filenameid_seq', (SELECT +MAX(filenameid) FROM filename)); + +SELECT SETVAL('fileset_filesetid_seq', (SELECT +MAX(filesetid) FROM fileset)); + +SELECT SETVAL('job_jobid_seq', (SELECT MAX(jobid) FROM job)); + +SELECT SETVAL('jobmedia_jobmediaid_seq', (SELECT +MAX(jobmediaid) FROM jobmedia)); + +SELECT SETVAL('media_mediaid_seq', (SELECT MAX(mediaid) FROM media)); + +SELECT SETVAL('path_pathid_seq', (SELECT MAX(pathid) FROM path)); + +SELECT SETVAL('pool_poolid_seq', (SELECT MAX(poolid) FROM pool)); + +\end{verbatim} +\normalsize + +\item Parvenu ici, lancez {\bf Bacula}, v\'erifiez votre librairie et + faites un test pour valider que tout s'est bien d\'eroul\'e. +\end{enumerate} + +\section{Mettre \`a jour PostgreSQL} +\index[general]{Mettre \`a jour PostgreSQL } +\index[general]{Mettre \`a jour!PostgreSQL } +\addcontentsline{toc}{section}{Mettre \`a jour PostgreSQL} +Si vous mettez PosgreSQL \`a jour, vous devez reconfigurer, recompiler et +r\'einstaller Bacula, faute de quoi vous constaterez probalement des +erreurs \'etranges. +Pour cela, il vous faut installer le RPM source, modifier le fichier bacula.spec +pour l'accorder \`a votre version de PostgreSQL, reconstruire le RPM et l'installer. + +If you upgrade PostgreSQL, you must reconfigure, rebuild, and re-install +Bacula otherwise you are likely to get bizarre failures. If you +to modify the bacula.spec file to account for the new PostgreSQL version. +You can do so by rebuilding from the source rpm. To do so, you may need +install from rpms and you upgrade PostgreSQL, you must also rebuild Bacula. + + +\section{Credits} +\index[general]{Credits } +\addcontentsline{toc}{section}{Credits} + +Tous mes remerciements \`a Dan Languille pour l'\'ecriture du driver +PostgreSQL qui deviendra tr\`es certainement la base de donn\'ees la plus +r\'eput\'ee utilisable avec {\bf Bacula} diff --git a/docs/manuals/fr/main/old/quickstart.tex b/docs/manuals/fr/main/old/quickstart.tex new file mode 100644 index 00000000..07c045db --- /dev/null +++ b/docs/manuals/fr/main/old/quickstart.tex @@ -0,0 +1,415 @@ +%% +%% + +\chapter{D\'emarrer avec Bacula} +\label{_ChapterStart37} +\index[general]{Bacula!D\'emarrer avec } +\index[general]{D\'emarrer avec Bacula } + +Si vous \^etes comme moi, vous voulez faire fonctionner Bacula imm\'ediatement +pour en avoir un aper\c{c}u, puis, plus tard, vous reviendrez en arri\`ere +pour lire et conna{\^\i}tre tous les d\'etails. C'est exactement ce que ce +chapitre se propose d'accomplir : vous faire avancer rapidement sans tous les +d\'etails. Si vous voulez sauter la section sur les Pools, Volumes et Labels, +vous pourrez toujours y revenir, mais s'il vous pla\^it, veuillez lire ce +chapitre jusqu'\`a la fin, et en particulier suivre les instructions pour +tester votre lecteur de bandes. + +Nous supposons que vous \^etes parvenus \`a construire et installer Bacula, +sinon, vous devriez d'abord jeter un oeil aux +\ilink{Pr\'erequis (syst\`eme)}{SysReqs} puis au chapitre +\ilink{Compiler et installer Bacula}{_ChapterStart17} de ce manuel. + +\label{JobsandSchedules} +\section{Comprendre les Jobs et Schedules} +\index[general]{Jobs!Comprendre} +\index[general]{Schedules!Comprendre} +\addcontentsline{toc}{section}{Comprendre les Jobs et Schedules} + +Afin de rendre Bacula aussi flexible que possible, les directives lui sont +donn\'ees en plusieurs endroits. L'instruction principale est la ressource Job, +qui d\'efinit un job. Un job de type sauvegarde consiste en g\'en\'eral en un +FileSet, un client, un Schedule pour un ou plusieurs niveaux ou horaires de sauvegardes, +un Pool, ainsi que des instructions additionnelles. Un autre point de vue +est de consid\'erer le FileSet comme "Que sauvegarder ?", le Client comme +"Qui sauvegarder ?", le Schedule comme "Quand sauvegarder ?" et le Pool +comme "O\`u sauvegarder ?" (c'est \`a dire, "Sur quel volume ?) + +Typiquement, une combinaison FileSet/Client aura un job correspondant. La plupart +des directives, telles que les FileSets, Pools, Schedules, peuvent \^etre +m\'elang\'ees et partag\'ees entre les jobs. Ainsi, vous pouvez avoir deux d\'efinitions +(ressources) de jobs sauvegardant diff\'erents serveurs et utilisant les m\^emes +Schedule, FileSet (sauvegardant donc les m\^emes r\'epertoires sur les deux +machines) et peut-\^etre m\^eme les m\^emes Pools. Le Schedule d\'efinira quel +type de sauvegarde sera ex\'ecut\'e et \`a quel moment (par exemple les Full le +mercredi, les incr\'ementales le reste de la semaine), et lorsque plus d'un job +utilise le m\^eme Schedule la priorit\'e du job d\'etermine lequel d\'emarre en premier. +Si vous avez de nombreux jobs, vous devriez utiliser la directive JobDefs, +qui vous permet de d\'efinir des param\`etres par d\'efaut pour vos jobs, qui peuvent \^etre +chang\'es au sein de la ressource Job, mais qui vous \'evitent de r\'e\'ecrire les m\^emes +param\`etres pour chaque job. En plus des FileSets que vous voulez sauvegarder, +vous devriez aussi avoir un job qui sauvegarde votre catalogue. + +Enfin, sachez qu'en plus des jobs de type Backup, vous pouvez aussi utiliser +des jobs de type restore, verify, admin, qui ont chacun des exigences +diff\'erentes. + +\label{PoolsVolsLabels} + +\section{Comprendre les Pools, Volumes et Labels} +\index[general]{Comprendre les Pools, Volumes et Labels } +\index[general]{Labels!Comprendre les Pools Volumes et } +\addcontentsline{toc}{section}{Comprendre les Pools, Volumes et Labels} + +Si vous avez utilis\'e un programme tel que {\bf tar} pour sauvegarder votre +syst\`eme, les notions de Pools, Volumes et labels peuvent vous sembler un peu +confuses au premier abord. Un Volume est un simple support physique +(cartouche, ou simple fichier) sur lequel Bacula \'ecrit vos donn\'ees de +sauvegarde. Les Pools regroupent les Volumes de sorte qu'une sauvegarde n'est +pas restreinte \`a la capacit\'e d'un unique Volume. Par cons\'equent, +plut\^ot que de nommer explicitement les Volumes dans votre Job, vous +sp\'ecifiez un Pool, et Bacula se chargera de s\'electionner le prochain +Volume utilisable du Pool et vous demandera de le monter. + +Bien que les options de base soient sp\'ecifi\'ees dans la ressource Pool du +fichier de configuration du Director, le Pool {\bf r\'eel} est g\'er\'e par le +Catalogue Bacula. Il contient les informations de la ressource Pool +(bacula-dir.conf) ainsi que les informations concernant tous les Volumes qui +ont \'et\'e ajout\'es au Pool. L'ajout de Volumes se fait en principe +manuellement depuis la Console gr\^ace \`a la commande {\bf label}. + +Pour chaque Volume, Bacula g\`ere une quantit\'e d'informations consid\'erable +telles que les premi\`ere et derni\`ere date et heure d'\'ecriture, le nombre +de fichiers sur le Volume, le nombre de bytes sur le Volume, le nombre de +montages, etc. + +Pour que Bacula puisse lire ou \'ecrire sur un Volume physique, celui-ci doit +avoir re\c{c}u un \'etiquettage logiciel afin que Bacula soit assur\'e que le +bon Volume est mont\'e. Ceci s'effectue en principe manuellement depuis la +Console gr\^ace \`a la commande {\bf label}. + +Les \'etapes de cr\'eation de Pool, ajout de Volumes \`a ce Pool, et +\'ecriture d'\'etiquettes logicielles sur les Volumes, peuvent sembler +p\'enibles au premier abord, mais en fait, elles sont tout \`a fait simples +\`a franchir, et elles vous permettent d'utiliser plusieurs Volumes (plut\^ot +que d'\^etre limit\'e \`a la capacit\'e d'un seul). Les Pools vous procurent +aussi une flexibilit\'e importante pour votre politique de sauvegarde. Par +exemple, vous pouvez avoir un Pool de Volumes "Daily" pour vos sauvegardes +Incr\'ementales et un Pool de Volumes "Weekly" pour vos sauvegardes +compl\`etes (Full). En sp\'ecifiant le Pool appropri\'e dans les Jobs de +sauvegarde quotidiens et hebdomadaires, vous garantissez qu'aucun Job +quotidien n'\'ecrira jamais sur un Volume du Pool r\'eserv\'e aux sauvegardes +hebdomadaire et vice versa, et Bacula vous dira quelle cartouche est requise, +et quand. + +Pour plus de d\'etails concernant les Pools, consultez la section +\ilink{Ressource Pool}{PoolResource} du chapitre sur la +configuration du Director, ou poursuivez votre lecture, nous reviendrons plus +tard sur ce sujet. + +\section{Param\'etrage des fichiers de configuration de Bacula} +\label{config} +\index[general]{Param\'etrage des fichiers de configuration de Bacula } +\index[general]{Bacula!Param\'etrage des fichiers de configuration de } +\addcontentsline{toc}{section}{Param\'etrage des fichiers de configuration +de Bacula} + +Apr\`es avoir ex\'ecut\'e la commande {\bf ./configure} {\it ad hoc}, {\bf +make} et {\bf make install}, si c'est la premi\`ere fois que vous ex\'ecutez +Bacula, vous devez cr\'eer des fichiers de configuration valides pour le +Director, le File Daemon, le Storage Daemon et le programme Console. Si vous +avez suivi nos recommandations, des fichiers de configuration par d\'efaut +ainsi que les binaires des {\it daemons} seront situ\'es dans votre +r\'epertoire d'installation. Dans tous les cas les binaires se trouvent dans +le r\'epertoire que vous avez sp\'ecifi\'e au niveau de l'option {\bf +\verb{--{sbindir} de la commande {\bf ./configure}, et les fichiers de configuration +se trouvent dans le r\'epertoire que vous avez sp\'ecifi\'e au niveau de +l'option {\bf \verb{--{sysconfdir}. + +Lors des param\'etrages initiaux de Bacula, il vous faudra investir un peu de +temps pour modifier les fichiers de configuration par d\'efaut afin de +les adapter \`a votre environnement. Ceci peut n\'ecessiter de red\'emarrer +Bacula plusieurs fois jusqu'\`a ce que tout fonctionne correctement. Ne +c\'edez pas au d\'esespoir. Une fois que vous aurez cr\'e\'e vos fichiers de +configuration, vous n'aurez que rarement besoin de les changer et de +red\'emarrer Bacula. Le gros du travail consistera \`a changer la cartouche +quand elle est pleine. + +\subsection{ +\ilink{Configurer le programme Console}{_ChapterStart36}} +\index[general]{Console!Configurer le programme } +\index[general]{Configurer le programme Console } +\addcontentsline{toc}{subsection}{Configurer le programme Console} + +Le programme console est utilis\'e par l'administrateur pour interagir avec le +Director et pour arr\^eter et d\'emarrer manuellement des jobs, ou encore pour +obtenir des informations sur les jobs en cours d'ex\'ecution ou programm\'es. + +Le fichier de configuration de la Console se trouve dans le r\'epertoire que +vous avez sp\'ecifi\'e au niveau de l'option {\bf \verb{--{sysconfdir} de la commande +{\bf ./configure} et par d\'efaut se nomme {\bf console.conf}. + +Si vous avez choisi de construire la Console GNOME avec l'option {\bf +\verb{--{enable-gnome}, vous y trouverez \'egalement son fichier de configuration par +d\'efaut, nomm\'e {\bf gnome-console.conf}. + +Il en va de m\^eme pour la console wxWidgets, qui est construite par l'option +{\bf \verb{--{enable-bwx-console}, et le nom du fichier de configuration par d\'efaut +est, dans ce cas, {\bf bwx-console.conf}. + +Normalement, pour les nouveaux +utilisateurs, aucune modification n'est requise pour ces fichiers. Les +r\'eglages par d\'efaut sont raisonnables. + +\subsection{ +\ilink{Configurer le programme Monitor}{_ChapterStart35}} +\index[general]{Monitor!Configurer le programme } +\index[general]{Configurer le programme Monitor } +\addcontentsline{toc}{subsection}{Configurer le programme Monitor} + +Le programme Monitor est typiquement une ic\^one dans la barre des t\^aches. +Cependant, lorsque l'ic\^one est \'etendue en une fen\`etre, l'administrateur ou +l'utilisateur peut obtenir des informations concernant le Director ou l'\'etat +des sauvegardes sur la machine locale ou n'importe quelle autre {\it daemon} +Bacula configur\'e. + +\includegraphics{./Bacula-tray-monitor.eps} + +L'image montre le tray-monitor configur\'e pour trois {\it daemons}. En +cliquant sur les boutons radio dans le coin en haut \`a gauche de l'image, +vous pouvez voir l'\'etat de chacun des {\it daemons}. L'image montre l'\'etat +du Storage Daemon (MainSD) s\'electionn\'e. + +Le fichier de configuration du Monitor se trouve dans le r\'epertoire +sp\'ecifi\'e au niveau de l'option {\bf \verb{--{sysconfdir} de la commande {\bf +./configure} et se nomme par d\'efaut {\bf tray-monitor.conf}. En principe, +pour les nouveaux utilisateurs, il suffit de changer les permissions de ce +fichier pour permettre aux utilisateurs non-root d'ex\'ecuter le Monitor, en +effet cette application doit \^etre ex\'ecut\'e par le m\^eme utilisateur que +l'environnement graphique (n'oubliez pas de donner aux non-root le droit +d'ex\'ecuter {\bf bacula-tray-monitor}). Ceci ne constitue pas une faille de +s\'ecurit\'e tant que vous utilisez les r\'eglages par d\'efaut. + +\subsection{ +\ilink{Configurer le File Daemon}{_ChapterStart25}} +\index[general]{Configurer le File Daemon } +\index[general]{Daemon!Configurer le File } +\addcontentsline{toc}{subsection}{Configurer le File Daemon} + +Le File Daemon, est le programme qui s'ex\'ecute sur chaque machine cliente. A +la demande du Director, il d\'etermine les fichiers \`a sauvegarder et les +exp\'edie au Storage Daemon. + +Le fichier de configuration du File Daemon se trouve dans le r\'epertoire +sp\'ecifi\'e au niveau de l'option {\bf \verb{--{sysconfdir} de la commande {\bf +./configure} et se nomme par d\'efaut {\bf bacula-fd.conf}. Normalement, pour +les nouveaux utilisateurs, aucune modification n'est requise pour ce fichier. +Les r\'eglages par d\'efaut sont raisonnables. Cependant, si vous envisagez de +sauvegarder plus d'une machine, il vous faudra installer le File Daemon avec +un fichier de configuration sp\'ecifique sur chaque machine \`a sauvegarder. +Les informations concernant chaque File Daemon doivent appara{\^\i}tre dans le +fichier de configuration du Director. + +\subsection{ +\ilink{Configurer le Director}{_ChapterStart40}} +\index[general]{Director!Configurer le } +\index[general]{Configurer le Director } +\addcontentsline{toc}{subsection}{Configurer le Director} + +Le director est le programme central qui contr\^ole tous les autres {\it +daemons}. Il planifie et surveille les jobs \`a ex\'ecuter. + +Le fichier de configuration du Director se trouve dans le r\'epertoire +sp\'ecifi\'e au niveau de l'option {\bf \verb{--{sysconfdir} de la commande {\bf +./configure} et se nomme par d\'efaut {\bf bacula-dir.conf}. + +En g\'en\'eral, la seule modification n\'ecessaire consiste \`a faire en sorte +que la directive {\bf Include} de la Ressource FileSet contienne au moins une +ligne avec un nom de fichier ou de r\'epertoire valide \`a sauvegarder. + +Si vous ne poss\'edez pas de lecteur DLT, vous voudrez probablement modifier +la ressource Storage pour donner un nom plus repr\'esentatif de votre +p\'eriph\'erique de stockage. Vous pouvez toujours utiliser les noms existants +puisque vous \^etes libre de les assigner arbitrairement, mais ils doivent +s'accorder avec les noms correspondants dans le fichier de configuration du +Storage Daemon. + +Vous pouvez aussi changer l'adresse \'electronique pour les notifications vers +votre propre adresse e-mail plut\^ot que vers celle de {\bf root} +(configuration par d\'efaut). + +Enfin, si vous avez plusieurs syst\`emes \`a sauvegarder, il vous faudra +sp\'ecifier un File Daemon (ou client) pour chaque syst\`eme sauvegard\'e, +pr\'ecisant ses nom, adresse et mot de passe. Nous estimons que baptiser vos +{\it daemons} du nom de vos syst\`emes suffix\'es avec {\bf -fd} aide beaucoup +\`a corriger les erreurs. Ainsi, si votre syst\`eme est {\bf foobaz}, vous +nommerez le {\it daemon} {\bf foobaz-fd}. Pour le Director, vous pourriez +utiliser {\bf foobaz-dir}, et {\bf foobaz-sd} pour le Storage Daemon. +Chacun de vos composants de Bacula {\bf doit} avoir un nom unique +Si vous les nommez tous \`a l'identique, en plus de ne jamais savoir +quel {\it daemon} envoie quel message, s'ils partagent le m\^eme r\'epertoire +de travail (working directory), les noms de fichiers temporaires des {\it daemons} +ne seront pas uniques et vous aurez d'\'etranges erreurs. + +\subsection{ +\ilink{Configurer le Storage Daemon}{_ChapterStart31}} +\index[general]{Daemon!Configurer le Storage } +\index[general]{Configurer le Storage Daemon } +\addcontentsline{toc}{subsection}{Configurer le Storage Daemon} + +Le Storage Daemon est responsable, sur demande du Director, de la r\'eception +des donn\'ees en provenance des File Daemons, et de leur \'ecriture sur le +medium de stockage, ou, dans le cas d'une restauration, de trouver les +donn\'ees pour les envoyer vers le File Daemon. + +Le fichier de configuration du Storage Daemon se trouve dans le r\'epertoire +sp\'ecifi\'e au niveau de l'option {\bf \verb{--{sysconfdir} de la commande {\bf +./configure} et se nomme par d\'efaut {\bf bacula-sd.conf}. Modifiez ce +fichier pour accorder les noms de p\'eriph\'eriques de stockage \`a ceux que +vous poss\'edez. Si le processus d'installation a convenablement d\'etect\'e +votre syst\`eme, elles seront d\'ej\`a correctement r\'egl\'ees. Ces +ressources de stockage "Name" et "Media Type" doivent \^etre les m\^emes +que leurs correspondantes du fichier de configuration du Director {\bf +bacula-dir.conf}. Si vous souhaitez sauvegarder vers un fichier plut\^ot que +sur des bandes, la ressource Device doit pointer vers un r\'epertoire o\`u des +fichiers seront cr\'e\'es en guise de Volumes lorque vous \'etiquetterez +(label) vos Volumes. +\label{ConfigTesting} + +\section{Tester vos Fichiers de Configuration} +\index[general]{Configuration!Tester vos Fichiers de } +\index[general]{Tester vos Fichiers de Configuration } +\addcontentsline{toc}{section}{Tester vos Fichiers de Configuration} + +Vous pouvez tester la validit\'e syntaxique de vos fichiers de configuration, +afficher tout message d'erreur et terminer. Par exemple, en supposant que vous +avez install\'e vos binaires et fichiers de configuration dans le m\^eme +r\'epertoire, + +\footnotesize +\begin{verbatim} +cd +./bacula-dir -t -c bacula-dir.conf +./bacula-fd -t -c bacula-fd.conf +./bacula-sd -t -c bacula-sd.conf +./bconsole -t -c bconsole.conf +./gnome-console -t -c gnome-console.conf +./bwx-console -t -c wx-console.conf +su -c "./bacula-tray-monitor -t -c tray-monitor.conf" +\end{verbatim} +\normalsize + +testera le fichier de configuration de chacun des principaux programmes. Si le +fichier de configuration est correct, le programme se termine +sans rien afficher. Veuillez noter que selon les options de configuration que +vous avez choisies, il se peut qu'aucune des commandes ci-dessus ne soit +valable sur votre syst\`eme. Si vous avez install\'e les binaires dans les +r\'epertoires traditionnels d'Unix plut\^ot que dans un simple r\'epertoire, +il vous faudra modifier les commandes ci-dessus en cons\'equence (pas de +"./" devant les commandes, et un chemin devant les fichiers de +configuration). +\label{TapeTesting} + +\section{Tester la compatibilit\'e de Bacula avec votre lecteur de bandes} +\index[general]{Tester la compatibilit\'e de Bacula avec votre lecteur de +bandes } +\index[general]{Bandes!Tester la compatibilit\'e de Bacula avec votre lecteur +de } +\addcontentsline{toc}{section}{Tester la compatibilit\'e de Bacula avec +votre lecteur de bandes} + +Avant de gaspiller votre temps avec Bacula pour finalement constater qu'il ne +fonctionne pas avec votre lecteur de bandes, veuillez s'il vous pla\^it lire le +chapitre +\ilink{btape -- Tester votre lecteur de bandes}{_ChapterStart27} +de ce manuel. Si vous poss\'edez un lecteur standard SCSI moderne sur un Linux +ou un Solaris, fort probablement, il fonctionnera, mais mieux vaut tester que +d'\^etre d\'e\c{c}u. Pour FreeBSD (et probablement les autres xBSD), la +lecture du chapitre mentionn\'e ci-dessus est un devoir. Pour FreeBSD, +consultez aussi +\elink{The FreeBSD Diary}{http://www.freebsddiary.org/bacula.php} pour une +description d\'etaill\'ee de la m\'ethode pour faire fonctionner Bacula sur +votre syst\`eme. De plus, les utilisateurs de versions de FreeBSD +ant\'erieures \`a 4.9-STABLE dat\'ee du lundi 29 d\'ecembre 2003 15:18:01 UTC +qui pr\'evoient d'utiliser des lecteurs de bandes sont invit\'es \`a lire le +fichier {\bf platforms/freebsd/pthreads-fix.txt} du r\'epertoire principal de +Bacula, qui contient d'importantes informations sur la compatibilit\'e de +Bacula avec leur syst\`eme. +\label{notls} + +\section{D\'ebarrassez-vous du r\'epertoire /lib/tls} +\index[general]{D\'ebarrassez-vous du r\'epertoire /lib/tls } +\addcontentsline{toc}{section}{D\'ebarrassez-vous du r\'epertoire /lib/tls} + +La nouvelle librairie pthreads {\bf /lib/tls} install\'ee par d\'efaut sur les +syst\`emes Red Hat r\'ecents (kernels 2.4.x) est d\'efectueuse. Vous devez la +supprimer ou la renommer, puis rebooter votre syst\`eme avant d'ex\'ecuter +Bacula, faute de quoi, apr\`es environ une semaine de fonctionnement, Bacula +se bloquera pour de longues p\'eriodes, voire d\'efinitivement. Veuillez consulter +le chapitre \ilink{Syst\`emes support\'es}{SupportedOSes} pour plus +d'informations sur ce probl\`eme. + +Ce probl\`eme n'existe plus avec les noyaux 2.6. + +\label{Running1} + +\section{Ex\'ecuter Bacula} +\index[general]{Bacula!Ex\'ecuter } +\index[general]{Ex\'ecuter Bacula } +\addcontentsline{toc}{section}{Ex\'ecuter Bacula} + +La partie la plus importante de l'ex\'ecution de Bacula est probablement la +capacit\'e de restaurer les fichiers. Si vous n'avez pas essay\'e de +r\'ecup\'erer des fichiers au moins une fois, vous subirez une bien plus forte +pression le jour o\`u vous devrez r\'eellement le faire, et serez enclin \`a +commettre des erreurs que vous n'auriez pas commises si vous aviez d\'ej\`a +essay\'e. + +Pour avoir rapidement une bonne id\'ee de la fa\c{c}on d'utiliser Bacula, +nous vous recommandons {\bf fortement} de suivre les exemples du +\ilink{chapitre ex\'ecuter Bacula}{_ChapterStart1} de ce manuel, +o\`u vous trouverez des informations d\'etaill\'ees sur l'ex\'ecution de +Bacula. + +\section{Rotation des logs} +\index[general]{Logs!Rotation des } +\index[general]{Rotation des logs } +\addcontentsline{toc}{section}{Rotation des logs} + +Si vous utilisez le {\bf bacula-dir.conf} par d\'efaut ou une variante, vous +constaterez qu'il r\'ecup\`ere toutes les sorties de Bacula dans un fichier. +Pour \'eviter que ce fichier ne croisse sans limites, nous vous recommandons +de copier le fichier {\bf logrotate} depuis {\bf scripts/logrotate} vers {\bf +/etc/logrotate.d/bacula}. Ainsi les fichiers de logs subiront une rotation +mensuelle et seront conserv\'es pour une dur\'ee maximum de cinq mois. Vous +pouvez \'editer ce fichier pour adapter la rotation \`a votre convenance. + +\section{Log Watch} +\index[general]{Watch!Log} +\index[general]{Log Watch} +\addcontentsline{toc}{section}{Log Watch} +Certains syst\`emes tels que RedHat et Fedora ex\'ecutent le programme +logwatch chaque nuit pour analyser vos fichiers de log et vous +envoyer un rapport par mail. Si vous souhaitez inclure la sortie +de vos jobs Bacula dans ce rapport, veuillez regarder dans le r\'epertoire +{\bf scripts/logwatch}. Le fichier {\bf README} fournit une br\`eve +explication sur la fa\c {c}on d'installer le script, et quelle genre +de r\'esultats en attendre. + +\section{Reprise d'activit\'e apr\`es un d\'esastre (disaster recovery)} +\index[general]{Recovery!Reprise d'activit\'e apr\`es un d\'esastre disaster } +\index[general]{Reprise d'activit\'e apr\`es un d\'esastre (disaster recovery) +} +\addcontentsline{toc}{section}{Reprise d'activit\'e apr\`es un d\'esastre +(disaster recovery)} + +Si vous avez l'intention d'utiliser Bacula en tant qu'outil de disaster +recovery plut\^ot que comme un simple programme pour restaurer les fichiers +perdus, vous serez int\'eress\'e par le +\ilink{chapitre Plan de reprise d'activit\'e avec +Bacula}{_ChapterStart38} de ce manuel. + +De toute fa\c{c}on, vous \^etes fortement invit\'e \`a tester soigneusement +la restauration de quelques fichiers que vous aurez pr\'ealablement +sauvegard\'es, plut\^ot que d'attendre qu'un d\'esastre ne frappe. Ainsi, vous +serez pr\'epar\'e. diff --git a/docs/manuals/fr/main/old/security.tex b/docs/manuals/fr/main/old/security.tex new file mode 100644 index 00000000..c800ffc7 --- /dev/null +++ b/docs/manuals/fr/main/old/security.tex @@ -0,0 +1,336 @@ +%% +%% + +\chapter{Consid\'erations sur la s\'ecurit\'e de Bacula} +\label{_ChapterStart14} +\index[general]{Bacula!Consid\'erations sur la s\'ecurit\'e de} +\index[general]{Consid\'erations sur la s\'ecurit\'e de Bacula} +\index[general]{S\'ecurit\'e} + +\begin{itemize} +\item La s\'ecurit\'e, c'est de pouvoir restaurer vos fichiers, aussi, lisez + attentivement le chapitre \ilink{Critical Items Chapter}{Critical} de + ce manuel. +\item Le client ({\bf bacula-fd}) doit \^etre ex\'ecut\'e en tant que root + afin d'avoir l'acc\`es \`a tous les fichiers du syst\`eme. +\item Il n'est pas n\'ecessaire d'ex\'ecuter le Director en tant que root. +\item Il n'est pas n\'ecessaire d'ex\'ecuter le Storage Daemon en tant que + root, mais vous devez vous assurer qu'l peut utiliser le lecteur de bandes, + dont l'acc\`es est presque toujours r\'eserv\'e \`a root par d\'efaut. + De plus, si vous n'ex\'ecutez pas le Storage Daemon en tant que root, il sera + dans l'incapacit\'e de r\'egler automatiquement les param\`etres de votre lecteur + de bandes. En effet, ces fonctions requi\`erent les droits root sur la plupart + des syst\`emes d'exploitation. +\item Vous devriez restreindre l'acc\`es au fichiers de configuration de + Bacula, de sorte que les mots de passe ne soient pas lisibles par tous. Les + {\it daemons} {\bf Bacula} sont prot\'eg\'es par des mots de passe et CRAM-MD5 +(i.e. les mots de passe ne sont pas envoy\'es sur le r\'eseau). Ceci assure +que tout le monde ne peut acc\'eder aux {\it daemons}. C'est une protection +raisonnablement bonne, mais qui peut \^etre craqu\'ee par un expert. +\item Si vous utilisez les ports recommand\'es 9101,9102 et 9103, vous voudrez + probablement prot\'eger ces ports des acc\`es externes \`a l'aide d'un + firewall et/ou en utilisant tcp wrappers ({\bf etc/hosts.allow}). +\item Actuellement, toutes les donn\'ees sont envoy\'ees sur le r\'eseau sans + chiffrement. Par cons\'equent, \`a moins que vous n'utilisiez {\bf ssh} ou {\bf + stunnel} pour la transmission de port (NDT: port forwarding), il n'est pas +recommand\'e de faire des sauvegardes \`a travers un r\'eseau non +s\'ecuris\'e (par exemple, Internet). Nous pr\'evoyons d'int\'egrer le +chiffrage {\bf ssl} dans une version future. +\item Vous devriez vous assurer que seuls les {\it daemons} de Bacula ont + acc\`es en lecture et \'ecriture aux r\'epertoires de travail de Bacula. +\item Si vous utilisez {\bf MySQL}, il n'est pas n\'ecessaire de l'ex\'ecuter + en tant que root +\item Le script par d\'efaut de Bacula {\bf grant-mysql-permissions} accorde + toutes les permissions d'utilisation de la base de donn\'ees MySQL sans mot + de passe. Si vous voulez la s\'ecurit\'e, affinez ceci ! +\item N'oubliez pas que Bacula est un programme r\'eseau, ainsi quiconque sur + le r\'eseau dispose du programme console et du mot de passe du Director peut + acc\'eder \`a Bacula et aux donn\'ees sauvegard\'ees. +\item Vous pouvez restreindre les adresses IP avec auxquelles Bacula se + connectera en utilisant les enregistrements appropri\'es {\bf DirAddress}, + {\bf FDAddress}, ou {\bf SDAddress} dans les fichiers de configurations +respectifs des {\it daemons} +\item Soyez conscient que si vous sauvegardez votre catalogue avec le script + par d\'efaut, et si l'acc\`es \`a votre catalogue est prot\'eg\'e par un mot de passe, + ce dernier est transmis en tant qu'option de ligne de commande \`a ce script, + ce qui le rend visible \`a tout utilisateur du syst\`eme. Si vous voulez + s\'ecuriser ce point, vous devez le passer via une variable d'environnement + ou un fichier s\'ecuris\'e. +\end{itemize} + +\section{Compatibilit\'e ascendante} +\index[general]{Compatibilit\'e ascendante} +\addcontentsline{toc}{section}{Compatibilit\'e ascendante} +L'un des principaux objectifs de Bacula est de garantir que vous pouvez +restaurer depuis des cartouches (ou depuis des volumes disque) \'ecrites des ann\'ees +auparavant. Ceci implique que chaque nouvelle version de Bacula devrait \^etre +capable de relire les anciens formats de cartouches. Le premier probl\`eme est de +s'assurer que le mat\'eriel fonctionne encore malgr\'e les ann\'ees, et que les supports +sont encore valides. Ensuite, votre syst\`eme d'exploitation doit \^etre capable +de s'interfacer avec le p\'eriph\'erique et finalement, Bacula doit \^etre capable +de reconna\^itre les anciens formats. De tous ces probl\`emes, nous ne pouvons +prendre en charge que le dernier, pour les autres, vous devez vous pr\'eparer +consciencieusement. + +Depuis les tous premiers stades de Bacula (janvier 2000) jusqu'\`a aujourd'hui +(D\'ecembre 2005), Bacula a connu deux formats majeurs d'\'ecriture sur les +cartouches. Le second format a \'et\'e introduit dans la version 1.27 en +novembre 2002, et n'a pas chang\'e depuis. En principe, Bacula devrait encore pouvoir +lire le format d'origine, mais j'avoue ne pas avoir essay\'e depuis longtemps... + +Bien que le format des cartouches soit fix\'e, les types de donn\'ees qui peuvent \^etre +\'ecrites sur les cartouches sont extensibles, ce qui nous a permis d'ajouter de +nouvelles fonctionnalit\'es telles que les ACLs, les donn\'ees Win32, les donn\'ees +chiffr\'ees... Naturellement, une ancienne version de Bacula ne saurait lire des +nouveaux flux de donn\'ees, mais chaque nouvelle version de Bacula est en principe +capable de lire les anciens flux. + +Si vous voulez \^etre absolument certain de pouvoir lire vos vieilles cartouches, +vous devriez : + +1. Essayer de lire les vieilles cartouches de temps en temps, une fois par an +par exemple. + +2. Conserver une copie statiquement li\'ee de chaque version de Bacula que vous +avez utilis\'ee en production. Ainsi, si pour quelque raison nous venions \`a +abandonner la compatibilit\'e avec les anciens formats de cartouches, vous pourriez +toujours remettre en service une vieille copie de Bacula... + +Le second point est probablement excessif, en toute rigueur, il pourrait vous +sauver un jour. + +\label{wrappers} + +\section{Configurer et tester TCP Wrappers} +\index[general]{Configurer et tester TCP Wrappers} +\index[general]{Bacula!Configurer et tester TCP Wrappers} +\index[general]{TCP Wrappers} +\index[general]{Wrappers!TCP} +\index[general]{libwrappers} +\addcontentsline{toc}{section}{Configurer et tester TCP Wrappers} + +Les TCP Wrappers sont impl\'ement\'es si vous les activez lors de la +configuration ({\bf ./configure \verb{:--:{with-tcp-wrappers}). Avec ce code activ\'e, vous +pourrez contr\^oler qui peut acc\'eder \`a vos {\it daemons}. Ce contr\^ole +est obtenu par la modification du fichier {\bf /etc/hosts.allow}. Le nom de +programme qu'utilise {\bf Bacula} pour appliquer ces restrictions est celui +que vous avez sp\'ecifi\'e dans le fichier de configuration du {\it daemon}. +Vous ne devez pas utiliser l'option {\bf twist} dans votre {\bf +/etc/hosts.allow} car elle stopperait les {\it daemons} Bacula lorsqu'une +connection est refus\'ee. + +Le nom exact du paquet requis pour compiler avec le support TCP wrappers +d\'epend du syst\`eme. Il s'agit, par exemple, de tcpd-devel sur SuSE, et de +tcp\_wrappers sur RedHat. + +Dan Langille a fourni les informations suivantes concernant la configuration +et les tests de TCP Wrappers avec Bacula. + +Si vous lisez hosts\_options(5), vous verrez une option nomm\'ee twist. Cette +option remplace le processus courant par une instance de la commande shell +sp\'ecifi\'ee. Voici un exemple typique de son utilisation : + +\footnotesize +\begin{verbatim} +ALL : ALL \ + : severity auth.info \ + : twist /bin/echo "Vous n'\^etes pas autoris\'e \`a utiliser %d depuis %h." +\end{verbatim} +\normalsize + +\label{question-1} +Le code libwrap tente d'\'eviter {\bf twist} s'il est +ex\'ecut\'e dans un processus r\'esident. Il en r\'esulte que le processus (e.g. +bacula-fd, bacula-sd, bacula-dir) sera stopp\'e si la premi\`ere connection +\`a son port provoque l'invocation de l'option twist. Le risque est qu'une +attaque provoque l'arr\^et des {\it daemons}. Cette situation est \'evit\'ee si votre +fichier /etc/hosts.allow contient un jeu de r\`egles appropri\'e. L'exemple +suivant est suffisant : + +\footnotesize +\begin{verbatim} +undef-fd : localhost : allow +undef-sd : localhost : allow +undef-dir : localhost : allow +undef-fd : ALL : deny +undef-sd : ALL : deny +undef-dir : ALL : deny +\end{verbatim} +\normalsize + +Vous devez accorder les noms des {\it daemons} \`a ceux sp\'ecifi\'es dans leurs +fichiers de configuration respectifs. Ce ne sont, en g\'en\'eral, pas les noms +des fichiers binaires des {\it daemons}. Il n'est pas possible d'utiliser +les noms des binaires car plusieurs {\it daemons} peuvent \^etre ex\'ecut\'es +sur une machine avec des fichiers de configuration distincts. + +Dans ces exemples, le Director est undef-dir, le +Storage Daemon est undef-sd, et le File Daemon est undef-fd. Ajustez ces noms pour +qu'ils conviennent \`a votre configuration. L'exemple de r\`egles ci-dessus suppose que +SD, FD et DIR sont tous sur la m\^eme machine. Si vous avez un client FD +distant, il vous suffira de placer le jeu de r\`egles suivant sur ce client : + +\footnotesize +\begin{verbatim} +undef-fd : director.example.org : allow +undef-fd : ALL : deny +\end{verbatim} +\normalsize + +O\`u director.example.org est l'h\^ote qui contactera le client (i.e. la +machine sur laquelle le Bacula Director tourne). L'usage de "ALL : deny" +assure que l'option twist (si pr\'esente) n'est pas invoqu\'ee. Pour tester +correctement votre configuration, d\'emarrez le(s) {\it daemon(s)}, puis +essayez de vous y connecter depuis une adresse IP qui devrait \^etre capable +de le faire. Vous devriez voir quelque chose comme : + +\footnotesize +\begin{verbatim} +$ telnet undef 9103 +Trying 192.168.0.56... +Connected to undef.example.org. +Escape character is '^]'. +Connection closed by foreign host. +$ +\end{verbatim} +\normalsize + +C'est la r\'eponse correcte. Si vous voyez ceci : + +\footnotesize +\begin{verbatim} +$ telnet undef 9103 +Trying 192.168.0.56... +Connected to undef.example.org. +Escape character is '^]'. +You are not welcome to use undef-sd from xeon.example.org. +Connection closed by foreign host. +$ +\end{verbatim} +\normalsize + +Alors, twist a \'et\'e invoqu\'ee, et votre configuration est incorrecte. vous +devez ajouter la directive "deny". Il est important de noter que vos tests +doivent inclure le red\'emarrage des {\it daemons} apr\`es chaque tentative de +connexion. Vous pouvez aussi tcpdchk(8) et tcpdmatch(8) pour valider jeu de +r\`egles /etc/hosts.allow. Voici un test simple avec tcpdmatch : + +\footnotesize +\begin{verbatim} +$ tcpdmatch undef-dir xeon.example.org +warning: undef-dir: no such process name in /etc/inetd.conf +client: hostname xeon.example.org +client: address 192.168.0.18 +server: process undef-dir +matched: /etc/hosts.allow line 40 +option: allow +access: granted +\end{verbatim} +\normalsize + +Si vous ex\'ecutez Bacula en tant que {\it standalone daemon}, les +avertissements ci-dessus peuvent \^etre ignor\'es sans scrupules. Voici un +exemple qui r\'ev\`ele que "deny" fait defaut \`a vos r\`egles, et que +l'option twist a \'et\'e invoqu\'ee. + +\footnotesize +\begin{verbatim} +$ tcpdmatch undef-dir 10.0.0.1 +warning: undef-dir: no such process name in /etc/inetd.conf +client: address 10.0.0.1 +server: process undef-dir +matched: /etc/hosts.allow line 91 +option: severity auth.info +option: twist /bin/echo "You are not welcome to use + undef-dir from 10.0.0.1." +access: delegated +\end{verbatim} +\normalsize + +\section{Ex\'ecuter Bacula sans \^etre root} +\index[general]{Root!Ex\'ecuter Bacula sans \^etre } +\index[general]{Ex\'ecuter Bacula sans \^etre root } +\addcontentsline{toc}{section}{Ex\'ecuter Bacula sans \^etre root} + +Voici quelques recommandations de Dan Languille : + +C'est une bonne id\'ee d'ex\'ecuter vos {\it daemons} avec des privil\`eges +aussi faibles que possible. En d'autres termes, si vous pouvez, n'ex\'ecutez +pas d'applications en tant que root si elle n'ont pas besoin d'\^etre +ex\'ecut\'ees en tant que root. Le Storage Daemon et le Director Daemon n'ont +pas besoin d'\^etre ex\'ecut\'es en tant que root. Le File Daemon en a besoin +pour acc\'eder \`a l'ensemble des fichiers du syst\`eme. Pour vous passer des +privil\`eges root, il vous faut cr\'eer un utilisateur et un groupe. Choisir +{\tt bacula} pour l'un et l'autre me semble une bonne id\'ee. + +Le port FreeBSD cr\'ee cet utilisateur et ce groupe pour vous. (En fait, au +moment ou j'\'ecris ces lignes, ce n'est pas encore le cas, mais \c{c}a le +sera bient\^ot). Voici \`a quoi ressemblent ces entr\'ees sur mon portable +FreeBSD : + +\footnotesize +\begin{verbatim} +bacula:*:1002:1002::0:0:Bacul Daemon:/var/db/bacula:/sbin/nologin +\end{verbatim} +\normalsize + +J'ai utilis\'e vipw pour cr\'eer ces entr\'ees. J'ai utilis\'e un User ID et +un Group ID disponibles sur mon syst\`eme : 1002. + +J'ai aussi cr\'e\'e un groupe dans /etc/group: + +\footnotesize +\begin{verbatim} +bacula:*:1002: +\end{verbatim} +\normalsize + +L'utilisateur bacula, contrairement au {\it daemon} Bacula, aura un +r\'epertoire d\'edi\'e (home directory) : {\tt /var/db/bacula} qui est le +r\'epertoire standard pour le catalogue de Bacula. + +A pr\'esent, vous avez un utilisateur et un groupe bacula, et vous pouvez +s\'ecuriser le r\'epertoire d\'edi\'e de bacula en utilisant cette commande : + +\footnotesize +\begin{verbatim} +chown -R bacula:bacula /var/db/bacula/ +\end{verbatim} +\normalsize + +Celle-ci assure que seul l'utilisateur bacula peut acc\'eder \`a ce +r\'epertoire. Elle signifie aussi que si nous ex\'ecutons le Director et le +Storage Daemon en tant que bacula, ces {\it daemons} auront aussi des acc\`es +restreints. Ce ne serait pas le cas s'ils \'etaient ex\'ecut\'es en tant que +root. + +Il est important de noter que le Storage Daemon a vraiment besoin +d'appartenir au groupe operator pour un acc\`es normal aux lecteurs de bandes. +(au moins sur FreeBSD, c'est ainsi que les choses sont configur\'ees par +d\'efaut). De tels p\'eriph\'eriques sont en principe attribu\'es \`a +root:operator. Il est plus facile et moins dangereux de faire de bacula un +membre de ce groupe que de jouer avec les permissions du syst\`eme. + +D\'emarrer les {\it daemons} bacula + +Pour d\'emarrer les {\it daemons} bacula sur FreeBSD, utilisez la commande : + +\footnotesize +\begin{verbatim} +/usr/local/etc/rc.d/bacula.sh start +\end{verbatim} +\normalsize + +Pour vous assurer que tous fonctionnent : + +\footnotesize +\begin{verbatim} +$ ps auwx | grep bacula +root\ 63416\ 0.0\ 0.3\ 2040 1172\ ??\ Ss\ 4:09PM 0:00.01 + /usr/local/sbin/bacula-sd -v -c /usr/local/etc/bacula-sd.conf +root\ 63418\ 0.0\ 0.3\ 1856 1036\ ??\ Ss\ 4:09PM 0:00.00 + /usr/local/sbin/bacula-fd -v -c /usr/local/etc/bacula-fd.conf +root\ 63422\ 0.0\ 0.4\ 2360 1440\ ??\ Ss\ 4:09PM 0:00.00 + /usr/local/sbin/bacula-dir -v -c /usr/local/etc/bacula-dir.conf +\end{verbatim} +\normalsize diff --git a/docs/manuals/fr/main/old/storedconf.tex b/docs/manuals/fr/main/old/storedconf.tex new file mode 100644 index 00000000..3bd46486 --- /dev/null +++ b/docs/manuals/fr/main/old/storedconf.tex @@ -0,0 +1,1269 @@ +%% +%% + +\chapter{Configuration du Storage Daemon} +\label{_ChapterStart31} +\index[general]{Configuration du Storage Daemon} +\index[general]{Configuration!Storage Daemon} + +\section{General} +\index[general]{General} +\addcontentsline{toc}{section}{General} +Le fichier de configuration du Storage Daemon a relativement peu de d\'efinitions +de resources. Cependant, en raison du nombre pl\'ethorique de media et de syst\`emes, +il doit \^etre hautement param\'etrable. Par cons\'equent, il existe un nombre assez important +de directives dans la d\'efinition de ressource Devices qui vous permettent de d\'efinir +toutes les caract\'eristiques de votre p\'eriph\'erique de stockage. Heureusement, avec les +mat\'eriels modernes, les valeurs par d\'efaut sont g\'en\'eralement suffisantes, et tr\`es +peu de directives sont r\'eellement indispensables. + +Des exemples de directives de ressources device connues pour fonctionner pour +beaucoup de lecteurs de bandes communs peuvent \^etre trouv\'es dans le r\'epertoire : +\lt{}bacula-src\gt{}/examples/devices. La plupart seront \'enum\'er\'es ici. + +Pour une discussion g\'en\'erale concernant les fichiers de configuration de Bacula, +les ressources et les types de donn\'ees reconnus, veuillez consulter le +chapitre \ilink{Configuration}{_ChapterStart16} de ce manuel. Les d\'efinitions de +ressources Storage suivantes doivent \^etre d\'efinies : + +\begin{itemize} +\item + \ilink{Storage}{StorageResource} -- Pour d\'efinir le nom du Storage Daemon. +\item + \ilink{Director}{DirectorResource1} -- Pour d\'efinir le nom du Director et le mot + de passe permettant d'y acc\'eder. +\item + \ilink{Device}{DeviceResource} -- Pour d\'efinir les caract\'eristiques de votre + p\'eriph\'erique de stockage. +\item + \ilink{Messages}{_ChapterStart15} -- Pour d\'efinir o\`u les messages d'erreurs + et d'information doivent \^etre exp\'edi\'es. +\end{itemize} + +\section{Ressource Storage} +\label{StorageResource} +\index[general]{Ressource!Storage} +\index[general]{Ressource Sorage} +\addcontentsline{toc}{section}{Ressource Storage} + +En g\'en\'eral, les propri\'et\'es sp\'ecifi\'ees au niveau de la ressource Storage d\'efinissent +des propri\'et\'es globales du Storage Daemon. Chaque fichier de configuration de +Storage Daemon doit avoir sa propre d\'efinition de ressource Storage. + +\begin{description} + +\item [Name = \lt{}Storage-Daemon-Name\gt{}] + \index[sd]{Name} + \index[sd]{Directive!Name} + Sp\'ecifie le nom du Storage Daemon. Cette directive est requise. +\item [Working Directory = \lt{}R\'epertoire\gt{}] + \index[sd]{Working Directory} + \index[sd]{Directive!Working Directory} + Cette directive sp\'ecifie un r\'epertoire o\`u le Storage Daemon peut placer ses fichiers + d'\'etat. Ce r\'epertoire ne devrait \^etre utilis\'e que par Bacula, mais peut \^etre + partag\'e par d'autres daemons Bacula, pourvu que les noms donn\'es \`a chaque daemon + soient uniques. Cette directive est requise. + +\item [Pid Directory = \lt{}R\'epertoire\gt{}] + \index[sd]{Pid Directory} + \index[sd]{Directive!Pid Directory} + Cette directive sp\'ecifie un r\'epertoire o\`u le Storage Daemon peut d\'eposer son fichier +d'Id de processus. Ce fichier est utilis\'e pour stopper Bacula et pr\'evenir l'ex\'ecution +simultan\'ee de plusieurs copies de Bacula. Les substitutions shell standard sont +effectu\'ees \`a la lecture du fichier de configuration, de sorte que des valeurs +telles que {\bf \$HOME} seront correctement substitu\'ees. + +Typiquement, sur les syst\`emes Linux, vous utiliserez ici {\bf /var/run}. Si vous +n'installez pas Bacula dans les r\'epertoires syst\`eme, vous pouvez utiliser le +r\'epertoire de travail {\bf Working Directory} d\'efini plus haut. +Cette directive est requise. + +\item [Heartbeat Interval = \lt{}P\'eriode\gt{}] + \index[sd]{Heartbeat Interval} + \index[sd]{Directive!Heartbeat Interval} + \index[general]{Heartbeat Interval} + \index[general]{Broken pipe} + Cette directive d\'efinit la p\'eriode des pulsations \'emises par le Storage Daemon + vers le File Daemon lorqu'il (le SD) se trouve en situation d'attente du montage + d'une cartouche par l'op\'erateur. La valeur par d\'efaut est z\'ero, ce qui d\'esactive + les pulsations. Cette fonctionnalit\'e est particuli\`erement utile si vous avez un + routeur (tel que les 3Com) qui ne suit pas les standards Internet et expire une + connection valide apr\`es une courte dur\'ee, bien que {\it keepalive} soit activ\'e. + Ceci produit habituellement un message d'erreur du type {\it broken pipe}. + +\item [Maximum Concurrent Jobs = \lt{}nombre\gt{}] + \index[sd]{Maximum Concurrent Jobs} + \index[sd]{Directive!Maximum Concurrent Jobs} + O\`u \lt{}nombre\gt{} est nombre maximal de jobs qui peuvent \^etre ex\'ecut\'es + simultan\'ement. La valeur par d\'efaut est fix\'ee \`a 10, mais vous pouvez d\'efinir + une valeur plus grande. Chaque connexion depuis le Director (par exemple + une requ\^ete de statut, le lancement d'un job...) est consid\'er\'ee comme un job, + aussi, si vous voulez conserver la possibilit\'e d'utiliser la commande + {\bf status} dans la console alors qu'un job est en cours d'ex\'ecution, vous + devez utiliser une valeur strictement sup\'erieure \`a 1. Pour ex\'ecuter plusieurs + jobs simultan\'ement, vous devez param\'etrer plusieurs autres directives dans le + fichier de configuration du Director. Selon ce que vous voulez faire, il faudra + intervenir sur l'un ou l'autre param\`etre, mais vous devrez presque surement + r\'egler le param\`etre {\bf Maximum Concurrent Jobs} de la ressource Storage du + fichier de configuration du Director, et peut-\^etre aussi ceux des ressources + Job et Client. + +\item [SDAddresses = \lt{}Adresse IP\gt{}] + \index[sd]{SDAddresses} + \index[sd]{Directive!SDAddresses} + Pr\'ecise les ports et adresses sur lesquels le Storage Daemon est \`a + l'\'ecoute de connections du Director. En principe, les valeurs par d\'efaut sont + suffisantes, et vous n'avez pas besoin d'utiliser cette directive. La meilleure + explication du fonctionnement de cette directive est certainement un exemple : + +\footnotesize +\begin{verbatim} + SDAddresses = { 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 + } +} +\end{verbatim} +\normalsize + +o\`u "ip", "ip4", "ip6", "addr", et "port" sont des mots-clef. Notez que les adresses +peuvent \^etre sp\'ecifi\'ees sous forme de quadruplets point\'es, de nom symboliques +(uniquement dans la sp\'ecification "ip") ou en notation IPv6 \`a double points. Le port +peut quand \`a lui \^etre sp\'ecifi\'e par son num\'ero, ou par sa valeur mn\'emonique du +fichier /etc/services. Si un port n'est pas sp\'ecifi\'e, la valeur par d\'efaut est +utilis\'ee. Si une section ip est sp\'ecifi\'ee, la r\'esolution peut \^etre r\'ealis\'ee +par ipv4 ou ipv6. En revanche, si ip4 ou ip6 est sp\'ecifi\'ee, seule la r\'esolution +correspondante fonctionne. + +Vous pouvez, avec ces directives, remplacer les valeurs des directives SDPort et +SDAddress montr\'ees ci-dessous. + +\item [SDPort = \lt{}Num\'ero de port\gt{}] + \index[sd]{SDPort} + \index[sd]{Directive!SDPort} + Sp\'ecifie le num\'ero de port sur lequel le Storage Daemon \'ecoute les connexions + en provenance du Director. La valeur par d\'efaut est 9103. + +\item [SDAddress = \lt{}Adresse IP\gt{}] + \index[sd]{SDAddress} + \index[sd]{Directive!SDAddress} + Cette directive est optionnelle. Lorsqu'elle est sp\'ecifi\'ee, le Storage Daemon n'accepte + de connections (de Director(s) ou de File(s) Daemon(s)) que de l'adresse sp\'ecifi\'ee + {\bf Adresse-IP}, qui peut \^etre + soit un nom de domaine, soit une adresse IP au format quadruplet point\'e. + Si cette directive n'est pas sp\'ecifi\'ee, le Storage Daemon acceptera des connections de + de toute adresse valide. + +\end{description} + +Voici une d\'efinition typique d'une ressource Storage du Storage Daemon : + + +\footnotesize +\begin{verbatim} +# +# "Global" Storage daemon configuration specifications appear +# under the Storage resource. +# +Storage { + Name = "Storage daemon" + Address = localhost + WorkingDirectory = "~/bacula/working" + Pid Directory = "~/bacula/working" +} +\end{verbatim} +\normalsize + +\section{La ressource Director} +\label{DirectorResource1} +\index[general]{Ressource Director} +\index[general]{Resource!Director} +\addcontentsline{toc}{section}{La ressource Director} + +La ressource Director sp\'ecifie le nom du Director qui est autoris\'e +\`a utiliser les services du Storage Daemon. Il peut exister plusieurs +ressources Director. Le nom et le mot de passe du Director doivent +s'accorder avec leurs homologues dans le fichier de configuration +du Storage Daemon. + +\begin{description} + +\item [Name = \lt{}Nom-du-Director\gt{}] + \index[sd]{Name} + \index[sd]{Directive!Name} + Sp\'ecifie le nom du Director autoris\'e \`a se connecter au Storage Daemon. + Cette directive est requise. + +\item [Password = \lt{}Mot-de-passe-du-Director\gt{}] + \index[sd]{Password} + \index[sd]{Directive!Password} + Sp\'ecifie le mot de passe qui doit \^etre soumis par le Director susnomm\'e. + Cette directive est requise. + +\item [Monitor = \lt{}yes|no\gt{}] + \index[sd]{Monitor} + \index[sd]{Directive!Monitor} + Si cette directive est d\'esactiv\'ee ({\bf no}), ce qui est le cas par d\'efaut, + ce Director dispose d'un acc\`es illimit\'e \`a ce Storage Daemon. Dans le cas + contraire, ce Director est brid\'e de fa\c {c}on \`a pouvoir seulement r\'ecup\'erer le + statut courant de ce Storage Daemon. + + Si ce Director est utilis\'e par un superviseur, nous vous recommandons + fortement d'activer cette directive pour \'eviter de s\'erieux probl\`emes de + s\'ecurit\'e. + +\end{description} + +Voici un exemple d'une d\'efinition de ressource Director valide : + +\footnotesize +\begin{verbatim} +Director { + Name = MainDirector + Password = my_secret_password +} +\end{verbatim} +\normalsize + +\label{DeviceResource} +\section{La Ressource Device} +\index[general]{Resource!Device} +\index[general]{Ressource Device} +\addcontentsline{toc}{section}{Ressource Device} + +La ressource Device sp\'ecifie les d\'etails de chaque p\'eriph\'erique (en g\'en\'eral, +un lecteur de bandes) qui peut \^etre utilis\'e par le Storage Daemon. Un +Storage Daemon peut disposer de plusieurs ressources Device. En g\'en\'eral, +les propri\'et\'es sp\'ecifi\'ees dans la ressource Device sont sp\'ecifiques +au p\'eriph\'erique. + +\begin{description} + +\item [Name = {\it Nom-de-p\'eriph\'erique}] + \index[sd]{Name} + \index[sd]{Directive!Name} + Sp\'ecifie le nom que le Director devra utiliser pour d\'esigner ce p\'eriph\'erique. + Il s'agit d'un nom logique, c'est une cha\^ine qui peut comporter jusqu'\`a 127 + caract\`eres. C'est en g\'en\'eral une bonne id\'ee d'utiliser un nom qui corresponde + au nom "humain" du p\'eriph\'erique (NDT: la vo dit "the english name"). Le nom + physique du p\'eriph\'erique est sp\'ecifi\'e au niveau de la directive {\bf Archive Device} + d\'ecrite ci-dessous. Le nom que vous sp\'ecifiez ici est aussi utilis\'e dans le + fichier de configuration de votre Director au niveau de la + \ilink{directive Device}{StorageResource2} de sa ressource Storage. + +\item [Archive Device = {\it cha\^ine-nom}] + \index[sd]{Archive Device} + \index[sd]{Directive!Archive Device} + La {\bf cha\^ine-nom} (NDT : name-string dans la vo) sp\'ecifie le nom de fichier syst\`eme + du p\'eriph\'erique de stockage g\'er\'e par ce daemon. Il s'agit en g\'en\'eral d'un nom + de p\'eriph\'erique amovible, par exemple un lecteur de bande d\'esign\'e par "{\bf /dev/nst0}" + ou "{\bf /dev/rmt/0mbn}". Dans le cas d'un graveur de DVD, ce sera par exemple + {\bf /dev/hdc}. Ce peut \^etre aussi un un nom de r\'epertoire si vous sauvegardez + sur disque. Dans ce cas, vous devez soumettre le chemin absolu vers ce + r\'epertoire. Lorsque vous utilisez un lecteur de bandes, il est pr\'ef\'erable + d'utiliser la variante "non-rewind" du fichier de p\'eriph\'erique. De plus, sur les + syst\`emes tels que Sun, qui disposent de plusieurs m\'ethodes d'acc\`es aux cartouches, + prenez soin de sp\'ecifier l'usage de la convention I/O Berkeley avec les p\'eriph\'eriques. + le {\bf b} de la sp\'ecification {\bf /dev/rmt/0mbn} Solaris (Sun) est ce qui est + requis dans ce cas. Bacula ne supporte pas le comportement SysV des lecteurs de bandes. + + Comme mentionn\'e plus haut,Archive Device est, en principe, le nom d'un lecteur de bandes, + mais vous pouvez tout aussi bien sp\'ecifier le chemin absolu vers un r\'epertoire + existant. Dans ce cas, Bacula utilisera un fichier pour stocker les donn\'ees dans + le r\'epertoire sp\'ecifi\'e, le nom de fichier utilis\'e sera celui du volume tel que + sp\'ecifi\'e dans le catalogue. Si vous souhaitez \'ecrire dans plusieurs r\'epertoires + (dans le but de r\'epartir la charge sur plusieurs disques), vous devez d\'efinir deux ressources + Device, chacune comportant une Archive Device avec un r\'epertoire diff\'erent. + + Une troisi\`eme possibilit\'e consiste \`a sp\'ecifier le nom d'un FIFO. Un FIFO est un + fichier sp\'ecial qui connecte deux programmes via la m\'emoire du noyau. Si vous + sp\'ecifiez un FIFO en guise d'Archive Device, vous devez avoir un programme qui + lit ce que Bacula \'ecrit dans le FIFO. Lorsque le Storage Daemon d\'emarre le job, + il attend que le programme lecteur commence \`a lire pendant un d\'elai maximal de + de {\bf MaximumOpenWait} secondes, au del\`a duquel le job est termin\'e. Par cons\'equent, + il est pr\'ef\'erable de lancer le programme lecteur au d\'ebut du job, par exemple + gr\^ace \`a la directive {\bf RunBeforeJob}. Pour ce type de p\'eriph\'erique, vous ne devez + jamais sp\'ecifier {\bf AlwaysOpen}, puisque vous voulez que le Storage Daemon + ne l'ouvre que lorsqu'un job d\'emarre, aussi veuillez attribuer explicitement + la valeur {\bf No} \`a cette directive. Puisqu'un FIFO est un p\'eriph\'erique \`a sens + unique, Bacula ne tente pas d'en lire le label, il se contente d'y \'ecrire. Pour + cr\'eer un volume FIFO dans le catalogue, utilisez la commande {\bf add} plut\^ot + que la commande {\bf label} afin d'\'eviter de tenter d'\'ecrire un label. + + Lors d'une op\'eration de restauration, si l'Archive Device est un FIFO, Bacula + tente de lire le FIFO, aussi vous devez avoir un programme externe qui \'ecrit dans + le FIFO. Bacula attend que ce programme commence \`a \'ecrire pendant un d\'elai + maximal de {\bf MaximumOpenWait} secondes apr\`es quoi il termine le job. Comme + mentionn\'e ci-dessus, vous pouvez utiliser la directive {\bf RunBeforeJob} pour + lancer ce programme auteur d\`es le d\'ebut du job. + + La directive Archive Device est requise. + +\item [Device Type = {\it Sp\'ecification-de-type}] + \index[sd]{Device Type} + \index[sd]{Directive!Device Type} + La sp\'ecification Device Type de d\'eclarer explicitement \`a Bacula quel type + de p\'eriph\'erique vous d\'efinissez. La valeur de {\it Sp\'ecification-de-type} peut + \^etre l'une des suivantes : + \begin{description} + \item [File] + Indique \`a Bacula que le p\'eriph\'erique est un fichier. Ce peut \^etre + un fichier d\'efini sur un m\'edium fixe ou au contraire amovible (par exemple, un + p\'eriph\'erique USB). Tous les fichiers doivent \^etre des p\'eriph\'eriques en acc\`es + s\'electif (NDT : traduction Google sans doute \`a revoir de "random access") + \item[tape] + Indique \`a Bacula que le p\'eriph\'erique est un lecteur de bandes, donc \`a + acc\`es s\'equentiel. Ces p\'eriph\'eriques sont control\'e par les appels + ioctl(). + \item[Fifo] + Indique \`a Bacula que le p\'eriph\'erique est un p\'eriph\'erique \`a acc\`es + s\'equentiel "first-in-first-out" (premier entr\'e, premier sorti) en + lecture seule ou en \'ecriture seule. + \item[DVD] + Indique \`a Bacula que le p\'eriph\'erique est un DVD. Les DVDs sont \`a acc\`es + s\'equentiel en \'ecriture et \`a acc\`es s\'electif (NDT : traduction Google sans + doute \`a revoir de "random access") en lecture. + \end{description} + + La directive Device Type n'est pas requise, et si elle n'est pas sp\'ecifi\'ee, + Bacula tentera de deviner cette information selon la sp\'ecification Archive + Device fournie. Il existe plusieurs avantages \`a sp\'ecifier explicitement + le type de p\'eriph\'erique. D'abord, sur certains syst\`emes, les p\'eriph\'eriques + bloc et caract\`ere ont le m\^eme type, ce qui signifie que sur ces syst\`emes, + Bacula est probablement incapable de deviner qu'un p\'eriph\'erique est un DVD. + Ensuite, si vous sp\'ecifiez explicitement le type de p\'eriph\'erique, le point de + montage n'a pas besoin d'\^etre d\'efini jusqu'\`a ce que le p\'eriph\'erique soit ouvert. + C'est le cas de la plupart des p\'eriph\'eriques amovibles tels que les USB mont\'es + par le daemon HAL. Au contraire, si le type de p\'eriph\'erique n'est pas + sp\'ecifi\'e explicitement, le point de montage doit exister d\`es le + d\'emarrage du Storage Daemon. + + Cette directive est apparue avec la version 1.38.6 de Bacula. + +\item [Media Type = {\it name-string}] + \index[sd]{Media Type} + \index[sd]{Directive!Media Type} + La cha\^ine {\bf name-string} sp\'ecifi\'ee baptise le type de m\'edia support\'e par + ce p\'eriph\'erique, par exemple, "DLT7000". Les noms de type de m\'edia sont + arbitraires, vous pouvez utiliser le nom de votre choix, mais ils doivent + \^etre connus du catalogue pour qu'il puisse garder trace de quel daemon + peut lire quel type de m\'edia. En g\'en\'eral, chaque type de stockage devrait + avoir un type de m\'edia unique associ\'e. Le m\^eme nom {\bf name-string} doit + appara\^itre dans la d\'efinition de ressource Storage appropri\'ee du fichier + de configuration du Director. + + M\^eme si les noms que vous assignez sont arbitraires, vous devriez les choisir + avec circonspection, car le Media Type est utilis\'e pour d\'eterminer le + p\'eriph\'erique de stockage \`a s\'electionner lors d'une restauration. Ainsi, vous + devriez certainement utiliser le m\^eme Media Type pour tous les lecteurs + dont les cartouches sont interchangeables. Ce n'est g\'en\'eralement pas un + probl\`eme si vous n'avez qu'un Storage Daemon, mais c'en est un avec plusieurs + Storage Daemon, surtout s'ils utilisent des m\'edia incompatibles. + + Si, par exemple, vous sp\'ecifiez le Media Type "DDS-4", Bacula pourra lors de + restaurations s\'electionner tout Storage Daemon qui supporte les "DDS-4". + Si vous avez une librairie, vous voudrez peut-\^etre baptiser son Media Type + d'un nom qui lui soit unique, \`a moins que vous souhaitiez pouvoir utiliser + ses volumes dans d'autres lecteurs. Vous devriez aussi vous assurer d'avoir + des noms de Media Type uniques si les media ne sont pas compatibles d'un + lecteur \`a l'autre. Cette sp\'ecification est requise pour tous les + p\'eriph\'eriques. + + Enfin, si vous utilisez le stockage sur disque, sachez que chaque ressource + Device a g\'en\'eralement un point de montage (ou r\'epertoire) diff\'erent. Afin + que Bacula puisse s\'electionner correctement la ressource Device \`a utiliser, + chacun doit avoir un Media Type distinct. + +\label{Autochanger} +\item [Autochanger = {\it Yes|No}] + \index[sd]{Autochanger} + \index[sd]{Directive!Autochanger} + Si cette directive est \`a {\bf yes}, alors Bacula consid\`ere que le p\'eriph\'erique + concern\'e est dans une librairie, et il vous faut sp\'ecifier une ressource + {\bf Autochanger} qui pointe vers les ressources {\bf Device}. Vous devez + aussi renseigner la directive {\bf Changer Device}. Si la directive est \`a {\bf No} + (valeur par d\'efaut), les volumes doivent \^etre chang\'es manuellement. Vous devriez + aussi avoir une directive identique \`a la \ilink{Storage resource}{Autochanger1} dans + le fichier de configuration du Director, de sorte que Bacula vous demande le slot + lors de l'\'etiquetage des cartouches. + +\item [Changer Device = {\it cha\^ine-nom}] + \index[sd]{Changer Device} + \index[sd]{Directive!Changer Device} + La {\bf cha\^ine-nom} sp\'ecifi\'ee doit \^etre le nom de p\'eriph\'erique {\bf SCSI g\'en\'erique} + associ\'e \`a l'{\bf Archive Device} sp\'ecifi\'ee dans la ressource Device. Ce nom de + p\'eriph\'erique SCSI g\'en\'erique devrait \^etre sp\'ecifi\'e si vous avez une librairie + ou si vous n'avez qu'un lecteur standard mais souhaitez utiliser la {\bf commande + Alert} (voir ci-dessous). Par exemple, sur les syst\`emes Linux, vous sp\'ecifierez + certainement {\bf /dev/nst0} pour le nom d'Archive Device, et {\bf /den/sg0} pour + le nom de Changer Device. Selon votre configuration, le nombre de librairies dont + vous disposez et leurs types, le nom que vous serez amen\'e \`a sp\'ecifier ici peut varier. + Cette directive est optionnelle. Consultez le chapitre + \ilink{Utiliser une librairie}{_ChapterStart18} de ce manuel pour plus de d\'etails + concernant les directives relatives aux librairies. + +\item [Changer Command = {\it cha\^ine nom}] + \index[sd]{Changer Command} + \index[sd]{Directive!Changer Command} + La {\bf cha\^ine-nom} d\'esigne un programme externe qui aura pour t\^ache le + changement des volumes \`a la demande de Bacula. En principe, cette directive + n'est sp\'ecifi\'ee qu'au niveau de la ressource {\bf AutoChanger}, qui est alors + utilis\'ee pour tous les p\'eriph\'eriques. Cependant, vous pouvez parfaitement + utiliser une commande {\bf Changer Command} diff\'erente pour chaque ressource Device. + La plupart du temps, vous sp\'ecifierez le script {\bf mtx-changer} fourni avec + Bacula de la fa\c {c}on suivante : + +\footnotesize +\begin{verbatim} +Changer Command = "/path/mtx-changer %c %o %S %a %d" +\end{verbatim} +\normalsize + + Et vous installerez le programme {\bf mtx} sur votre syst\`eme (paquetage tiers). + Un exemple de cette commande figure dans le fichier de configuration par d\'efaut + du Storage Daemon, bacula-sd.conf. Pour plus de d\'etails concernant les + substitutions de caract\`eres qui peuvent \^etre utilis\'ees pour configurer + votre librairie, veuillez consulter le chapitre sur + l'\ilink{utilisation des Librairies}{_ChapterStart18}. Les utilisateurs + de FreeBSD voudront probablement jeter un oeil aux quelques scripts + fournis dans le r\'epertoire {\bf examples/autochangers}. + +\item [Alert Command = {\it name-string}] + \index[sd]{Alert Command} + La {\bf cha\^ine-nom} d\'esigne un programme externe \`a appeler au terme + de chaque job apr\`es que le p\'eriph\'erique ait \'et\'e lib\'er\'e. Le but de cette + commande est de r\'ecup\'erer d'\'eventuels messages d'alerte du lecteur pour + vous pr\'evenir si quelque chose ne fonctionne pas correctement (ces messages + existent au moins sur la plupart des lecteurs modernes). Les m\^emes + substitutions que celles d\'ecrites au niveau de la {\bf Changer command} + peuvent \^etre utilis\'ees ici. Pour plus d'informations, veuillez consulter + le chapitre sur les \ilink{Librairies}{_ChapterStart18} de ce manuel. + + Notez que vous pouvez trouver un usage \`a cette commande sans n\'ecessairement + poss\'eder une librairie. L'exemple ci-dessous utilise le programme {\bf tapeinfo} + qui vient avec le paquet {\bf mtx} mais peut \^etre utilis\'e avec n'importe quel + lecteur. Vous devrez tout de m\^eme sp\'ecifier une directive {\bf Changer Device} + dans votre ressource Device (voir ci-dessus) afin que le p\'eriph\'erique SCSI + g\'en\'erique puisse \^etre \'edit\'e dans la commande (avec \%c). + + Voici un exemple qui affiche les alertes en provenance du lecteur dans les + rapports de jobs : + +\footnotesize +\begin{verbatim} +Alert Command = "sh -c 'tapeinfo -f %c | grep TapeAlert'" + +\end{verbatim} +\normalsize + +Et un exemple de ce qui peut en sortir lorqu'il y a un probl\`eme : + +\footnotesize +\begin{verbatim} +bacula-sd Alert: TapeAlert[32]: Interface: Problem with SCSI interface + between tape drive and initiator. + +\end{verbatim} +\normalsize + +\item [Drive Index = {\it number}] + \index[sd]{Drive Index} + \index[sd]{Directive!Drive Index} + Le num\'ero de lecteur, ou {\bf Drive Index}, que vous sp\'ecifiez ici est + pass\'e au script {\bf mtx-changer} et donc au programe {\bf mtx}. + Par d\'efaut, le Drive Index vaut z\'ero, aussi, si vous n'avez qu'un + lecteur dans votre librairie, tout fonctionnera correctement. + Si en revanche vous avez plusieurs lecteurs, vous devez sp\'ecifier + plusieurs ressources Device (une par lecteur). + Il n'est pas n\'ecessaire de sp\'ecifier la valeur z\'ero pour la directive + Drive Index dans la premi\`ere de ces ressources (valeur par d\'efaut). Par + contre, la seconde devrait contenir une directive Drive Index \'egale \`a 1, + la troisi\`eme une directive Drive Index \'egale \`a 2, et ainsi de suite. + A partir de la version 1.38.0, en utilisant la ressource {\bf Autochanger}, + Bacula s'assure qu'un seul lecteur \`a la fois utilise le script d'autochargement + (script mtx-changer), aussi vous n'avez plus besoin de scripts de verrouillage + comme ce fut le cas dans le pass\'e -- Le script mtx-change fourni avec Bacula + fonctionne avec un nombre quelconque de lecteurs. + +\item [Autoselect = {\it Yes|No}] + \index[sd]{Autoselect} + \index[sd]{Directive!Autoselect} + Si cette directive vaut {\bf yes} (valeur par d\'efaut), et si le p\'eriph\'erique + appartient \`a une librairie, alors lorsque la librairie est r\'ef\'erenc\'ee par + le Director, ce p\'eriph\'erique peut \^etre automatiquement s\'electionn\'e. + Si cette directive vaut {\bf no}, alors le p\'eriph\'erique peut seulement + \^etre d\'esign\'e par son nom de p\'eriph\'erique (Device Name) dans le + Director. Ceci permet de r\'eserver un lecteur pour une t\^ache particuli\`ere, + comme une sauvegarde hautement prioritaire, ou des op\'erations de restaurations. + +\item [Maximum Changer Wait = {\it time}] + \index[sd]{Maximum Changer Wait} + \index[sd]{Directive!Maximum Changer Wait} + Cette directive sp\'ecifie le d\'elai maximum, en secondes, pendant lequel Bacula + peut attendre d'une librairie qu'elle change de volume. Au del\`a de ce d\'elai, + Bacula invalide le num\'ero de slot r\'ef\'erenc\'e dans le catalogue et essaye \`a + nouveau. Si aucun autre volume n'est disponible dans la librairie, Bacula + r\'eclame l'intervention d'un op\'erateur. La valeur par d\'efaut est 5 minutes. + +\item [Maximum Rewind Wait = {\it time}] + \index[sd]{Maximum Rewind Wait} + \index[sd]{Directive!Maximum Rewind Wait} + Cette directive sp\'ecifie le d\'elai maximum, en secondes, pendant lequel Bacula + peut attendre d'un lecteur qu'il rembobine une cartouche. Au del\`a de ce d\'elai, + le job est effac\'e. La valeur par d\'efaut est 5 minutes. + +\item [Maximum Open Wait = {\it time}] + \index[sd]{Maximum Open Wait} + \index[sd]{Directive!Maximum Open Wait} + Cette directive sp\'ecifie le d\'elai maximum, en secondes, pendant lequel Bacula + peut attendre apr\`es une commande Open.Au del\`a de ce d\'elai, + le job est effac\'e. La valeur par d\'efaut est 5 minutes. + +\item [Always Open = {\it Yes|No}] + \index[sd]{Always Open} + \index[sd]{Directive!Always Open} + Si la valeur sp\'ecifi\'ee ici est {\bf Yes} (valeur par d\'efaut), Bacula garde le + p\'eriph\'erique ouvert, \`a moins qu'il ne soit explicitement d\'emont\'e ({\bf unmounted}) + depuis la console Bacula. Ceci permet \`a Bacula de s'assurer que le lecteur est + toujours disponible. Si vous r\'eglez {\bf AlwaysOpen} \`a {\bf no} {\bf Bacula}, + Bacula ouvre le lecteur seulement lorsque n\'ecessaire, et le lib\`ere \`a la fin du + job, si aucun autre job ne l'utilise. Lors de l'utilisation suivante, Bacula + doit rembobiner la cartouche et se repositionner au bon endroit. Pour \'eviter + ces rembnobinages inutiles et les interventions de l'op\'erateur, il est + hautement recommand\'e de garder la valeur {\bf Always Open = yes}. Ceci assure + aussi que le lecteur est disponible lorsque Bacula en a besoin. + + Si vous avez sp\'ecifi\'e {\bf Always Open = yes} (comme recommand\'e) et si vous + voulez utiliser le lecteur pour autre chose, lib\'erez-le simplement avec la + commande {\bf unmount} dans la console Bacula. N'oubliez-pas ensuite de + remonter le lecteur avec la commande {\bf mount} afin que Bacula soit pr\`et + \`a prendre en charge le prochain job planifi\'e. + + Pour le stockage sur disque (File Storage), cette directive est ignor\'ee. Dans le + cas d'un stockage FIFO, vous devez mettre cette directive \`a {\bf No}. + + Notez bien que si vous mettez cette directive \`a {\bf No}, Bacula lib\`ere le + lecteur entre chaque job, obligeant le lecteur \`a rembobiner la cartouche, et + \`a replacer la bande \`a la fin de la zone de donn\'ees, ce qui peut prendre + beaucoup de temps. + +\item [Volume Poll Interval = {\it p\'eriode}] + \index[sd]{Volume Poll Interval} + \index[sd]{Directive!Volume Poll Interval} + Si la p\'eriode sp\'ecifi\'ee pour cette directive est non nulle alors, apr\`es avoir + demand\'e \`a l'op\'erateur de monter un nouveau volume, Bacula retentera + p\'eriodiquement de lire le lecteur selon la p\'eriode sp\'ecifi\'ee au cas o\`u un + nouveau volume aurait \'et\'e mont\'e. Si la valeur sp\'ecifi\'ee est z\'ero, ces + tentatives de lecture n'ont pas lieu. Cette directive est utile lorsque + vous souhaitez \'eviter l'intervention d'un op\'erateur \`a la console. Au lieu de + quoi l'op\'erateur se contente de sortir la cartouche pr\'ec\'edente et de monter la + nouvelle qui sera reconnue \`a la prochaine tentative. Soyez conscient que si vous + sp\'ecifiez une p\'eriode trop courte, vous risquez de solliciter excessivement + votre lecteur si la cartouche pr\'ec\'edente demeure dans le lecteur, puisque Bacula + la lira \`a chaque tentative. Vous pouvez \'eviter ceci en \'ejectant la cartouche avec + les directives {\bf Offline On Unmount} et {\bf Close on Poll}. + Cependant, si vous utilisez un noyau Linux 2.6 ou un autre syst\`eme d'exploitation tel + FreeBSD ou Solaris, les commandes Offline ou Unmount laisseront le lecteur sans cartouche, + et Bacula, incapable de d'ouvrir correctement le lecteur, pourrait \'echouer ses jobs. + Pour plus d'informations sur ce probl\`eme, veuillez consulter la section + \ilink{description of Offline On Unmount}{NoTapeInDrive} du chapitre relatif + aux tests des lecteurs de bandes. + +\item [Close on Poll= {\it Yes|No}] + \index[sd]{Close on Poll} + \index[sd]{Directive!Close on Poll} + Si cette directive est \`a {\bf Yes}, Bacula ferme le p\'eriph\'erique et le r\'eouvre + \`a chaque tentative (ce qui est \'equivalent \`a unmount, sauf qu'il n'est pas + n\'ecessaire d'utiliser mount ensuite). En principe, cette directive n'est + pas tr\`es utile \`a moins que vous ayez activ\'e la directive {\bf Offline on Unmount}, + auquel cas le lecteur sera consid\'er\'e hors-ligne (NDT : offline) pr\'evenant ainsi + de nombreux mouvements inutiles de la bande lors de chaque tentative de lecture. + Une fois que l'op\'erateur aura charg\'e une nouvelle cartouche, Bacula + sera en mesure de s'en rendre compte \`a la prochaine tentative et poursuivra + automatiquement la sauvegarde. Voyez ci-dessus pour plus de d\'etails. + +\item [Maximum Open Wait = {\it time}] + \index[sd]{Maximum Open Wait} + \index[sd]{Directive!Maximum Open Wait} + Cette directive sp\'ecifie le d\'elai maximum, en secondes que Bacula + accorde \`a un p\'eriph\'erique occup\'e. La valeur par d\'efaut est 5 minutes. + Si le p\'eriph\'erique ne peut \^etre obtenu, le job en cours est termin\'e en erreur. + Bacula tentera \`a nouveau d'ouvrir le lecteur lorsqu'un nouveau job le + r\'eclamera. + +\item [Removable media = {\it Yes|No}] + \index[sd]{Removable media} + \index[sd]{Directive!Removable media} + R\'eglez cette directive \`a {\bf Yes} si le p\'eriph\'erique concern\'e supporte des + m\'edia amovibles (par exemple des cartouches ou des CDROMs). Dans le cas de + m\'edia inamovibles (par exemple, une zone de sauvegardes interm\'ediaires sur un + disque dur), mettez {\bf Removable media = No} + +\item [Random access = {\it Yes|No}] + \index[sd]{Random access} + \index[sd]{Directive!Random access} + Si cette directive est \`a {\bf Yes}, le p\'eriph\'erique de stockage est consid\'er\'e + comme \'etant un m\'edium \`a acc\`es al\'eatoire (NDT : random access medium) qui + supporte les commodit\'es {\bf lseek} (ou {\bf lseek64} si l'option Largefile + a \'et\'e activ\'ee lors de la compilation). + +\item [Minimum block size = {\it size-in-bytes}] + \index[sd]{Minimum block size} + \index[sd]{Directive!Minimum block size} + Sur la plupart des lecteurs modernes, vous n'aurez pas besoin de cette + directive, dont le but est d'utiliser des blocs de taille fixe. Cette + directive ne s'applique qu'aux p\'eriph\'eriques \`a acc\`es s\'equentiel (NDT : + non-random access devices) comme, par exemple, les lecteurs de bandes. + Les blocs \'ecrits par le Storage Daemon sur un p\'eriph\'erique \`a acc\`es + s\'equentiel ne seront jamais de taille inf\'erieure \`a la taille sp\'ecifi\'ee + {\bf size-in-bytes}. Le Storage Daemon tente de remplir au mieux les blocs + avec les donn\'ees re\c {c}ues, mais il compl\`ete si n\'ecessaire pour atteindre + la taille minimum requise {\bf Minimum block size} . + + Pour contraindre la taille des blocs \`a \^etre fixe, comme c'est le cas de + certains p\'eriph\'eriques \`a acc\`es s\'equentiel, stipulez des tailles de blocs + minimum {\bf Minimum block size} et maximum {\bf Maximum block size} + identiques. Le param\'etrage par d\'efaut est 0 pour les deux directives + et la taille de bloc par d\'efaut est de 64 512 octets. + + Par exemple, si vous souhaitez fixer la taille des blocs \`a 100K octets, sp\'ecifiez : + +\footnotesize +\begin{verbatim} + + Minimum block size = 100K + Maximum block size = 100K + +\end{verbatim} +\normalsize + Notez que si vous sp\'ecifiez une taille de blocs fixe comme ci-dessus, le + lecteur doit \^etre r\'egl\'e soit en mode "taille de blocs variable", soit en + mode "taille de blocs fixe" avec imp\'erativement la m\^eme taille de blocs + fixe que celle sp\'ecifi\'ee dans Bacula (ce param\`etre se r\`egle g\'en\'eralement + au niveau du lecteur avec {\bf mt}), faute de quoi vous aurez des erreurs \`a + la relecture de vos cartouches. + + Si vous voulez que votre taille de blocs soit variable mais comprise entre + 64 Ko et 200 Ko, sp\'ecifiez : + +\footnotesize +\begin{verbatim} + + Minimum block size = 64K + Maximum blocksize = 200K + +\end{verbatim} +\normalsize + +\item [Maximum block size = {\it size-in-bytes}] + \index[sd]{Maximum block size} + \index[sd]{Directive!Maximum block size} + Sur la plupart des lecteurs modernes, vous n'aurez pas besoin de cette + directive. Dans le cas contraire, ce sera probablement pour utiliser + des blocs de taille fixe (voir la directive Minimum block size ci dessus). + Le Storage Daemon tente d'\'ecrire des blocs de la taille sp\'ecifi\'ee + {\bf size-in-bytes} sur le p\'eriph\'erique. Par cons\'equent cette + directive fixe \`a la fois la taille maximale et la taille par d\'efaut + des blocs. La taille \'ecrite n'exc\`ede jamais la taille sp\'ecifi\'ee ici. + Lorsque l'ajout de donn\'ees provoquerait un d\'epassement, le bloc est + \'ecrit sur le p\'eriph\'erique, et un nouveau bloc est entam\'e. + avec les donn\'ees re\c {c}ues, mais il compl\`ete si n\'ecessaire pour atteindre + + Si aucune valeur n'est sp\'ecifi\'ee (ou si la valeur sp\'ecifi\'ee est 0), le + Storage Daemon utilise la valeur par d\'efaut de 64 512 octets. + +\item [Hardware End of Medium = {\it Yes|No}] + \index[sd]{Hardware End of Medium} + \index[sd]{Directive!Hardware End of Medium} + Si la valeur attribu\'ee \`a cette directive est {\bf No}, le p\'eriph\'erique de + stockage n'a pas besoin de supporter les requ\^etes ioctl "fin de m\'edium", + le Storage Daemon utilisant la fonction d'avance jusqu'au prochain espace + pour trouver la fin du m\'edium. Si la valeur est {\bf Yes}, le p\'eriph\'erique + doit supporter l'appel {\tt ioctl} {\tt MTEOM} qui positionne la cartouche + \`a la fin des donn\'ees enregistr\'ees. De plus, votre driver SCSI doit garder trace + du nombre de fichiers enregistr\'es sur la cartouche, et le retourner correctement + \`a l'appel {\bf MTIOCGET} ioctl. Notez que certains pilotes SCSI savent se + positionner correctement \`a la fin de la zone de donn\'ees enregistr\'ees sur la cartouche, + mais ne gardent pas trace du nombre de fichiers. Sur les machines Linux, le + driver SCSI a une option {\bf fast-eod} qui, si elle est utilis\'ee + provoque la perte du nombre de fichiers. assurez-vous toujours que cette + option est bien d\'esactiv\'ee (\`a l'aide du programme {\bf mt}). + + Le r\'eglage par d\'efaut de cette directive est {\bf Yes}. Cette option est utilis\'ee + lors de l'\'ecriture \`a la suite d'une cartouche, pour s'assurer que les donn\'ees + pr\'ec\'edemment \'ecrites ne seront pas corrompues. Nous vous recommandons, si vous + avez un lecteur non-standard ou inhabituel, de le tester avec le programme + {\bf btape} pour v\'erifier s'il supporte ou non cette fonction. Tous les lecteurs + modernes (au del\`a de 1998) la supportent. + +\item [Fast Forward Space File = {\it Yes|No}] + \index[sd]{Fast Forward Space File} + \index[sd]{Directive!Fast Forward Space File} + Si la valeur attribu\'ee \`a cette directive est {\bf No}, le p\'eriph\'erique de + stockage n'a pas besoin de supporter les requ\^etes ioctl {\bf MTIOCGET} + "nombre de fichiers" lors du d\'eplacement sur la bande jusqu'au prochain espace. Si au contraire + vous sp\'ecifiez {\bf yes}, le lecteur doit supporter l'appel {\tt ioctl} {\tt MTFSF}, + que presque tous les pilotes supportent, mais de plus votre pilote SCSI doit + garder trace et retourner correctement le nombre de fichiers \`a l'appel + ioctl {\bf MTIOCGET} . Notez que certains pilotes SCSI ex\'ecutent correctement + les d\'eplacements sur bande "jusqu'au prochain espace" sans toutefois garder trace + du nombre de fichiers enregistr\'es, et m\^eme plus grave pour certains : sans + signaler la fin du support. + + La valeur par d\'efaut de cette directive est {\bf Yes}. + +\item [Use MTIOCGET = {\it Yes|No}] + \index[sd]{Use MTIOCGET} + \index[sd]{Directive!Use MTIOCGET} + Si la valeur attribu\'ee \`a cette directive est {\bf No}, le syst\`eme d'exploitation + n'a pas besoin de garder trace du nombre de fichiers sur la cartouche, ni de + le retourner \`a l'appel ioctl {\bf MTIOCGET}. La valeur par d\'efaut est {\bf Yes}. + Si vous devez mettre No ici, Bacula prendra en charge la d\'etermination des + positions de fichiers, mais cela implique des mouvements tr\`es inefficaces de la + bande. Heureusement, cette d\'eficience du syst\`eme d'exploitation semble n'\^etre + l'apanage que de quelques *BSD. Solaris, Linux et FreeBSD sont connus pour + fonctionner correctement. + +\item [BSF at EOM = {\it Yes|No}] + \index[sd]{BSF at EOM} + \index[sd]{Directive!BSF at EOM} + Si cette directive est \`a {\bf No} (valeur par d\'efaut), Bacula n'entreprend + aucune action particuli\`ere lorsque la fin du m\'edium est atteinte car + la cartouche est positionn\'ee apr\`es la derni\`ere marque de fin de fichier EOF, + et Bacula peut \'ecrire \`a la suite. Cependant, sur certains syst\`emes tels que + FreeBSD, lorsque Bacula lit la marque de fin de cartouche, la cartouche est + positionn\'ee apr\`es la seconde marque de fin de fichier EOF (deux marques EOF + successives indiquent la fin du support). Si Bacula \'ecrit au del\`a de cette + marque, toutes les donn\'ees ajout\'ees seront perdues. La solutions pour ces syst\`emes + consiste \`a sp\'ecifier {\bf BSF at EOM}, ainsi Bacula recule en \'ecrasant la + seconde marque de fin de fichier. Pour savoir si vous avez besoin de cette + directive, utilisez la commande {\bf test} du programme {\bf btape}. + +(NDT : Paragraphe \`a revoir VO ci dessous) + If {\bf No}, the default, no special action is taken by Bacula with the End + of Medium (end of tape) is reached because the tape will be positioned after + the last EOF tape mark, and Bacula can append to the tape as desired. + However, on some systems, such as FreeBSD, when Bacula reads the End of + Medium (end of tape), the tape will be positioned after the second EOF tape + mark (two successive EOF marks indicated End of Medium). If Bacula appends + from that point, all the appended data will be lost. The solution for such + systems is to specify {\bf BSF at EOM} which causes Bacula to backspace over + the second EOF mark. Determination of whether or not you need this directive + is done using the {\bf test} command in the {\bf btape} program. + +\item [TWO EOF = {\it Yes|No}] + \index[sd]{TWO EOF} + \index[sd]{Directive!TWO EOF} + Si cette directive est \`a {\bf Yes}, Bacula \'ecrit deux marques de fin de fichier EOF + lorsqu'il a fini d'utiliser une cartouche -- c'est \`a dire apr\`es le dernier + job, ou \`a la fin de la cartouche. Dans le cas contraire (la valeur par d\'efaut), + Bacula n'\'ecrit qu'une marque de fin de fichier pour terminer une cartouche. + +\item [Backward Space Record = {\it Yes|No}] + \index[sd]{Backward Space Record} + \index[sd]{Directive!Backward Space Record} + Si cette directive est \`a {\bf Yes}, le p\'eriph\'erique supporte {\tt MTBSR ioctl} + pour reculer dans les enregistrements. Sinon, cet appel n'est pas utilis\'e + et la bande doit \^etre rembobin\'ee puis avanc\'ee de fichier en fichier jusqu'\`a + la position d\'esir\'ee. La valeur par d\'efaut est {\bf Yes} pour un p\'eriph\'erique + \`a acc\`es s\'equentiel. Cette fonction, si activ\'ee, est utilis\'ee \`a la fin des + volumes apr\`es \'ecriture d'une marque fin de fichier et de toute \'etiquette + ANSI/IBM pour d\'eterminer si oui ou non le dernier bloc a \'et\'e \'ecrit + correctement. Si vous d\'esactivez cette fonction, le test ne sera pas fait. + Ce n'est pas un probl\`eme car le processus de relecture est une + pr\'ecaution plut\^ot qu'une n\'ecessit\'e. + +\item [Backward Space File = {\it Yes|No}] + \index[sd]{Backward Space File} + \index[sd]{Directive!Backward Space File} + Si cette directive est \`a {\bf Yes}, le p\'eriph\'erique supporte les appels + {\bf MTBSF} et {\bf ioctl MTBSF} pour reculer en-de\c{c}a d'un marque de fin de fichier + et se replacer au d\'ebut du fichier. Si cette directive est \`a {\bf No}, ces appels + ne sont pas utilis\'es et le lecteur doit rembobiner la cartouche, puis avancer + de fichier en fichier jusqu'\`a la position d\'esir\'ee. La valeur par d\'efaut est + {\bf Yes} pour les p\'eriph\'eriques \`a acc\`es s\'equentiel. + +\item [Forward Space Record = {\it Yes|No}] + \index[sd]{Forward Space Record} + \index[sd]{Directive!Forward Space Record} + Si cette directive est \`a {\bf Yes}, le p\'eriph\'erique doit supporter les appels + {\bf MTFSR ioctl} pour avancer \`a travers les + enregistrements. Si la valeur est {\bf No}, les donn\'ees doivent \^etre lues dans l'ordre + pour positionner la cartouche. La valeur par d\'efaut est + {\bf Yes} pour les p\'eriph\'eriques \`a acc\`es s\'equentiel. + +\item [Forward Space File = {\it Yes|No}] + \index[sd]{Forward Space File} + \index[sd]{Directive!Forward Space File} + Si cette directive est \`a {\bf Yes}, le p\'eriph\'erique doit supporter les appels + {\tt MTFSF ioctl} pour d\'eplacer la bande en se rep\'erant aux marques de fichiers. + Si la valeur est {\bf No}, les donn\'ees doivent \^etre lues pour positionner la + bande. La valeur par d\'efaut est + {\bf Yes} pour les p\'eriph\'eriques \`a acc\`es s\'equentiel. + +\item [Offline On Unmount = {\it Yes|No}] + \index[sd]{Offline On Unmount} + \index[sd]{Directive!Offline On Unmount} + Si cette directive est \`a {\bf Yes}, le p\'eriph\'erique doit supporter les appels + {\tt MTOFFL ioctl} pour rembobiner et placer le volume \`a l'\'etat {\it offline}. + Dans ce cas, Bacula lance requ\^ete {\it eject} avant de fermer le lecteur lors + de la commande {\bf unmount}. Si la valeur est {\bf No} (valeur par d\'efaut), + Bacula ne tente pas de mettre la cartouche \`a l'\'etat {\it offline} avant de + la d\'emonter. Apr\`es que la cartouche ait \'et\'e mise hors ligne, elle est \'eject\'ee + requ\'erant ainsi {\bf l'intervention d'un op\'erateur} pour poursuivre. Certains + syst\`emes exigent que la commande de chargement {\bf mt -f /dev/xxx load} + soit lanc\'ee avant de pouvoir reconna\^itre la cartouche. Si vous utilisez une + librairie, sachez que certaines requi\`erent de passer le lecteur \`a l'\'etat + {\it offline} pour pouvoir changer de cartouche. Cependant, la plupart n'en + on pas besoin et pourraient \^etre d\'erout\'es si cette directive est \`a {\bf Yes}. + + Si vous utilisez un noyau Linux 2.6, ou un syst\`eme tel que FreeBSD ou Solaris, + la directive Offline On Unmount abandonnera votre lecteur sans cartouche, et Bacula + incapable de l'utiliser. Pour plus d'informations sur ce probl\`eme, + consultez la section \ilink{description de Offline On Unmount}{NoTapeInDrive} dans le + chapitre sur les tests de lecteurs. + +\item [Maximum Volume Size = {\it size}] + \index[sd]{Maximum Volume Size} + \index[sd]{Directive!Maximum Volume Size} + Avec cette directive, vous pouvez imposer une limite au poids de donn\'ees + \`a \'ecrire sur chaque volume. La valeur {\bf size} repr\'esente le nombre d'octets + autoris\'es. Cette directive est surtout utilis\'ee \`a des fins de tests pour + simuler des petits volumes, mais elle peut aussi se r\'ev\'eler utile si voulez + limiter la taille de vos volumes, par exemple \`a 2 Go. Certains rares lecteurs + vraiment anciens ne signalent pas correctement lorsque la fin de la + cartouche est atteinte lors d'une op\'eration d'\'ecriture (Bien que j'aie lu des + choses au sujet de tels lecteurs, je n'en n'ai jamais rencontr\'e moi-m\^eme). Notez + que cette directive est obsol\`ete, rendue inutile par la + directive {\bf Maximum Volume Bytes} d\'efinie dans le fichier de configuration + du Director. + +\item [Maximum File Size = {\it size}] + \index[sd]{Maximum File Size} + \index[sd]{Directive!Maximum File Size} + Cette directive vous permet d'imposer une limite au poids des fichiers logiques + sur le volume. La valeur {\bf size} repr\'esente le nombre d'octets autoris\'es + par fichier. Une fois cette valeur atteinte, une marque de fin de fichier est + plac\'ee sur le volume et les donn\'ees suivantes sont plac\'ees dans un nouveau + fichier. Ce d\'ecoupage des longues s\'equences de donn\'ees en blocs plus petits + permet un positionnement plus rapide du lecteur au d\'ebut d'un flux de donn\'ees + et peut contribuer \`a pr\'evenir les erreurs de lecture sur la cartouche lors des + restaurations. La valeur par d\'efaut est 1 Go. + +\item [Block Positioning = {\it yes|no}] + \index[sd]{Block Positioning} + \index[sd]{Directive!Block Positioning} + Cette directive n'est pas utilis\'ee en fonctionnement normal (et n'a pas encore + \'et\'e test\'ee). Son r\^ole est d'enjoindre Bacula \`a ne plus utiliser le + positionnement par blocs lors de la lecture des cartouches. Ceci peut rendre + les op\'erations de restauration {\bf extr\`emement} lentes. Vous utiliserez cette + directive si vous avez \'ecrit vos cartouches avec Bacula en mode "taille de blocs + variable" tandis que votre lecteur \'etait en taille de blocs fixe. Si tout + fonctionne comme je l'esp\`ere, Bacula sera capable de relire vos cartouches. + +\item [Maximum Network Buffer Size = {\it bytes}] + \index[sd]{Maximum Network Buffer Size} + \index[sd]{Directive!Maximum Network Buffer Size} + Cette directive permet de sp\'ecifier la taille initiale du tampon r\'eseau \`a + utiliser avec le File Daemon. La valeur {\bf bytes} est la taille exprim\'ee + en octets. Cette valeur es appel\'ee \`a \^etre ajust\'ee \`a la baisse si elle est + trop importante, jusqu'\`a ce qu'elle soit accep\'ee par le syst\`eme d'exploitation. + Soyez circonspect dans l'usage de cette directive, car si vous utilisez une + valeur trop grande, elle sera diminu\'ee par incr\'ements de 521 octets jusqu'\`a + satisfaction du syst\`eme d'exploitation, ce qui peut n\'ecessiter un grand nombre + d'appels syst\`eme. La valeur par d\'efaut est 32 768 octets. + + La valeur par d\'efaut a \'et\'e choisie relativement importante, mais pas trop, + au cas ou vous transmettriez vos donn\'ees via Internet. Il est clair que sur + un r\'eseau local rapide, vous pouvez augmenter cette valeur et am\'eliorer les + performances. Par exemple, certains utilisateurs ont obtenu des facteurs + d'acc\'el\'eration de l'ordre de 5 \`a 10 en utilisant un tampon r\'eseau initial de + 65 536 octets. La plupart des utilisateurs indiquent que des valeurs plus + grandes ne semblent pas am\'eliorer les performances. Si vous voulez am\'eliorer + la viteese de vos sauvegardes, cette directive est probablement le meilleur + endroit pour exp\'erimenter. Vous voudrez probablement effectuer les + modifications correspondantes dans les fichiers de configuration de chacun + des File Daemons. + +\item [Maximum Spool Size = {\it bytes}] + \index[sd]{Maximum Spool Size} + \index[sd]{Directive!Maximum Spool Size} + Cette directive limite \`a la valeur sp\'ecifi\'ee (en octets) le volume occup\'e par + le tampon (NDT : spool) disque pour tous les jobs en ex\'ecution. Par d\'efaut, il n'y a + pas de limite. + +\item [Maximum Job Spool Size = {\it bytes}] + \index[sd]{Maximum Job Spool Size} + \index[sd]{Directive!Maximum Job Spool Size} + Cette directive limite \`a la valeur sp\'ecifi\'ee (en octets) le volume occup\'e par + le tampon disque pour chaque job. Par d\'efaut, il n'y a pas de limite. Cette + directive est apparue avel la version 1.37. + +\item [Spool Directory = {\it directory}] + \index[sd]{Spool Directory} + \index[sd]{Directive!Spool Directory} + Cette directive sp\'ecifie le nom du r\'epertoire \`a utiliser en tant que tampon + disque pour ce p\'eriph\'erique. Ce r\'epertoire est aussi utilis\'e pour stocker + les fichiers partiels lors de l'\'ecriture sur des supports qui requi\`erent + un montage (DVD). Le comportement par d\'efaut est d'utiliser le r\'epertoire + de travail de Bacula (working directory). + +\item [Maximum Part Size = {\it bytes}] + \index[sd]{Maximum Part Size} + \index[sd]{Directive!Maximum Part Size} + Cette directive pr\'ecise la taille maximale (en octets) d'un fichier partiel. Par d\'efaut, + il n'y a pas de limite. Cette directive est apparue avec la version 1.37. + + Si le p\'eriph\'erique requiert un montage, l'ordre de montage est transmis lorsque + cette valeur est atteinte. Dans ce cas, vous devez vous assurer d'avor suffisament + d'espace dans votre r\'epertoire tampon, faute de quoi vos donn\'ees resteront dans le + r\'epertoire tampon. + + Cette directive est ignor\'ee pour les lecteurs de bandes et les FIFO. + +\end{description} + +\section{P\'eriph\'eriques qui requi\`erent un montage (DVD)} +\index[general]{P\'eriph\'eriques qui requi\`erent un montage (DVD)} +\index[general]{DVD!P\'eriph\'eriques qui requi\`erent un montage} +\addcontentsline{toc}{section}{P\'eriph\'eriques qui requi\`erent un montage (DVD)} + +Toutes les directives d\'ecrites dans cette section sont impl\'ement\'ees dans Bacula +\`a partir de la version 1.37. + +A partir de la version 1.39.5, les directives "Requires Mount", "Mount Point", +"Mount Command", et "Unmount Command" s'appliquent aux syst\`emes de fichiers +amovibles tels que les p\'erih\'eriques USB, et plus seulement aux DVDs. + +\begin{description} + +\item [Requires Mount = {\it Yes|No}] + \index[sd]{Requires Mount} + \index[sd]{Directive!Requires Mount} + Cette directive doit \^etre \`a {\bf yes} pour les graveurs de DVDs, et \`a {\bf no} + pour tous les autres p\'eriph\'eriques (cartouches/fichiers). Elle indique si + le p\'eriph\'erique n\'ecessite d'\^etre mont\'e pour \^etre lu, et si un moyen particulier + doit \^etre employ\'e pour y \'ecrire. Si vous activez cette directive, vous devez aussi + d\'efinir les directives {\bf Mount Point}, {\bf Mount Command}, {\bf Unmount Command} + et {\bf Write Part Command}. + +\item [Mount Point = {\it directory}] + \index[sd]{Mount Point} + \index[sd]{Directive!Mount Point} + Cette directive sp\'ecifie le r\'epertoire o\`u le p\'eriph\'erique peut \^etre mont\'e. + (le point de montage) + +\item [Mount Command = {\it name-string}] + \index[sd]{Mount Command} + \index[sd]{Directive!Mount Command} + Cette directive sp\'ecifie la commande \`a ex\'ecuter pour monter le p\'eriph\'erique. + Avant l'ex\'ecution de la commande, \%a est remplac\'e par le p\'eriph\'erique de + stockage, et \%m par le point de montage (Mount Point). + + La plupart du temps, vous le d\'efinirez ainsi : + +\footnotesize +\begin{verbatim} + Mount Command = "/bin/mount -t iso9660 -o ro %a %m" +\end{verbatim} +\normalsize + +\item [Unmount Command = {\it name-string}] + \index[sd]{Unmount Command} + \index[sd]{Directive!Unmount Command} + Cette directive sp\'ecifie la commande \`a ex\'ecuter pour d\'emonter le p\'eriph\'erique. + Avant l'ex\'ecution de la commande, \%a est remplac\'e par le p\'eriph\'erique de + stockage, et \%m par le point de montage (Mount Point). + + La plupart du temps, vous le d\'efinirez ainsi : + +\footnotesize +\begin{verbatim} + Unmount Command = "/bin/umount %m" +\end{verbatim} +\normalsize + +\item [Write Part Command = {\it name-string}] + \index[sd]{Write Part Command} + \index[sd]{Directive!Write Part Command} + Cette directive sp\'ecifie la commande \`a ex\'ecuter pour \'ecrire une partition (NDT : Revoir cette partie, VO ci-dessous) + sur le p\'eriph\'erique. Avant l'ex\'ecution de la commande, \%a est remplac\'e par le p\'eriph\'erique de + stockage, \%m par le point de montage, \%e par 1 s'il s'agit de la premi\`ere + partition, 0 sinon, et \%v avec le nom de fichier de la partition courante. + + Pour un DVD, vous utiliserez la plupart du temps le script fourni {\bf dvd-handler} + comme suit : + +Command that must be executed to write a part to the device. Before the + command is executed, \%a is replaced with the Archive Device, \%m with the + Mount Point, \%e is replaced with 1 if we are writing the first part, + and with 0 otherwise, and \%v with the current part filename. + + For a DVD, you will most frequently specify the Bacula supplied {\bf + dvd-handler} script as follows: + +\footnotesize +\begin{verbatim} + Write Part Command = "/path/dvd-handler %a write %e %v" +\end{verbatim} +\normalsize + + O\`u {\bf /path} est le chemin vers votre r\'epertoire de scripts, et + dvd-handler est le script fourni avec Bacula. Cette commande est d\'ej\`a pr\'esente + quoique comment\'ee dans le fichier de configuration du Storage Daemon. Pour l'utiliser, + il vous suffit de supprimer le caract\`ere \#. + +\item [Free Space Command = {\it name-string}] + \index[sd]{Free Space Command} + \index[sd]{Directive!Free Space Command} + Cette directive sp\'ecifie la commande \`a ex\'ecuter pour contr\^oler l'espace disponible + sur le p\'eriph\'erique. Avant l'ex\'ecution de la commande, \%a est remplac\'e par le p\'eriph\'erique de + stockage, \%m par le point de montage, \%e par 1 s'il s'agit de la premi\`ere + partition, 0 sinon, et \%v avec le nom de fichier de la partition courante. + + Pour un DVD, vous utiliserez la plupart du temps le script fourni {\bf dvd-handler} + comme suit : + +\footnotesize +\begin{verbatim} + Free Space Command = "/path/dvd-handler %a free" +\end{verbatim} +\normalsize + + O\`u {\bf /path} est le chemin vers votre r\'epertoire de scripts, et + dvd-handler est le script fourni avec Bacula. Si vous voulez + sp\'ecifier votre propre commande, examinez le code de dvd-handler afin de + voir le type de retour attendu par Bacula. Cette commande est d\'ej\`a pr\'esente + quoique comment\'ee dans le fichier de configuration du Storage Daemon. Pour l'utiliser, + il vous suffit de supprimer le caract\`ere \#. + + Si vous n'utilisez pas cette directive, Bacula s'attendra \`a ce qu'il y ait + toujours de la place dur le p\'eriph\'erique. + +\end{description} + +%% This pulls in the Autochanger resource from another file. +\label{AutochangerRes} +\label{AutochangerResource1} +\input{autochangerres} + + +\section{Possibilit\'es} +\index[general]{Possibilit\'es} +\addcontentsline{toc}{section}{Possibilit\'es} + +\begin{description} + +\item [Label media = {\it Yes|No}] + \index[sd]{Label media} + \index[sd]{Directive!Label media} + Si cette directive est activ\'ee ({\bf Yes}), alors ce p\'eriph\'erique est + habilit\'e \`a \'etiqueter les media libres sans ordre explicite de l'op\'erateur. + Ceci est r\'ealis\'e selon un algorithme interne et suivant le format + d\'efini par l'enregistrement \ilink{Label Format}{Label} de chaque + ressource Pool. Si cette directive est \`a {\bf No} (valeur par d\'efaut), + Bacula n'\'etiquette les cartouches que sur instruction expresse de + l'op\'erateur (commande {\bf label} de la Console) ou lorsqu'une cartouche + a \'et\'e recycl\'ee. Cette fonctionnalit\'e est plus utile dans le cas de sauvegardes + sur disque qu'avec des cartouches. + +\item [Automatic mount = {\it Yes|No}] + \index[sd]{Automatic mount} + \index[sd]{Directive!Automatic mount} + Si cette directive est activ\'ee (c'est le cas par d\'efaut), le Storage Daemon + est autoris\'e \`a examiner le p\'eriph\'erique afin de d\'eterminer s'il contient + un volume \'etiquet\'e Bacula. Ceci est alors fait au d\'emarrage du {\it daemon}, + et au d\'ebut de chaque job. Cette directive est particuli\`erement importante + si vous avez sp\'ecifi\'e {\bf Always Open = no} car elle permet \`a + Bacula de tenter de lire le p\'eriph\'erique avant de demander \`a l'op\'erateur + de monter une cartouche. Notez cependant que la cartouche doit \^etre + mont\'ee avant le lancement du job. + +\end{description} + +\section{La ressource Messages} +\label{MessagesResource1} +\index[general]{Ressource!Messages} +\index[general]{Ressource Messages} +\addcontentsline{toc}{section}{Resource Messages} + +Pour une description de la ressource Messages, veuillez consulter +le chapitre \ilink{La ressource Messages}{_ChapterStart15} de ce +manuel. + +\section{Un exemple de fichier de configuration du Storage Daemon} +\label{SampleConfiguration} +\index[general]{Fichier!Exemple configuration Storage Daemon} +\index[general]{Exemple fichier configuration Storage Daemon} +\addcontentsline{toc}{section}{Exemple fichier configuration Storage Daemon} + +Voici un exemple de fichier de configuration du Storage Daemon : + +\footnotesize +\begin{verbatim} +# +# Default Bacula Storage Daemon Configuration file +# +# For Bacula release 1.37.2 (07 July 2005) -- gentoo 1.4.16 +# +# You may need to change the name of your tape drive +# on the "Archive Device" directive in the Device +# resource. If you change the Name and/or the +# "Media Type" in the Device resource, please ensure +# that bacula-dir.conf has corresponding changes. +# +Storage { # definition of myself + Name = rufus-sd + Address = rufus + WorkingDirectory = "$HOME/bacula/bin/working" + Pid Directory = "$HOME/bacula/bin/working" + Maximum Concurrent Jobs = 20 +} +# +# List Directors who are permitted to contact Storage daemon +# +Director { + Name = rufus-dir + Password = "ZF9Ctf5PQoWCPkmR3s4atCB0usUPg+vWWyIo2VS5ti6k" +} +# +# Restricted Director, used by tray-monitor to get the +# status of the storage daemon +# +Director { + Name = rufus-mon + Password = "9usxgc307dMbe7jbD16v0PXlhD64UVasIDD0DH2WAujcDsc6" + Monitor = yes +} +# +# Devices supported by this Storage daemon +# To connect, the Director's bacula-dir.conf must have the +# same Name and MediaType. +# +Autochanger { + Name = Autochanger + Device = Drive-1 + Device = Drive-2 + Changer Command = "/home/kern/bacula/bin/mtx-changer %c %o %S %a %d" + Changer Device = /dev/sg0 +} + +Device { + Name = Drive-1 # + Drive Index = 0 + Media Type = DLT-8000 + Archive Device = /dev/nst0 + AutomaticMount = yes; # when device opened, read it + AlwaysOpen = yes; + RemovableMedia = yes; + RandomAccess = no; + AutoChanger = yes + Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'" +} + +Device { + Name = Drive-2 # + Drive Index = 1 + Media Type = DLT-8000 + Archive Device = /dev/nst1 + AutomaticMount = yes; # when device opened, read it + AlwaysOpen = yes; + RemovableMedia = yes; + RandomAccess = no; + AutoChanger = yes + Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'" +} + +Device { + Name = "HP DLT 80" + Media Type = DLT8000 + Archive Device = /dev/nst0 + AutomaticMount = yes; # when device opened, read it + AlwaysOpen = yes; + RemovableMedia = yes; +} +#Device { +# Name = SDT-7000 # +# Media Type = DDS-2 +# Archive Device = /dev/nst0 +# AutomaticMount = yes; # when device opened, read it +# AlwaysOpen = yes; +# RemovableMedia = yes; +#} +#Device { +# Name = Floppy +# Media Type = Floppy +# Archive Device = /mnt/floppy +# RemovableMedia = yes; +# Random Access = Yes; +# AutomaticMount = yes; # when device opened, read it +# AlwaysOpen = no; +#} +#Device { +# Name = FileStorage +# Media Type = File +# Archive Device = /tmp +# LabelMedia = yes; # lets Bacula label unlabeled media +# Random Access = Yes; +# AutomaticMount = yes; # when device opened, read it +# RemovableMedia = no; +# AlwaysOpen = no; +#} +#Device { +# Name = "NEC ND-1300A" +# Media Type = DVD +# Archive Device = /dev/hda +# LabelMedia = yes; # lets Bacula label unlabeled media +# Random Access = Yes; +# AutomaticMount = yes; # when device opened, read it +# RemovableMedia = yes; +# AlwaysOpen = no; +# MaximumPartSize = 800M; +# RequiresMount = yes; +# MountPoint = /mnt/cdrom; +# MountCommand = "/bin/mount -t iso9660 -o ro %a %m"; +# UnmountCommand = "/bin/umount %m"; +# SpoolDirectory = /tmp/backup; +# WritePartCommand = "/etc/bacula/dvd-handler %a write %e %v" +# FreeSpaceCommand = "/etc/bacula/dvd-handler %a free" +#} +# +# A very old Exabyte with no end of media detection +# +#Device { +# Name = "Exabyte 8mm" +# Media Type = "8mm" +# Archive Device = /dev/nst0 +# Hardware end of medium = No; +# AutomaticMount = yes; # when device opened, read it +# AlwaysOpen = Yes; +# RemovableMedia = yes; +#} +# +# Send all messages to the Director, +# mount messages also are sent to the email address +# +Messages { + Name = Standard + director = rufus-dir = all + operator = root = mount +} +\end{verbatim} +\normalsize diff --git a/docs/manuals/fr/misc/base/coverpage.tex b/docs/manuals/fr/misc/base/coverpage.tex new file mode 100644 index 00000000..e32d3999 --- /dev/null +++ b/docs/manuals/fr/misc/base/coverpage.tex @@ -0,0 +1,28 @@ +\newfont{\bighead}{cmr17 at 36pt} +\parskip 10pt +\parindent 0pt + +\title{\includegraphics{\idir bacula-logo.eps} \\ \bigskip + \Huge{Bacula}$^{\normalsize \textregistered}$ \Huge{Bacula Miscellaneous Guide} + \begin{center} + \large{It comes in the night and sucks + the essence from your computers. } + \end{center} +} + + +\author{Kern Sibbald} +\date{\vspace{1.0in}\today \\ + This manual documents Bacula version \input{version} \\ + \vspace{0.2in} + Copyright {\copyright} 1999-2010, Free Software Foundation Europe + e.V. \\ + Bacula {\textregistered} is a registered trademark of Kern Sibbald.\\ + \vspace{0.2in} + Permission is granted to copy, distribute and/or modify this document under the terms of the + GNU Free Documentation License, Version 1.2 published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. + A copy of the license is included in the section entitled "GNU Free Documentation License". +} + +\maketitle diff --git a/docs/manuals/fr/misc/base/dvd.tex b/docs/manuals/fr/misc/base/dvd.tex new file mode 100644 index 00000000..88811365 --- /dev/null +++ b/docs/manuals/fr/misc/base/dvd.tex @@ -0,0 +1,329 @@ +%% +%% + +\chapter{DVD Volumes} +\label{_DVDChapterStart} +\index[general]{DVD Volumes} +\index[general]{Writing DVDs} +\index[general]{DVD Writing} +\index[general]{Volumes!DVD} + +Bacula allows you to specify that you want to write to DVD. However, +this feature is implemented only in version 1.37 or later. +You may in fact write to DVD+RW, DVD+R, DVD-R, or DVD-RW +media. The actual process used by Bacula is to first write +the image to a spool directory, then when the Volume reaches +a certain size or, at your option, at the end of a Job, Bacula +will transfer the image from the spool directory to the +DVD. The actual work of transferring the image is done +by a script {\bf dvd-handler}, and the heart of that +script is a program called {\bf growisofs} which allows +creating or adding to a DVD ISO filesystem. + +You must have {\bf dvd+rw-tools} loaded on your system for DVD writing to +work. Please note that the original {\bf dvd+rw-tools} package does {\bf +NOT} work with Bacula. You must apply a patch which can be found in the +{\bf patches} directory of Bacula sources with the name +{\bf dvd+rw-tools-5.21.4.10.8.bacula.patch} for version 5.21 of the tools, +or patch {bf dvd+rw-tools-6.1.bacula.patch} if you have version 6.1 +on your system. Unfortunately, this requires you to build the dvd\_rw-tools +from source. + +Note, some Linux distros such as Debian dvd+rw-tools-7.0-4 package already +have the patch applied, so please check. + +The fact that Bacula cannot use the OS to write directly +to the DVD makes the whole process a bit more error prone than +writing to a disk or a tape, but nevertheless, it does work if you +use some care to set it up properly. However, at the current time +(version 1.39.30 -- 12 December 2006) we still consider this code to be +BETA quality. As a consequence, please do careful testing before relying +on DVD backups in production. + +The remainder of this chapter explains the various directives that you can +use to control the DVD writing. + +\label{DVDdirectives} +\section{DVD Specific SD Directives} +\index[general]{Directives!DVD} +\index[general]{DVD Specific SD Directives } + +The following directives are added to the Storage daemon's +Device resource. + +\begin{description} + +\item [Requires Mount = {\it Yes|No}] + \index[general]{Requires Mount } + You must set this directive to {\bf yes} for DVD-writers, and to {\bf no} for + all other devices (tapes/files). This directive indicates if the device + requires to be mounted using the {\bf Mount Command}. + To be able to write a DVD, the following directives must also be + defined: {\bf Mount Point}, {\bf Mount Command}, {\bf Unmount Command} and + {\bf Write Part Command}. + +\item [Mount Point = {\it directory}] + \index[general]{Mount Point} + Directory where the device can be mounted. + +\item [Mount Command = {\it name-string}] + \index[general]{Mount Command} + Command that must be executed to mount the device. Although the + device is written directly, the mount command is necessary in + order to determine the free space left on the DVD. Before the command is + executed, \%a is replaced with the Archive Device, and \%m with the Mount + Point. + + Most frequently, you will define it as follows: + +\footnotesize +\begin{verbatim} + Mount Command = "/bin/mount -t iso9660 -o ro %a %m" +\end{verbatim} +\normalsize + +However, if you have defined a mount point in /etc/fstab, you might be +able to use a mount command such as: + +\footnotesize +\begin{verbatim} + Mount Command = "/bin/mount /media/dvd" +\end{verbatim} +\normalsize + + +\item [Unmount Command = {\it name-string}] + \index[general]{Unmount Command} + Command that must be executed to unmount the device. Before the command is + executed, \%a is replaced with the Archive Device, and \%m with the Mount + Point. + + Most frequently, you will define it as follows: + +\footnotesize +\begin{verbatim} + Unmount Command = "/bin/umount %m" +\end{verbatim} +\normalsize + +\item [Write Part Command = {\it name-string}] + \index[general]{Write Part Command } + Command that must be executed to write a part to the device. Before the + command is executed, \%a is replaced with the Archive Device, \%m with the + Mount Point, \%e is replaced with 1 if we are writing the first part, + and with 0 otherwise, and \%v with the current part filename. + + For a DVD, you will most frequently specify the Bacula supplied {\bf + dvd-handler} script as follows: + +\footnotesize +\begin{verbatim} + Write Part Command = "/path/dvd-handler %a write %e %v" +\end{verbatim} +\normalsize + + Where {\bf /path} is the path to your scripts install directory, and + dvd-handler is the Bacula supplied script file. + This command will already be present, but commented out, + in the default bacula-sd.conf file. To use it, simply remove + the comment (\#) symbol. + + +\item [Free Space Command = {\it name-string}] + \index[general]{Free Space Command } + Command that must be executed to check how much free space is left on the + device. Before the command is executed,\%a is replaced with the Archive + Device. + + For a DVD, you will most frequently specify the Bacula supplied {\bf + dvd-handler} script as follows: + +\footnotesize +\begin{verbatim} + Free Space Command = "/path/dvd-handler %a free" +\end{verbatim} +\normalsize + + Where {\bf /path} is the path to your scripts install directory, and + dvd-handler is the Bacula supplied script file. + If you want to specify your own command, please look at the code in + dvd-handler to see what output Bacula expects from this command. + This command will already be present, but commented out, + in the default bacula-sd.conf file. To use it, simply remove + the comment (\#) symbol. + + If you do not set it, Bacula will expect there is always free space on the + device. + +\end{description} + +In addition to the directives specified above, you must also +specify the other standard Device resource directives. Please see the +sample DVD Device resource in the default bacula-sd.conf file. Be sure +to specify the raw device name for {\bf Archive Device}. It should +be a name such as {\bf /dev/cdrom} or {\bf /media/cdrecorder} or +{\bf /dev/dvd} depending on your system. It will not be a name such +as {\bf /mnt/cdrom}. + +Finally, for {\bf growisofs} to work, it must be able to lock +a certain amount of memory in RAM. If you have restrictions on +this function, you may have failures. Under {\bf bash}, you can +set this with the following command: + +\footnotesize +\begin{verbatim} +ulimit -l unlimited +\end{verbatim} +\normalsize + +\section{Edit Codes for DVD Directives} +\index[general]{Directives!DVD Edit Codes} +\index[general]{Edit Codes for DVD Directives } + +Before submitting the {\bf Mount Command}, {\bf Unmount Command}, +{\bf Write Part Command}, or {\bf Free Space Command} directives +to the operating system, Bacula performs character substitution of the +following characters: + +\footnotesize +\begin{verbatim} + %% = % + %a = Archive device name + %e = erase (set if cannot mount and first part) + %n = part number + %m = mount point + %v = last part name (i.e. filename) +\end{verbatim} +\normalsize + + + +\section{DVD Specific Director Directives} +\index[general]{Directives!DVD} +\index[general]{DVD Specific Director Directives } + +The following directives are added to the Director's Job resource. + +\label{WritePartAfterJob} +\begin{description} +\item [Write Part After Job = \lt{}yes|no\gt{}] + \index[general]{Write Part After Job } + If this directive is set to {\bf yes} (default {\bf no}), the + Volume written to a temporary spool file for the current Job will + be written to the DVD as a new part file + will be created after the job is finished. + + It should be set to {\bf yes} when writing to devices that require a mount + (for example DVD), so you are sure that the current part, containing + this job's data, is written to the device, and that no data is left in + the temporary file on the hard disk. However, on some media, like DVD+R + and DVD-R, a lot of space (about 10Mb) is lost everytime a part is + written. So, if you run several jobs each after another, you could set + this directive to {\bf no} for all jobs, except the last one, to avoid + wasting too much space, but to ensure that the data is written to the + medium when all jobs are finished. + + This directive is ignored for devices other than DVDs. +\end{description} + + + +\label{DVDpoints} +\section{Other Points} +\index[general]{Points!Other } +\index[general]{Other Points } + +\begin{itemize} +\item Please be sure that you have any automatic DVD mounting + disabled before running Bacula -- this includes auto mounting + in /etc/fstab, hotplug, ... If the DVD is automatically + mounted by the OS, it will cause problems when Bacula tries + to mount/unmount the DVD. +\item Please be sure that you the directive {\bf Write Part After Job} + set to {\bf yes}, otherwise the last part of the data to be + written will be left in the DVD spool file and not written to + the DVD. The DVD will then be unreadable until this last part + is written. If you have a series of jobs that are run one at + a time, you can turn this off until the last job is run. +\item The current code is not designed to have multiple simultaneous + jobs writing to the DVD. As a consequence, please ensure that + only one DVD backup job runs at any time. +\item Writing and reading of DVD+RW seems to work quite reliably + provided you are using the patched dvd+rw-mediainfo programs. + On the other hand, we do not have enough information to ensure + that DVD-RW or other forms of DVDs work correctly. +\item DVD+RW supports only about 1000 overwrites. Every time you + mount the filesystem read/write will count as one write. This can + add up quickly, so it is best to mount your DVD+RW filesystem read-only. + Bacula does not need the DVD to be mounted read-write, since it uses + the raw device for writing. +\item Reformatting DVD+RW 10-20 times can apparently make the medium + unusable. Normally you should not have to format or reformat + DVD+RW media. If it is necessary, current versions of growisofs will + do so automatically. +\item We have had several problems writing to DVD-RWs (this does NOT + concern DVD+RW), because these media have two writing-modes: {\bf + Incremental Sequential} and {\bf Restricted Overwrite}. Depending on + your device and the media you use, one of these modes may not work + correctly (e.g. {\bf Incremental Sequential} does not work with my NEC + DVD-writer and Verbatim DVD-RW). + + To retrieve the current mode of a DVD-RW, run: +\begin{verbatim} + dvd+rw-mediainfo /dev/xxx +\end{verbatim} + where you replace xxx with your DVD device name. + + {\bf Mounted Media} line should give you the information. + + To set the device to {\bf Restricted Overwrite} mode, run: +\begin{verbatim} + dvd+rw-format /dev/xxx +\end{verbatim} + If you want to set it back to the default {\bf Incremental Sequential} mode, run: +\begin{verbatim} + dvd+rw-format -blank /dev/xxx +\end{verbatim} + +\item Bacula only accepts to write to blank DVDs. To quickly blank a DVD+/-RW, run + this command: +\begin{verbatim} + dd if=/dev/zero bs=1024 count=512 | growisofs -Z /dev/xxx=/dev/fd/0 +\end{verbatim} + Then, try to mount the device, if it cannot be mounted, it will be considered + as blank by Bacula, if it can be mounted, try a full blank (see below). + +\item If you wish to blank completely a DVD+/-RW, use the following: +\begin{verbatim} + growisofs -Z /dev/xxx=/dev/zero +\end{verbatim} + where you replace xxx with your DVD device name. However, note that this + blanks the whole DVD, which takes quite a long time (16 minutes on mine). +\item DVD+RW and DVD-RW support only about 1000 overwrites (i.e. don't use the +same medium for years if you don't want to have problems...). + +To write to the DVD the first time use: +\begin{verbatim} + growisofs -Z /dev/xxx filename +\end{verbatim} + +To add additional files (more parts use): + +\begin{verbatim} + growisofs -M /dev/xxx filename +\end{verbatim} + +The option {\bf -use-the-force-luke=4gms} was added in growisofs 5.20 to +override growisofs' behavior of always checking for the 4GB limit. +Normally, this option is recommended for all Linux 2.6.8 kernels or +greater, since these newer kernels can handle writing more than 4GB. +See below for more details on this subject. + +\item For more information about DVD writing, please look at the +\elink{dvd+rw-tools homepage}{http://fy.chalmers.se/~appro/linux/DVD+RW/}. + +\item According to bug \#912, bscan cannot read multi-volume DVDs. This is +on our TODO list, but unless someone submits a patch it is not likely to be +done any time in the near future. (9 Sept 2007). + +\end{itemize} diff --git a/docs/manuals/fr/misc/base/fdl.tex b/docs/manuals/fr/misc/base/fdl.tex new file mode 100644 index 00000000..b46cd990 --- /dev/null +++ b/docs/manuals/fr/misc/base/fdl.tex @@ -0,0 +1,485 @@ +% TODO: maybe get rid of centering + +\chapter{GNU Free Documentation License} +\index[general]{GNU Free Documentation License} +\index[general]{License!GNU Free Documentation} + +\label{label_fdl} + + \begin{center} + + Version 1.2, November 2002 + + + Copyright \copyright 2000,2001,2002 Free Software Foundation, Inc. + + \bigskip + + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + \bigskip + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. +\end{center} + + +\begin{center} +{\bf\large Preamble} +\end{center} + +The purpose of this License is to make a manual, textbook, or other +functional and useful document "free" in the sense of freedom: to +assure everyone the effective freedom to copy and redistribute it, +with or without modifying it, either commercially or noncommercially. +Secondarily, this License preserves for the author and publisher a way +to get credit for their work, while not being considered responsible +for modifications made by others. + +This License is a kind of "copyleft", which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + + +\begin{center} +{\Large\bf 1. APPLICABILITY AND DEFINITIONS} +\end{center} + +This License applies to any manual or other work, in any medium, that +contains a notice placed by the copyright holder saying it can be +distributed under the terms of this License. Such a notice grants a +world-wide, royalty-free license, unlimited in duration, to use that +work under the conditions stated herein. The \textbf{"Document"}, below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as \textbf{"you"}. You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law. + +A \textbf{"Modified Version"} of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +A \textbf{"Secondary Section"} is a named appendix or a front-matter section of +the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall subject +(or to related matters) and contains nothing that could fall directly +within that overall subject. (Thus, if the Document is in part a +textbook of mathematics, a Secondary Section may not explain any +mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +The \textbf{"Invariant Sections"} are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. If a +section does not fit the above definition of Secondary then it is not +allowed to be designated as Invariant. The Document may contain zero +Invariant Sections. If the Document does not identify any Invariant +Sections then there are none. + +The \textbf{"Cover Texts"} are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. A Front-Cover Text may +be at most 5 words, and a Back-Cover Text may be at most 25 words. + +A \textbf{"Transparent"} copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, that is suitable for revising the document +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup, or absence of markup, has been arranged to thwart +or discourage subsequent modification by readers is not Transparent. +An image format is not Transparent if used for any substantial amount +of text. A copy that is not "Transparent" is called \textbf{"Opaque"}. + +Examples of suitable formats for Transparent copies include plain +ASCII without markup, Texinfo input format, LaTeX input format, SGML +or XML using a publicly available DTD, and standard-conforming simple +HTML, PostScript or PDF designed for human modification. Examples of +transparent image formats include PNG, XCF and JPG. Opaque formats +include proprietary formats that can be read and edited only by +proprietary word processors, SGML or XML for which the DTD and/or +processing tools are not generally available, and the +machine-generated HTML, PostScript or PDF produced by some word +processors for output purposes only. + +The \textbf{"Title Page"} means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, "Title Page" means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. + +A section \textbf{"Entitled XYZ"} means a named subunit of the Document whose +title either is precisely XYZ or contains XYZ in parentheses following +text that translates XYZ in another language. (Here XYZ stands for a +specific section name mentioned below, such as \textbf{"Acknowledgements"}, +\textbf{"Dedications"}, \textbf{"Endorsements"}, or \textbf{"History"}.) +To \textbf{"Preserve the Title"} +of such a section when you modify the Document means that it remains a +section "Entitled XYZ" according to this definition. + +The Document may include Warranty Disclaimers next to the notice which +states that this License applies to the Document. These Warranty +Disclaimers are considered to be included by reference in this +License, but only as regards disclaiming warranties: any other +implication that these Warranty Disclaimers may have is void and has +no effect on the meaning of this License. + + +\begin{center} +{\Large\bf 2. VERBATIM COPYING} +\end{center} + +You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +You may also lend copies, under the same conditions stated above, and +you may publicly display copies. + + +\begin{center} +{\Large\bf 3. COPYING IN QUANTITY} +\end{center} + + +If you publish printed copies (or copies in media that commonly have +printed covers) of the Document, numbering more than 100, and the +Document's license notice requires Cover Texts, you must enclose the +copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a computer-network location from which the general network-using +public has access to download using public-standard network protocols +a complete Transparent copy of the Document, free of added material. +If you use the latter option, you must take reasonably prudent steps, +when you begin distribution of Opaque copies in quantity, to ensure +that this Transparent copy will remain thus accessible at the stated +location until at least one year after the last time you distribute an +Opaque copy (directly or through your agents or retailers) of that +edition to the public. + +It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. + + +\begin{center} +{\Large\bf 4. MODIFICATIONS} +\end{center} + +You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +\begin{itemize} +\item[A.] + Use in the Title Page (and on the covers, if any) a title distinct + from that of the Document, and from those of previous versions + (which should, if there were any, be listed in the History section + of the Document). You may use the same title as a previous version + if the original publisher of that version gives permission. + +\item[B.] + List on the Title Page, as authors, one or more persons or entities + responsible for authorship of the modifications in the Modified + Version, together with at least five of the principal authors of the + Document (all of its principal authors, if it has fewer than five), + unless they release you from this requirement. + +\item[C.] + State on the Title page the name of the publisher of the + Modified Version, as the publisher. + +\item[D.] + Preserve all the copyright notices of the Document. + +\item[E.] + Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. + +\item[F.] + Include, immediately after the copyright notices, a license notice + giving the public permission to use the Modified Version under the + terms of this License, in the form shown in the Addendum below. + +\item[G.] + Preserve in that license notice the full lists of Invariant Sections + and required Cover Texts given in the Document's license notice. + +\item[H.] + Include an unaltered copy of this License. + +\item[I.] + Preserve the section Entitled "History", Preserve its Title, and add + to it an item stating at least the title, year, new authors, and + publisher of the Modified Version as given on the Title Page. If + there is no section Entitled "History" in the Document, create one + stating the title, year, authors, and publisher of the Document as + given on its Title Page, then add an item describing the Modified + Version as stated in the previous sentence. + +\item[J.] + Preserve the network location, if any, given in the Document for + public access to a Transparent copy of the Document, and likewise + the network locations given in the Document for previous versions + it was based on. These may be placed in the "History" section. + You may omit a network location for a work that was published at + least four years before the Document itself, or if the original + publisher of the version it refers to gives permission. + +\item[K.] + For any section Entitled "Acknowledgements" or "Dedications", + Preserve the Title of the section, and preserve in the section all + the substance and tone of each of the contributor acknowledgements + and/or dedications given therein. + +\item[L.] + Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section titles. + +\item[M.] + Delete any section Entitled "Endorsements". Such a section + may not be included in the Modified Version. + +\item[N.] + Do not retitle any existing section to be Entitled "Endorsements" + or to conflict in title with any Invariant Section. + +\item[O.] + Preserve any Warranty Disclaimers. +\end{itemize} + +If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +You may add a section Entitled "Endorsements", provided it contains +nothing but endorsements of your Modified Version by various +parties--for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. + + +\begin{center} +{\Large\bf 5. COMBINING DOCUMENTS} +\end{center} + + +You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice, and that you preserve all their Warranty Disclaimers. + +The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +In the combination, you must combine any sections Entitled "History" +in the various original documents, forming one section Entitled +"History"; likewise combine any sections Entitled "Acknowledgements", +and any sections Entitled "Dedications". You must delete all sections +Entitled "Endorsements". + +\begin{center} +{\Large\bf 6. COLLECTIONS OF DOCUMENTS} +\end{center} + +You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. + +You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. + + +\begin{center} +{\Large\bf 7. AGGREGATION WITH INDEPENDENT WORKS} +\end{center} + + +A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, is called an "aggregate" if the copyright +resulting from the compilation is not used to limit the legal rights +of the compilation's users beyond what the individual works permit. +When the Document is included in an aggregate, this License does not +apply to the other works in the aggregate which are not themselves +derivative works of the Document. + +If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one half of +the entire aggregate, the Document's Cover Texts may be placed on +covers that bracket the Document within the aggregate, or the +electronic equivalent of covers if the Document is in electronic form. +Otherwise they must appear on printed covers that bracket the whole +aggregate. + + +\begin{center} +{\Large\bf 8. TRANSLATION} +\end{center} + + +Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License, and all the license notices in the +Document, and any Warranty Disclaimers, provided that you also include +the original English version of this License and the original versions +of those notices and disclaimers. In case of a disagreement between +the translation and the original version of this License or a notice +or disclaimer, the original version will prevail. + +If a section in the Document is Entitled "Acknowledgements", +"Dedications", or "History", the requirement (section 4) to Preserve +its Title (section 1) will typically require changing the actual +title. + + +\begin{center} +{\Large\bf 9. TERMINATION} +\end{center} + + +You may not copy, modify, sublicense, or distribute the Document except +as expressly provided for under this License. Any other attempt to +copy, modify, sublicense or distribute the Document is void, and will +automatically terminate your rights under this License. However, +parties who have received copies, or rights, from you under this +License will not have their licenses terminated so long as such +parties remain in full compliance. + + +\begin{center} +{\Large\bf 10. FUTURE REVISIONS OF THIS LICENSE} +\end{center} + + +The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. See +http://www.gnu.org/copyleft/. + +Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License "or any later version" applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. + + +\begin{center} +{\Large\bf ADDENDUM: How to use this License for your documents} +% TODO: this is too long for table of contents +\end{center} + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + +\bigskip +\begin{quote} + Copyright \copyright YEAR YOUR NAME. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.2 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. + A copy of the license is included in the section entitled "GNU + Free Documentation License". +\end{quote} +\bigskip + +If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the "with...Texts." line with this: + +\bigskip +\begin{quote} + with the Invariant Sections being LIST THEIR TITLES, with the + Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. +\end{quote} +\bigskip + +If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + +If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. + +%--------------------------------------------------------------------- diff --git a/docs/manuals/fr/misc/base/gpl.tex b/docs/manuals/fr/misc/base/gpl.tex new file mode 100644 index 00000000..a368afc7 --- /dev/null +++ b/docs/manuals/fr/misc/base/gpl.tex @@ -0,0 +1,420 @@ +%% +%% + +\section*{GNU General Public License} +\label{GplChapter} +\index[general]{GNU General Public License } +\index[general]{License!GNU General Public } + +\elink{image of a Philosophical +GNU}{http://www.gnu.org/graphics/philosophicalgnu.html} + +\begin{itemize} +\item + \elink{What to do if you see a possible GPL + violation}{http://www.gnu.org/copyleft/gpl-violation.html} +\item + \elink{Translations of the + GPL}{http://www.gnu.org/copyleft/copyleft.html\#translations} +\end{itemize} + + +\section{Table of Contents} +\index[general]{Table of Contents } +\index[general]{Contents!Table of } + +\begin{itemize} +\item + \label{TOC1} + \ilink{GNU GENERAL PUBLIC LICENSE}{SEC1} + +\begin{itemize} +\item + \label{TOC2} + \ilink{Preamble}{SEC2} +\item + \label{TOC3} + \ilink{TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND +MODIFICATION}{SEC3} +\item + \label{TOC4} + \ilink{How to Apply These Terms to Your New Programs}{SEC4} +\end{itemize} + +\end{itemize} + + +\section{GNU GENERAL PUBLIC LICENSE} +\label{SEC1} +\index[general]{GNU GENERAL PUBLIC LICENSE } +\index[general]{LICENSE!GNU GENERAL PUBLIC } + +Version 2, June 1991 + +\footnotesize +\begin{verbatim} +Copyright (C) 1989, 1991 Free Software Foundation, Inc. +51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. +\end{verbatim} +\normalsize + +\section{Preamble} +\label{SEC2} +\index[general]{Preamble } + +The licenses for most software are designed to take away your freedom to share +and change it. By contrast, the GNU General Public License is intended to +guarantee your freedom to share and change free software\verb:--:to make sure the +software is free for all its users. This General Public License applies to +most of the Free Software Foundation's software and to any other program whose +authors commit to using it. (Some other Free Software Foundation software is +covered by the GNU Library General Public License instead.) You can apply it +to your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our +General Public Licenses are designed to make sure that you have the freedom to +distribute copies of free software (and charge for this service if you wish), +that you receive source code or can get it if you want it, that you can change +the software or use pieces of it in new free programs; and that you know you +can do these things. + +To protect your rights, we need to make restrictions that forbid anyone to +deny you these rights or to ask you to surrender the rights. These +restrictions translate to certain responsibilities for you if you distribute +copies of the software, or if you modify it. + +For example, if you distribute copies of such a program, whether gratis or for +a fee, you must give the recipients all the rights that you have. You must +make sure that they, too, receive or can get the source code. And you must +show them these terms so they know their rights. + +We protect your rights with two steps: (1) copyright the software, and (2) +offer you this license which gives you legal permission to copy, distribute +and/or modify the software. + +Also, for each author's protection and ours, we want to make certain that +everyone understands that there is no warranty for this free software. If the +software is modified by someone else and passed on, we want its recipients to +know that what they have is not the original, so that any problems introduced +by others will not reflect on the original authors' reputations. + +Finally, any free program is threatened constantly by software patents. We +wish to avoid the danger that redistributors of a free program will +individually obtain patent licenses, in effect making the program proprietary. +To prevent this, we have made it clear that any patent must be licensed for +everyone's free use or not licensed at all. + +The precise terms and conditions for copying, distribution and modification +follow. + +\section{TERMS AND CONDITIONS} +\label{SEC3} +\index[general]{CONDITIONS!TERMS AND } +\index[general]{TERMS AND CONDITIONS } + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +{\bf 0.} This License applies to any program or other work which contains a +notice placed by the copyright holder saying it may be distributed under the +terms of this General Public License. The "Program", below, refers to any +such program or work, and a "work based on the Program" means either the +Program or any derivative work under copyright law: that is to say, a work +containing the Program or a portion of it, either verbatim or with +modifications and/or translated into another language. (Hereinafter, +translation is included without limitation in the term "modification".) Each +licensee is addressed as "you". + +Activities other than copying, distribution and modification are not covered +by this License; they are outside its scope. The act of running the Program is +not restricted, and the output from the Program is covered only if its +contents constitute a work based on the Program (independent of having been +made by running the Program). Whether that is true depends on what the Program +does. + +{\bf 1.} You may copy and distribute verbatim copies of the Program's source +code as you receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice and +disclaimer of warranty; keep intact all the notices that refer to this License +and to the absence of any warranty; and give any other recipients of the +Program a copy of this License along with the Program. + +You may charge a fee for the physical act of transferring a copy, and you may +at your option offer warranty protection in exchange for a fee. + +{\bf 2.} You may modify your copy or copies of the Program or any portion of +it, thus forming a work based on the Program, and copy and distribute such +modifications or work under the terms of Section 1 above, provided that you +also meet all of these conditions: + +\begin{itemize} +\item {\bf a)} You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + +\item {\bf b)} You must cause any work that you distribute or publish, that + in whole or in part contains or is derived from the Program or any part + thereof, to be licensed as a whole at no charge to all third parties under + the terms of this License. + +\item {\bf c)} If the modified program normally reads commands interactively + when run, you must cause it, when started running for such interactive use in + the most ordinary way, to print or display an announcement including an + appropriate copyright notice and a notice that there is no warranty (or else, + saying that you provide a warranty) and that users may redistribute the + program under these conditions, and telling the user how to view a copy of + this License. (Exception: if the Program itself is interactive but does not + normally print such an announcement, your work based on the Program is not + required to print an announcement.) +\end{itemize} + +These requirements apply to the modified work as a whole. If identifiable +sections of that work are not derived from the Program, and can be reasonably +considered independent and separate works in themselves, then this License, +and its terms, do not apply to those sections when you distribute them as +separate works. But when you distribute the same sections as part of a whole +which is a work based on the Program, the distribution of the whole must be on +the terms of this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest your +rights to work written entirely by you; rather, the intent is to exercise the +right to control the distribution of derivative or collective works based on +the Program. + +In addition, mere aggregation of another work not based on the Program with +the Program (or with a work based on the Program) on a volume of a storage or +distribution medium does not bring the other work under the scope of this +License. + +{\bf 3.} You may copy and distribute the Program (or a work based on it, under +Section 2) in object code or executable form under the terms of Sections 1 and +2 above provided that you also do one of the following: + +\begin{itemize} +\item {\bf a)} Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections 1 and 2 + above on a medium customarily used for software interchange; or, + +\item {\bf b)} Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your cost of + physically performing source distribution, a complete machine-readable copy of + the corresponding source code, to be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + +\item {\bf c)} Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is allowed only + for noncommercial distribution and only if you received the program in object + code or executable form with such an offer, in accord with Subsection b + above.) +\end{itemize} + +The source code for a work means the preferred form of the work for making +modifications to it. For an executable work, complete source code means all +the source code for all modules it contains, plus any associated interface +definition files, plus the scripts used to control compilation and +installation of the executable. However, as a special exception, the source +code distributed need not include anything that is normally distributed (in +either source or binary form) with the major components (compiler, kernel, and +so on) of the operating system on which the executable runs, unless that +component itself accompanies the executable. + +If distribution of executable or object code is made by offering access to +copy from a designated place, then offering equivalent access to copy the +source code from the same place counts as distribution of the source code, +even though third parties are not compelled to copy the source along with the +object code. + +{\bf 4.} You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt otherwise to +copy, modify, sublicense or distribute the Program is void, and will +automatically terminate your rights under this License. However, parties who +have received copies, or rights, from you under this License will not have +their licenses terminated so long as such parties remain in full compliance. + +{\bf 5.} You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or distribute +the Program or its derivative works. These actions are prohibited by law if +you do not accept this License. Therefore, by modifying or distributing the +Program (or any work based on the Program), you indicate your acceptance of +this License to do so, and all its terms and conditions for copying, +distributing or modifying the Program or works based on it. + +{\bf 6.} Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the original +licensor to copy, distribute or modify the Program subject to these terms and +conditions. You may not impose any further restrictions on the recipients' +exercise of the rights granted herein. You are not responsible for enforcing +compliance by third parties to this License. + +{\bf 7.} If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or otherwise) +that contradict the conditions of this License, they do not excuse you from +the conditions of this License. If you cannot distribute so as to satisfy +simultaneously your obligations under this License and any other pertinent +obligations, then as a consequence you may not distribute the Program at all. +For example, if a patent license would not permit royalty-free redistribution +of the Program by all those who receive copies directly or indirectly through +you, then the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply and +the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents or +other property right claims or to contest validity of any such claims; this +section has the sole purpose of protecting the integrity of the free software +distribution system, which is implemented by public license practices. Many +people have made generous contributions to the wide range of software +distributed through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing to +distribute software through any other system and a licensee cannot impose that +choice. + +This section is intended to make thoroughly clear what is believed to be a +consequence of the rest of this License. + +{\bf 8.} If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the original +copyright holder who places the Program under this License may add an explicit +geographical distribution limitation excluding those countries, so that +distribution is permitted only in or among countries not thus excluded. In +such case, this License incorporates the limitation as if written in the body +of this License. + +{\bf 9.} The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will be +similar in spirit to the present version, but may differ in detail to address +new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any later +version", you have the option of following the terms and conditions either of +that version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of this License, +you may choose any version ever published by the Free Software Foundation. + +{\bf 10.} If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author to +ask for permission. For software which is copyrighted by the Free Software +Foundation, write to the Free Software Foundation; we sometimes make +exceptions for this. Our decision will be guided by the two goals of +preserving the free status of all derivatives of our free software and of +promoting the sharing and reuse of software generally. + +{\bf NO WARRANTY} + +{\bf 11.} BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE +THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR +IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO +THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM +PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR +CORRECTION. + +{\bf 12.} IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO +LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR +THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + +END OF TERMS AND CONDITIONS + +\section{How to Apply These Terms to Your New Programs} +\label{SEC4} +\index[general]{Programs!How to Apply These Terms to Your New } +\index[general]{How to Apply These Terms to Your New Programs } + +If you develop a new program, and you want it to be of the greatest possible +use to the public, the best way to achieve this is to make it free software +which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest to attach +them to the start of each source file to most effectively convey the exclusion +of warranty; and each file should have at least the "copyright" line and a +pointer to where the full notice is found. + +\footnotesize +\begin{verbatim} +{\em one line to give the program's name and an idea of what it does.} +Copyright (C) {\em yyyy} {\em name of author} +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +02110-1301 USA +\end{verbatim} +\normalsize + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this when it +starts in an interactive mode: + +\footnotesize +\begin{verbatim} +Gnomovision version 69, Copyright (C) {\em year} {\em name of author} +Gnomovision comes with ABSOLUTELY NO WARRANTY; for details +type `show w'. This is free software, and you are welcome +to redistribute it under certain conditions; type `show c' +for details. +\end{verbatim} +\normalsize + +The hypothetical commands {\tt `show w'} and {\tt `show c'} should show the +appropriate parts of the General Public License. Of course, the commands you +use may be called something other than {\tt `show w'} and {\tt `show c'}; they +could even be mouse-clicks or menu items\verb:--:whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + +\footnotesize +\begin{verbatim} +Yoyodyne, Inc., hereby disclaims all copyright +interest in the program `Gnomovision' +(which makes passes at compilers) written +by James Hacker. +{\em signature of Ty Coon}, 1 April 1989 +Ty Coon, President of Vice +\end{verbatim} +\normalsize + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General Public +License instead of this License. +Return to +\elink{GNU's home page}{http://www.gnu.org/home.html}. + +FSF \& GNU inquiries \& questions to +\elink{gnu@gnu.org}{mailto:gnu@gnu.org}. Other +\elink{ways to contact}{http://www.gnu.org/home.html\#ContactInfo} the FSF. + +Comments on these web pages to +\elink{webmasters@www.gnu.org}{mailto:webmasters@www.gnu.org}, send other +questions to +\elink{gnu@gnu.org}{mailto:gnu@gnu.org}. + +Copyright notice above. +Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, +Boston, MA 02110-1301 USA + +Updated: 3 Jan 2000 rms diff --git a/docs/manuals/fr/misc/base/internaldb.tex b/docs/manuals/fr/misc/base/internaldb.tex new file mode 100644 index 00000000..65cd0ea0 --- /dev/null +++ b/docs/manuals/fr/misc/base/internaldb.tex @@ -0,0 +1,76 @@ +%% +%% + +\chapter{The internal database is not supported, please do not +use it.} +\label{InternalDbChapter} +\index[general]{Use it!The internal database is not supported please +do not } +\index[general]{The internal database is not supported, please do not +use it. } + +\section{Internal Bacula Database} +\index[general]{Internal Bacula Database } +\index[general]{Database!Internal Bacula } + +Previously it was intended to be used primarily by Bacula developers for +testing; although SQLite is also a good choice for this. We do not recommend +its use in general. + +This database is simplistic in that it consists entirely of Bacula's internal +structures appended sequentially to a file. Consequently, it is in most cases +inappropriate for sites with many clients or systems with large numbers of +files, or long-term production environments. + +Below, you will find a table comparing the features available with SQLite and +MySQL and with the internal Bacula database. At the current time, you cannot +dynamically switch from one to the other, but must rebuild the Bacula source +code. If you wish to experiment with both, it is possible to build both +versions of Bacula and install them into separate directories. + +\addcontentsline{lot}{table}{SQLite vs MySQL Database Comparison} +\begin{longtable}{|l|l|l|} + \hline +\multicolumn{1}{|c| }{\bf Feature } & \multicolumn{1}{c| }{\bf SQLite or MySQL + } & \multicolumn{1}{c| }{\bf Bacula } \\ + \hline +{Job Record } & {Yes } & {Yes } \\ + \hline +{Media Record } & {Yes } & {Yes } \\ + \hline +{FileName Record } & {Yes } & {No } \\ + \hline +{File Record } & {Yes } & {No } \\ + \hline +{FileSet Record } & {Yes } & {Yes } \\ + \hline +{Pool Record } & {Yes } & {Yes } \\ + \hline +{Client Record } & {Yes } & {Yes } \\ + \hline +{JobMedia Record } & {Yes } & {Yes } \\ + \hline +{List Job Records } & {Yes } & {Yes } \\ + \hline +{List Media Records } & {Yes } & {Yes } \\ + \hline +{List Pool Records } & {Yes } & {Yes } \\ + \hline +{List JobMedia Records } & {Yes } & {Yes } \\ + \hline +{Delete Pool Record } & {Yes } & {Yes } \\ + \hline +{Delete Media Record } & {Yes } & {Yes } \\ + \hline +{Update Pool Record } & {Yes } & {Yes } \\ + \hline +{Implement Verify } & {Yes } & {No } \\ + \hline +{MD5 Signatures } & {Yes } & {No } +\\ \hline + +\end{longtable} + +In addition, since there is no SQL available, the Console commands: {\bf +sqlquery}, {\bf query}, {\bf retention}, and any other command that directly +uses SQL are not available with the Internal database. diff --git a/docs/manuals/fr/misc/base/lesser.tex b/docs/manuals/fr/misc/base/lesser.tex new file mode 100644 index 00000000..bc3c3123 --- /dev/null +++ b/docs/manuals/fr/misc/base/lesser.tex @@ -0,0 +1,573 @@ +%% +%% + +\section*{GNU Lesser General Public License} +\label{LesserChapter} +\index[general]{GNU Lesser General Public License } +\index[general]{License!GNU Lesser General Public } + +\elink{image of a Philosophical GNU} +{http://www.gnu.org/graphics/philosophicalgnu.html} [ +\elink{English}{http://www.gnu.org/copyleft/lesser.html} | +\elink{Japanese}{http://www.gnu.org/copyleft/lesser.ja.html} ] + +\begin{itemize} +\item + \elink{Why you shouldn't use the Lesser GPL for your next + library}{http://www.gnu.org/philosophy/why-not-lgpl.html} +\item + \elink{What to do if you see a possible LGPL + violation}{http://www.gnu.org/copyleft/gpl-violation.html} +\item + \elink{Translations of the LGPL} +{http://www.gnu.org/copyleft/copyleft.html\#translationsLGPL} +\item The GNU Lesser General Public License as a + \elink{text file}{http://www.gnu.org/copyleft/lesser.txt} +\item The GNU Lesser General Public License as a + \elink{Texinfo}{http://www.gnu.org/copyleft/lesser.texi} file + \end{itemize} + + +This GNU Lesser General Public License counts as the successor of the GNU +Library General Public License. For an explanation of why this change was +necessary, read the +\elink{Why you shouldn't use the Lesser GPL for your next +library}{http://www.gnu.org/philosophy/why-not-lgpl.html} article. + +\section{Table of Contents} +\index[general]{Table of Contents } +\index[general]{Contents!Table of } + +\begin{itemize} +\item + \label{TOC12} + \ilink{GNU LESSER GENERAL PUBLIC LICENSE}{SEC12} + +\begin{itemize} +\item + \label{TOC23} + \ilink{Preamble}{SEC23} +\item + \label{TOC34} + \ilink{TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND +MODIFICATION}{SEC34} +\item + \label{TOC45} + \ilink{How to Apply These Terms to Your New Libraries}{SEC45} +\end{itemize} + +\end{itemize} + + +\section{GNU LESSER GENERAL PUBLIC LICENSE} +\label{SEC12} +\index[general]{LICENSE!GNU LESSER GENERAL PUBLIC } +\index[general]{GNU LESSER GENERAL PUBLIC LICENSE } + +Version 2.1, February 1999 + +\footnotesize +\begin{verbatim} +Copyright (C) 1991, 1999 Free Software Foundation, Inc. +51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] +\end{verbatim} +\normalsize + +\section{Preamble} +\label{SEC23} +\index[general]{Preamble } + +The licenses for most software are designed to take away your freedom to share +and change it. By contrast, the GNU General Public Licenses are intended to +guarantee your freedom to share and change free software\verb:--:to make sure the +software is free for all its users. + +This license, the Lesser General Public License, applies to some specially +designated software packages\verb:--:typically libraries\verb:--:of the Free Software +Foundation and other authors who decide to use it. You can use it too, but we +suggest you first think carefully about whether this license or the ordinary +General Public License is the better strategy to use in any particular case, +based on the explanations below. + +When we speak of free software, we are referring to freedom of use, not price. +Our General Public Licenses are designed to make sure that you have the +freedom to distribute copies of free software (and charge for this service if +you wish); that you receive source code or can get it if you want it; that you +can change the software and use pieces of it in new free programs; and that +you are informed that you can do these things. + +To protect your rights, we need to make restrictions that forbid distributors +to deny you these rights or to ask you to surrender these rights. These +restrictions translate to certain responsibilities for you if you distribute +copies of the library or if you modify it. + +For example, if you distribute copies of the library, whether gratis or for a +fee, you must give the recipients all the rights that we gave you. You must +make sure that they, too, receive or can get the source code. If you link +other code with the library, you must provide complete object files to the +recipients, so that they can relink them with the library after making changes +to the library and recompiling it. And you must show them these terms so they +know their rights. + +We protect your rights with a two-step method: (1) we copyright the library, +and (2) we offer you this license, which gives you legal permission to copy, +distribute and/or modify the library. + +To protect each distributor, we want to make it very clear that there is no +warranty for the free library. Also, if the library is modified by someone +else and passed on, the recipients should know that what they have is not the +original version, so that the original author's reputation will not be +affected by problems that might be introduced by others. + +Finally, software patents pose a constant threat to the existence of any free +program. We wish to make sure that a company cannot effectively restrict the +users of a free program by obtaining a restrictive license from a patent +holder. Therefore, we insist that any patent license obtained for a version of +the library must be consistent with the full freedom of use specified in this +license. + +Most GNU software, including some libraries, is covered by the ordinary GNU +General Public License. This license, the GNU Lesser General Public License, +applies to certain designated libraries, and is quite different from the +ordinary General Public License. We use this license for certain libraries in +order to permit linking those libraries into non-free programs. + +When a program is linked with a library, whether statically or using a shared +library, the combination of the two is legally speaking a combined work, a +derivative of the original library. The ordinary General Public License +therefore permits such linking only if the entire combination fits its +criteria of freedom. The Lesser General Public License permits more lax +criteria for linking other code with the library. + +We call this license the "Lesser" General Public License because it does +Less to protect the user's freedom than the ordinary General Public License. +It also provides other free software developers Less of an advantage over +competing non-free programs. These disadvantages are the reason we use the +ordinary General Public License for many libraries. However, the Lesser +license provides advantages in certain special circumstances. + +For example, on rare occasions, there may be a special need to encourage the +widest possible use of a certain library, so that it becomes a de-facto +standard. To achieve this, non-free programs must be allowed to use the +library. A more frequent case is that a free library does the same job as +widely used non-free libraries. In this case, there is little to gain by +limiting the free library to free software only, so we use the Lesser General +Public License. + +In other cases, permission to use a particular library in non-free programs +enables a greater number of people to use a large body of free software. For +example, permission to use the GNU C Library in non-free programs enables many +more people to use the whole GNU operating system, as well as its variant, the +GNU/Linux operating system. + +Although the Lesser General Public License is Less protective of the users' +freedom, it does ensure that the user of a program that is linked with the +Library has the freedom and the wherewithal to run that program using a +modified version of the Library. + +The precise terms and conditions for copying, distribution and modification +follow. Pay close attention to the difference between a "work based on the +library" and a "work that uses the library". The former contains code +derived from the library, whereas the latter must be combined with the library +in order to run. + +\section{TERMS AND CONDITIONS} +\label{SEC34} +\index[general]{CONDITIONS!TERMS AND } +\index[general]{TERMS AND CONDITIONS } + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +{\bf 0.} This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or other +authorized party saying it may be distributed under the terms of this Lesser +General Public License (also called "this License"). Each licensee is +addressed as "you". + +A "library" means a collection of software functions and/or data prepared so +as to be conveniently linked with application programs (which use some of +those functions and data) to form executables. + +The "Library", below, refers to any such software library or work which has +been distributed under these terms. A "work based on the Library" means +either the Library or any derivative work under copyright law: that is to say, +a work containing the Library or a portion of it, either verbatim or with +modifications and/or translated straightforwardly into another language. +(Hereinafter, translation is included without limitation in the term +"modification".) + +"Source code" for a work means the preferred form of the work for making +modifications to it. For a library, complete source code means all the source +code for all modules it contains, plus any associated interface definition +files, plus the scripts used to control compilation and installation of the +library. + +Activities other than copying, distribution and modification are not covered +by this License; they are outside its scope. The act of running a program +using the Library is not restricted, and output from such a program is covered +only if its contents constitute a work based on the Library (independent of +the use of the Library in a tool for writing it). Whether that is true depends +on what the Library does and what the program that uses the Library does. + +{\bf 1.} You may copy and distribute verbatim copies of the Library's complete +source code as you receive it, in any medium, provided that you conspicuously +and appropriately publish on each copy an appropriate copyright notice and +disclaimer of warranty; keep intact all the notices that refer to this License +and to the absence of any warranty; and distribute a copy of this License +along with the Library. + +You may charge a fee for the physical act of transferring a copy, and you may +at your option offer warranty protection in exchange for a fee. + +{\bf 2.} You may modify your copy or copies of the Library or any portion of +it, thus forming a work based on the Library, and copy and distribute such +modifications or work under the terms of Section 1 above, provided that you +also meet all of these conditions: + +\begin{itemize} +\item {\bf a)} The modified work must itself be a software library. +\item {\bf b)} You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. +\item {\bf c)} You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. +\item {\bf d)} If a facility in the modified Library refers to a function or + a table of data to be supplied by an application program that uses the + facility, other than as an argument passed when the facility is invoked, then +you must make a good faith effort to ensure that, in the event an application +does not supply such function or table, the facility still operates, and +performs whatever part of its purpose remains meaningful. + +(For example, a function in a library to compute square roots has a purpose +that is entirely well-defined independent of the application. Therefore, +Subsection 2d requires that any application-supplied function or table used +by this function must be optional: if the application does not supply it, the +square root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If identifiable +sections of that work are not derived from the Library, and can be reasonably +considered independent and separate works in themselves, then this License, +and its terms, do not apply to those sections when you distribute them as +separate works. But when you distribute the same sections as part of a whole +which is a work based on the Library, the distribution of the whole must be +on the terms of this License, whose permissions for other licensees extend to +the entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest your +rights to work written entirely by you; rather, the intent is to exercise the +right to control the distribution of derivative or collective works based on +the Library. + +In addition, mere aggregation of another work not based on the Library with +the Library (or with a work based on the Library) on a volume of a storage or +distribution medium does not bring the other work under the scope of this +License. +\end{itemize} + +{\bf 3.} You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do this, +you must alter all the notices that refer to this License, so that they refer +to the ordinary GNU General Public License, version 2, instead of to this +License. (If a newer version than version 2 of the ordinary GNU General Public +License has appeared, then you can specify that version instead if you wish.) +Do not make any other change in these notices. + +Once this change is made in a given copy, it is irreversible for that copy, so +the ordinary GNU General Public License applies to all subsequent copies and +derivative works made from that copy. + +This option is useful when you wish to copy part of the code of the Library +into a program that is not a library. + +{\bf 4.} You may copy and distribute the Library (or a portion or derivative +of it, under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you accompany it with the complete +corresponding machine-readable source code, which must be distributed under +the terms of Sections 1 and 2 above on a medium customarily used for software +interchange. + +If distribution of object code is made by offering access to copy from a +designated place, then offering equivalent access to copy the source code from +the same place satisfies the requirement to distribute the source code, even +though third parties are not compelled to copy the source along with the +object code. + +{\bf 5.} A program that contains no derivative of any portion of the Library, +but is designed to work with the Library by being compiled or linked with it, +is called a "work that uses the Library". Such a work, in isolation, is not +a derivative work of the Library, and therefore falls outside the scope of +this License. + +However, linking a "work that uses the Library" with the Library creates an +executable that is a derivative of the Library (because it contains portions +of the Library), rather than a "work that uses the library". The executable +is therefore covered by this License. Section 6 states terms for distribution +of such executables. + +When a "work that uses the Library" uses material from a header file that is +part of the Library, the object code for the work may be a derivative work of +the Library even though the source code is not. Whether this is true is +especially significant if the work can be linked without the Library, or if +the work is itself a library. The threshold for this to be true is not +precisely defined by law. + +If such an object file uses only numerical parameters, data structure layouts +and accessors, and small macros and small inline functions (ten lines or less +in length), then the use of the object file is unrestricted, regardless of +whether it is legally a derivative work. (Executables containing this object +code plus portions of the Library will still fall under Section 6.) + +Otherwise, if the work is a derivative of the Library, you may distribute the +object code for the work under the terms of Section 6. Any executables +containing that work also fall under Section 6, whether or not they are linked +directly with the Library itself. + +{\bf 6.} As an exception to the Sections above, you may also combine or link a +"work that uses the Library" with the Library to produce a work containing +portions of the Library, and distribute that work under terms of your choice, +provided that the terms permit modification of the work for the customer's own +use and reverse engineering for debugging such modifications. + +You must give prominent notice with each copy of the work that the Library is +used in it and that the Library and its use are covered by this License. You +must supply a copy of this License. If the work during execution displays +copyright notices, you must include the copyright notice for the Library among +them, as well as a reference directing the user to the copy of this License. +Also, you must do one of these things: + +\begin{itemize} +\item {\bf a)} Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever changes were + used in the work (which must be distributed under Sections 1 and 2 above); +and, if the work is an executable linked with the Library, with the complete +machine-readable "work that uses the Library", as object code and/or source +code, so that the user can modify the Library and then relink to produce a +modified executable containing the modified Library. (It is understood that +the user who changes the contents of definitions files in the Library will +not necessarily be able to recompile the application to use the modified +definitions.) +\item {\bf b)} Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a copy of the + library already present on the user's computer system, rather than copying +library functions into the executable, and (2) will operate properly with a +modified version of the library, if the user installs one, as long as the +modified version is interface-compatible with the version that the work was +made with. +\item {\bf c)} Accompany the work with a written offer, valid for at least + three years, to give the same user the materials specified in Subsection 6a, + above, for a charge no more than the cost of performing this distribution. +\item {\bf d)} If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above specified + materials from the same place. +\item {\bf e)} Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + \end{itemize} + +For an executable, the required form of the "work that uses the Library" +must include any data and utility programs needed for reproducing the +executable from it. However, as a special exception, the materials to be +distributed need not include anything that is normally distributed (in either +source or binary form) with the major components (compiler, kernel, and so on) +of the operating system on which the executable runs, unless that component +itself accompanies the executable. + +It may happen that this requirement contradicts the license restrictions of +other proprietary libraries that do not normally accompany the operating +system. Such a contradiction means you cannot use both them and the Library +together in an executable that you distribute. + +{\bf 7.} You may place library facilities that are a work based on the Library +side-by-side in a single library together with other library facilities not +covered by this License, and distribute such a combined library, provided that +the separate distribution of the work based on the Library and of the other +library facilities is otherwise permitted, and provided that you do these two +things: + +\begin{itemize} +\item {\bf a)} Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library facilities. This must + be distributed under the terms of the Sections above. +\item {\bf b)} Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining where to find + the accompanying uncombined form of the same work. +\end{itemize} + +{\bf 8.} You may not copy, modify, sublicense, link with, or distribute the +Library except as expressly provided under this License. Any attempt otherwise +to copy, modify, sublicense, link with, or distribute the Library is void, and +will automatically terminate your rights under this License. However, parties +who have received copies, or rights, from you under this License will not have +their licenses terminated so long as such parties remain in full compliance. + +{\bf 9.} You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or distribute +the Library or its derivative works. These actions are prohibited by law if +you do not accept this License. Therefore, by modifying or distributing the +Library (or any work based on the Library), you indicate your acceptance of +this License to do so, and all its terms and conditions for copying, +distributing or modifying the Library or works based on it. + +{\bf 10.} Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the original +licensor to copy, distribute, link with or modify the Library subject to these +terms and conditions. You may not impose any further restrictions on the +recipients' exercise of the rights granted herein. You are not responsible for +enforcing compliance by third parties with this License. + +{\bf 11.} If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or otherwise) +that contradict the conditions of this License, they do not excuse you from +the conditions of this License. If you cannot distribute so as to satisfy +simultaneously your obligations under this License and any other pertinent +obligations, then as a consequence you may not distribute the Library at all. +For example, if a patent license would not permit royalty-free redistribution +of the Library by all those who receive copies directly or indirectly through +you, then the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, and +the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents or +other property right claims or to contest validity of any such claims; this +section has the sole purpose of protecting the integrity of the free software +distribution system which is implemented by public license practices. Many +people have made generous contributions to the wide range of software +distributed through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing to +distribute software through any other system and a licensee cannot impose that +choice. + +This section is intended to make thoroughly clear what is believed to be a +consequence of the rest of this License. + +{\bf 12.} If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the original +copyright holder who places the Library under this License may add an explicit +geographical distribution limitation excluding those countries, so that +distribution is permitted only in or among countries not thus excluded. In +such case, this License incorporates the limitation as if written in the body +of this License. + +{\bf 13.} The Free Software Foundation may publish revised and/or new versions +of the Lesser General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and "any later +version", you have the option of following the terms and conditions either of +that version or of any later version published by the Free Software +Foundation. If the Library does not specify a license version number, you may +choose any version ever published by the Free Software Foundation. + +{\bf 14.} If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, write to +the author to ask for permission. For software which is copyrighted by the +Free Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals of +preserving the free status of all derivatives of our free software and of +promoting the sharing and reuse of software generally. + +{\bf NO WARRANTY} + +{\bf 15.} BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE +THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR +IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO +THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY +PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR +CORRECTION. + +{\bf 16.} IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO +LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR +THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + +END OF TERMS AND CONDITIONS + +\section{How to Apply These Terms to Your New Libraries} +\label{SEC45} +\index[general]{Libraries!How to Apply These Terms to Your New } +\index[general]{How to Apply These Terms to Your New Libraries } + + +If you develop a new library, and you want it to be of the greatest possible +use to the public, we recommend making it free software that everyone can +redistribute and change. You can do so by permitting redistribution under +these terms (or, alternatively, under the terms of the ordinary General Public +License). + +To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + +\footnotesize +\begin{verbatim} +{\it one line to give the library's name and an idea of what it does.} +Copyright (C) {\it year} {\it name of author} +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 +USA +\end{verbatim} +\normalsize + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + +\footnotesize +\begin{verbatim} +Yoyodyne, Inc., hereby disclaims all copyright interest in +the library "Frob" (a library for tweaking knobs) written +by James Random Hacker. +{\it signature of Ty Coon}, 1 April 1990 +Ty Coon, President of Vice +\end{verbatim} +\normalsize + +That's all there is to it! +Return to +\elink{GNU's home page}{http://www.gnu.org/home.html}. + +FSF \& GNU inquiries \& questions to +\elink{gnu@gnu.org}{mailto:gnu@gnu.org}. Other +\elink{ways to contact}{http://www.gnu.org/home.html\#ContactInfo} the FSF. + +Comments on these web pages to +\elink{webmasters@www.gnu.org}{mailto:webmasters@www.gnu.org}, send other +questions to +\elink{gnu@gnu.org}{mailto:gnu@gnu.org}. + +Copyright notice above. +Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, +Boston, MA 02110-1301 USA +USA + +Updated: 27 Nov 2000 paulv diff --git a/docs/manuals/fr/misc/base/license.tex b/docs/manuals/fr/misc/base/license.tex new file mode 100644 index 00000000..744cea2c --- /dev/null +++ b/docs/manuals/fr/misc/base/license.tex @@ -0,0 +1,113 @@ +%% +%% + +\chapter{Bacula Copyright, Trademark, and Licenses} +\label{LicenseChapter} +\index[general]{Licenses!Bacula Copyright Trademark} +\index[general]{Bacula Copyright, Trademark, and Licenses} + +There are a number of different licenses that are used in Bacula. +If you have a printed copy of this manual, the details of each of +the licenses referred to in this chapter can be found in the +online version of the manual at +\elink{http://www.bacula.org}{http://www.bacula.org}. + +\section{FDL} +\index[general]{FDL } + +The GNU Free Documentation License (FDL) is used for this manual, +which is a free and open license. This means that you may freely +reproduce it and even make changes to it. However, rather than +distribute your own version of this manual, we would much prefer +if you would send any corrections or changes to the Bacula project. + +The most recent version of the manual can always be found online +at \elink{http://www.bacula.org}{http://www.bacula.org}. + +\section{GPL} +\index[general]{GPL } + +The vast bulk of the source code is released under the +\ilink{GNU General Public License version 2.}{GplChapter}. + +Most of this code is copyrighted: Copyright \copyright 2000-2009 +Free Software Foundation Europe e.V. + +Portions may be copyrighted by other people. These files are released +under different licenses which are compatible with the Bacula GPLv2 license. + +\section{LGPL} +\index[general]{LGPL } + +Some of the Bacula library source code is released under the +\ilink{GNU Lesser General Public License.}{LesserChapter} This +permits third parties to use these parts of our code in their proprietary +programs to interface to Bacula. + +\section{Public Domain} +\index[general]{Domain!Public } +\index[general]{Public Domain } + +Some of the Bacula code, or code that Bacula references, has been released +to the public domain. E.g. md5.c, SQLite. + +\section{Trademark} +\index[general]{Trademark } + +Bacula\raisebox{.6ex}{\textsuperscript{\textregistered}} is a registered +trademark of Kern Sibbald. + +We have trademarked the Bacula name to ensure that any program using the +name Bacula will be exactly compatible with the program that we have +released. The use of the name Bacula is restricted to software systems +that agree exactly with the program presented here. If you have made +modifications to the Bacula source code that alter in any significant +way the way the program functions, you may not distribute it using the +Bacula name. + +\section{Fiduciary License Agreement} +\index[general]{Fiduciary License Agreement } +Developers who have contributed significant changes to the Bacula code +should have signed a Fiduciary License Agreement (FLA), which +guarantees them the right to use the code they have developed, and also +ensures that the Free Software Foundation Europe (and thus the Bacula +project) has the rights to the code. This Fiduciary License Agreement +is found on the Bacula web site at: + +\elink{http://www.bacula.org/en/FLA-bacula.en.pdf}{http://www.bacula.org/en/FLA-bacula.en.pdf} + +and if you are submitting code, you should fill it out then sent to: + +\begin{quote} + Kern Sibbald \\ + Cotes-de-Montmoiret 9 \\ + 1012 Lausanne \\ + Switzerland \\ +\end{quote} + +When you send in such a +complete document, please notify me: kern at sibbald dot com. + + +\section{Disclaimer} +\index[general]{Disclaimer } + +NO WARRANTY + +BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE +PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE +STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE +PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND +PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, +YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY +COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE +PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE +OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR +DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR +A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH +HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. diff --git a/docs/manuals/fr/misc/base/misc.tex b/docs/manuals/fr/misc/base/misc.tex new file mode 100644 index 00000000..59351e52 --- /dev/null +++ b/docs/manuals/fr/misc/base/misc.tex @@ -0,0 +1,64 @@ +%% +%% +%% The following characters must be preceded by a backslash +%% to be entered as printable characters: +%% +%% # $ % & ~ _ ^ \ { } +%% + +\documentclass[10pt,a4paper]{book} + +\topmargin -0.5in +\oddsidemargin 0.0in +\evensidemargin 0.0in +\textheight 10in +\textwidth 6.5in + + +\usepackage{html} +\usepackage{float} +\usepackage{graphicx} +\usepackage{bacula} +\usepackage{longtable} +\usepackage{makeidx} +\usepackage{index} +\usepackage{setspace} +\usepackage{hyperref} +% \usepackage[linkcolor=black,colorlinks=true]{hyperref} +\usepackage{url} + +\makeindex +\newindex{general}{idx}{ind}{General Index} + +\sloppy + +\begin{document} +\sloppy + +\include{coverpage} + +\clearpage +\pagenumbering{roman} +\tableofcontents +\clearpage + +\pagestyle{myheadings} +\markboth{Bacula Version \version}{Bacula Version \version} +\pagenumbering{arabic} +\include{python} +\include{vars} +\include{stunnel} +\include{dvd} +\include{projects} +\include{internaldb} +\include{license} +\include{fdl} +\include{gpl} +\include{lesser} + + +% pull in the index +\clearpage +\printindex[general] + +\end{document} diff --git a/docs/manuals/fr/misc/base/projects.tex b/docs/manuals/fr/misc/base/projects.tex new file mode 100644 index 00000000..f118e791 --- /dev/null +++ b/docs/manuals/fr/misc/base/projects.tex @@ -0,0 +1,28 @@ +%% +%% + +\chapter{Bacula Projects} +\label{ProjectsChapter} +\index[general]{Projects!Bacula } +\index[general]{Bacula Projects } + +Once a new major version of Bacula is released, the Bacula +users will vote on a list of new features. This vote is used +as the main element determining what new features will be +implemented for the next version. Generally, the development time +for a new release is between four to nine months. Sometimes it may be +a bit longer, but in that case, there will be a number of bug fix +updates to the currently released version. + +For the current list of project, please see the projects page in the CVS +at: \elink{http://cvs.sourceforge.net/viewcvs.py/*checkout*/bacula/bacula/projects} +{http://cvs.sourceforge.net/viewcvs.py/*checkout*/bacula/bacula/projects} +see the {\bf projects} file in the main source directory. The projects +file is updated approximately once every six months. + +Separately from the project list, Kern maintains a current list of +tasks as well as ideas, feature requests, and occasionally design +notes. This list is updated roughly weekly (sometimes more often). +For a current list of tasks you can see {\bf kernstodo} in the Source Forge +CVS at \elink{http://cvs.sourceforge.net/viewcvs.py/*checkout*/bacula/bacula/kernstodo} +{http://cvs.sourceforge.net/viewcvs.py/*checkout*/bacula/bacula/kernstodo}. diff --git a/docs/manuals/fr/misc/base/python.tex b/docs/manuals/fr/misc/base/python.tex new file mode 100644 index 00000000..5d3c9530 --- /dev/null +++ b/docs/manuals/fr/misc/base/python.tex @@ -0,0 +1,479 @@ +%% +%% + +\chapter{Python Scripting} +\label{PythonChapter} +\index[general]{Python Scripting} +\index[general]{Scripting!Python} + +You may be asking what Python is and why a scripting language is +needed in Bacula. The answer to the first question is that Python +is an Object Oriented scripting language with features similar +to those found in Perl, but the syntax of the language is much +cleaner and simpler. The answer to why have scripting in Bacula is to +give the user more control over the whole backup process. Probably +the simplest example is when Bacula needs a new Volume name, with +a scripting language such as Python, you can generate any name +you want, based on the current state of Bacula. + +\section{Python Configuration} +\index[general]{Python Configuration} +\index[general]{Configuration!Python} + +Python must be enabled during the configuration process by adding +a \verb:--:with-python, and possibly specifying an alternate +directory if your Python is not installed in a standard system +location. If you are using RPMs you will need the python-devel package +installed. + +When Python is configured, it becomes an integral part of Bacula and +runs in Bacula's address space, so even though it is an interpreted +language, it is very efficient. + +When the Director starts, it looks to see if you have a {\bf +Scripts Directory} Directive defined (normal default {\bf +/etc/bacula/scripts}, if so, it looks in that directory for a file named +{\bf DirStartUp.py}. If it is found, Bacula will pass this file to Python +for execution. The {\bf Scripts Directory} is a new directive that you add +to the Director resource of your bacula-dir.conf file. + +Note: Bacula does not install Python scripts by default because these +scripts are for you to program. This means that with a default +installation with Python enabled, Bacula will print the following error +message: + +\begin{verbatim} +09-Jun 15:14 bacula-dir: ERROR in pythonlib.c:131 Could not import +Python script /etc/bacula/scripts/DirStartUp. Python disabled. +\end{verbatim} + +The source code directory {\bf examples/python} contains sample scripts +for DirStartUp.py, SDStartUp.py, and FDStartUp.py that you might want +to use as a starting point. Normally, your scripts directory (at least +where you store the Python scripts) should be writable by Bacula, because +Python will attempt to write a compiled version of the scripts (e.g. +DirStartUp.pyc) back to that directory. + +When starting with the sample scripts, you can delete any part that +you will not need, but you should keep all the Bacula Event and Job Event +definitions. If you do not want a particular event, simply replace the +existing code with a {\bf noop = 1}. + +\section{Bacula Events} +\index[general]{Bacula Events} +\index[general]{Events} +A Bacula event is a point in the Bacula code where Bacula +will call a subroutine (actually a method) that you have +defined in the Python StartUp script. Events correspond +to some significant event such as a Job Start, a Job End, +Bacula needs a new Volume Name, ... When your script is +called, it will have access to all the Bacula variables +specific to the Job (attributes of the Job Object), and +it can even call some of the Job methods (subroutines) +or set new values in the Job attributes, such as the +Priority. You will see below how the events are used. + +\section{Python Objects} +\index[general]{Python Objects} +\index[general]{Objects!Python} + +There are four Python objects that you will need to work with: +\begin{description} +\item [The Bacula Object] + The Bacula object is created by the Bacula daemon (the Director + in the present case) when the daemon starts. It is available to + the Python startup script, {\bf DirStartup.py}, by importing the + Bacula definitions with {\bf import bacula}. The methods + available with this object are described below. + +\item [The Bacula Events Class] + You create this class in the startup script, and you pass + it to the Bacula Object's {\bf set\_events} method. The + purpose of the Bacula Events Class is to define what global + or daemon events you want to monitor. When one of those events + occurs, your Bacula Events Class will be called at the method + corresponding to the event. There are currently three events, + JobStart, JobEnd, and Exit, which are described in detail below. + +\item [The Job Object] + When a Job starts, and assuming you have defined a JobStart method + in your Bacula Events Class, Bacula will create a Job Object. This + object will be passed to the JobStart event. The Job Object has a + has good number of read-only members or attributes providing many + details of the Job, and it also has a number of writable attributes + that allow you to pass information into the Job. These attributes + are described below. + +\item [The Job Events Class] + You create this class in the JobStart method of your Bacula Events + class, and it allows you to define which of the possible Job Object + events you want to see. You must pass an instance of your Job Events + class to the Job Object set\_events() method. + Normally, you will probably only have one + Job Events Class, which will be instantiated for each Job. However, + if you wish to see different events in different Jobs, you may have + as many Job Events classes as you wish. +\end{description} + + +The first thing the startup script must do is to define what global Bacula +events (daemon events), it wants to see. This is done by creating a +Bacula Events class, instantiating it, then passing it to the +{\bf set\_events} method. There are three possible +events. + +\begin{description} +\item [JobStart] + \index[general]{JobStart} + This Python method, if defined, will be called each time a Job is started. + The method is passed the class instantiation object as the first argument, + and the Bacula Job object as the second argument. The Bacula Job object + has several built-in methods, and you can define which ones you + want called. If you do not define this method, you will not be able + to interact with Bacula jobs. + +\item [JobEnd] + This Python method, if defined, will be called each time a Job terminates. + The method is passed the class instantiation object as the first argument, + and the Bacula Job object as the second argument. + +\item [Exit] + This Python method, if defined, will be called when the Director terminates. + The method is passed the class instantiation object as the first argument. +\end{description} + +Access to the Bacula variables and methods is done with: + + import bacula + +The following are the read-only attributes provided by the bacula object. +\begin{description} +\item [Name] +\item [ConfigFile] +\item [WorkingDir] +\item [Version] string consisting of "Version Build-date" +\end{description} + + +A simple definition of the Bacula Events Class might be the following: + +\footnotesize +\begin{verbatim} +import sys, bacula +class BaculaEvents: + def JobStart(self, job): + ... +\end{verbatim} +\normalsize + +Then to instantiate the class and pass it to Bacula, you +would do: + +\footnotesize +\begin{verbatim} +bacula.set_events(BaculaEvents()) # register Bacula Events wanted +\end{verbatim} +\normalsize + +And at that point, each time a Job is started, your BaculaEvents JobStart +method will be called. + +Now to actually do anything with a Job, you must define which Job events +you want to see, and this is done by defining a JobEvents class containing +the methods you want called. Each method name corresponds to one of the +Job Events that Bacula will generate. + +A simple Job Events class might look like the following: + +\footnotesize +\begin{verbatim} +class JobEvents: + def NewVolume(self, job): + ... +\end{verbatim} +\normalsize + +Here, your JobEvents class method NewVolume will be called each time +the Job needs a new Volume name. To actually register the events defined +in your class with the Job, you must instantiate the JobEvents class and +set it in the Job {\bf set\_events} variable. Note, this is a bit different +from how you registered the Bacula events. The registration process must +be done in the Bacula JobStart event (your method). So, you would modify +Bacula Events (not the Job events) as follows: + +\footnotesize +\begin{verbatim} +import sys, bacula +class BaculaEvents: + def JobStart(self, job): + events = JobEvents() # create instance of Job class + job.set_events(events) # register Job events desired + ... +\end{verbatim} +\normalsize + +When a job event is triggered, the appropriate event definition is +called in the JobEvents class. This is the means by which your Python +script or code gets control. Once it has control, it may read job +attributes, or set them. See below for a list of read-only attributes, +and those that are writable. + +In addition, the Bacula {\bf job} object in the Director has +a number of methods (subroutines) that can be called. They +are: +\begin{description} +\item [set\_events] The set\_events method takes a single + argument, which is the instantiation of the Job Events class + that contains the methods that you want called. The method + names that will be called must correspond to the Bacula + defined events. You may define additional methods but Bacula + will not use them. +\item [run] The run method takes a single string + argument, which is the run command (same as in the Console) + that you want to submit to start a new Job. The value + returned by the run method is the JobId of the job that + started, or -1 if there was an error. +\item [write] The write method is used to be able to send + print output to the Job Report. This will be described later. +\item[cancel] The cancel method takes a single integer argument, + which is a JobId. If JobId is found, it will be canceled. +\item [DoesVolumeExist] The DoesVolumeExist method takes a single + string argument, which is the Volume name, and returns + 1 if the volume exists in the Catalog and 0 if the volume + does not exist. +\end{description} + +The following attributes are read/write within the Director +for the {\bf job} object. + +\begin{description} +\item [Priority] Read or set the Job priority. + Note, that setting a Job Priority is effective only before + the Job actually starts. +\item [Level] This attribute contains a string representing the Job + level, e.g. Full, Differential, Incremental, ... if read. + The level can also be set. +\end{description} + +The following read-only attributes are available within the Director +for the {\bf job} object. + +\begin{description} +\item [Type] This attribute contains a string representing the Job + type, e.g. Backup, Restore, Verify, ... +\item [JobId] This attribute contains an integer representing the + JobId. +\item [Client] This attribute contains a string with the name of the + Client for this job. +\item [NumVols] This attribute contains an integer with the number of + Volumes in the Pool being used by the Job. +\item [Pool] This attribute contains a string with the name of the Pool + being used by the Job. +\item [Storage] This attribute contains a string with the name of the + Storage resource being used by the Job. +\item [Catalog] This attribute contains a string with the name of the + Catalog resource being used by the Job. +\item [MediaType] This attribute contains a string with the name of the + Media Type associated with the Storage resource being used by the Job. +\item [Job] This attribute contains a string containing the name of the + Job resource used by this job (not unique). +\item [JobName] This attribute contains a string representing the full + unique Job name. +\item [JobStatus] This attribute contains a single character string + representing the current Job status. The status may change + during execution of the job. It may take on the following + values: + \begin{description} + \item [C] Created, not yet running + \item [R] Running + \item [B] Blocked + \item [T] Completed successfully + \item [E] Terminated with errors + \item [e] Non-fatal error + \item [f] Fatal error + \item [D] Verify found differences + \item [A] Canceled by user + \item [F] Waiting for Client + \item [S] Waiting for Storage daemon + \item [m] Waiting for new media + \item [M] Waiting for media mount + \item [s] Waiting for storage resource + \item [j] Waiting for job resource + \item [c] Waiting for client resource + \item [d] Waiting on maximum jobs + \item [t] Waiting on start time + \item [p] Waiting on higher priority jobs + \end{description} + +\item [Priority] This attribute contains an integer with the priority + assigned to the job. +\item [CatalogRes] tuple consisting of (DBName, Address, User, + Password, Socket, Port, Database Vendor) taken from the Catalog resource + for the Job with the exception of Database Vendor, which is + one of the following: MySQL, PostgreSQL, SQLite, Internal, + depending on what database you configured. +\item [VolumeName] + After a Volume has been purged, this attribute will contain the + name of that Volume. At other times, this value may have no meaning. +\end{description} + +The following write-only attributes are available within the +Director: + +\begin{description} +\item [JobReport] Send line to the Job Report. +\item [VolumeName] Set a new Volume name. Valid only during the + NewVolume event. +\end{description} + +\section{Python Console Command} +\index[general]{Python Console Command} +\index[general]{Console Command!Python} + +There is a new Console command named {\bf python}. It takes +a single argument {\bf restart}. Example: +\begin{verbatim} + python restart +\end{verbatim} + +This command restarts the Python interpreter in the Director. +This can be useful when you are modifying the DirStartUp script, +because normally Python will cache it, and thus the +script will be read one time. + +\section{Debugging Python Scripts} +\index[general]{Debugging Python Scripts} +In general, you debug your Python scripts by using print statements. +You can also develop your script or important parts of it as a +separate file using the Python interpreter to run it. Once you +have it working correctly, you can then call the script from +within the Bacula Python script (DirStartUp.py). + +If you are having problems loading DirStartUp.py, you will probably +not get any error messages because Bacula can only print Python +error messages after the Python interpreter is started. However, you +may be able to see the error messages by starting Bacula in +a shell window with the {\bf -d1} option on the command line. That +should cause the Python error messages to be printed in the shell +window. + +If you are getting error messages such as the following when +loading DirStartUp.py: + +\begin{verbatim} + Traceback (most recent call last): + File "/etc/bacula/scripts/DirStartUp.py", line 6, in ? + import time, sys, bacula + ImportError: /usr/lib/python2.3/lib-dynload/timemodule.so: undefined + symbol: PyInt_FromLong + bacula-dir: pythonlib.c:134 Python Import error. +\end{verbatim} + +It is because the DirStartUp script is calling a dynamically loaded +module (timemodule.so in the above case) that then tries to use +Python functions exported from the Python interpreter (in this case +PyInt\_FromLong). The way Bacula is currently linked with Python does +not permit this. The solution to the problem is to put such functions +(in this case the import of time into a separate Python script, which +will do your calculations and return the values you want. Then call +(not import) this script from the Bacula DirStartUp.py script, and +it all should work as you expect. + + + + + +\section{Python Example} +\index[general]{Python Example} +\index[general]{Example!Python} + +An example script for the Director startup file is provided in +{\bf examples/python/DirStartup.py} as follows: + +\footnotesize +\begin{verbatim} +# +# Bacula Python interface script for the Director +# + +# You must import both sys and bacula +import sys, bacula + +# This is the list of Bacula daemon events that you +# can receive. +class BaculaEvents(object): + def __init__(self): + # Called here when a new Bacula Events class is + # is created. Normally not used + noop = 1 + + def JobStart(self, job): + """ + Called here when a new job is started. If you want + to do anything with the Job, you must register + events you want to receive. + """ + events = JobEvents() # create instance of Job class + events.job = job # save Bacula's job pointer + job.set_events(events) # register events desired + sys.stderr = events # send error output to Bacula + sys.stdout = events # send stdout to Bacula + jobid = job.JobId; client = job.Client + numvols = job.NumVols + job.JobReport="Python Dir JobStart: JobId=%d Client=%s NumVols=%d\n" % (jobid,client,numvols) + + # Bacula Job is going to terminate + def JobEnd(self, job): + jobid = job.JobId + client = job.Client + job.JobReport="Python Dir JobEnd output: JobId=%d Client=%s.\n" % (jobid, client) + + # Called here when the Bacula daemon is going to exit + def Exit(self, job): + print "Daemon exiting." + +bacula.set_events(BaculaEvents()) # register daemon events desired + +""" + These are the Job events that you can receive. +""" +class JobEvents(object): + def __init__(self): + # Called here when you instantiate the Job. Not + # normally used + noop = 1 + + def JobInit(self, job): + # Called when the job is first scheduled + noop = 1 + + def JobRun(self, job): + # Called just before running the job after initializing + # This is the point to change most Job parameters. + # It is equivalent to the JobRunBefore point. + noop = 1 + + def NewVolume(self, job): + # Called when Bacula wants a new Volume name. The Volume + # name returned, if any, must be stored in job.VolumeName + jobid = job.JobId + client = job.Client + numvol = job.NumVols; + print job.CatalogRes + job.JobReport = "JobId=%d Client=%s NumVols=%d" % (jobid, client, numvol) + job.JobReport="Python before New Volume set for Job.\n" + Vol = "TestA-%d" % numvol + job.JobReport = "Exists=%d TestA-%d" % (job.DoesVolumeExist(Vol), numvol) + job.VolumeName="TestA-%d" % numvol + job.JobReport="Python after New Volume set for Job.\n" + return 1 + + def VolumePurged(self, job): + # Called when a Volume is purged. The Volume name can be referenced + # with job.VolumeName + noop = 1 + + + +\end{verbatim} +\normalsize diff --git a/docs/manuals/fr/misc/base/stunnel.tex b/docs/manuals/fr/misc/base/stunnel.tex new file mode 100644 index 00000000..49078651 --- /dev/null +++ b/docs/manuals/fr/misc/base/stunnel.tex @@ -0,0 +1,553 @@ +%% +%% + +\chapter{Using Stunnel to Encrypt Communications} +\label{StunnelChapter} +\index[general]{Using Stunnel to Encrypt Communications to Clients } + +Prior to version 1.37, Bacula did not have built-in communications encryption. +Please see the \ilink {TLS chapter}{CommEncryption} if you are using Bacula +1.37 or greater. + +Without too much effort, it is possible to encrypt the communications +between any of the daemons. This chapter will show you how to use {\bf +stunnel} to encrypt communications to your client programs. We assume the +Director and the Storage daemon are running on one machine that will be called +{\bf server} and the Client or File daemon is running on a different machine +called {\bf client}. Although the details may be slightly different, the same +principles apply whether you are encrypting between Unix, Linux, or Win32 +machines. This example was developed between two Linux machines running +stunnel version 4.04-4 on a Red Hat Enterprise 3.0 system. + +\section{Communications Ports Used} +\index[general]{Used!Communications Ports } +\index[general]{Communications Ports Used } + +First, you must know that with the standard Bacula configuration, the Director +will contact the File daemon on port 9102. The File daemon then contacts the +Storage daemon using the address and port parameters supplied by the Director. +The standard port used will be 9103. This is the typical server/client view of +the world, the File daemon is a server to the Director (i.e. listens for the +Director to contact it), and the Storage daemon is a server to the File +daemon. + +\section{Encryption} +\index[general]{Encryption } + +The encryption is accomplished between the Director and the File daemon by +using an stunnel on the Director's machine (server) to encrypt the data and to +contact an stunnel on the File daemon's machine (client), which decrypts the +data and passes it to the client. + +Between the File daemon and the Storage daemon, we use an stunnel on the File +daemon's machine to encrypt the data and another stunnel on the Storage +daemon's machine to decrypt the data. + +As a consequence, there are actually four copies of stunnel running, two on the +server and two on the client. This may sound a bit complicated, but it really +isn't. To accomplish this, we will need to construct four separate conf files +for stunnel, and we will need to make some minor modifications to the +Director's conf file. None of the other conf files need to be changed. + +\section{A Picture} +\index[general]{Picture } + +Since pictures usually help a lot, here is an overview of what we will be +doing. Don't worry about all the details of the port numbers and such for the +moment. + +\footnotesize +\begin{verbatim} + File daemon (client): + stunnel-fd1.conf + |===========| + Port 29102 >----| Stunnel 1 |-----> Port 9102 + |===========| + stunnel-fd2.conf + |===========| + Port 9103 >----| Stunnel 2 |-----> server:29103 + |===========| + Director (server): + stunnel-dir.conf + |===========| + Port 29102 >----| Stunnel 3 |-----> client:29102 + |===========| + stunnel-sd.conf + |===========| + Port 29103 >----| Stunnel 4 |-----> 9103 + |===========| +\end{verbatim} +\normalsize + +\section{Certificates} +\index[general]{Certificates } + +In order for stunnel to function as a server, which it does in our diagram for +Stunnel 1 and Stunnel 4, you must have a certificate and the key. It is +possible to keep the two in separate files, but normally, you keep them in one +single .pem file. You may create this certificate yourself in which case, it +will be self-signed, or you may have it signed by a CA. + +If you want your clients to verify that the server is in fact valid (Stunnel 2 +and Stunnel 3), you will need to have the server certificates signed by a CA +(Certificate Authority), and you will need to have the CA's public certificate +(contains the CA's public key). + +Having a CA signed certificate is {\bf highly} recommended if you are using +your client across the Internet, otherwise you are exposed to the man in the +middle attack and hence loss of your data. + +See below for how to create a self-signed certificate. + +\section{Securing the Data Channel} +\index[general]{Channel!Securing the Data } +\index[general]{Securing the Data Channel } + +To simplify things a bit, let's for the moment consider only the data channel. +That is the connection between the File daemon and the Storage daemon, which +takes place on port 9103. In fact, in a minimalist solution, this is the only +connection that needs to be encrypted, because it is the one that transports your +data. The connection between the Director and the File daemon is simply a +control channel used to start the job and get the job status. + +Normally the File daemon will contact the Storage daemon on port 9103 +(supplied by the Director), so we need an stunnel that listens on port 9103 on +the File daemon's machine, encrypts the data and sends it to the Storage +daemon. This is depicted by Stunnel 2 above. Note that this stunnel is +listening on port 9103 and sending to server:29103. We use port 29103 on the +server because if we would send the data to port 9103, it would go directly to the +Storage daemon, which doesn't understand encrypted data. On the server +machine, we run Stunnel 4, which listens on port 29103, decrypts the data and +sends it to the Storage daemon, which is listening on port 9103. + +\section{Data Channel Configuration} +\index[general]{Modification of bacula-dir.conf for the Data Channel } +\index[general]{baculoa-dir.conf!Modification for the Data Channel } + +The Storage resource of the bacula-dir.conf normally looks something like the +following: + +\footnotesize +\begin{verbatim} +Storage { + Name = File + Address = server + SDPort = 9103 + Password = storage_password + Device = File + Media Type = File +} +\end{verbatim} +\normalsize + +Notice that this is running on the server machine, and it points the File +daemon back to server:9103, which is where our Storage daemon is listening. We +modify this to be: + +\footnotesize +\begin{verbatim} +Storage { + Name = File + Address = localhost + SDPort = 9103 + Password = storage_password + Device = File + Media Type = File +} +\end{verbatim} +\normalsize + +This causes the File daemon to send the data to the stunnel running on +localhost (the client machine). We could have used client as the address as +well. + +\section{Stunnel Configuration for the Data Channel} +\index[general]{Stunnel Configuration for the Data Channel } + +In the diagram above, we see above Stunnel 2 that we use stunnel-fd2.conf on the +client. A pretty much minimal config file would look like the following: + +\footnotesize +\begin{verbatim} +client = yes +[29103] +accept = localhost:9103 +connect = server:29103 +\end{verbatim} +\normalsize + +The above config file does encrypt the data but it does not require a +certificate, so it is subject to the man in the middle attack. The file I +actually used, stunnel-fd2.conf, looked like this: + +\footnotesize +\begin{verbatim} +# +# Stunnel conf for Bacula client -> SD +# +pid = /home/kern/bacula/bin/working/stunnel.pid +# +# A cert is not mandatory here. If verify=2, a +# cert signed by a CA must be specified, and +# either CAfile or CApath must point to the CA's +# cert +# +cert = /home/kern/stunnel/stunnel.pem +CAfile = /home/kern/ssl/cacert.pem +verify = 2 +client = yes +# debug = 7 +# foreground = yes +[29103] +accept = localhost:9103 +connect = server:29103 +\end{verbatim} +\normalsize + +You will notice that I specified a pid file location because I ran stunnel +under my own userid so I could not use the default, which requires root +permission. I also specified a certificate that I have as well as verify level +2 so that the certificate is required and verified, and I must supply the +location of the CA (Certificate Authority) certificate so that the stunnel +certificate can be verified. Finally, you will see that there are two lines +commented out, which when enabled, produce a lot of nice debug info in the +command window. + +If you do not have a signed certificate (stunnel.pem), you need to delete the +cert, CAfile, and verify lines. + +Note that the stunnel.pem, is actually a private key and a certificate in a +single file. These two can be kept and specified individually, but keeping +them in one file is more convenient. + +The config file, stunnel-sd.conf, needed for Stunnel 4 on the server machine +is: + +\footnotesize +\begin{verbatim} +# +# Bacula stunnel conf for Storage daemon +# +pid = /home/kern/bacula/bin/working/stunnel.pid +# +# A cert is mandatory here, it may be self signed +# If it is self signed, the client may not use +# verify +# +cert = /home/kern/stunnel/stunnel.pem +client = no +# debug = 7 +# foreground = yes +[29103] +accept = 29103 +connect = 9103 +\end{verbatim} +\normalsize + +\section{Starting and Testing the Data Encryption} +\index[general]{Starting and Testing the Data Encryption } +\index[general]{Encryption!Starting and Testing the Data } + +It will most likely be the simplest to implement the Data Channel encryption +in the following order: + +\begin{itemize} +\item Setup and run Bacula backing up some data on your client machine + without encryption. +\item Stop Bacula. +\item Modify the Storage resource in the Director's conf file. +\item Start Bacula +\item Start stunnel on the server with: + + \footnotesize +\begin{verbatim} + stunnel stunnel-sd.conf + +\end{verbatim} +\normalsize + +\item Start stunnel on the client with: + + \footnotesize +\begin{verbatim} + stunnel stunnel-fd2.conf + +\end{verbatim} +\normalsize + +\item Run a job. +\item If it doesn't work, turn debug on in both stunnel conf files, restart + the stunnels, rerun the job, repeat until it works. + \end{itemize} + +\section{Encrypting the Control Channel} +\index[general]{Channel!Encrypting the Control } +\index[general]{Encrypting the Control Channel } + +The Job control channel is between the Director and the File daemon, and as +mentioned above, it is not really necessary to encrypt, but it is good +practice to encrypt it as well. The two stunnels that are used in this case +will be Stunnel 1 and Stunnel 3 in the diagram above. Stunnel 3 on the server +might normally listen on port 9102, but if you have a local File daemon, this +will not work, so we make it listen on port 29102. It then sends the data to +client:29102. Again we use port 29102 so that the stunnel on the client +machine can decrypt the data before passing it on to port 9102 where the File +daemon is listening. + +\section{Control Channel Configuration} +\index[general]{Control Channel Configuration } + +We need to modify the standard Client resource, which would normally look +something like: + +\footnotesize +\begin{verbatim} +Client { + Name = client-fd + Address = client + FDPort = 9102 + Catalog = BackupDB + Password = "xxx" +} +\end{verbatim} +\normalsize + +to be: + +\footnotesize +\begin{verbatim} +Client { + Name = client-fd + Address = localhost + FDPort = 29102 + Catalog = BackupDB + Password = "xxx" +} +\end{verbatim} +\normalsize + +This will cause the Director to send the control information to +localhost:29102 instead of directly to the client. + +\section{Stunnel Configuration for the Control Channel} +\index[general]{Config Files for stunnel to Encrypt the Control Channel } + +The stunnel config file, stunnel-dir.conf, for the Director's machine would +look like the following: + +\footnotesize +\begin{verbatim} +# +# Bacula stunnel conf for the Directory to contact a client +# +pid = /home/kern/bacula/bin/working/stunnel.pid +# +# A cert is not mandatory here. If verify=2, a +# cert signed by a CA must be specified, and +# either CAfile or CApath must point to the CA's +# cert +# +cert = /home/kern/stunnel/stunnel.pem +CAfile = /home/kern/ssl/cacert.pem +verify = 2 +client = yes +# debug = 7 +# foreground = yes +[29102] +accept = localhost:29102 +connect = client:29102 +\end{verbatim} +\normalsize + +and the config file, stunnel-fd1.conf, needed to run stunnel on the Client +would be: + +\footnotesize +\begin{verbatim} +# +# Bacula stunnel conf for the Directory to contact a client +# +pid = /home/kern/bacula/bin/working/stunnel.pid +# +# A cert is not mandatory here. If verify=2, a +# cert signed by a CA must be specified, and +# either CAfile or CApath must point to the CA's +# cert +# +cert = /home/kern/stunnel/stunnel.pem +CAfile = /home/kern/ssl/cacert.pem +verify = 2 +client = yes +# debug = 7 +# foreground = yes +[29102] +accept = localhost:29102 +connect = client:29102 +\end{verbatim} +\normalsize + +\section{Starting and Testing the Control Channel} +\index[general]{Starting and Testing the Control Channel } +\index[general]{Channel!Starting and Testing the Control } + +It will most likely be the simplest to implement the Control Channel +encryption in the following order: + +\begin{itemize} +\item Stop Bacula. +\item Modify the Client resource in the Director's conf file. +\item Start Bacula +\item Start stunnel on the server with: + + \footnotesize +\begin{verbatim} + stunnel stunnel-dir.conf + +\end{verbatim} +\normalsize + +\item Start stunnel on the client with: + + \footnotesize +\begin{verbatim} + stunnel stunnel-fd1.conf + +\end{verbatim} +\normalsize + +\item Run a job. +\item If it doesn't work, turn debug on in both stunnel conf files, restart + the stunnels, rerun the job, repeat until it works. + \end{itemize} + +\section{Using stunnel to Encrypt to a Second Client} +\index[general]{Using stunnel to Encrypt to a Second Client } +\index[general]{Client!Using stunnel to Encrypt to a Second } + +On the client machine, you can just duplicate the setup that you have on the +first client file for file and it should work fine. + +In the bacula-dir.conf file, you will want to create a second client pretty +much identical to how you did for the first one, but the port number must be +unique. We previously used: + +\footnotesize +\begin{verbatim} +Client { + Name = client-fd + Address = localhost + FDPort = 29102 + Catalog = BackupDB + Password = "xxx" +} +\end{verbatim} +\normalsize + +so for the second client, we will, of course, have a different name, and we +will also need a different port. Remember that we used port 29103 for the +Storage daemon, so for the second client, we can use port 29104, and the +Client resource would look like: + +\footnotesize +\begin{verbatim} +Client { + Name = client2-fd + Address = localhost + FDPort = 29104 + Catalog = BackupDB + Password = "yyy" +} +\end{verbatim} +\normalsize + +Now, fortunately, we do not need a third stunnel to on the Director's machine, +we can just add the new port to the config file, stunnel-dir.conf, to make: + +\footnotesize +\begin{verbatim} +# +# Bacula stunnel conf for the Directory to contact a client +# +pid = /home/kern/bacula/bin/working/stunnel.pid +# +# A cert is not mandatory here. If verify=2, a +# cert signed by a CA must be specified, and +# either CAfile or CApath must point to the CA's +# cert +# +cert = /home/kern/stunnel/stunnel.pem +CAfile = /home/kern/ssl/cacert.pem +verify = 2 +client = yes +# debug = 7 +# foreground = yes +[29102] +accept = localhost:29102 +connect = client:29102 +[29104] +accept = localhost:29102 +connect = client2:29102 +\end{verbatim} +\normalsize + +There are no changes necessary to the Storage daemon or the other stunnel so +that this new client can talk to our Storage daemon. + +\section{Creating a Self-signed Certificate} +\index[general]{Creating a Self-signed Certificate } +\index[general]{Certificate!Creating a Self-signed } + +You may create a self-signed certificate for use with stunnel that will permit +you to make it function, but will not allow certificate validation. The .pem +file containing both the certificate and the key can be made with the +following, which I put in a file named {\bf makepem}: + +\footnotesize +\begin{verbatim} +#!/bin/sh +# +# Simple shell script to make a .pem file that can be used +# with stunnel and Bacula +# +OPENSSL=openssl + umask 77 + PEM1="/bin/mktemp openssl.XXXXXX" + PEM2="/bin/mktemp openssl.XXXXXX" + ${OPENSSL} req -newkey rsa:1024 -keyout $PEM1 -nodes \ + -x509 -days 365 -out $PEM2 + cat $PEM1 > stunnel.pem + echo "" >>stunnel.pem + cat $PEM2 >>stunnel.pem + rm $PEM1 $PEM2 +\end{verbatim} +\normalsize + +The above script will ask you a number of questions. You may simply answer +each of them by entering a return, or if you wish you may enter your own data. + + +\section{Getting a CA Signed Certificate} +\index[general]{Certificate!Getting a CA Signed } +\index[general]{Getting a CA Signed Certificate } + +The process of getting a certificate that is signed by a CA is quite a bit +more complicated. You can purchase one from quite a number of PKI vendors, but +that is not at all necessary for use with Bacula. + +To get a CA signed +certificate, you will either need to find a friend that has setup his own CA +or to become a CA yourself, and thus you can sign all your own certificates. +The book OpenSSL by John Viega, Matt Mesier \& Pravir Chandra from O'Reilly +explains how to do it, or you can read the documentation provided in the +Open-source PKI Book project at Source Forge: +\elink{ +http://ospkibook.sourceforge.net/docs/OSPKI-2.4.7/OSPKI-html/ospki-book.htm} +{http://ospkibook.sourceforge.net/docs/OSPKI-2.4.7/OSPKI-html/ospki-book.htm}. +Note, this link may change. + +\section{Using ssh to Secure the Communications} +\index[general]{Communications!Using ssh to Secure the } +\index[general]{Using ssh to Secure the Communications } + +Please see the script {\bf ssh-tunnel.sh} in the {\bf examples} directory. It +was contributed by Stephan Holl. diff --git a/docs/manuals/fr/misc/base/vars.tex b/docs/manuals/fr/misc/base/vars.tex new file mode 100644 index 00000000..b03c3acc --- /dev/null +++ b/docs/manuals/fr/misc/base/vars.tex @@ -0,0 +1,229 @@ +%% +%% + +\chapter{Variable Expansion} +\label{VarsChapter} +\index[general]{Variable Expansion } +\index[general]{Expansion!Variable } + +% TODO: does the following mean that this should not be in book? + +Please note that as of version 1.37, the Variable Expansion +is deprecated and replaced by Python scripting (not yet +documented). + +Variable expansion is somewhat similar to Unix shell variable expansion. +Currently (version 1.31), it is used only in format labels, but in the future, +it will most likely be used in more places. + +\section{General Functionality} +\index[general]{Functionality!General } +\index[general]{General Functionality } + +This is basically a string expansion capability that permits referencing +variables, indexing arrays, conditional replacement of variables, case +conversion, substring selection, regular expression matching and replacement, +character class replacement, padding strings, repeated expansion in a user +controlled loop, support of arithmetic expressions in the loop start, step and +end conditions, and recursive expansion. + +When using variable expansion characters in a Volume Label Format record, the +format should always be enclosed in double quotes ({\bf "}). + +For example, {\bf \$\{HOME\}} will be replaced by your home directory as +defined in the environment. If you have defined the variable {\bf xxx} to be +{\bf Test}, then the reference {\bf \$\{xxx:p/7/Y/r\}} will right pad the +contents of {\bf xxx} to a length of seven characters filling with the +character {\bf Y} giving {\bf YYYTest}. + +\section{Bacula Variables} +\index[general]{Bacula Variables } +\index[general]{Variables!Bacula } + +Within Bacula, there are three main classes of variables with some minor +variations within the classes. The classes are: + +\begin{description} + +\item [Counters] + \index[general]{Counters } + Counters are defined by the {\bf Counter} resources in the Director's conf +file. The counter can either be a temporary counter that lasts for the +duration of Bacula's execution, or it can be a variable that is stored in +the catalog, and thus retains its value from one Bacula execution to another. +Counter variables may be incremented by postfixing a plus sign ({\bf +} after +the variable name). + +\item [Internal Variables] + \index[general]{Internal Variables } + Internal variables are read-only, and may be related to the current job (i.e. +Job name), or maybe special variables such as the date and time. The +following variables are available: + +\begin{itemize} +\item [Year] -- the full year +\item [Month] -- the current month 1-12 +\item [Day] -- the day of the month 1-31 +\item [Hour] -- the hour 0-24 +\item [Minute] -- the current minute 0-59 +\item [Second] -- the current second 0-59 +\item [WeekDay] -- the current day of the week 0-6 with 0 being Sunday +\item [Job] -- the job name +\item [general] -- the Director's name +\item [Level] -- the Job Level +\item [Type] -- the Job type +\item [JobId] -- the JobId +\item [JobName] -- the unique job name composed of Job and date +\item [Storage] -- the Storage daemon's name +\item [Client] -- the Client's name +\item [NumVols] -- the current number of Volumes in the Pool +\item [Pool] -- the Pool name +\item [Catalog] -- the Catalog name +\item [MediaType] -- the Media Type + \end{itemize} + +\item [Environment Variables] + \index[general]{Environment Variables } + Environment variables are read-only, and must be defined in the environment +prior to executing Bacula. Environment variables may be either scalar or an +array, where the elements of the array are referenced by subscripting the +variable name (e.g. {\bf \$\{Months[3]\}}). Environment variable arrays are +defined by separating the elements with a vertical bar ({\bf |}), thus {\bf +set Months="Jan|Feb|Mar|Apr|..."} defines an environment variable named +{\bf Month} that will be treated as an array, and the reference {\bf +\$\{Months[3]\}} will yield {\bf Mar}. The elements of the array can have +differing lengths. +\end{description} + +\section{Full Syntax} +\index[general]{Syntax!Full } +\index[general]{Full Syntax } + +Since the syntax is quite extensive, below, you will find the pseudo BNF. The +special characters have the following meaning: + +\footnotesize +\begin{verbatim} + ::= definition + ( ) grouping if the parens are not quoted + | separates alternatives + '/' literal / (or any other character) + CAPS a character or character sequence + * preceding item can be repeated zero or more times + ? preceding item can appear zero or one time + + preceding item must appear one or more times +\end{verbatim} +\normalsize + +And the pseudo BNF describing the syntax is: + +\footnotesize +\begin{verbatim} + input ::= ( TEXT + | variable + | INDEX_OPEN input INDEX_CLOSE (loop_limits)? + )* + variable ::= DELIM_INIT (name|expression) + name ::= (NAME_CHARS)+ + expression ::= DELIM_OPEN + (name|variable)+ + (INDEX_OPEN num_exp INDEX_CLOSE)? + (':' command)* + DELIM_CLOSE + command ::= '-' (TEXT_EXP|variable)+ + | '+' (TEXT_EXP|variable)+ + | 'o' NUMBER ('-'|',') (NUMBER)? + | '#' + | '*' (TEXT_EXP|variable)+ + | 's' '/' (TEXT_PATTERN)+ + '/' (variable|TEXT_SUBST)* + '/' ('m'|'g'|'i'|'t')* + | 'y' '/' (variable|TEXT_SUBST)+ + '/' (variable|TEXT_SUBST)* + '/' + | 'p' '/' NUMBER + '/' (variable|TEXT_SUBST)* + '/' ('r'|'l'|'c') + | '%' (name|variable)+ + ('(' (TEXT_ARGS)? ')')? + | 'l' + | 'u' + num_exp ::= operand + | operand ('+'|'-'|'*'|'/'|'%') num_exp + operand ::= ('+'|'-')? NUMBER + | INDEX_MARK + | '(' num_exp ')' + | variable + loop_limits ::= DELIM_OPEN + (num_exp)? ',' (num_exp)? (',' (num_exp)?)? + DELIM_CLOSE + NUMBER ::= ('0'|...|'9')+ + TEXT_PATTERN::= (^('/'))+ + TEXT_SUBST ::= (^(DELIM_INIT|'/'))+ + TEXT_ARGS ::= (^(DELIM_INIT|')'))+ + TEXT_EXP ::= (^(DELIM_INIT|DELIM_CLOSE|':'|'+'))+ + TEXT ::= (^(DELIM_INIT|INDEX_OPEN|INDEX_CLOSE))+ + DELIM_INIT ::= '$' + DELIM_OPEN ::= '{' + DELIM_CLOSE ::= '}' + INDEX_OPEN ::= '[' + INDEX_CLOSE ::= ']' + INDEX_MARK ::= '#' + NAME_CHARS ::= 'a'|...|'z'|'A'|...|'Z'|'0'|...|'9' +\end{verbatim} +\normalsize + +\section{Semantics} +\index[general]{Semantics } + +The items listed in {\bf command} above, which always follow a colon ({\bf :}) +have the following meanings: + +\footnotesize +\begin{verbatim} + - perform substitution if variable is empty + + perform substitution if variable is not empty + o cut out substring of the variable value + # length of the variable value + * substitute empty string if the variable value is not empty, + otherwise substitute the trailing parameter + s regular expression search and replace. The trailing + options are: m = multiline, i = case insensitive, + g = global, t = plain text (no regexp) + y transpose characters from class A to class B + p pad variable to l = left, r = right or c = center, + with second value. + % special function call (none implemented) + l lower case the variable value + u upper case the variable value +\end{verbatim} +\normalsize + +The {\bf loop\_limits} are start, step, and end values. + +A counter variable name followed immediately by a plus ({\bf +}) will cause +the counter to be incremented by one. + +\section{Examples} +\index[general]{Examples } + +To create an ISO date: + +\footnotesize +\begin{verbatim} + DLT-${Year}-${Month:p/2/0/r}-${Day:p/2/0/r} +\end{verbatim} +\normalsize + +on 20 June 2003 would give {\bf DLT-2003-06-20} + +If you set the environment variable {\bf mon} to + +\footnotesize +\begin{verbatim} + January|February|March|April|May|... + File-${mon[${Month}]}/${Day}/${Year} +\end{verbatim} +\normalsize + +on the first of March would give {\bf File-March/1/2003 } diff --git a/docs/manuals/fr/misc/base/version.tex b/docs/manuals/fr/misc/base/version.tex new file mode 100644 index 00000000..36878dd0 --- /dev/null +++ b/docs/manuals/fr/misc/base/version.tex @@ -0,0 +1 @@ +5.1.2 (26 February 2010) diff --git a/docs/manuals/fr/misc/coverpage-en.tex b/docs/manuals/fr/misc/coverpage-en.tex new file mode 100644 index 00000000..e32d3999 --- /dev/null +++ b/docs/manuals/fr/misc/coverpage-en.tex @@ -0,0 +1,28 @@ +\newfont{\bighead}{cmr17 at 36pt} +\parskip 10pt +\parindent 0pt + +\title{\includegraphics{\idir bacula-logo.eps} \\ \bigskip + \Huge{Bacula}$^{\normalsize \textregistered}$ \Huge{Bacula Miscellaneous Guide} + \begin{center} + \large{It comes in the night and sucks + the essence from your computers. } + \end{center} +} + + +\author{Kern Sibbald} +\date{\vspace{1.0in}\today \\ + This manual documents Bacula version \input{version} \\ + \vspace{0.2in} + Copyright {\copyright} 1999-2010, Free Software Foundation Europe + e.V. \\ + Bacula {\textregistered} is a registered trademark of Kern Sibbald.\\ + \vspace{0.2in} + Permission is granted to copy, distribute and/or modify this document under the terms of the + GNU Free Documentation License, Version 1.2 published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. + A copy of the license is included in the section entitled "GNU Free Documentation License". +} + +\maketitle diff --git a/docs/manuals/fr/misc/coverpage.tex b/docs/manuals/fr/misc/coverpage.tex deleted file mode 100644 index e32d3999..00000000 --- a/docs/manuals/fr/misc/coverpage.tex +++ /dev/null @@ -1,28 +0,0 @@ -\newfont{\bighead}{cmr17 at 36pt} -\parskip 10pt -\parindent 0pt - -\title{\includegraphics{\idir bacula-logo.eps} \\ \bigskip - \Huge{Bacula}$^{\normalsize \textregistered}$ \Huge{Bacula Miscellaneous Guide} - \begin{center} - \large{It comes in the night and sucks - the essence from your computers. } - \end{center} -} - - -\author{Kern Sibbald} -\date{\vspace{1.0in}\today \\ - This manual documents Bacula version \input{version} \\ - \vspace{0.2in} - Copyright {\copyright} 1999-2010, Free Software Foundation Europe - e.V. \\ - Bacula {\textregistered} is a registered trademark of Kern Sibbald.\\ - \vspace{0.2in} - Permission is granted to copy, distribute and/or modify this document under the terms of the - GNU Free Documentation License, Version 1.2 published by the Free Software Foundation; - with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. - A copy of the license is included in the section entitled "GNU Free Documentation License". -} - -\maketitle diff --git a/docs/manuals/fr/misc/dvd-en.tex b/docs/manuals/fr/misc/dvd-en.tex new file mode 100644 index 00000000..88811365 --- /dev/null +++ b/docs/manuals/fr/misc/dvd-en.tex @@ -0,0 +1,329 @@ +%% +%% + +\chapter{DVD Volumes} +\label{_DVDChapterStart} +\index[general]{DVD Volumes} +\index[general]{Writing DVDs} +\index[general]{DVD Writing} +\index[general]{Volumes!DVD} + +Bacula allows you to specify that you want to write to DVD. However, +this feature is implemented only in version 1.37 or later. +You may in fact write to DVD+RW, DVD+R, DVD-R, or DVD-RW +media. The actual process used by Bacula is to first write +the image to a spool directory, then when the Volume reaches +a certain size or, at your option, at the end of a Job, Bacula +will transfer the image from the spool directory to the +DVD. The actual work of transferring the image is done +by a script {\bf dvd-handler}, and the heart of that +script is a program called {\bf growisofs} which allows +creating or adding to a DVD ISO filesystem. + +You must have {\bf dvd+rw-tools} loaded on your system for DVD writing to +work. Please note that the original {\bf dvd+rw-tools} package does {\bf +NOT} work with Bacula. You must apply a patch which can be found in the +{\bf patches} directory of Bacula sources with the name +{\bf dvd+rw-tools-5.21.4.10.8.bacula.patch} for version 5.21 of the tools, +or patch {bf dvd+rw-tools-6.1.bacula.patch} if you have version 6.1 +on your system. Unfortunately, this requires you to build the dvd\_rw-tools +from source. + +Note, some Linux distros such as Debian dvd+rw-tools-7.0-4 package already +have the patch applied, so please check. + +The fact that Bacula cannot use the OS to write directly +to the DVD makes the whole process a bit more error prone than +writing to a disk or a tape, but nevertheless, it does work if you +use some care to set it up properly. However, at the current time +(version 1.39.30 -- 12 December 2006) we still consider this code to be +BETA quality. As a consequence, please do careful testing before relying +on DVD backups in production. + +The remainder of this chapter explains the various directives that you can +use to control the DVD writing. + +\label{DVDdirectives} +\section{DVD Specific SD Directives} +\index[general]{Directives!DVD} +\index[general]{DVD Specific SD Directives } + +The following directives are added to the Storage daemon's +Device resource. + +\begin{description} + +\item [Requires Mount = {\it Yes|No}] + \index[general]{Requires Mount } + You must set this directive to {\bf yes} for DVD-writers, and to {\bf no} for + all other devices (tapes/files). This directive indicates if the device + requires to be mounted using the {\bf Mount Command}. + To be able to write a DVD, the following directives must also be + defined: {\bf Mount Point}, {\bf Mount Command}, {\bf Unmount Command} and + {\bf Write Part Command}. + +\item [Mount Point = {\it directory}] + \index[general]{Mount Point} + Directory where the device can be mounted. + +\item [Mount Command = {\it name-string}] + \index[general]{Mount Command} + Command that must be executed to mount the device. Although the + device is written directly, the mount command is necessary in + order to determine the free space left on the DVD. Before the command is + executed, \%a is replaced with the Archive Device, and \%m with the Mount + Point. + + Most frequently, you will define it as follows: + +\footnotesize +\begin{verbatim} + Mount Command = "/bin/mount -t iso9660 -o ro %a %m" +\end{verbatim} +\normalsize + +However, if you have defined a mount point in /etc/fstab, you might be +able to use a mount command such as: + +\footnotesize +\begin{verbatim} + Mount Command = "/bin/mount /media/dvd" +\end{verbatim} +\normalsize + + +\item [Unmount Command = {\it name-string}] + \index[general]{Unmount Command} + Command that must be executed to unmount the device. Before the command is + executed, \%a is replaced with the Archive Device, and \%m with the Mount + Point. + + Most frequently, you will define it as follows: + +\footnotesize +\begin{verbatim} + Unmount Command = "/bin/umount %m" +\end{verbatim} +\normalsize + +\item [Write Part Command = {\it name-string}] + \index[general]{Write Part Command } + Command that must be executed to write a part to the device. Before the + command is executed, \%a is replaced with the Archive Device, \%m with the + Mount Point, \%e is replaced with 1 if we are writing the first part, + and with 0 otherwise, and \%v with the current part filename. + + For a DVD, you will most frequently specify the Bacula supplied {\bf + dvd-handler} script as follows: + +\footnotesize +\begin{verbatim} + Write Part Command = "/path/dvd-handler %a write %e %v" +\end{verbatim} +\normalsize + + Where {\bf /path} is the path to your scripts install directory, and + dvd-handler is the Bacula supplied script file. + This command will already be present, but commented out, + in the default bacula-sd.conf file. To use it, simply remove + the comment (\#) symbol. + + +\item [Free Space Command = {\it name-string}] + \index[general]{Free Space Command } + Command that must be executed to check how much free space is left on the + device. Before the command is executed,\%a is replaced with the Archive + Device. + + For a DVD, you will most frequently specify the Bacula supplied {\bf + dvd-handler} script as follows: + +\footnotesize +\begin{verbatim} + Free Space Command = "/path/dvd-handler %a free" +\end{verbatim} +\normalsize + + Where {\bf /path} is the path to your scripts install directory, and + dvd-handler is the Bacula supplied script file. + If you want to specify your own command, please look at the code in + dvd-handler to see what output Bacula expects from this command. + This command will already be present, but commented out, + in the default bacula-sd.conf file. To use it, simply remove + the comment (\#) symbol. + + If you do not set it, Bacula will expect there is always free space on the + device. + +\end{description} + +In addition to the directives specified above, you must also +specify the other standard Device resource directives. Please see the +sample DVD Device resource in the default bacula-sd.conf file. Be sure +to specify the raw device name for {\bf Archive Device}. It should +be a name such as {\bf /dev/cdrom} or {\bf /media/cdrecorder} or +{\bf /dev/dvd} depending on your system. It will not be a name such +as {\bf /mnt/cdrom}. + +Finally, for {\bf growisofs} to work, it must be able to lock +a certain amount of memory in RAM. If you have restrictions on +this function, you may have failures. Under {\bf bash}, you can +set this with the following command: + +\footnotesize +\begin{verbatim} +ulimit -l unlimited +\end{verbatim} +\normalsize + +\section{Edit Codes for DVD Directives} +\index[general]{Directives!DVD Edit Codes} +\index[general]{Edit Codes for DVD Directives } + +Before submitting the {\bf Mount Command}, {\bf Unmount Command}, +{\bf Write Part Command}, or {\bf Free Space Command} directives +to the operating system, Bacula performs character substitution of the +following characters: + +\footnotesize +\begin{verbatim} + %% = % + %a = Archive device name + %e = erase (set if cannot mount and first part) + %n = part number + %m = mount point + %v = last part name (i.e. filename) +\end{verbatim} +\normalsize + + + +\section{DVD Specific Director Directives} +\index[general]{Directives!DVD} +\index[general]{DVD Specific Director Directives } + +The following directives are added to the Director's Job resource. + +\label{WritePartAfterJob} +\begin{description} +\item [Write Part After Job = \lt{}yes|no\gt{}] + \index[general]{Write Part After Job } + If this directive is set to {\bf yes} (default {\bf no}), the + Volume written to a temporary spool file for the current Job will + be written to the DVD as a new part file + will be created after the job is finished. + + It should be set to {\bf yes} when writing to devices that require a mount + (for example DVD), so you are sure that the current part, containing + this job's data, is written to the device, and that no data is left in + the temporary file on the hard disk. However, on some media, like DVD+R + and DVD-R, a lot of space (about 10Mb) is lost everytime a part is + written. So, if you run several jobs each after another, you could set + this directive to {\bf no} for all jobs, except the last one, to avoid + wasting too much space, but to ensure that the data is written to the + medium when all jobs are finished. + + This directive is ignored for devices other than DVDs. +\end{description} + + + +\label{DVDpoints} +\section{Other Points} +\index[general]{Points!Other } +\index[general]{Other Points } + +\begin{itemize} +\item Please be sure that you have any automatic DVD mounting + disabled before running Bacula -- this includes auto mounting + in /etc/fstab, hotplug, ... If the DVD is automatically + mounted by the OS, it will cause problems when Bacula tries + to mount/unmount the DVD. +\item Please be sure that you the directive {\bf Write Part After Job} + set to {\bf yes}, otherwise the last part of the data to be + written will be left in the DVD spool file and not written to + the DVD. The DVD will then be unreadable until this last part + is written. If you have a series of jobs that are run one at + a time, you can turn this off until the last job is run. +\item The current code is not designed to have multiple simultaneous + jobs writing to the DVD. As a consequence, please ensure that + only one DVD backup job runs at any time. +\item Writing and reading of DVD+RW seems to work quite reliably + provided you are using the patched dvd+rw-mediainfo programs. + On the other hand, we do not have enough information to ensure + that DVD-RW or other forms of DVDs work correctly. +\item DVD+RW supports only about 1000 overwrites. Every time you + mount the filesystem read/write will count as one write. This can + add up quickly, so it is best to mount your DVD+RW filesystem read-only. + Bacula does not need the DVD to be mounted read-write, since it uses + the raw device for writing. +\item Reformatting DVD+RW 10-20 times can apparently make the medium + unusable. Normally you should not have to format or reformat + DVD+RW media. If it is necessary, current versions of growisofs will + do so automatically. +\item We have had several problems writing to DVD-RWs (this does NOT + concern DVD+RW), because these media have two writing-modes: {\bf + Incremental Sequential} and {\bf Restricted Overwrite}. Depending on + your device and the media you use, one of these modes may not work + correctly (e.g. {\bf Incremental Sequential} does not work with my NEC + DVD-writer and Verbatim DVD-RW). + + To retrieve the current mode of a DVD-RW, run: +\begin{verbatim} + dvd+rw-mediainfo /dev/xxx +\end{verbatim} + where you replace xxx with your DVD device name. + + {\bf Mounted Media} line should give you the information. + + To set the device to {\bf Restricted Overwrite} mode, run: +\begin{verbatim} + dvd+rw-format /dev/xxx +\end{verbatim} + If you want to set it back to the default {\bf Incremental Sequential} mode, run: +\begin{verbatim} + dvd+rw-format -blank /dev/xxx +\end{verbatim} + +\item Bacula only accepts to write to blank DVDs. To quickly blank a DVD+/-RW, run + this command: +\begin{verbatim} + dd if=/dev/zero bs=1024 count=512 | growisofs -Z /dev/xxx=/dev/fd/0 +\end{verbatim} + Then, try to mount the device, if it cannot be mounted, it will be considered + as blank by Bacula, if it can be mounted, try a full blank (see below). + +\item If you wish to blank completely a DVD+/-RW, use the following: +\begin{verbatim} + growisofs -Z /dev/xxx=/dev/zero +\end{verbatim} + where you replace xxx with your DVD device name. However, note that this + blanks the whole DVD, which takes quite a long time (16 minutes on mine). +\item DVD+RW and DVD-RW support only about 1000 overwrites (i.e. don't use the +same medium for years if you don't want to have problems...). + +To write to the DVD the first time use: +\begin{verbatim} + growisofs -Z /dev/xxx filename +\end{verbatim} + +To add additional files (more parts use): + +\begin{verbatim} + growisofs -M /dev/xxx filename +\end{verbatim} + +The option {\bf -use-the-force-luke=4gms} was added in growisofs 5.20 to +override growisofs' behavior of always checking for the 4GB limit. +Normally, this option is recommended for all Linux 2.6.8 kernels or +greater, since these newer kernels can handle writing more than 4GB. +See below for more details on this subject. + +\item For more information about DVD writing, please look at the +\elink{dvd+rw-tools homepage}{http://fy.chalmers.se/~appro/linux/DVD+RW/}. + +\item According to bug \#912, bscan cannot read multi-volume DVDs. This is +on our TODO list, but unless someone submits a patch it is not likely to be +done any time in the near future. (9 Sept 2007). + +\end{itemize} diff --git a/docs/manuals/fr/misc/dvd.tex b/docs/manuals/fr/misc/dvd.tex deleted file mode 100644 index 88811365..00000000 --- a/docs/manuals/fr/misc/dvd.tex +++ /dev/null @@ -1,329 +0,0 @@ -%% -%% - -\chapter{DVD Volumes} -\label{_DVDChapterStart} -\index[general]{DVD Volumes} -\index[general]{Writing DVDs} -\index[general]{DVD Writing} -\index[general]{Volumes!DVD} - -Bacula allows you to specify that you want to write to DVD. However, -this feature is implemented only in version 1.37 or later. -You may in fact write to DVD+RW, DVD+R, DVD-R, or DVD-RW -media. The actual process used by Bacula is to first write -the image to a spool directory, then when the Volume reaches -a certain size or, at your option, at the end of a Job, Bacula -will transfer the image from the spool directory to the -DVD. The actual work of transferring the image is done -by a script {\bf dvd-handler}, and the heart of that -script is a program called {\bf growisofs} which allows -creating or adding to a DVD ISO filesystem. - -You must have {\bf dvd+rw-tools} loaded on your system for DVD writing to -work. Please note that the original {\bf dvd+rw-tools} package does {\bf -NOT} work with Bacula. You must apply a patch which can be found in the -{\bf patches} directory of Bacula sources with the name -{\bf dvd+rw-tools-5.21.4.10.8.bacula.patch} for version 5.21 of the tools, -or patch {bf dvd+rw-tools-6.1.bacula.patch} if you have version 6.1 -on your system. Unfortunately, this requires you to build the dvd\_rw-tools -from source. - -Note, some Linux distros such as Debian dvd+rw-tools-7.0-4 package already -have the patch applied, so please check. - -The fact that Bacula cannot use the OS to write directly -to the DVD makes the whole process a bit more error prone than -writing to a disk or a tape, but nevertheless, it does work if you -use some care to set it up properly. However, at the current time -(version 1.39.30 -- 12 December 2006) we still consider this code to be -BETA quality. As a consequence, please do careful testing before relying -on DVD backups in production. - -The remainder of this chapter explains the various directives that you can -use to control the DVD writing. - -\label{DVDdirectives} -\section{DVD Specific SD Directives} -\index[general]{Directives!DVD} -\index[general]{DVD Specific SD Directives } - -The following directives are added to the Storage daemon's -Device resource. - -\begin{description} - -\item [Requires Mount = {\it Yes|No}] - \index[general]{Requires Mount } - You must set this directive to {\bf yes} for DVD-writers, and to {\bf no} for - all other devices (tapes/files). This directive indicates if the device - requires to be mounted using the {\bf Mount Command}. - To be able to write a DVD, the following directives must also be - defined: {\bf Mount Point}, {\bf Mount Command}, {\bf Unmount Command} and - {\bf Write Part Command}. - -\item [Mount Point = {\it directory}] - \index[general]{Mount Point} - Directory where the device can be mounted. - -\item [Mount Command = {\it name-string}] - \index[general]{Mount Command} - Command that must be executed to mount the device. Although the - device is written directly, the mount command is necessary in - order to determine the free space left on the DVD. Before the command is - executed, \%a is replaced with the Archive Device, and \%m with the Mount - Point. - - Most frequently, you will define it as follows: - -\footnotesize -\begin{verbatim} - Mount Command = "/bin/mount -t iso9660 -o ro %a %m" -\end{verbatim} -\normalsize - -However, if you have defined a mount point in /etc/fstab, you might be -able to use a mount command such as: - -\footnotesize -\begin{verbatim} - Mount Command = "/bin/mount /media/dvd" -\end{verbatim} -\normalsize - - -\item [Unmount Command = {\it name-string}] - \index[general]{Unmount Command} - Command that must be executed to unmount the device. Before the command is - executed, \%a is replaced with the Archive Device, and \%m with the Mount - Point. - - Most frequently, you will define it as follows: - -\footnotesize -\begin{verbatim} - Unmount Command = "/bin/umount %m" -\end{verbatim} -\normalsize - -\item [Write Part Command = {\it name-string}] - \index[general]{Write Part Command } - Command that must be executed to write a part to the device. Before the - command is executed, \%a is replaced with the Archive Device, \%m with the - Mount Point, \%e is replaced with 1 if we are writing the first part, - and with 0 otherwise, and \%v with the current part filename. - - For a DVD, you will most frequently specify the Bacula supplied {\bf - dvd-handler} script as follows: - -\footnotesize -\begin{verbatim} - Write Part Command = "/path/dvd-handler %a write %e %v" -\end{verbatim} -\normalsize - - Where {\bf /path} is the path to your scripts install directory, and - dvd-handler is the Bacula supplied script file. - This command will already be present, but commented out, - in the default bacula-sd.conf file. To use it, simply remove - the comment (\#) symbol. - - -\item [Free Space Command = {\it name-string}] - \index[general]{Free Space Command } - Command that must be executed to check how much free space is left on the - device. Before the command is executed,\%a is replaced with the Archive - Device. - - For a DVD, you will most frequently specify the Bacula supplied {\bf - dvd-handler} script as follows: - -\footnotesize -\begin{verbatim} - Free Space Command = "/path/dvd-handler %a free" -\end{verbatim} -\normalsize - - Where {\bf /path} is the path to your scripts install directory, and - dvd-handler is the Bacula supplied script file. - If you want to specify your own command, please look at the code in - dvd-handler to see what output Bacula expects from this command. - This command will already be present, but commented out, - in the default bacula-sd.conf file. To use it, simply remove - the comment (\#) symbol. - - If you do not set it, Bacula will expect there is always free space on the - device. - -\end{description} - -In addition to the directives specified above, you must also -specify the other standard Device resource directives. Please see the -sample DVD Device resource in the default bacula-sd.conf file. Be sure -to specify the raw device name for {\bf Archive Device}. It should -be a name such as {\bf /dev/cdrom} or {\bf /media/cdrecorder} or -{\bf /dev/dvd} depending on your system. It will not be a name such -as {\bf /mnt/cdrom}. - -Finally, for {\bf growisofs} to work, it must be able to lock -a certain amount of memory in RAM. If you have restrictions on -this function, you may have failures. Under {\bf bash}, you can -set this with the following command: - -\footnotesize -\begin{verbatim} -ulimit -l unlimited -\end{verbatim} -\normalsize - -\section{Edit Codes for DVD Directives} -\index[general]{Directives!DVD Edit Codes} -\index[general]{Edit Codes for DVD Directives } - -Before submitting the {\bf Mount Command}, {\bf Unmount Command}, -{\bf Write Part Command}, or {\bf Free Space Command} directives -to the operating system, Bacula performs character substitution of the -following characters: - -\footnotesize -\begin{verbatim} - %% = % - %a = Archive device name - %e = erase (set if cannot mount and first part) - %n = part number - %m = mount point - %v = last part name (i.e. filename) -\end{verbatim} -\normalsize - - - -\section{DVD Specific Director Directives} -\index[general]{Directives!DVD} -\index[general]{DVD Specific Director Directives } - -The following directives are added to the Director's Job resource. - -\label{WritePartAfterJob} -\begin{description} -\item [Write Part After Job = \lt{}yes|no\gt{}] - \index[general]{Write Part After Job } - If this directive is set to {\bf yes} (default {\bf no}), the - Volume written to a temporary spool file for the current Job will - be written to the DVD as a new part file - will be created after the job is finished. - - It should be set to {\bf yes} when writing to devices that require a mount - (for example DVD), so you are sure that the current part, containing - this job's data, is written to the device, and that no data is left in - the temporary file on the hard disk. However, on some media, like DVD+R - and DVD-R, a lot of space (about 10Mb) is lost everytime a part is - written. So, if you run several jobs each after another, you could set - this directive to {\bf no} for all jobs, except the last one, to avoid - wasting too much space, but to ensure that the data is written to the - medium when all jobs are finished. - - This directive is ignored for devices other than DVDs. -\end{description} - - - -\label{DVDpoints} -\section{Other Points} -\index[general]{Points!Other } -\index[general]{Other Points } - -\begin{itemize} -\item Please be sure that you have any automatic DVD mounting - disabled before running Bacula -- this includes auto mounting - in /etc/fstab, hotplug, ... If the DVD is automatically - mounted by the OS, it will cause problems when Bacula tries - to mount/unmount the DVD. -\item Please be sure that you the directive {\bf Write Part After Job} - set to {\bf yes}, otherwise the last part of the data to be - written will be left in the DVD spool file and not written to - the DVD. The DVD will then be unreadable until this last part - is written. If you have a series of jobs that are run one at - a time, you can turn this off until the last job is run. -\item The current code is not designed to have multiple simultaneous - jobs writing to the DVD. As a consequence, please ensure that - only one DVD backup job runs at any time. -\item Writing and reading of DVD+RW seems to work quite reliably - provided you are using the patched dvd+rw-mediainfo programs. - On the other hand, we do not have enough information to ensure - that DVD-RW or other forms of DVDs work correctly. -\item DVD+RW supports only about 1000 overwrites. Every time you - mount the filesystem read/write will count as one write. This can - add up quickly, so it is best to mount your DVD+RW filesystem read-only. - Bacula does not need the DVD to be mounted read-write, since it uses - the raw device for writing. -\item Reformatting DVD+RW 10-20 times can apparently make the medium - unusable. Normally you should not have to format or reformat - DVD+RW media. If it is necessary, current versions of growisofs will - do so automatically. -\item We have had several problems writing to DVD-RWs (this does NOT - concern DVD+RW), because these media have two writing-modes: {\bf - Incremental Sequential} and {\bf Restricted Overwrite}. Depending on - your device and the media you use, one of these modes may not work - correctly (e.g. {\bf Incremental Sequential} does not work with my NEC - DVD-writer and Verbatim DVD-RW). - - To retrieve the current mode of a DVD-RW, run: -\begin{verbatim} - dvd+rw-mediainfo /dev/xxx -\end{verbatim} - where you replace xxx with your DVD device name. - - {\bf Mounted Media} line should give you the information. - - To set the device to {\bf Restricted Overwrite} mode, run: -\begin{verbatim} - dvd+rw-format /dev/xxx -\end{verbatim} - If you want to set it back to the default {\bf Incremental Sequential} mode, run: -\begin{verbatim} - dvd+rw-format -blank /dev/xxx -\end{verbatim} - -\item Bacula only accepts to write to blank DVDs. To quickly blank a DVD+/-RW, run - this command: -\begin{verbatim} - dd if=/dev/zero bs=1024 count=512 | growisofs -Z /dev/xxx=/dev/fd/0 -\end{verbatim} - Then, try to mount the device, if it cannot be mounted, it will be considered - as blank by Bacula, if it can be mounted, try a full blank (see below). - -\item If you wish to blank completely a DVD+/-RW, use the following: -\begin{verbatim} - growisofs -Z /dev/xxx=/dev/zero -\end{verbatim} - where you replace xxx with your DVD device name. However, note that this - blanks the whole DVD, which takes quite a long time (16 minutes on mine). -\item DVD+RW and DVD-RW support only about 1000 overwrites (i.e. don't use the -same medium for years if you don't want to have problems...). - -To write to the DVD the first time use: -\begin{verbatim} - growisofs -Z /dev/xxx filename -\end{verbatim} - -To add additional files (more parts use): - -\begin{verbatim} - growisofs -M /dev/xxx filename -\end{verbatim} - -The option {\bf -use-the-force-luke=4gms} was added in growisofs 5.20 to -override growisofs' behavior of always checking for the 4GB limit. -Normally, this option is recommended for all Linux 2.6.8 kernels or -greater, since these newer kernels can handle writing more than 4GB. -See below for more details on this subject. - -\item For more information about DVD writing, please look at the -\elink{dvd+rw-tools homepage}{http://fy.chalmers.se/~appro/linux/DVD+RW/}. - -\item According to bug \#912, bscan cannot read multi-volume DVDs. This is -on our TODO list, but unless someone submits a patch it is not likely to be -done any time in the near future. (9 Sept 2007). - -\end{itemize} diff --git a/docs/manuals/fr/misc/fdl-en.tex b/docs/manuals/fr/misc/fdl-en.tex new file mode 100644 index 00000000..b46cd990 --- /dev/null +++ b/docs/manuals/fr/misc/fdl-en.tex @@ -0,0 +1,485 @@ +% TODO: maybe get rid of centering + +\chapter{GNU Free Documentation License} +\index[general]{GNU Free Documentation License} +\index[general]{License!GNU Free Documentation} + +\label{label_fdl} + + \begin{center} + + Version 1.2, November 2002 + + + Copyright \copyright 2000,2001,2002 Free Software Foundation, Inc. + + \bigskip + + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + \bigskip + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. +\end{center} + + +\begin{center} +{\bf\large Preamble} +\end{center} + +The purpose of this License is to make a manual, textbook, or other +functional and useful document "free" in the sense of freedom: to +assure everyone the effective freedom to copy and redistribute it, +with or without modifying it, either commercially or noncommercially. +Secondarily, this License preserves for the author and publisher a way +to get credit for their work, while not being considered responsible +for modifications made by others. + +This License is a kind of "copyleft", which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + + +\begin{center} +{\Large\bf 1. APPLICABILITY AND DEFINITIONS} +\end{center} + +This License applies to any manual or other work, in any medium, that +contains a notice placed by the copyright holder saying it can be +distributed under the terms of this License. Such a notice grants a +world-wide, royalty-free license, unlimited in duration, to use that +work under the conditions stated herein. The \textbf{"Document"}, below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as \textbf{"you"}. You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law. + +A \textbf{"Modified Version"} of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +A \textbf{"Secondary Section"} is a named appendix or a front-matter section of +the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall subject +(or to related matters) and contains nothing that could fall directly +within that overall subject. (Thus, if the Document is in part a +textbook of mathematics, a Secondary Section may not explain any +mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +The \textbf{"Invariant Sections"} are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. If a +section does not fit the above definition of Secondary then it is not +allowed to be designated as Invariant. The Document may contain zero +Invariant Sections. If the Document does not identify any Invariant +Sections then there are none. + +The \textbf{"Cover Texts"} are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. A Front-Cover Text may +be at most 5 words, and a Back-Cover Text may be at most 25 words. + +A \textbf{"Transparent"} copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, that is suitable for revising the document +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup, or absence of markup, has been arranged to thwart +or discourage subsequent modification by readers is not Transparent. +An image format is not Transparent if used for any substantial amount +of text. A copy that is not "Transparent" is called \textbf{"Opaque"}. + +Examples of suitable formats for Transparent copies include plain +ASCII without markup, Texinfo input format, LaTeX input format, SGML +or XML using a publicly available DTD, and standard-conforming simple +HTML, PostScript or PDF designed for human modification. Examples of +transparent image formats include PNG, XCF and JPG. Opaque formats +include proprietary formats that can be read and edited only by +proprietary word processors, SGML or XML for which the DTD and/or +processing tools are not generally available, and the +machine-generated HTML, PostScript or PDF produced by some word +processors for output purposes only. + +The \textbf{"Title Page"} means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, "Title Page" means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. + +A section \textbf{"Entitled XYZ"} means a named subunit of the Document whose +title either is precisely XYZ or contains XYZ in parentheses following +text that translates XYZ in another language. (Here XYZ stands for a +specific section name mentioned below, such as \textbf{"Acknowledgements"}, +\textbf{"Dedications"}, \textbf{"Endorsements"}, or \textbf{"History"}.) +To \textbf{"Preserve the Title"} +of such a section when you modify the Document means that it remains a +section "Entitled XYZ" according to this definition. + +The Document may include Warranty Disclaimers next to the notice which +states that this License applies to the Document. These Warranty +Disclaimers are considered to be included by reference in this +License, but only as regards disclaiming warranties: any other +implication that these Warranty Disclaimers may have is void and has +no effect on the meaning of this License. + + +\begin{center} +{\Large\bf 2. VERBATIM COPYING} +\end{center} + +You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +You may also lend copies, under the same conditions stated above, and +you may publicly display copies. + + +\begin{center} +{\Large\bf 3. COPYING IN QUANTITY} +\end{center} + + +If you publish printed copies (or copies in media that commonly have +printed covers) of the Document, numbering more than 100, and the +Document's license notice requires Cover Texts, you must enclose the +copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a computer-network location from which the general network-using +public has access to download using public-standard network protocols +a complete Transparent copy of the Document, free of added material. +If you use the latter option, you must take reasonably prudent steps, +when you begin distribution of Opaque copies in quantity, to ensure +that this Transparent copy will remain thus accessible at the stated +location until at least one year after the last time you distribute an +Opaque copy (directly or through your agents or retailers) of that +edition to the public. + +It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. + + +\begin{center} +{\Large\bf 4. MODIFICATIONS} +\end{center} + +You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +\begin{itemize} +\item[A.] + Use in the Title Page (and on the covers, if any) a title distinct + from that of the Document, and from those of previous versions + (which should, if there were any, be listed in the History section + of the Document). You may use the same title as a previous version + if the original publisher of that version gives permission. + +\item[B.] + List on the Title Page, as authors, one or more persons or entities + responsible for authorship of the modifications in the Modified + Version, together with at least five of the principal authors of the + Document (all of its principal authors, if it has fewer than five), + unless they release you from this requirement. + +\item[C.] + State on the Title page the name of the publisher of the + Modified Version, as the publisher. + +\item[D.] + Preserve all the copyright notices of the Document. + +\item[E.] + Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. + +\item[F.] + Include, immediately after the copyright notices, a license notice + giving the public permission to use the Modified Version under the + terms of this License, in the form shown in the Addendum below. + +\item[G.] + Preserve in that license notice the full lists of Invariant Sections + and required Cover Texts given in the Document's license notice. + +\item[H.] + Include an unaltered copy of this License. + +\item[I.] + Preserve the section Entitled "History", Preserve its Title, and add + to it an item stating at least the title, year, new authors, and + publisher of the Modified Version as given on the Title Page. If + there is no section Entitled "History" in the Document, create one + stating the title, year, authors, and publisher of the Document as + given on its Title Page, then add an item describing the Modified + Version as stated in the previous sentence. + +\item[J.] + Preserve the network location, if any, given in the Document for + public access to a Transparent copy of the Document, and likewise + the network locations given in the Document for previous versions + it was based on. These may be placed in the "History" section. + You may omit a network location for a work that was published at + least four years before the Document itself, or if the original + publisher of the version it refers to gives permission. + +\item[K.] + For any section Entitled "Acknowledgements" or "Dedications", + Preserve the Title of the section, and preserve in the section all + the substance and tone of each of the contributor acknowledgements + and/or dedications given therein. + +\item[L.] + Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section titles. + +\item[M.] + Delete any section Entitled "Endorsements". Such a section + may not be included in the Modified Version. + +\item[N.] + Do not retitle any existing section to be Entitled "Endorsements" + or to conflict in title with any Invariant Section. + +\item[O.] + Preserve any Warranty Disclaimers. +\end{itemize} + +If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +You may add a section Entitled "Endorsements", provided it contains +nothing but endorsements of your Modified Version by various +parties--for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. + + +\begin{center} +{\Large\bf 5. COMBINING DOCUMENTS} +\end{center} + + +You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice, and that you preserve all their Warranty Disclaimers. + +The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +In the combination, you must combine any sections Entitled "History" +in the various original documents, forming one section Entitled +"History"; likewise combine any sections Entitled "Acknowledgements", +and any sections Entitled "Dedications". You must delete all sections +Entitled "Endorsements". + +\begin{center} +{\Large\bf 6. COLLECTIONS OF DOCUMENTS} +\end{center} + +You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. + +You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. + + +\begin{center} +{\Large\bf 7. AGGREGATION WITH INDEPENDENT WORKS} +\end{center} + + +A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, is called an "aggregate" if the copyright +resulting from the compilation is not used to limit the legal rights +of the compilation's users beyond what the individual works permit. +When the Document is included in an aggregate, this License does not +apply to the other works in the aggregate which are not themselves +derivative works of the Document. + +If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one half of +the entire aggregate, the Document's Cover Texts may be placed on +covers that bracket the Document within the aggregate, or the +electronic equivalent of covers if the Document is in electronic form. +Otherwise they must appear on printed covers that bracket the whole +aggregate. + + +\begin{center} +{\Large\bf 8. TRANSLATION} +\end{center} + + +Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License, and all the license notices in the +Document, and any Warranty Disclaimers, provided that you also include +the original English version of this License and the original versions +of those notices and disclaimers. In case of a disagreement between +the translation and the original version of this License or a notice +or disclaimer, the original version will prevail. + +If a section in the Document is Entitled "Acknowledgements", +"Dedications", or "History", the requirement (section 4) to Preserve +its Title (section 1) will typically require changing the actual +title. + + +\begin{center} +{\Large\bf 9. TERMINATION} +\end{center} + + +You may not copy, modify, sublicense, or distribute the Document except +as expressly provided for under this License. Any other attempt to +copy, modify, sublicense or distribute the Document is void, and will +automatically terminate your rights under this License. However, +parties who have received copies, or rights, from you under this +License will not have their licenses terminated so long as such +parties remain in full compliance. + + +\begin{center} +{\Large\bf 10. FUTURE REVISIONS OF THIS LICENSE} +\end{center} + + +The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. See +http://www.gnu.org/copyleft/. + +Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License "or any later version" applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. + + +\begin{center} +{\Large\bf ADDENDUM: How to use this License for your documents} +% TODO: this is too long for table of contents +\end{center} + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + +\bigskip +\begin{quote} + Copyright \copyright YEAR YOUR NAME. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.2 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. + A copy of the license is included in the section entitled "GNU + Free Documentation License". +\end{quote} +\bigskip + +If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the "with...Texts." line with this: + +\bigskip +\begin{quote} + with the Invariant Sections being LIST THEIR TITLES, with the + Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. +\end{quote} +\bigskip + +If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + +If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. + +%--------------------------------------------------------------------- diff --git a/docs/manuals/fr/misc/fdl.tex b/docs/manuals/fr/misc/fdl.tex deleted file mode 100644 index b46cd990..00000000 --- a/docs/manuals/fr/misc/fdl.tex +++ /dev/null @@ -1,485 +0,0 @@ -% TODO: maybe get rid of centering - -\chapter{GNU Free Documentation License} -\index[general]{GNU Free Documentation License} -\index[general]{License!GNU Free Documentation} - -\label{label_fdl} - - \begin{center} - - Version 1.2, November 2002 - - - Copyright \copyright 2000,2001,2002 Free Software Foundation, Inc. - - \bigskip - - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - \bigskip - - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. -\end{center} - - -\begin{center} -{\bf\large Preamble} -\end{center} - -The purpose of this License is to make a manual, textbook, or other -functional and useful document "free" in the sense of freedom: to -assure everyone the effective freedom to copy and redistribute it, -with or without modifying it, either commercially or noncommercially. -Secondarily, this License preserves for the author and publisher a way -to get credit for their work, while not being considered responsible -for modifications made by others. - -This License is a kind of "copyleft", which means that derivative -works of the document must themselves be free in the same sense. It -complements the GNU General Public License, which is a copyleft -license designed for free software. - -We have designed this License in order to use it for manuals for free -software, because free software needs free documentation: a free -program should come with manuals providing the same freedoms that the -software does. But this License is not limited to software manuals; -it can be used for any textual work, regardless of subject matter or -whether it is published as a printed book. We recommend this License -principally for works whose purpose is instruction or reference. - - -\begin{center} -{\Large\bf 1. APPLICABILITY AND DEFINITIONS} -\end{center} - -This License applies to any manual or other work, in any medium, that -contains a notice placed by the copyright holder saying it can be -distributed under the terms of this License. Such a notice grants a -world-wide, royalty-free license, unlimited in duration, to use that -work under the conditions stated herein. The \textbf{"Document"}, below, -refers to any such manual or work. Any member of the public is a -licensee, and is addressed as \textbf{"you"}. You accept the license if you -copy, modify or distribute the work in a way requiring permission -under copyright law. - -A \textbf{"Modified Version"} of the Document means any work containing the -Document or a portion of it, either copied verbatim, or with -modifications and/or translated into another language. - -A \textbf{"Secondary Section"} is a named appendix or a front-matter section of -the Document that deals exclusively with the relationship of the -publishers or authors of the Document to the Document's overall subject -(or to related matters) and contains nothing that could fall directly -within that overall subject. (Thus, if the Document is in part a -textbook of mathematics, a Secondary Section may not explain any -mathematics.) The relationship could be a matter of historical -connection with the subject or with related matters, or of legal, -commercial, philosophical, ethical or political position regarding -them. - -The \textbf{"Invariant Sections"} are certain Secondary Sections whose titles -are designated, as being those of Invariant Sections, in the notice -that says that the Document is released under this License. If a -section does not fit the above definition of Secondary then it is not -allowed to be designated as Invariant. The Document may contain zero -Invariant Sections. If the Document does not identify any Invariant -Sections then there are none. - -The \textbf{"Cover Texts"} are certain short passages of text that are listed, -as Front-Cover Texts or Back-Cover Texts, in the notice that says that -the Document is released under this License. A Front-Cover Text may -be at most 5 words, and a Back-Cover Text may be at most 25 words. - -A \textbf{"Transparent"} copy of the Document means a machine-readable copy, -represented in a format whose specification is available to the -general public, that is suitable for revising the document -straightforwardly with generic text editors or (for images composed of -pixels) generic paint programs or (for drawings) some widely available -drawing editor, and that is suitable for input to text formatters or -for automatic translation to a variety of formats suitable for input -to text formatters. A copy made in an otherwise Transparent file -format whose markup, or absence of markup, has been arranged to thwart -or discourage subsequent modification by readers is not Transparent. -An image format is not Transparent if used for any substantial amount -of text. A copy that is not "Transparent" is called \textbf{"Opaque"}. - -Examples of suitable formats for Transparent copies include plain -ASCII without markup, Texinfo input format, LaTeX input format, SGML -or XML using a publicly available DTD, and standard-conforming simple -HTML, PostScript or PDF designed for human modification. Examples of -transparent image formats include PNG, XCF and JPG. Opaque formats -include proprietary formats that can be read and edited only by -proprietary word processors, SGML or XML for which the DTD and/or -processing tools are not generally available, and the -machine-generated HTML, PostScript or PDF produced by some word -processors for output purposes only. - -The \textbf{"Title Page"} means, for a printed book, the title page itself, -plus such following pages as are needed to hold, legibly, the material -this License requires to appear in the title page. For works in -formats which do not have any title page as such, "Title Page" means -the text near the most prominent appearance of the work's title, -preceding the beginning of the body of the text. - -A section \textbf{"Entitled XYZ"} means a named subunit of the Document whose -title either is precisely XYZ or contains XYZ in parentheses following -text that translates XYZ in another language. (Here XYZ stands for a -specific section name mentioned below, such as \textbf{"Acknowledgements"}, -\textbf{"Dedications"}, \textbf{"Endorsements"}, or \textbf{"History"}.) -To \textbf{"Preserve the Title"} -of such a section when you modify the Document means that it remains a -section "Entitled XYZ" according to this definition. - -The Document may include Warranty Disclaimers next to the notice which -states that this License applies to the Document. These Warranty -Disclaimers are considered to be included by reference in this -License, but only as regards disclaiming warranties: any other -implication that these Warranty Disclaimers may have is void and has -no effect on the meaning of this License. - - -\begin{center} -{\Large\bf 2. VERBATIM COPYING} -\end{center} - -You may copy and distribute the Document in any medium, either -commercially or noncommercially, provided that this License, the -copyright notices, and the license notice saying this License applies -to the Document are reproduced in all copies, and that you add no other -conditions whatsoever to those of this License. You may not use -technical measures to obstruct or control the reading or further -copying of the copies you make or distribute. However, you may accept -compensation in exchange for copies. If you distribute a large enough -number of copies you must also follow the conditions in section 3. - -You may also lend copies, under the same conditions stated above, and -you may publicly display copies. - - -\begin{center} -{\Large\bf 3. COPYING IN QUANTITY} -\end{center} - - -If you publish printed copies (or copies in media that commonly have -printed covers) of the Document, numbering more than 100, and the -Document's license notice requires Cover Texts, you must enclose the -copies in covers that carry, clearly and legibly, all these Cover -Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on -the back cover. Both covers must also clearly and legibly identify -you as the publisher of these copies. The front cover must present -the full title with all words of the title equally prominent and -visible. You may add other material on the covers in addition. -Copying with changes limited to the covers, as long as they preserve -the title of the Document and satisfy these conditions, can be treated -as verbatim copying in other respects. - -If the required texts for either cover are too voluminous to fit -legibly, you should put the first ones listed (as many as fit -reasonably) on the actual cover, and continue the rest onto adjacent -pages. - -If you publish or distribute Opaque copies of the Document numbering -more than 100, you must either include a machine-readable Transparent -copy along with each Opaque copy, or state in or with each Opaque copy -a computer-network location from which the general network-using -public has access to download using public-standard network protocols -a complete Transparent copy of the Document, free of added material. -If you use the latter option, you must take reasonably prudent steps, -when you begin distribution of Opaque copies in quantity, to ensure -that this Transparent copy will remain thus accessible at the stated -location until at least one year after the last time you distribute an -Opaque copy (directly or through your agents or retailers) of that -edition to the public. - -It is requested, but not required, that you contact the authors of the -Document well before redistributing any large number of copies, to give -them a chance to provide you with an updated version of the Document. - - -\begin{center} -{\Large\bf 4. MODIFICATIONS} -\end{center} - -You may copy and distribute a Modified Version of the Document under -the conditions of sections 2 and 3 above, provided that you release -the Modified Version under precisely this License, with the Modified -Version filling the role of the Document, thus licensing distribution -and modification of the Modified Version to whoever possesses a copy -of it. In addition, you must do these things in the Modified Version: - -\begin{itemize} -\item[A.] - Use in the Title Page (and on the covers, if any) a title distinct - from that of the Document, and from those of previous versions - (which should, if there were any, be listed in the History section - of the Document). You may use the same title as a previous version - if the original publisher of that version gives permission. - -\item[B.] - List on the Title Page, as authors, one or more persons or entities - responsible for authorship of the modifications in the Modified - Version, together with at least five of the principal authors of the - Document (all of its principal authors, if it has fewer than five), - unless they release you from this requirement. - -\item[C.] - State on the Title page the name of the publisher of the - Modified Version, as the publisher. - -\item[D.] - Preserve all the copyright notices of the Document. - -\item[E.] - Add an appropriate copyright notice for your modifications - adjacent to the other copyright notices. - -\item[F.] - Include, immediately after the copyright notices, a license notice - giving the public permission to use the Modified Version under the - terms of this License, in the form shown in the Addendum below. - -\item[G.] - Preserve in that license notice the full lists of Invariant Sections - and required Cover Texts given in the Document's license notice. - -\item[H.] - Include an unaltered copy of this License. - -\item[I.] - Preserve the section Entitled "History", Preserve its Title, and add - to it an item stating at least the title, year, new authors, and - publisher of the Modified Version as given on the Title Page. If - there is no section Entitled "History" in the Document, create one - stating the title, year, authors, and publisher of the Document as - given on its Title Page, then add an item describing the Modified - Version as stated in the previous sentence. - -\item[J.] - Preserve the network location, if any, given in the Document for - public access to a Transparent copy of the Document, and likewise - the network locations given in the Document for previous versions - it was based on. These may be placed in the "History" section. - You may omit a network location for a work that was published at - least four years before the Document itself, or if the original - publisher of the version it refers to gives permission. - -\item[K.] - For any section Entitled "Acknowledgements" or "Dedications", - Preserve the Title of the section, and preserve in the section all - the substance and tone of each of the contributor acknowledgements - and/or dedications given therein. - -\item[L.] - Preserve all the Invariant Sections of the Document, - unaltered in their text and in their titles. Section numbers - or the equivalent are not considered part of the section titles. - -\item[M.] - Delete any section Entitled "Endorsements". Such a section - may not be included in the Modified Version. - -\item[N.] - Do not retitle any existing section to be Entitled "Endorsements" - or to conflict in title with any Invariant Section. - -\item[O.] - Preserve any Warranty Disclaimers. -\end{itemize} - -If the Modified Version includes new front-matter sections or -appendices that qualify as Secondary Sections and contain no material -copied from the Document, you may at your option designate some or all -of these sections as invariant. To do this, add their titles to the -list of Invariant Sections in the Modified Version's license notice. -These titles must be distinct from any other section titles. - -You may add a section Entitled "Endorsements", provided it contains -nothing but endorsements of your Modified Version by various -parties--for example, statements of peer review or that the text has -been approved by an organization as the authoritative definition of a -standard. - -You may add a passage of up to five words as a Front-Cover Text, and a -passage of up to 25 words as a Back-Cover Text, to the end of the list -of Cover Texts in the Modified Version. Only one passage of -Front-Cover Text and one of Back-Cover Text may be added by (or -through arrangements made by) any one entity. If the Document already -includes a cover text for the same cover, previously added by you or -by arrangement made by the same entity you are acting on behalf of, -you may not add another; but you may replace the old one, on explicit -permission from the previous publisher that added the old one. - -The author(s) and publisher(s) of the Document do not by this License -give permission to use their names for publicity for or to assert or -imply endorsement of any Modified Version. - - -\begin{center} -{\Large\bf 5. COMBINING DOCUMENTS} -\end{center} - - -You may combine the Document with other documents released under this -License, under the terms defined in section 4 above for modified -versions, provided that you include in the combination all of the -Invariant Sections of all of the original documents, unmodified, and -list them all as Invariant Sections of your combined work in its -license notice, and that you preserve all their Warranty Disclaimers. - -The combined work need only contain one copy of this License, and -multiple identical Invariant Sections may be replaced with a single -copy. If there are multiple Invariant Sections with the same name but -different contents, make the title of each such section unique by -adding at the end of it, in parentheses, the name of the original -author or publisher of that section if known, or else a unique number. -Make the same adjustment to the section titles in the list of -Invariant Sections in the license notice of the combined work. - -In the combination, you must combine any sections Entitled "History" -in the various original documents, forming one section Entitled -"History"; likewise combine any sections Entitled "Acknowledgements", -and any sections Entitled "Dedications". You must delete all sections -Entitled "Endorsements". - -\begin{center} -{\Large\bf 6. COLLECTIONS OF DOCUMENTS} -\end{center} - -You may make a collection consisting of the Document and other documents -released under this License, and replace the individual copies of this -License in the various documents with a single copy that is included in -the collection, provided that you follow the rules of this License for -verbatim copying of each of the documents in all other respects. - -You may extract a single document from such a collection, and distribute -it individually under this License, provided you insert a copy of this -License into the extracted document, and follow this License in all -other respects regarding verbatim copying of that document. - - -\begin{center} -{\Large\bf 7. AGGREGATION WITH INDEPENDENT WORKS} -\end{center} - - -A compilation of the Document or its derivatives with other separate -and independent documents or works, in or on a volume of a storage or -distribution medium, is called an "aggregate" if the copyright -resulting from the compilation is not used to limit the legal rights -of the compilation's users beyond what the individual works permit. -When the Document is included in an aggregate, this License does not -apply to the other works in the aggregate which are not themselves -derivative works of the Document. - -If the Cover Text requirement of section 3 is applicable to these -copies of the Document, then if the Document is less than one half of -the entire aggregate, the Document's Cover Texts may be placed on -covers that bracket the Document within the aggregate, or the -electronic equivalent of covers if the Document is in electronic form. -Otherwise they must appear on printed covers that bracket the whole -aggregate. - - -\begin{center} -{\Large\bf 8. TRANSLATION} -\end{center} - - -Translation is considered a kind of modification, so you may -distribute translations of the Document under the terms of section 4. -Replacing Invariant Sections with translations requires special -permission from their copyright holders, but you may include -translations of some or all Invariant Sections in addition to the -original versions of these Invariant Sections. You may include a -translation of this License, and all the license notices in the -Document, and any Warranty Disclaimers, provided that you also include -the original English version of this License and the original versions -of those notices and disclaimers. In case of a disagreement between -the translation and the original version of this License or a notice -or disclaimer, the original version will prevail. - -If a section in the Document is Entitled "Acknowledgements", -"Dedications", or "History", the requirement (section 4) to Preserve -its Title (section 1) will typically require changing the actual -title. - - -\begin{center} -{\Large\bf 9. TERMINATION} -\end{center} - - -You may not copy, modify, sublicense, or distribute the Document except -as expressly provided for under this License. Any other attempt to -copy, modify, sublicense or distribute the Document is void, and will -automatically terminate your rights under this License. However, -parties who have received copies, or rights, from you under this -License will not have their licenses terminated so long as such -parties remain in full compliance. - - -\begin{center} -{\Large\bf 10. FUTURE REVISIONS OF THIS LICENSE} -\end{center} - - -The Free Software Foundation may publish new, revised versions -of the GNU Free Documentation License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. See -http://www.gnu.org/copyleft/. - -Each version of the License is given a distinguishing version number. -If the Document specifies that a particular numbered version of this -License "or any later version" applies to it, you have the option of -following the terms and conditions either of that specified version or -of any later version that has been published (not as a draft) by the -Free Software Foundation. If the Document does not specify a version -number of this License, you may choose any version ever published (not -as a draft) by the Free Software Foundation. - - -\begin{center} -{\Large\bf ADDENDUM: How to use this License for your documents} -% TODO: this is too long for table of contents -\end{center} - -To use this License in a document you have written, include a copy of -the License in the document and put the following copyright and -license notices just after the title page: - -\bigskip -\begin{quote} - Copyright \copyright YEAR YOUR NAME. - Permission is granted to copy, distribute and/or modify this document - under the terms of the GNU Free Documentation License, Version 1.2 - or any later version published by the Free Software Foundation; - with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. - A copy of the license is included in the section entitled "GNU - Free Documentation License". -\end{quote} -\bigskip - -If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, -replace the "with...Texts." line with this: - -\bigskip -\begin{quote} - with the Invariant Sections being LIST THEIR TITLES, with the - Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. -\end{quote} -\bigskip - -If you have Invariant Sections without Cover Texts, or some other -combination of the three, merge those two alternatives to suit the -situation. - -If your document contains nontrivial examples of program code, we -recommend releasing these examples in parallel under your choice of -free software license, such as the GNU General Public License, -to permit their use in free software. - -%--------------------------------------------------------------------- diff --git a/docs/manuals/fr/misc/gpl-en.tex b/docs/manuals/fr/misc/gpl-en.tex new file mode 100644 index 00000000..a368afc7 --- /dev/null +++ b/docs/manuals/fr/misc/gpl-en.tex @@ -0,0 +1,420 @@ +%% +%% + +\section*{GNU General Public License} +\label{GplChapter} +\index[general]{GNU General Public License } +\index[general]{License!GNU General Public } + +\elink{image of a Philosophical +GNU}{http://www.gnu.org/graphics/philosophicalgnu.html} + +\begin{itemize} +\item + \elink{What to do if you see a possible GPL + violation}{http://www.gnu.org/copyleft/gpl-violation.html} +\item + \elink{Translations of the + GPL}{http://www.gnu.org/copyleft/copyleft.html\#translations} +\end{itemize} + + +\section{Table of Contents} +\index[general]{Table of Contents } +\index[general]{Contents!Table of } + +\begin{itemize} +\item + \label{TOC1} + \ilink{GNU GENERAL PUBLIC LICENSE}{SEC1} + +\begin{itemize} +\item + \label{TOC2} + \ilink{Preamble}{SEC2} +\item + \label{TOC3} + \ilink{TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND +MODIFICATION}{SEC3} +\item + \label{TOC4} + \ilink{How to Apply These Terms to Your New Programs}{SEC4} +\end{itemize} + +\end{itemize} + + +\section{GNU GENERAL PUBLIC LICENSE} +\label{SEC1} +\index[general]{GNU GENERAL PUBLIC LICENSE } +\index[general]{LICENSE!GNU GENERAL PUBLIC } + +Version 2, June 1991 + +\footnotesize +\begin{verbatim} +Copyright (C) 1989, 1991 Free Software Foundation, Inc. +51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. +\end{verbatim} +\normalsize + +\section{Preamble} +\label{SEC2} +\index[general]{Preamble } + +The licenses for most software are designed to take away your freedom to share +and change it. By contrast, the GNU General Public License is intended to +guarantee your freedom to share and change free software\verb:--:to make sure the +software is free for all its users. This General Public License applies to +most of the Free Software Foundation's software and to any other program whose +authors commit to using it. (Some other Free Software Foundation software is +covered by the GNU Library General Public License instead.) You can apply it +to your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our +General Public Licenses are designed to make sure that you have the freedom to +distribute copies of free software (and charge for this service if you wish), +that you receive source code or can get it if you want it, that you can change +the software or use pieces of it in new free programs; and that you know you +can do these things. + +To protect your rights, we need to make restrictions that forbid anyone to +deny you these rights or to ask you to surrender the rights. These +restrictions translate to certain responsibilities for you if you distribute +copies of the software, or if you modify it. + +For example, if you distribute copies of such a program, whether gratis or for +a fee, you must give the recipients all the rights that you have. You must +make sure that they, too, receive or can get the source code. And you must +show them these terms so they know their rights. + +We protect your rights with two steps: (1) copyright the software, and (2) +offer you this license which gives you legal permission to copy, distribute +and/or modify the software. + +Also, for each author's protection and ours, we want to make certain that +everyone understands that there is no warranty for this free software. If the +software is modified by someone else and passed on, we want its recipients to +know that what they have is not the original, so that any problems introduced +by others will not reflect on the original authors' reputations. + +Finally, any free program is threatened constantly by software patents. We +wish to avoid the danger that redistributors of a free program will +individually obtain patent licenses, in effect making the program proprietary. +To prevent this, we have made it clear that any patent must be licensed for +everyone's free use or not licensed at all. + +The precise terms and conditions for copying, distribution and modification +follow. + +\section{TERMS AND CONDITIONS} +\label{SEC3} +\index[general]{CONDITIONS!TERMS AND } +\index[general]{TERMS AND CONDITIONS } + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +{\bf 0.} This License applies to any program or other work which contains a +notice placed by the copyright holder saying it may be distributed under the +terms of this General Public License. The "Program", below, refers to any +such program or work, and a "work based on the Program" means either the +Program or any derivative work under copyright law: that is to say, a work +containing the Program or a portion of it, either verbatim or with +modifications and/or translated into another language. (Hereinafter, +translation is included without limitation in the term "modification".) Each +licensee is addressed as "you". + +Activities other than copying, distribution and modification are not covered +by this License; they are outside its scope. The act of running the Program is +not restricted, and the output from the Program is covered only if its +contents constitute a work based on the Program (independent of having been +made by running the Program). Whether that is true depends on what the Program +does. + +{\bf 1.} You may copy and distribute verbatim copies of the Program's source +code as you receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice and +disclaimer of warranty; keep intact all the notices that refer to this License +and to the absence of any warranty; and give any other recipients of the +Program a copy of this License along with the Program. + +You may charge a fee for the physical act of transferring a copy, and you may +at your option offer warranty protection in exchange for a fee. + +{\bf 2.} You may modify your copy or copies of the Program or any portion of +it, thus forming a work based on the Program, and copy and distribute such +modifications or work under the terms of Section 1 above, provided that you +also meet all of these conditions: + +\begin{itemize} +\item {\bf a)} You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + +\item {\bf b)} You must cause any work that you distribute or publish, that + in whole or in part contains or is derived from the Program or any part + thereof, to be licensed as a whole at no charge to all third parties under + the terms of this License. + +\item {\bf c)} If the modified program normally reads commands interactively + when run, you must cause it, when started running for such interactive use in + the most ordinary way, to print or display an announcement including an + appropriate copyright notice and a notice that there is no warranty (or else, + saying that you provide a warranty) and that users may redistribute the + program under these conditions, and telling the user how to view a copy of + this License. (Exception: if the Program itself is interactive but does not + normally print such an announcement, your work based on the Program is not + required to print an announcement.) +\end{itemize} + +These requirements apply to the modified work as a whole. If identifiable +sections of that work are not derived from the Program, and can be reasonably +considered independent and separate works in themselves, then this License, +and its terms, do not apply to those sections when you distribute them as +separate works. But when you distribute the same sections as part of a whole +which is a work based on the Program, the distribution of the whole must be on +the terms of this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest your +rights to work written entirely by you; rather, the intent is to exercise the +right to control the distribution of derivative or collective works based on +the Program. + +In addition, mere aggregation of another work not based on the Program with +the Program (or with a work based on the Program) on a volume of a storage or +distribution medium does not bring the other work under the scope of this +License. + +{\bf 3.} You may copy and distribute the Program (or a work based on it, under +Section 2) in object code or executable form under the terms of Sections 1 and +2 above provided that you also do one of the following: + +\begin{itemize} +\item {\bf a)} Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections 1 and 2 + above on a medium customarily used for software interchange; or, + +\item {\bf b)} Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your cost of + physically performing source distribution, a complete machine-readable copy of + the corresponding source code, to be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + +\item {\bf c)} Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is allowed only + for noncommercial distribution and only if you received the program in object + code or executable form with such an offer, in accord with Subsection b + above.) +\end{itemize} + +The source code for a work means the preferred form of the work for making +modifications to it. For an executable work, complete source code means all +the source code for all modules it contains, plus any associated interface +definition files, plus the scripts used to control compilation and +installation of the executable. However, as a special exception, the source +code distributed need not include anything that is normally distributed (in +either source or binary form) with the major components (compiler, kernel, and +so on) of the operating system on which the executable runs, unless that +component itself accompanies the executable. + +If distribution of executable or object code is made by offering access to +copy from a designated place, then offering equivalent access to copy the +source code from the same place counts as distribution of the source code, +even though third parties are not compelled to copy the source along with the +object code. + +{\bf 4.} You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt otherwise to +copy, modify, sublicense or distribute the Program is void, and will +automatically terminate your rights under this License. However, parties who +have received copies, or rights, from you under this License will not have +their licenses terminated so long as such parties remain in full compliance. + +{\bf 5.} You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or distribute +the Program or its derivative works. These actions are prohibited by law if +you do not accept this License. Therefore, by modifying or distributing the +Program (or any work based on the Program), you indicate your acceptance of +this License to do so, and all its terms and conditions for copying, +distributing or modifying the Program or works based on it. + +{\bf 6.} Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the original +licensor to copy, distribute or modify the Program subject to these terms and +conditions. You may not impose any further restrictions on the recipients' +exercise of the rights granted herein. You are not responsible for enforcing +compliance by third parties to this License. + +{\bf 7.} If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or otherwise) +that contradict the conditions of this License, they do not excuse you from +the conditions of this License. If you cannot distribute so as to satisfy +simultaneously your obligations under this License and any other pertinent +obligations, then as a consequence you may not distribute the Program at all. +For example, if a patent license would not permit royalty-free redistribution +of the Program by all those who receive copies directly or indirectly through +you, then the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply and +the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents or +other property right claims or to contest validity of any such claims; this +section has the sole purpose of protecting the integrity of the free software +distribution system, which is implemented by public license practices. Many +people have made generous contributions to the wide range of software +distributed through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing to +distribute software through any other system and a licensee cannot impose that +choice. + +This section is intended to make thoroughly clear what is believed to be a +consequence of the rest of this License. + +{\bf 8.} If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the original +copyright holder who places the Program under this License may add an explicit +geographical distribution limitation excluding those countries, so that +distribution is permitted only in or among countries not thus excluded. In +such case, this License incorporates the limitation as if written in the body +of this License. + +{\bf 9.} The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will be +similar in spirit to the present version, but may differ in detail to address +new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any later +version", you have the option of following the terms and conditions either of +that version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of this License, +you may choose any version ever published by the Free Software Foundation. + +{\bf 10.} If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author to +ask for permission. For software which is copyrighted by the Free Software +Foundation, write to the Free Software Foundation; we sometimes make +exceptions for this. Our decision will be guided by the two goals of +preserving the free status of all derivatives of our free software and of +promoting the sharing and reuse of software generally. + +{\bf NO WARRANTY} + +{\bf 11.} BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE +THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR +IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO +THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM +PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR +CORRECTION. + +{\bf 12.} IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO +LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR +THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + +END OF TERMS AND CONDITIONS + +\section{How to Apply These Terms to Your New Programs} +\label{SEC4} +\index[general]{Programs!How to Apply These Terms to Your New } +\index[general]{How to Apply These Terms to Your New Programs } + +If you develop a new program, and you want it to be of the greatest possible +use to the public, the best way to achieve this is to make it free software +which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest to attach +them to the start of each source file to most effectively convey the exclusion +of warranty; and each file should have at least the "copyright" line and a +pointer to where the full notice is found. + +\footnotesize +\begin{verbatim} +{\em one line to give the program's name and an idea of what it does.} +Copyright (C) {\em yyyy} {\em name of author} +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +02110-1301 USA +\end{verbatim} +\normalsize + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this when it +starts in an interactive mode: + +\footnotesize +\begin{verbatim} +Gnomovision version 69, Copyright (C) {\em year} {\em name of author} +Gnomovision comes with ABSOLUTELY NO WARRANTY; for details +type `show w'. This is free software, and you are welcome +to redistribute it under certain conditions; type `show c' +for details. +\end{verbatim} +\normalsize + +The hypothetical commands {\tt `show w'} and {\tt `show c'} should show the +appropriate parts of the General Public License. Of course, the commands you +use may be called something other than {\tt `show w'} and {\tt `show c'}; they +could even be mouse-clicks or menu items\verb:--:whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + +\footnotesize +\begin{verbatim} +Yoyodyne, Inc., hereby disclaims all copyright +interest in the program `Gnomovision' +(which makes passes at compilers) written +by James Hacker. +{\em signature of Ty Coon}, 1 April 1989 +Ty Coon, President of Vice +\end{verbatim} +\normalsize + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General Public +License instead of this License. +Return to +\elink{GNU's home page}{http://www.gnu.org/home.html}. + +FSF \& GNU inquiries \& questions to +\elink{gnu@gnu.org}{mailto:gnu@gnu.org}. Other +\elink{ways to contact}{http://www.gnu.org/home.html\#ContactInfo} the FSF. + +Comments on these web pages to +\elink{webmasters@www.gnu.org}{mailto:webmasters@www.gnu.org}, send other +questions to +\elink{gnu@gnu.org}{mailto:gnu@gnu.org}. + +Copyright notice above. +Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, +Boston, MA 02110-1301 USA + +Updated: 3 Jan 2000 rms diff --git a/docs/manuals/fr/misc/gpl.tex b/docs/manuals/fr/misc/gpl.tex deleted file mode 100644 index a368afc7..00000000 --- a/docs/manuals/fr/misc/gpl.tex +++ /dev/null @@ -1,420 +0,0 @@ -%% -%% - -\section*{GNU General Public License} -\label{GplChapter} -\index[general]{GNU General Public License } -\index[general]{License!GNU General Public } - -\elink{image of a Philosophical -GNU}{http://www.gnu.org/graphics/philosophicalgnu.html} - -\begin{itemize} -\item - \elink{What to do if you see a possible GPL - violation}{http://www.gnu.org/copyleft/gpl-violation.html} -\item - \elink{Translations of the - GPL}{http://www.gnu.org/copyleft/copyleft.html\#translations} -\end{itemize} - - -\section{Table of Contents} -\index[general]{Table of Contents } -\index[general]{Contents!Table of } - -\begin{itemize} -\item - \label{TOC1} - \ilink{GNU GENERAL PUBLIC LICENSE}{SEC1} - -\begin{itemize} -\item - \label{TOC2} - \ilink{Preamble}{SEC2} -\item - \label{TOC3} - \ilink{TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND -MODIFICATION}{SEC3} -\item - \label{TOC4} - \ilink{How to Apply These Terms to Your New Programs}{SEC4} -\end{itemize} - -\end{itemize} - - -\section{GNU GENERAL PUBLIC LICENSE} -\label{SEC1} -\index[general]{GNU GENERAL PUBLIC LICENSE } -\index[general]{LICENSE!GNU GENERAL PUBLIC } - -Version 2, June 1991 - -\footnotesize -\begin{verbatim} -Copyright (C) 1989, 1991 Free Software Foundation, Inc. -51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. -\end{verbatim} -\normalsize - -\section{Preamble} -\label{SEC2} -\index[general]{Preamble } - -The licenses for most software are designed to take away your freedom to share -and change it. By contrast, the GNU General Public License is intended to -guarantee your freedom to share and change free software\verb:--:to make sure the -software is free for all its users. This General Public License applies to -most of the Free Software Foundation's software and to any other program whose -authors commit to using it. (Some other Free Software Foundation software is -covered by the GNU Library General Public License instead.) You can apply it -to your programs, too. - -When we speak of free software, we are referring to freedom, not price. Our -General Public Licenses are designed to make sure that you have the freedom to -distribute copies of free software (and charge for this service if you wish), -that you receive source code or can get it if you want it, that you can change -the software or use pieces of it in new free programs; and that you know you -can do these things. - -To protect your rights, we need to make restrictions that forbid anyone to -deny you these rights or to ask you to surrender the rights. These -restrictions translate to certain responsibilities for you if you distribute -copies of the software, or if you modify it. - -For example, if you distribute copies of such a program, whether gratis or for -a fee, you must give the recipients all the rights that you have. You must -make sure that they, too, receive or can get the source code. And you must -show them these terms so they know their rights. - -We protect your rights with two steps: (1) copyright the software, and (2) -offer you this license which gives you legal permission to copy, distribute -and/or modify the software. - -Also, for each author's protection and ours, we want to make certain that -everyone understands that there is no warranty for this free software. If the -software is modified by someone else and passed on, we want its recipients to -know that what they have is not the original, so that any problems introduced -by others will not reflect on the original authors' reputations. - -Finally, any free program is threatened constantly by software patents. We -wish to avoid the danger that redistributors of a free program will -individually obtain patent licenses, in effect making the program proprietary. -To prevent this, we have made it clear that any patent must be licensed for -everyone's free use or not licensed at all. - -The precise terms and conditions for copying, distribution and modification -follow. - -\section{TERMS AND CONDITIONS} -\label{SEC3} -\index[general]{CONDITIONS!TERMS AND } -\index[general]{TERMS AND CONDITIONS } - -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -{\bf 0.} This License applies to any program or other work which contains a -notice placed by the copyright holder saying it may be distributed under the -terms of this General Public License. The "Program", below, refers to any -such program or work, and a "work based on the Program" means either the -Program or any derivative work under copyright law: that is to say, a work -containing the Program or a portion of it, either verbatim or with -modifications and/or translated into another language. (Hereinafter, -translation is included without limitation in the term "modification".) Each -licensee is addressed as "you". - -Activities other than copying, distribution and modification are not covered -by this License; they are outside its scope. The act of running the Program is -not restricted, and the output from the Program is covered only if its -contents constitute a work based on the Program (independent of having been -made by running the Program). Whether that is true depends on what the Program -does. - -{\bf 1.} You may copy and distribute verbatim copies of the Program's source -code as you receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice and -disclaimer of warranty; keep intact all the notices that refer to this License -and to the absence of any warranty; and give any other recipients of the -Program a copy of this License along with the Program. - -You may charge a fee for the physical act of transferring a copy, and you may -at your option offer warranty protection in exchange for a fee. - -{\bf 2.} You may modify your copy or copies of the Program or any portion of -it, thus forming a work based on the Program, and copy and distribute such -modifications or work under the terms of Section 1 above, provided that you -also meet all of these conditions: - -\begin{itemize} -\item {\bf a)} You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - -\item {\bf b)} You must cause any work that you distribute or publish, that - in whole or in part contains or is derived from the Program or any part - thereof, to be licensed as a whole at no charge to all third parties under - the terms of this License. - -\item {\bf c)} If the modified program normally reads commands interactively - when run, you must cause it, when started running for such interactive use in - the most ordinary way, to print or display an announcement including an - appropriate copyright notice and a notice that there is no warranty (or else, - saying that you provide a warranty) and that users may redistribute the - program under these conditions, and telling the user how to view a copy of - this License. (Exception: if the Program itself is interactive but does not - normally print such an announcement, your work based on the Program is not - required to print an announcement.) -\end{itemize} - -These requirements apply to the modified work as a whole. If identifiable -sections of that work are not derived from the Program, and can be reasonably -considered independent and separate works in themselves, then this License, -and its terms, do not apply to those sections when you distribute them as -separate works. But when you distribute the same sections as part of a whole -which is a work based on the Program, the distribution of the whole must be on -the terms of this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest your -rights to work written entirely by you; rather, the intent is to exercise the -right to control the distribution of derivative or collective works based on -the Program. - -In addition, mere aggregation of another work not based on the Program with -the Program (or with a work based on the Program) on a volume of a storage or -distribution medium does not bring the other work under the scope of this -License. - -{\bf 3.} You may copy and distribute the Program (or a work based on it, under -Section 2) in object code or executable form under the terms of Sections 1 and -2 above provided that you also do one of the following: - -\begin{itemize} -\item {\bf a)} Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections 1 and 2 - above on a medium customarily used for software interchange; or, - -\item {\bf b)} Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your cost of - physically performing source distribution, a complete machine-readable copy of - the corresponding source code, to be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - -\item {\bf c)} Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is allowed only - for noncommercial distribution and only if you received the program in object - code or executable form with such an offer, in accord with Subsection b - above.) -\end{itemize} - -The source code for a work means the preferred form of the work for making -modifications to it. For an executable work, complete source code means all -the source code for all modules it contains, plus any associated interface -definition files, plus the scripts used to control compilation and -installation of the executable. However, as a special exception, the source -code distributed need not include anything that is normally distributed (in -either source or binary form) with the major components (compiler, kernel, and -so on) of the operating system on which the executable runs, unless that -component itself accompanies the executable. - -If distribution of executable or object code is made by offering access to -copy from a designated place, then offering equivalent access to copy the -source code from the same place counts as distribution of the source code, -even though third parties are not compelled to copy the source along with the -object code. - -{\bf 4.} You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt otherwise to -copy, modify, sublicense or distribute the Program is void, and will -automatically terminate your rights under this License. However, parties who -have received copies, or rights, from you under this License will not have -their licenses terminated so long as such parties remain in full compliance. - -{\bf 5.} You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or distribute -the Program or its derivative works. These actions are prohibited by law if -you do not accept this License. Therefore, by modifying or distributing the -Program (or any work based on the Program), you indicate your acceptance of -this License to do so, and all its terms and conditions for copying, -distributing or modifying the Program or works based on it. - -{\bf 6.} Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the original -licensor to copy, distribute or modify the Program subject to these terms and -conditions. You may not impose any further restrictions on the recipients' -exercise of the rights granted herein. You are not responsible for enforcing -compliance by third parties to this License. - -{\bf 7.} If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or otherwise) -that contradict the conditions of this License, they do not excuse you from -the conditions of this License. If you cannot distribute so as to satisfy -simultaneously your obligations under this License and any other pertinent -obligations, then as a consequence you may not distribute the Program at all. -For example, if a patent license would not permit royalty-free redistribution -of the Program by all those who receive copies directly or indirectly through -you, then the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply and -the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any patents or -other property right claims or to contest validity of any such claims; this -section has the sole purpose of protecting the integrity of the free software -distribution system, which is implemented by public license practices. Many -people have made generous contributions to the wide range of software -distributed through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing to -distribute software through any other system and a licensee cannot impose that -choice. - -This section is intended to make thoroughly clear what is believed to be a -consequence of the rest of this License. - -{\bf 8.} If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the original -copyright holder who places the Program under this License may add an explicit -geographical distribution limitation excluding those countries, so that -distribution is permitted only in or among countries not thus excluded. In -such case, this License incorporates the limitation as if written in the body -of this License. - -{\bf 9.} The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will be -similar in spirit to the present version, but may differ in detail to address -new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any later -version", you have the option of following the terms and conditions either of -that version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of this License, -you may choose any version ever published by the Free Software Foundation. - -{\bf 10.} If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author to -ask for permission. For software which is copyrighted by the Free Software -Foundation, write to the Free Software Foundation; we sometimes make -exceptions for this. Our decision will be guided by the two goals of -preserving the free status of all derivatives of our free software and of -promoting the sharing and reuse of software generally. - -{\bf NO WARRANTY} - -{\bf 11.} BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE -THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR -IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO -THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM -PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR -CORRECTION. - -{\bf 12.} IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO -LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR -THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - -END OF TERMS AND CONDITIONS - -\section{How to Apply These Terms to Your New Programs} -\label{SEC4} -\index[general]{Programs!How to Apply These Terms to Your New } -\index[general]{How to Apply These Terms to Your New Programs } - -If you develop a new program, and you want it to be of the greatest possible -use to the public, the best way to achieve this is to make it free software -which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest to attach -them to the start of each source file to most effectively convey the exclusion -of warranty; and each file should have at least the "copyright" line and a -pointer to where the full notice is found. - -\footnotesize -\begin{verbatim} -{\em one line to give the program's name and an idea of what it does.} -Copyright (C) {\em yyyy} {\em name of author} -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -02110-1301 USA -\end{verbatim} -\normalsize - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this when it -starts in an interactive mode: - -\footnotesize -\begin{verbatim} -Gnomovision version 69, Copyright (C) {\em year} {\em name of author} -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details -type `show w'. This is free software, and you are welcome -to redistribute it under certain conditions; type `show c' -for details. -\end{verbatim} -\normalsize - -The hypothetical commands {\tt `show w'} and {\tt `show c'} should show the -appropriate parts of the General Public License. Of course, the commands you -use may be called something other than {\tt `show w'} and {\tt `show c'}; they -could even be mouse-clicks or menu items\verb:--:whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - -\footnotesize -\begin{verbatim} -Yoyodyne, Inc., hereby disclaims all copyright -interest in the program `Gnomovision' -(which makes passes at compilers) written -by James Hacker. -{\em signature of Ty Coon}, 1 April 1989 -Ty Coon, President of Vice -\end{verbatim} -\normalsize - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General Public -License instead of this License. -Return to -\elink{GNU's home page}{http://www.gnu.org/home.html}. - -FSF \& GNU inquiries \& questions to -\elink{gnu@gnu.org}{mailto:gnu@gnu.org}. Other -\elink{ways to contact}{http://www.gnu.org/home.html\#ContactInfo} the FSF. - -Comments on these web pages to -\elink{webmasters@www.gnu.org}{mailto:webmasters@www.gnu.org}, send other -questions to -\elink{gnu@gnu.org}{mailto:gnu@gnu.org}. - -Copyright notice above. -Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, -Boston, MA 02110-1301 USA - -Updated: 3 Jan 2000 rms diff --git a/docs/manuals/fr/misc/internaldb-en.tex b/docs/manuals/fr/misc/internaldb-en.tex new file mode 100644 index 00000000..65cd0ea0 --- /dev/null +++ b/docs/manuals/fr/misc/internaldb-en.tex @@ -0,0 +1,76 @@ +%% +%% + +\chapter{The internal database is not supported, please do not +use it.} +\label{InternalDbChapter} +\index[general]{Use it!The internal database is not supported please +do not } +\index[general]{The internal database is not supported, please do not +use it. } + +\section{Internal Bacula Database} +\index[general]{Internal Bacula Database } +\index[general]{Database!Internal Bacula } + +Previously it was intended to be used primarily by Bacula developers for +testing; although SQLite is also a good choice for this. We do not recommend +its use in general. + +This database is simplistic in that it consists entirely of Bacula's internal +structures appended sequentially to a file. Consequently, it is in most cases +inappropriate for sites with many clients or systems with large numbers of +files, or long-term production environments. + +Below, you will find a table comparing the features available with SQLite and +MySQL and with the internal Bacula database. At the current time, you cannot +dynamically switch from one to the other, but must rebuild the Bacula source +code. If you wish to experiment with both, it is possible to build both +versions of Bacula and install them into separate directories. + +\addcontentsline{lot}{table}{SQLite vs MySQL Database Comparison} +\begin{longtable}{|l|l|l|} + \hline +\multicolumn{1}{|c| }{\bf Feature } & \multicolumn{1}{c| }{\bf SQLite or MySQL + } & \multicolumn{1}{c| }{\bf Bacula } \\ + \hline +{Job Record } & {Yes } & {Yes } \\ + \hline +{Media Record } & {Yes } & {Yes } \\ + \hline +{FileName Record } & {Yes } & {No } \\ + \hline +{File Record } & {Yes } & {No } \\ + \hline +{FileSet Record } & {Yes } & {Yes } \\ + \hline +{Pool Record } & {Yes } & {Yes } \\ + \hline +{Client Record } & {Yes } & {Yes } \\ + \hline +{JobMedia Record } & {Yes } & {Yes } \\ + \hline +{List Job Records } & {Yes } & {Yes } \\ + \hline +{List Media Records } & {Yes } & {Yes } \\ + \hline +{List Pool Records } & {Yes } & {Yes } \\ + \hline +{List JobMedia Records } & {Yes } & {Yes } \\ + \hline +{Delete Pool Record } & {Yes } & {Yes } \\ + \hline +{Delete Media Record } & {Yes } & {Yes } \\ + \hline +{Update Pool Record } & {Yes } & {Yes } \\ + \hline +{Implement Verify } & {Yes } & {No } \\ + \hline +{MD5 Signatures } & {Yes } & {No } +\\ \hline + +\end{longtable} + +In addition, since there is no SQL available, the Console commands: {\bf +sqlquery}, {\bf query}, {\bf retention}, and any other command that directly +uses SQL are not available with the Internal database. diff --git a/docs/manuals/fr/misc/internaldb.tex b/docs/manuals/fr/misc/internaldb.tex deleted file mode 100644 index 65cd0ea0..00000000 --- a/docs/manuals/fr/misc/internaldb.tex +++ /dev/null @@ -1,76 +0,0 @@ -%% -%% - -\chapter{The internal database is not supported, please do not -use it.} -\label{InternalDbChapter} -\index[general]{Use it!The internal database is not supported please -do not } -\index[general]{The internal database is not supported, please do not -use it. } - -\section{Internal Bacula Database} -\index[general]{Internal Bacula Database } -\index[general]{Database!Internal Bacula } - -Previously it was intended to be used primarily by Bacula developers for -testing; although SQLite is also a good choice for this. We do not recommend -its use in general. - -This database is simplistic in that it consists entirely of Bacula's internal -structures appended sequentially to a file. Consequently, it is in most cases -inappropriate for sites with many clients or systems with large numbers of -files, or long-term production environments. - -Below, you will find a table comparing the features available with SQLite and -MySQL and with the internal Bacula database. At the current time, you cannot -dynamically switch from one to the other, but must rebuild the Bacula source -code. If you wish to experiment with both, it is possible to build both -versions of Bacula and install them into separate directories. - -\addcontentsline{lot}{table}{SQLite vs MySQL Database Comparison} -\begin{longtable}{|l|l|l|} - \hline -\multicolumn{1}{|c| }{\bf Feature } & \multicolumn{1}{c| }{\bf SQLite or MySQL - } & \multicolumn{1}{c| }{\bf Bacula } \\ - \hline -{Job Record } & {Yes } & {Yes } \\ - \hline -{Media Record } & {Yes } & {Yes } \\ - \hline -{FileName Record } & {Yes } & {No } \\ - \hline -{File Record } & {Yes } & {No } \\ - \hline -{FileSet Record } & {Yes } & {Yes } \\ - \hline -{Pool Record } & {Yes } & {Yes } \\ - \hline -{Client Record } & {Yes } & {Yes } \\ - \hline -{JobMedia Record } & {Yes } & {Yes } \\ - \hline -{List Job Records } & {Yes } & {Yes } \\ - \hline -{List Media Records } & {Yes } & {Yes } \\ - \hline -{List Pool Records } & {Yes } & {Yes } \\ - \hline -{List JobMedia Records } & {Yes } & {Yes } \\ - \hline -{Delete Pool Record } & {Yes } & {Yes } \\ - \hline -{Delete Media Record } & {Yes } & {Yes } \\ - \hline -{Update Pool Record } & {Yes } & {Yes } \\ - \hline -{Implement Verify } & {Yes } & {No } \\ - \hline -{MD5 Signatures } & {Yes } & {No } -\\ \hline - -\end{longtable} - -In addition, since there is no SQL available, the Console commands: {\bf -sqlquery}, {\bf query}, {\bf retention}, and any other command that directly -uses SQL are not available with the Internal database. diff --git a/docs/manuals/fr/misc/lesser-en.tex b/docs/manuals/fr/misc/lesser-en.tex new file mode 100644 index 00000000..bc3c3123 --- /dev/null +++ b/docs/manuals/fr/misc/lesser-en.tex @@ -0,0 +1,573 @@ +%% +%% + +\section*{GNU Lesser General Public License} +\label{LesserChapter} +\index[general]{GNU Lesser General Public License } +\index[general]{License!GNU Lesser General Public } + +\elink{image of a Philosophical GNU} +{http://www.gnu.org/graphics/philosophicalgnu.html} [ +\elink{English}{http://www.gnu.org/copyleft/lesser.html} | +\elink{Japanese}{http://www.gnu.org/copyleft/lesser.ja.html} ] + +\begin{itemize} +\item + \elink{Why you shouldn't use the Lesser GPL for your next + library}{http://www.gnu.org/philosophy/why-not-lgpl.html} +\item + \elink{What to do if you see a possible LGPL + violation}{http://www.gnu.org/copyleft/gpl-violation.html} +\item + \elink{Translations of the LGPL} +{http://www.gnu.org/copyleft/copyleft.html\#translationsLGPL} +\item The GNU Lesser General Public License as a + \elink{text file}{http://www.gnu.org/copyleft/lesser.txt} +\item The GNU Lesser General Public License as a + \elink{Texinfo}{http://www.gnu.org/copyleft/lesser.texi} file + \end{itemize} + + +This GNU Lesser General Public License counts as the successor of the GNU +Library General Public License. For an explanation of why this change was +necessary, read the +\elink{Why you shouldn't use the Lesser GPL for your next +library}{http://www.gnu.org/philosophy/why-not-lgpl.html} article. + +\section{Table of Contents} +\index[general]{Table of Contents } +\index[general]{Contents!Table of } + +\begin{itemize} +\item + \label{TOC12} + \ilink{GNU LESSER GENERAL PUBLIC LICENSE}{SEC12} + +\begin{itemize} +\item + \label{TOC23} + \ilink{Preamble}{SEC23} +\item + \label{TOC34} + \ilink{TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND +MODIFICATION}{SEC34} +\item + \label{TOC45} + \ilink{How to Apply These Terms to Your New Libraries}{SEC45} +\end{itemize} + +\end{itemize} + + +\section{GNU LESSER GENERAL PUBLIC LICENSE} +\label{SEC12} +\index[general]{LICENSE!GNU LESSER GENERAL PUBLIC } +\index[general]{GNU LESSER GENERAL PUBLIC LICENSE } + +Version 2.1, February 1999 + +\footnotesize +\begin{verbatim} +Copyright (C) 1991, 1999 Free Software Foundation, Inc. +51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] +\end{verbatim} +\normalsize + +\section{Preamble} +\label{SEC23} +\index[general]{Preamble } + +The licenses for most software are designed to take away your freedom to share +and change it. By contrast, the GNU General Public Licenses are intended to +guarantee your freedom to share and change free software\verb:--:to make sure the +software is free for all its users. + +This license, the Lesser General Public License, applies to some specially +designated software packages\verb:--:typically libraries\verb:--:of the Free Software +Foundation and other authors who decide to use it. You can use it too, but we +suggest you first think carefully about whether this license or the ordinary +General Public License is the better strategy to use in any particular case, +based on the explanations below. + +When we speak of free software, we are referring to freedom of use, not price. +Our General Public Licenses are designed to make sure that you have the +freedom to distribute copies of free software (and charge for this service if +you wish); that you receive source code or can get it if you want it; that you +can change the software and use pieces of it in new free programs; and that +you are informed that you can do these things. + +To protect your rights, we need to make restrictions that forbid distributors +to deny you these rights or to ask you to surrender these rights. These +restrictions translate to certain responsibilities for you if you distribute +copies of the library or if you modify it. + +For example, if you distribute copies of the library, whether gratis or for a +fee, you must give the recipients all the rights that we gave you. You must +make sure that they, too, receive or can get the source code. If you link +other code with the library, you must provide complete object files to the +recipients, so that they can relink them with the library after making changes +to the library and recompiling it. And you must show them these terms so they +know their rights. + +We protect your rights with a two-step method: (1) we copyright the library, +and (2) we offer you this license, which gives you legal permission to copy, +distribute and/or modify the library. + +To protect each distributor, we want to make it very clear that there is no +warranty for the free library. Also, if the library is modified by someone +else and passed on, the recipients should know that what they have is not the +original version, so that the original author's reputation will not be +affected by problems that might be introduced by others. + +Finally, software patents pose a constant threat to the existence of any free +program. We wish to make sure that a company cannot effectively restrict the +users of a free program by obtaining a restrictive license from a patent +holder. Therefore, we insist that any patent license obtained for a version of +the library must be consistent with the full freedom of use specified in this +license. + +Most GNU software, including some libraries, is covered by the ordinary GNU +General Public License. This license, the GNU Lesser General Public License, +applies to certain designated libraries, and is quite different from the +ordinary General Public License. We use this license for certain libraries in +order to permit linking those libraries into non-free programs. + +When a program is linked with a library, whether statically or using a shared +library, the combination of the two is legally speaking a combined work, a +derivative of the original library. The ordinary General Public License +therefore permits such linking only if the entire combination fits its +criteria of freedom. The Lesser General Public License permits more lax +criteria for linking other code with the library. + +We call this license the "Lesser" General Public License because it does +Less to protect the user's freedom than the ordinary General Public License. +It also provides other free software developers Less of an advantage over +competing non-free programs. These disadvantages are the reason we use the +ordinary General Public License for many libraries. However, the Lesser +license provides advantages in certain special circumstances. + +For example, on rare occasions, there may be a special need to encourage the +widest possible use of a certain library, so that it becomes a de-facto +standard. To achieve this, non-free programs must be allowed to use the +library. A more frequent case is that a free library does the same job as +widely used non-free libraries. In this case, there is little to gain by +limiting the free library to free software only, so we use the Lesser General +Public License. + +In other cases, permission to use a particular library in non-free programs +enables a greater number of people to use a large body of free software. For +example, permission to use the GNU C Library in non-free programs enables many +more people to use the whole GNU operating system, as well as its variant, the +GNU/Linux operating system. + +Although the Lesser General Public License is Less protective of the users' +freedom, it does ensure that the user of a program that is linked with the +Library has the freedom and the wherewithal to run that program using a +modified version of the Library. + +The precise terms and conditions for copying, distribution and modification +follow. Pay close attention to the difference between a "work based on the +library" and a "work that uses the library". The former contains code +derived from the library, whereas the latter must be combined with the library +in order to run. + +\section{TERMS AND CONDITIONS} +\label{SEC34} +\index[general]{CONDITIONS!TERMS AND } +\index[general]{TERMS AND CONDITIONS } + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +{\bf 0.} This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or other +authorized party saying it may be distributed under the terms of this Lesser +General Public License (also called "this License"). Each licensee is +addressed as "you". + +A "library" means a collection of software functions and/or data prepared so +as to be conveniently linked with application programs (which use some of +those functions and data) to form executables. + +The "Library", below, refers to any such software library or work which has +been distributed under these terms. A "work based on the Library" means +either the Library or any derivative work under copyright law: that is to say, +a work containing the Library or a portion of it, either verbatim or with +modifications and/or translated straightforwardly into another language. +(Hereinafter, translation is included without limitation in the term +"modification".) + +"Source code" for a work means the preferred form of the work for making +modifications to it. For a library, complete source code means all the source +code for all modules it contains, plus any associated interface definition +files, plus the scripts used to control compilation and installation of the +library. + +Activities other than copying, distribution and modification are not covered +by this License; they are outside its scope. The act of running a program +using the Library is not restricted, and output from such a program is covered +only if its contents constitute a work based on the Library (independent of +the use of the Library in a tool for writing it). Whether that is true depends +on what the Library does and what the program that uses the Library does. + +{\bf 1.} You may copy and distribute verbatim copies of the Library's complete +source code as you receive it, in any medium, provided that you conspicuously +and appropriately publish on each copy an appropriate copyright notice and +disclaimer of warranty; keep intact all the notices that refer to this License +and to the absence of any warranty; and distribute a copy of this License +along with the Library. + +You may charge a fee for the physical act of transferring a copy, and you may +at your option offer warranty protection in exchange for a fee. + +{\bf 2.} You may modify your copy or copies of the Library or any portion of +it, thus forming a work based on the Library, and copy and distribute such +modifications or work under the terms of Section 1 above, provided that you +also meet all of these conditions: + +\begin{itemize} +\item {\bf a)} The modified work must itself be a software library. +\item {\bf b)} You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. +\item {\bf c)} You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. +\item {\bf d)} If a facility in the modified Library refers to a function or + a table of data to be supplied by an application program that uses the + facility, other than as an argument passed when the facility is invoked, then +you must make a good faith effort to ensure that, in the event an application +does not supply such function or table, the facility still operates, and +performs whatever part of its purpose remains meaningful. + +(For example, a function in a library to compute square roots has a purpose +that is entirely well-defined independent of the application. Therefore, +Subsection 2d requires that any application-supplied function or table used +by this function must be optional: if the application does not supply it, the +square root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If identifiable +sections of that work are not derived from the Library, and can be reasonably +considered independent and separate works in themselves, then this License, +and its terms, do not apply to those sections when you distribute them as +separate works. But when you distribute the same sections as part of a whole +which is a work based on the Library, the distribution of the whole must be +on the terms of this License, whose permissions for other licensees extend to +the entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest your +rights to work written entirely by you; rather, the intent is to exercise the +right to control the distribution of derivative or collective works based on +the Library. + +In addition, mere aggregation of another work not based on the Library with +the Library (or with a work based on the Library) on a volume of a storage or +distribution medium does not bring the other work under the scope of this +License. +\end{itemize} + +{\bf 3.} You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do this, +you must alter all the notices that refer to this License, so that they refer +to the ordinary GNU General Public License, version 2, instead of to this +License. (If a newer version than version 2 of the ordinary GNU General Public +License has appeared, then you can specify that version instead if you wish.) +Do not make any other change in these notices. + +Once this change is made in a given copy, it is irreversible for that copy, so +the ordinary GNU General Public License applies to all subsequent copies and +derivative works made from that copy. + +This option is useful when you wish to copy part of the code of the Library +into a program that is not a library. + +{\bf 4.} You may copy and distribute the Library (or a portion or derivative +of it, under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you accompany it with the complete +corresponding machine-readable source code, which must be distributed under +the terms of Sections 1 and 2 above on a medium customarily used for software +interchange. + +If distribution of object code is made by offering access to copy from a +designated place, then offering equivalent access to copy the source code from +the same place satisfies the requirement to distribute the source code, even +though third parties are not compelled to copy the source along with the +object code. + +{\bf 5.} A program that contains no derivative of any portion of the Library, +but is designed to work with the Library by being compiled or linked with it, +is called a "work that uses the Library". Such a work, in isolation, is not +a derivative work of the Library, and therefore falls outside the scope of +this License. + +However, linking a "work that uses the Library" with the Library creates an +executable that is a derivative of the Library (because it contains portions +of the Library), rather than a "work that uses the library". The executable +is therefore covered by this License. Section 6 states terms for distribution +of such executables. + +When a "work that uses the Library" uses material from a header file that is +part of the Library, the object code for the work may be a derivative work of +the Library even though the source code is not. Whether this is true is +especially significant if the work can be linked without the Library, or if +the work is itself a library. The threshold for this to be true is not +precisely defined by law. + +If such an object file uses only numerical parameters, data structure layouts +and accessors, and small macros and small inline functions (ten lines or less +in length), then the use of the object file is unrestricted, regardless of +whether it is legally a derivative work. (Executables containing this object +code plus portions of the Library will still fall under Section 6.) + +Otherwise, if the work is a derivative of the Library, you may distribute the +object code for the work under the terms of Section 6. Any executables +containing that work also fall under Section 6, whether or not they are linked +directly with the Library itself. + +{\bf 6.} As an exception to the Sections above, you may also combine or link a +"work that uses the Library" with the Library to produce a work containing +portions of the Library, and distribute that work under terms of your choice, +provided that the terms permit modification of the work for the customer's own +use and reverse engineering for debugging such modifications. + +You must give prominent notice with each copy of the work that the Library is +used in it and that the Library and its use are covered by this License. You +must supply a copy of this License. If the work during execution displays +copyright notices, you must include the copyright notice for the Library among +them, as well as a reference directing the user to the copy of this License. +Also, you must do one of these things: + +\begin{itemize} +\item {\bf a)} Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever changes were + used in the work (which must be distributed under Sections 1 and 2 above); +and, if the work is an executable linked with the Library, with the complete +machine-readable "work that uses the Library", as object code and/or source +code, so that the user can modify the Library and then relink to produce a +modified executable containing the modified Library. (It is understood that +the user who changes the contents of definitions files in the Library will +not necessarily be able to recompile the application to use the modified +definitions.) +\item {\bf b)} Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a copy of the + library already present on the user's computer system, rather than copying +library functions into the executable, and (2) will operate properly with a +modified version of the library, if the user installs one, as long as the +modified version is interface-compatible with the version that the work was +made with. +\item {\bf c)} Accompany the work with a written offer, valid for at least + three years, to give the same user the materials specified in Subsection 6a, + above, for a charge no more than the cost of performing this distribution. +\item {\bf d)} If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above specified + materials from the same place. +\item {\bf e)} Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + \end{itemize} + +For an executable, the required form of the "work that uses the Library" +must include any data and utility programs needed for reproducing the +executable from it. However, as a special exception, the materials to be +distributed need not include anything that is normally distributed (in either +source or binary form) with the major components (compiler, kernel, and so on) +of the operating system on which the executable runs, unless that component +itself accompanies the executable. + +It may happen that this requirement contradicts the license restrictions of +other proprietary libraries that do not normally accompany the operating +system. Such a contradiction means you cannot use both them and the Library +together in an executable that you distribute. + +{\bf 7.} You may place library facilities that are a work based on the Library +side-by-side in a single library together with other library facilities not +covered by this License, and distribute such a combined library, provided that +the separate distribution of the work based on the Library and of the other +library facilities is otherwise permitted, and provided that you do these two +things: + +\begin{itemize} +\item {\bf a)} Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library facilities. This must + be distributed under the terms of the Sections above. +\item {\bf b)} Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining where to find + the accompanying uncombined form of the same work. +\end{itemize} + +{\bf 8.} You may not copy, modify, sublicense, link with, or distribute the +Library except as expressly provided under this License. Any attempt otherwise +to copy, modify, sublicense, link with, or distribute the Library is void, and +will automatically terminate your rights under this License. However, parties +who have received copies, or rights, from you under this License will not have +their licenses terminated so long as such parties remain in full compliance. + +{\bf 9.} You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or distribute +the Library or its derivative works. These actions are prohibited by law if +you do not accept this License. Therefore, by modifying or distributing the +Library (or any work based on the Library), you indicate your acceptance of +this License to do so, and all its terms and conditions for copying, +distributing or modifying the Library or works based on it. + +{\bf 10.} Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the original +licensor to copy, distribute, link with or modify the Library subject to these +terms and conditions. You may not impose any further restrictions on the +recipients' exercise of the rights granted herein. You are not responsible for +enforcing compliance by third parties with this License. + +{\bf 11.} If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or otherwise) +that contradict the conditions of this License, they do not excuse you from +the conditions of this License. If you cannot distribute so as to satisfy +simultaneously your obligations under this License and any other pertinent +obligations, then as a consequence you may not distribute the Library at all. +For example, if a patent license would not permit royalty-free redistribution +of the Library by all those who receive copies directly or indirectly through +you, then the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, and +the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents or +other property right claims or to contest validity of any such claims; this +section has the sole purpose of protecting the integrity of the free software +distribution system which is implemented by public license practices. Many +people have made generous contributions to the wide range of software +distributed through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing to +distribute software through any other system and a licensee cannot impose that +choice. + +This section is intended to make thoroughly clear what is believed to be a +consequence of the rest of this License. + +{\bf 12.} If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the original +copyright holder who places the Library under this License may add an explicit +geographical distribution limitation excluding those countries, so that +distribution is permitted only in or among countries not thus excluded. In +such case, this License incorporates the limitation as if written in the body +of this License. + +{\bf 13.} The Free Software Foundation may publish revised and/or new versions +of the Lesser General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and "any later +version", you have the option of following the terms and conditions either of +that version or of any later version published by the Free Software +Foundation. If the Library does not specify a license version number, you may +choose any version ever published by the Free Software Foundation. + +{\bf 14.} If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, write to +the author to ask for permission. For software which is copyrighted by the +Free Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals of +preserving the free status of all derivatives of our free software and of +promoting the sharing and reuse of software generally. + +{\bf NO WARRANTY} + +{\bf 15.} BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE +THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR +IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO +THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY +PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR +CORRECTION. + +{\bf 16.} IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO +LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR +THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + +END OF TERMS AND CONDITIONS + +\section{How to Apply These Terms to Your New Libraries} +\label{SEC45} +\index[general]{Libraries!How to Apply These Terms to Your New } +\index[general]{How to Apply These Terms to Your New Libraries } + + +If you develop a new library, and you want it to be of the greatest possible +use to the public, we recommend making it free software that everyone can +redistribute and change. You can do so by permitting redistribution under +these terms (or, alternatively, under the terms of the ordinary General Public +License). + +To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + +\footnotesize +\begin{verbatim} +{\it one line to give the library's name and an idea of what it does.} +Copyright (C) {\it year} {\it name of author} +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 +USA +\end{verbatim} +\normalsize + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + +\footnotesize +\begin{verbatim} +Yoyodyne, Inc., hereby disclaims all copyright interest in +the library "Frob" (a library for tweaking knobs) written +by James Random Hacker. +{\it signature of Ty Coon}, 1 April 1990 +Ty Coon, President of Vice +\end{verbatim} +\normalsize + +That's all there is to it! +Return to +\elink{GNU's home page}{http://www.gnu.org/home.html}. + +FSF \& GNU inquiries \& questions to +\elink{gnu@gnu.org}{mailto:gnu@gnu.org}. Other +\elink{ways to contact}{http://www.gnu.org/home.html\#ContactInfo} the FSF. + +Comments on these web pages to +\elink{webmasters@www.gnu.org}{mailto:webmasters@www.gnu.org}, send other +questions to +\elink{gnu@gnu.org}{mailto:gnu@gnu.org}. + +Copyright notice above. +Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, +Boston, MA 02110-1301 USA +USA + +Updated: 27 Nov 2000 paulv diff --git a/docs/manuals/fr/misc/lesser.tex b/docs/manuals/fr/misc/lesser.tex deleted file mode 100644 index bc3c3123..00000000 --- a/docs/manuals/fr/misc/lesser.tex +++ /dev/null @@ -1,573 +0,0 @@ -%% -%% - -\section*{GNU Lesser General Public License} -\label{LesserChapter} -\index[general]{GNU Lesser General Public License } -\index[general]{License!GNU Lesser General Public } - -\elink{image of a Philosophical GNU} -{http://www.gnu.org/graphics/philosophicalgnu.html} [ -\elink{English}{http://www.gnu.org/copyleft/lesser.html} | -\elink{Japanese}{http://www.gnu.org/copyleft/lesser.ja.html} ] - -\begin{itemize} -\item - \elink{Why you shouldn't use the Lesser GPL for your next - library}{http://www.gnu.org/philosophy/why-not-lgpl.html} -\item - \elink{What to do if you see a possible LGPL - violation}{http://www.gnu.org/copyleft/gpl-violation.html} -\item - \elink{Translations of the LGPL} -{http://www.gnu.org/copyleft/copyleft.html\#translationsLGPL} -\item The GNU Lesser General Public License as a - \elink{text file}{http://www.gnu.org/copyleft/lesser.txt} -\item The GNU Lesser General Public License as a - \elink{Texinfo}{http://www.gnu.org/copyleft/lesser.texi} file - \end{itemize} - - -This GNU Lesser General Public License counts as the successor of the GNU -Library General Public License. For an explanation of why this change was -necessary, read the -\elink{Why you shouldn't use the Lesser GPL for your next -library}{http://www.gnu.org/philosophy/why-not-lgpl.html} article. - -\section{Table of Contents} -\index[general]{Table of Contents } -\index[general]{Contents!Table of } - -\begin{itemize} -\item - \label{TOC12} - \ilink{GNU LESSER GENERAL PUBLIC LICENSE}{SEC12} - -\begin{itemize} -\item - \label{TOC23} - \ilink{Preamble}{SEC23} -\item - \label{TOC34} - \ilink{TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND -MODIFICATION}{SEC34} -\item - \label{TOC45} - \ilink{How to Apply These Terms to Your New Libraries}{SEC45} -\end{itemize} - -\end{itemize} - - -\section{GNU LESSER GENERAL PUBLIC LICENSE} -\label{SEC12} -\index[general]{LICENSE!GNU LESSER GENERAL PUBLIC } -\index[general]{GNU LESSER GENERAL PUBLIC LICENSE } - -Version 2.1, February 1999 - -\footnotesize -\begin{verbatim} -Copyright (C) 1991, 1999 Free Software Foundation, Inc. -51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] -\end{verbatim} -\normalsize - -\section{Preamble} -\label{SEC23} -\index[general]{Preamble } - -The licenses for most software are designed to take away your freedom to share -and change it. By contrast, the GNU General Public Licenses are intended to -guarantee your freedom to share and change free software\verb:--:to make sure the -software is free for all its users. - -This license, the Lesser General Public License, applies to some specially -designated software packages\verb:--:typically libraries\verb:--:of the Free Software -Foundation and other authors who decide to use it. You can use it too, but we -suggest you first think carefully about whether this license or the ordinary -General Public License is the better strategy to use in any particular case, -based on the explanations below. - -When we speak of free software, we are referring to freedom of use, not price. -Our General Public Licenses are designed to make sure that you have the -freedom to distribute copies of free software (and charge for this service if -you wish); that you receive source code or can get it if you want it; that you -can change the software and use pieces of it in new free programs; and that -you are informed that you can do these things. - -To protect your rights, we need to make restrictions that forbid distributors -to deny you these rights or to ask you to surrender these rights. These -restrictions translate to certain responsibilities for you if you distribute -copies of the library or if you modify it. - -For example, if you distribute copies of the library, whether gratis or for a -fee, you must give the recipients all the rights that we gave you. You must -make sure that they, too, receive or can get the source code. If you link -other code with the library, you must provide complete object files to the -recipients, so that they can relink them with the library after making changes -to the library and recompiling it. And you must show them these terms so they -know their rights. - -We protect your rights with a two-step method: (1) we copyright the library, -and (2) we offer you this license, which gives you legal permission to copy, -distribute and/or modify the library. - -To protect each distributor, we want to make it very clear that there is no -warranty for the free library. Also, if the library is modified by someone -else and passed on, the recipients should know that what they have is not the -original version, so that the original author's reputation will not be -affected by problems that might be introduced by others. - -Finally, software patents pose a constant threat to the existence of any free -program. We wish to make sure that a company cannot effectively restrict the -users of a free program by obtaining a restrictive license from a patent -holder. Therefore, we insist that any patent license obtained for a version of -the library must be consistent with the full freedom of use specified in this -license. - -Most GNU software, including some libraries, is covered by the ordinary GNU -General Public License. This license, the GNU Lesser General Public License, -applies to certain designated libraries, and is quite different from the -ordinary General Public License. We use this license for certain libraries in -order to permit linking those libraries into non-free programs. - -When a program is linked with a library, whether statically or using a shared -library, the combination of the two is legally speaking a combined work, a -derivative of the original library. The ordinary General Public License -therefore permits such linking only if the entire combination fits its -criteria of freedom. The Lesser General Public License permits more lax -criteria for linking other code with the library. - -We call this license the "Lesser" General Public License because it does -Less to protect the user's freedom than the ordinary General Public License. -It also provides other free software developers Less of an advantage over -competing non-free programs. These disadvantages are the reason we use the -ordinary General Public License for many libraries. However, the Lesser -license provides advantages in certain special circumstances. - -For example, on rare occasions, there may be a special need to encourage the -widest possible use of a certain library, so that it becomes a de-facto -standard. To achieve this, non-free programs must be allowed to use the -library. A more frequent case is that a free library does the same job as -widely used non-free libraries. In this case, there is little to gain by -limiting the free library to free software only, so we use the Lesser General -Public License. - -In other cases, permission to use a particular library in non-free programs -enables a greater number of people to use a large body of free software. For -example, permission to use the GNU C Library in non-free programs enables many -more people to use the whole GNU operating system, as well as its variant, the -GNU/Linux operating system. - -Although the Lesser General Public License is Less protective of the users' -freedom, it does ensure that the user of a program that is linked with the -Library has the freedom and the wherewithal to run that program using a -modified version of the Library. - -The precise terms and conditions for copying, distribution and modification -follow. Pay close attention to the difference between a "work based on the -library" and a "work that uses the library". The former contains code -derived from the library, whereas the latter must be combined with the library -in order to run. - -\section{TERMS AND CONDITIONS} -\label{SEC34} -\index[general]{CONDITIONS!TERMS AND } -\index[general]{TERMS AND CONDITIONS } - -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -{\bf 0.} This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or other -authorized party saying it may be distributed under the terms of this Lesser -General Public License (also called "this License"). Each licensee is -addressed as "you". - -A "library" means a collection of software functions and/or data prepared so -as to be conveniently linked with application programs (which use some of -those functions and data) to form executables. - -The "Library", below, refers to any such software library or work which has -been distributed under these terms. A "work based on the Library" means -either the Library or any derivative work under copyright law: that is to say, -a work containing the Library or a portion of it, either verbatim or with -modifications and/or translated straightforwardly into another language. -(Hereinafter, translation is included without limitation in the term -"modification".) - -"Source code" for a work means the preferred form of the work for making -modifications to it. For a library, complete source code means all the source -code for all modules it contains, plus any associated interface definition -files, plus the scripts used to control compilation and installation of the -library. - -Activities other than copying, distribution and modification are not covered -by this License; they are outside its scope. The act of running a program -using the Library is not restricted, and output from such a program is covered -only if its contents constitute a work based on the Library (independent of -the use of the Library in a tool for writing it). Whether that is true depends -on what the Library does and what the program that uses the Library does. - -{\bf 1.} You may copy and distribute verbatim copies of the Library's complete -source code as you receive it, in any medium, provided that you conspicuously -and appropriately publish on each copy an appropriate copyright notice and -disclaimer of warranty; keep intact all the notices that refer to this License -and to the absence of any warranty; and distribute a copy of this License -along with the Library. - -You may charge a fee for the physical act of transferring a copy, and you may -at your option offer warranty protection in exchange for a fee. - -{\bf 2.} You may modify your copy or copies of the Library or any portion of -it, thus forming a work based on the Library, and copy and distribute such -modifications or work under the terms of Section 1 above, provided that you -also meet all of these conditions: - -\begin{itemize} -\item {\bf a)} The modified work must itself be a software library. -\item {\bf b)} You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. -\item {\bf c)} You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. -\item {\bf d)} If a facility in the modified Library refers to a function or - a table of data to be supplied by an application program that uses the - facility, other than as an argument passed when the facility is invoked, then -you must make a good faith effort to ensure that, in the event an application -does not supply such function or table, the facility still operates, and -performs whatever part of its purpose remains meaningful. - -(For example, a function in a library to compute square roots has a purpose -that is entirely well-defined independent of the application. Therefore, -Subsection 2d requires that any application-supplied function or table used -by this function must be optional: if the application does not supply it, the -square root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If identifiable -sections of that work are not derived from the Library, and can be reasonably -considered independent and separate works in themselves, then this License, -and its terms, do not apply to those sections when you distribute them as -separate works. But when you distribute the same sections as part of a whole -which is a work based on the Library, the distribution of the whole must be -on the terms of this License, whose permissions for other licensees extend to -the entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest your -rights to work written entirely by you; rather, the intent is to exercise the -right to control the distribution of derivative or collective works based on -the Library. - -In addition, mere aggregation of another work not based on the Library with -the Library (or with a work based on the Library) on a volume of a storage or -distribution medium does not bring the other work under the scope of this -License. -\end{itemize} - -{\bf 3.} You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do this, -you must alter all the notices that refer to this License, so that they refer -to the ordinary GNU General Public License, version 2, instead of to this -License. (If a newer version than version 2 of the ordinary GNU General Public -License has appeared, then you can specify that version instead if you wish.) -Do not make any other change in these notices. - -Once this change is made in a given copy, it is irreversible for that copy, so -the ordinary GNU General Public License applies to all subsequent copies and -derivative works made from that copy. - -This option is useful when you wish to copy part of the code of the Library -into a program that is not a library. - -{\bf 4.} You may copy and distribute the Library (or a portion or derivative -of it, under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you accompany it with the complete -corresponding machine-readable source code, which must be distributed under -the terms of Sections 1 and 2 above on a medium customarily used for software -interchange. - -If distribution of object code is made by offering access to copy from a -designated place, then offering equivalent access to copy the source code from -the same place satisfies the requirement to distribute the source code, even -though third parties are not compelled to copy the source along with the -object code. - -{\bf 5.} A program that contains no derivative of any portion of the Library, -but is designed to work with the Library by being compiled or linked with it, -is called a "work that uses the Library". Such a work, in isolation, is not -a derivative work of the Library, and therefore falls outside the scope of -this License. - -However, linking a "work that uses the Library" with the Library creates an -executable that is a derivative of the Library (because it contains portions -of the Library), rather than a "work that uses the library". The executable -is therefore covered by this License. Section 6 states terms for distribution -of such executables. - -When a "work that uses the Library" uses material from a header file that is -part of the Library, the object code for the work may be a derivative work of -the Library even though the source code is not. Whether this is true is -especially significant if the work can be linked without the Library, or if -the work is itself a library. The threshold for this to be true is not -precisely defined by law. - -If such an object file uses only numerical parameters, data structure layouts -and accessors, and small macros and small inline functions (ten lines or less -in length), then the use of the object file is unrestricted, regardless of -whether it is legally a derivative work. (Executables containing this object -code plus portions of the Library will still fall under Section 6.) - -Otherwise, if the work is a derivative of the Library, you may distribute the -object code for the work under the terms of Section 6. Any executables -containing that work also fall under Section 6, whether or not they are linked -directly with the Library itself. - -{\bf 6.} As an exception to the Sections above, you may also combine or link a -"work that uses the Library" with the Library to produce a work containing -portions of the Library, and distribute that work under terms of your choice, -provided that the terms permit modification of the work for the customer's own -use and reverse engineering for debugging such modifications. - -You must give prominent notice with each copy of the work that the Library is -used in it and that the Library and its use are covered by this License. You -must supply a copy of this License. If the work during execution displays -copyright notices, you must include the copyright notice for the Library among -them, as well as a reference directing the user to the copy of this License. -Also, you must do one of these things: - -\begin{itemize} -\item {\bf a)} Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever changes were - used in the work (which must be distributed under Sections 1 and 2 above); -and, if the work is an executable linked with the Library, with the complete -machine-readable "work that uses the Library", as object code and/or source -code, so that the user can modify the Library and then relink to produce a -modified executable containing the modified Library. (It is understood that -the user who changes the contents of definitions files in the Library will -not necessarily be able to recompile the application to use the modified -definitions.) -\item {\bf b)} Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a copy of the - library already present on the user's computer system, rather than copying -library functions into the executable, and (2) will operate properly with a -modified version of the library, if the user installs one, as long as the -modified version is interface-compatible with the version that the work was -made with. -\item {\bf c)} Accompany the work with a written offer, valid for at least - three years, to give the same user the materials specified in Subsection 6a, - above, for a charge no more than the cost of performing this distribution. -\item {\bf d)} If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above specified - materials from the same place. -\item {\bf e)} Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - \end{itemize} - -For an executable, the required form of the "work that uses the Library" -must include any data and utility programs needed for reproducing the -executable from it. However, as a special exception, the materials to be -distributed need not include anything that is normally distributed (in either -source or binary form) with the major components (compiler, kernel, and so on) -of the operating system on which the executable runs, unless that component -itself accompanies the executable. - -It may happen that this requirement contradicts the license restrictions of -other proprietary libraries that do not normally accompany the operating -system. Such a contradiction means you cannot use both them and the Library -together in an executable that you distribute. - -{\bf 7.} You may place library facilities that are a work based on the Library -side-by-side in a single library together with other library facilities not -covered by this License, and distribute such a combined library, provided that -the separate distribution of the work based on the Library and of the other -library facilities is otherwise permitted, and provided that you do these two -things: - -\begin{itemize} -\item {\bf a)} Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library facilities. This must - be distributed under the terms of the Sections above. -\item {\bf b)} Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining where to find - the accompanying uncombined form of the same work. -\end{itemize} - -{\bf 8.} You may not copy, modify, sublicense, link with, or distribute the -Library except as expressly provided under this License. Any attempt otherwise -to copy, modify, sublicense, link with, or distribute the Library is void, and -will automatically terminate your rights under this License. However, parties -who have received copies, or rights, from you under this License will not have -their licenses terminated so long as such parties remain in full compliance. - -{\bf 9.} You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or distribute -the Library or its derivative works. These actions are prohibited by law if -you do not accept this License. Therefore, by modifying or distributing the -Library (or any work based on the Library), you indicate your acceptance of -this License to do so, and all its terms and conditions for copying, -distributing or modifying the Library or works based on it. - -{\bf 10.} Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the original -licensor to copy, distribute, link with or modify the Library subject to these -terms and conditions. You may not impose any further restrictions on the -recipients' exercise of the rights granted herein. You are not responsible for -enforcing compliance by third parties with this License. - -{\bf 11.} If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or otherwise) -that contradict the conditions of this License, they do not excuse you from -the conditions of this License. If you cannot distribute so as to satisfy -simultaneously your obligations under this License and any other pertinent -obligations, then as a consequence you may not distribute the Library at all. -For example, if a patent license would not permit royalty-free redistribution -of the Library by all those who receive copies directly or indirectly through -you, then the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, and -the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any patents or -other property right claims or to contest validity of any such claims; this -section has the sole purpose of protecting the integrity of the free software -distribution system which is implemented by public license practices. Many -people have made generous contributions to the wide range of software -distributed through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing to -distribute software through any other system and a licensee cannot impose that -choice. - -This section is intended to make thoroughly clear what is believed to be a -consequence of the rest of this License. - -{\bf 12.} If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the original -copyright holder who places the Library under this License may add an explicit -geographical distribution limitation excluding those countries, so that -distribution is permitted only in or among countries not thus excluded. In -such case, this License incorporates the limitation as if written in the body -of this License. - -{\bf 13.} The Free Software Foundation may publish revised and/or new versions -of the Lesser General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and "any later -version", you have the option of following the terms and conditions either of -that version or of any later version published by the Free Software -Foundation. If the Library does not specify a license version number, you may -choose any version ever published by the Free Software Foundation. - -{\bf 14.} If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, write to -the author to ask for permission. For software which is copyrighted by the -Free Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals of -preserving the free status of all derivatives of our free software and of -promoting the sharing and reuse of software generally. - -{\bf NO WARRANTY} - -{\bf 15.} BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE -THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR -IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO -THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY -PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR -CORRECTION. - -{\bf 16.} IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO -LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR -THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - -END OF TERMS AND CONDITIONS - -\section{How to Apply These Terms to Your New Libraries} -\label{SEC45} -\index[general]{Libraries!How to Apply These Terms to Your New } -\index[general]{How to Apply These Terms to Your New Libraries } - - -If you develop a new library, and you want it to be of the greatest possible -use to the public, we recommend making it free software that everyone can -redistribute and change. You can do so by permitting redistribution under -these terms (or, alternatively, under the terms of the ordinary General Public -License). - -To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - -\footnotesize -\begin{verbatim} -{\it one line to give the library's name and an idea of what it does.} -Copyright (C) {\it year} {\it name of author} -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 -USA -\end{verbatim} -\normalsize - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - -\footnotesize -\begin{verbatim} -Yoyodyne, Inc., hereby disclaims all copyright interest in -the library "Frob" (a library for tweaking knobs) written -by James Random Hacker. -{\it signature of Ty Coon}, 1 April 1990 -Ty Coon, President of Vice -\end{verbatim} -\normalsize - -That's all there is to it! -Return to -\elink{GNU's home page}{http://www.gnu.org/home.html}. - -FSF \& GNU inquiries \& questions to -\elink{gnu@gnu.org}{mailto:gnu@gnu.org}. Other -\elink{ways to contact}{http://www.gnu.org/home.html\#ContactInfo} the FSF. - -Comments on these web pages to -\elink{webmasters@www.gnu.org}{mailto:webmasters@www.gnu.org}, send other -questions to -\elink{gnu@gnu.org}{mailto:gnu@gnu.org}. - -Copyright notice above. -Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, -Boston, MA 02110-1301 USA -USA - -Updated: 27 Nov 2000 paulv diff --git a/docs/manuals/fr/misc/license-en.tex b/docs/manuals/fr/misc/license-en.tex new file mode 100644 index 00000000..744cea2c --- /dev/null +++ b/docs/manuals/fr/misc/license-en.tex @@ -0,0 +1,113 @@ +%% +%% + +\chapter{Bacula Copyright, Trademark, and Licenses} +\label{LicenseChapter} +\index[general]{Licenses!Bacula Copyright Trademark} +\index[general]{Bacula Copyright, Trademark, and Licenses} + +There are a number of different licenses that are used in Bacula. +If you have a printed copy of this manual, the details of each of +the licenses referred to in this chapter can be found in the +online version of the manual at +\elink{http://www.bacula.org}{http://www.bacula.org}. + +\section{FDL} +\index[general]{FDL } + +The GNU Free Documentation License (FDL) is used for this manual, +which is a free and open license. This means that you may freely +reproduce it and even make changes to it. However, rather than +distribute your own version of this manual, we would much prefer +if you would send any corrections or changes to the Bacula project. + +The most recent version of the manual can always be found online +at \elink{http://www.bacula.org}{http://www.bacula.org}. + +\section{GPL} +\index[general]{GPL } + +The vast bulk of the source code is released under the +\ilink{GNU General Public License version 2.}{GplChapter}. + +Most of this code is copyrighted: Copyright \copyright 2000-2009 +Free Software Foundation Europe e.V. + +Portions may be copyrighted by other people. These files are released +under different licenses which are compatible with the Bacula GPLv2 license. + +\section{LGPL} +\index[general]{LGPL } + +Some of the Bacula library source code is released under the +\ilink{GNU Lesser General Public License.}{LesserChapter} This +permits third parties to use these parts of our code in their proprietary +programs to interface to Bacula. + +\section{Public Domain} +\index[general]{Domain!Public } +\index[general]{Public Domain } + +Some of the Bacula code, or code that Bacula references, has been released +to the public domain. E.g. md5.c, SQLite. + +\section{Trademark} +\index[general]{Trademark } + +Bacula\raisebox{.6ex}{\textsuperscript{\textregistered}} is a registered +trademark of Kern Sibbald. + +We have trademarked the Bacula name to ensure that any program using the +name Bacula will be exactly compatible with the program that we have +released. The use of the name Bacula is restricted to software systems +that agree exactly with the program presented here. If you have made +modifications to the Bacula source code that alter in any significant +way the way the program functions, you may not distribute it using the +Bacula name. + +\section{Fiduciary License Agreement} +\index[general]{Fiduciary License Agreement } +Developers who have contributed significant changes to the Bacula code +should have signed a Fiduciary License Agreement (FLA), which +guarantees them the right to use the code they have developed, and also +ensures that the Free Software Foundation Europe (and thus the Bacula +project) has the rights to the code. This Fiduciary License Agreement +is found on the Bacula web site at: + +\elink{http://www.bacula.org/en/FLA-bacula.en.pdf}{http://www.bacula.org/en/FLA-bacula.en.pdf} + +and if you are submitting code, you should fill it out then sent to: + +\begin{quote} + Kern Sibbald \\ + Cotes-de-Montmoiret 9 \\ + 1012 Lausanne \\ + Switzerland \\ +\end{quote} + +When you send in such a +complete document, please notify me: kern at sibbald dot com. + + +\section{Disclaimer} +\index[general]{Disclaimer } + +NO WARRANTY + +BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE +PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE +STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE +PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND +PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, +YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY +COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE +PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE +OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR +DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR +A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH +HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. diff --git a/docs/manuals/fr/misc/license.tex b/docs/manuals/fr/misc/license.tex deleted file mode 100644 index 744cea2c..00000000 --- a/docs/manuals/fr/misc/license.tex +++ /dev/null @@ -1,113 +0,0 @@ -%% -%% - -\chapter{Bacula Copyright, Trademark, and Licenses} -\label{LicenseChapter} -\index[general]{Licenses!Bacula Copyright Trademark} -\index[general]{Bacula Copyright, Trademark, and Licenses} - -There are a number of different licenses that are used in Bacula. -If you have a printed copy of this manual, the details of each of -the licenses referred to in this chapter can be found in the -online version of the manual at -\elink{http://www.bacula.org}{http://www.bacula.org}. - -\section{FDL} -\index[general]{FDL } - -The GNU Free Documentation License (FDL) is used for this manual, -which is a free and open license. This means that you may freely -reproduce it and even make changes to it. However, rather than -distribute your own version of this manual, we would much prefer -if you would send any corrections or changes to the Bacula project. - -The most recent version of the manual can always be found online -at \elink{http://www.bacula.org}{http://www.bacula.org}. - -\section{GPL} -\index[general]{GPL } - -The vast bulk of the source code is released under the -\ilink{GNU General Public License version 2.}{GplChapter}. - -Most of this code is copyrighted: Copyright \copyright 2000-2009 -Free Software Foundation Europe e.V. - -Portions may be copyrighted by other people. These files are released -under different licenses which are compatible with the Bacula GPLv2 license. - -\section{LGPL} -\index[general]{LGPL } - -Some of the Bacula library source code is released under the -\ilink{GNU Lesser General Public License.}{LesserChapter} This -permits third parties to use these parts of our code in their proprietary -programs to interface to Bacula. - -\section{Public Domain} -\index[general]{Domain!Public } -\index[general]{Public Domain } - -Some of the Bacula code, or code that Bacula references, has been released -to the public domain. E.g. md5.c, SQLite. - -\section{Trademark} -\index[general]{Trademark } - -Bacula\raisebox{.6ex}{\textsuperscript{\textregistered}} is a registered -trademark of Kern Sibbald. - -We have trademarked the Bacula name to ensure that any program using the -name Bacula will be exactly compatible with the program that we have -released. The use of the name Bacula is restricted to software systems -that agree exactly with the program presented here. If you have made -modifications to the Bacula source code that alter in any significant -way the way the program functions, you may not distribute it using the -Bacula name. - -\section{Fiduciary License Agreement} -\index[general]{Fiduciary License Agreement } -Developers who have contributed significant changes to the Bacula code -should have signed a Fiduciary License Agreement (FLA), which -guarantees them the right to use the code they have developed, and also -ensures that the Free Software Foundation Europe (and thus the Bacula -project) has the rights to the code. This Fiduciary License Agreement -is found on the Bacula web site at: - -\elink{http://www.bacula.org/en/FLA-bacula.en.pdf}{http://www.bacula.org/en/FLA-bacula.en.pdf} - -and if you are submitting code, you should fill it out then sent to: - -\begin{quote} - Kern Sibbald \\ - Cotes-de-Montmoiret 9 \\ - 1012 Lausanne \\ - Switzerland \\ -\end{quote} - -When you send in such a -complete document, please notify me: kern at sibbald dot com. - - -\section{Disclaimer} -\index[general]{Disclaimer } - -NO WARRANTY - -BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE -PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE -STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE -PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND -PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, -YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - -IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY -COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE -PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE -OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR -DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR -A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH -HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. diff --git a/docs/manuals/fr/misc/misc.tex b/docs/manuals/fr/misc/misc.tex index 59351e52..35057de7 100644 --- a/docs/manuals/fr/misc/misc.tex +++ b/docs/manuals/fr/misc/misc.tex @@ -35,7 +35,7 @@ \begin{document} \sloppy -\include{coverpage} +\include{coverpage-en} \clearpage \pagenumbering{roman} @@ -45,16 +45,16 @@ \pagestyle{myheadings} \markboth{Bacula Version \version}{Bacula Version \version} \pagenumbering{arabic} -\include{python} -\include{vars} -\include{stunnel} -\include{dvd} -\include{projects} -\include{internaldb} -\include{license} -\include{fdl} -\include{gpl} -\include{lesser} +\include{python-en} +\include{vars-en} +\include{stunnel-en} +\include{dvd-en} +\include{projects-en} +\include{internaldb-en} +\include{license-en} +\include{fdl-en} +\include{gpl-en} +\include{lesser-en} % pull in the index diff --git a/docs/manuals/fr/misc/projects-en.tex b/docs/manuals/fr/misc/projects-en.tex new file mode 100644 index 00000000..f118e791 --- /dev/null +++ b/docs/manuals/fr/misc/projects-en.tex @@ -0,0 +1,28 @@ +%% +%% + +\chapter{Bacula Projects} +\label{ProjectsChapter} +\index[general]{Projects!Bacula } +\index[general]{Bacula Projects } + +Once a new major version of Bacula is released, the Bacula +users will vote on a list of new features. This vote is used +as the main element determining what new features will be +implemented for the next version. Generally, the development time +for a new release is between four to nine months. Sometimes it may be +a bit longer, but in that case, there will be a number of bug fix +updates to the currently released version. + +For the current list of project, please see the projects page in the CVS +at: \elink{http://cvs.sourceforge.net/viewcvs.py/*checkout*/bacula/bacula/projects} +{http://cvs.sourceforge.net/viewcvs.py/*checkout*/bacula/bacula/projects} +see the {\bf projects} file in the main source directory. The projects +file is updated approximately once every six months. + +Separately from the project list, Kern maintains a current list of +tasks as well as ideas, feature requests, and occasionally design +notes. This list is updated roughly weekly (sometimes more often). +For a current list of tasks you can see {\bf kernstodo} in the Source Forge +CVS at \elink{http://cvs.sourceforge.net/viewcvs.py/*checkout*/bacula/bacula/kernstodo} +{http://cvs.sourceforge.net/viewcvs.py/*checkout*/bacula/bacula/kernstodo}. diff --git a/docs/manuals/fr/misc/projects.tex b/docs/manuals/fr/misc/projects.tex deleted file mode 100644 index f118e791..00000000 --- a/docs/manuals/fr/misc/projects.tex +++ /dev/null @@ -1,28 +0,0 @@ -%% -%% - -\chapter{Bacula Projects} -\label{ProjectsChapter} -\index[general]{Projects!Bacula } -\index[general]{Bacula Projects } - -Once a new major version of Bacula is released, the Bacula -users will vote on a list of new features. This vote is used -as the main element determining what new features will be -implemented for the next version. Generally, the development time -for a new release is between four to nine months. Sometimes it may be -a bit longer, but in that case, there will be a number of bug fix -updates to the currently released version. - -For the current list of project, please see the projects page in the CVS -at: \elink{http://cvs.sourceforge.net/viewcvs.py/*checkout*/bacula/bacula/projects} -{http://cvs.sourceforge.net/viewcvs.py/*checkout*/bacula/bacula/projects} -see the {\bf projects} file in the main source directory. The projects -file is updated approximately once every six months. - -Separately from the project list, Kern maintains a current list of -tasks as well as ideas, feature requests, and occasionally design -notes. This list is updated roughly weekly (sometimes more often). -For a current list of tasks you can see {\bf kernstodo} in the Source Forge -CVS at \elink{http://cvs.sourceforge.net/viewcvs.py/*checkout*/bacula/bacula/kernstodo} -{http://cvs.sourceforge.net/viewcvs.py/*checkout*/bacula/bacula/kernstodo}. diff --git a/docs/manuals/fr/misc/python-en.tex b/docs/manuals/fr/misc/python-en.tex new file mode 100644 index 00000000..5d3c9530 --- /dev/null +++ b/docs/manuals/fr/misc/python-en.tex @@ -0,0 +1,479 @@ +%% +%% + +\chapter{Python Scripting} +\label{PythonChapter} +\index[general]{Python Scripting} +\index[general]{Scripting!Python} + +You may be asking what Python is and why a scripting language is +needed in Bacula. The answer to the first question is that Python +is an Object Oriented scripting language with features similar +to those found in Perl, but the syntax of the language is much +cleaner and simpler. The answer to why have scripting in Bacula is to +give the user more control over the whole backup process. Probably +the simplest example is when Bacula needs a new Volume name, with +a scripting language such as Python, you can generate any name +you want, based on the current state of Bacula. + +\section{Python Configuration} +\index[general]{Python Configuration} +\index[general]{Configuration!Python} + +Python must be enabled during the configuration process by adding +a \verb:--:with-python, and possibly specifying an alternate +directory if your Python is not installed in a standard system +location. If you are using RPMs you will need the python-devel package +installed. + +When Python is configured, it becomes an integral part of Bacula and +runs in Bacula's address space, so even though it is an interpreted +language, it is very efficient. + +When the Director starts, it looks to see if you have a {\bf +Scripts Directory} Directive defined (normal default {\bf +/etc/bacula/scripts}, if so, it looks in that directory for a file named +{\bf DirStartUp.py}. If it is found, Bacula will pass this file to Python +for execution. The {\bf Scripts Directory} is a new directive that you add +to the Director resource of your bacula-dir.conf file. + +Note: Bacula does not install Python scripts by default because these +scripts are for you to program. This means that with a default +installation with Python enabled, Bacula will print the following error +message: + +\begin{verbatim} +09-Jun 15:14 bacula-dir: ERROR in pythonlib.c:131 Could not import +Python script /etc/bacula/scripts/DirStartUp. Python disabled. +\end{verbatim} + +The source code directory {\bf examples/python} contains sample scripts +for DirStartUp.py, SDStartUp.py, and FDStartUp.py that you might want +to use as a starting point. Normally, your scripts directory (at least +where you store the Python scripts) should be writable by Bacula, because +Python will attempt to write a compiled version of the scripts (e.g. +DirStartUp.pyc) back to that directory. + +When starting with the sample scripts, you can delete any part that +you will not need, but you should keep all the Bacula Event and Job Event +definitions. If you do not want a particular event, simply replace the +existing code with a {\bf noop = 1}. + +\section{Bacula Events} +\index[general]{Bacula Events} +\index[general]{Events} +A Bacula event is a point in the Bacula code where Bacula +will call a subroutine (actually a method) that you have +defined in the Python StartUp script. Events correspond +to some significant event such as a Job Start, a Job End, +Bacula needs a new Volume Name, ... When your script is +called, it will have access to all the Bacula variables +specific to the Job (attributes of the Job Object), and +it can even call some of the Job methods (subroutines) +or set new values in the Job attributes, such as the +Priority. You will see below how the events are used. + +\section{Python Objects} +\index[general]{Python Objects} +\index[general]{Objects!Python} + +There are four Python objects that you will need to work with: +\begin{description} +\item [The Bacula Object] + The Bacula object is created by the Bacula daemon (the Director + in the present case) when the daemon starts. It is available to + the Python startup script, {\bf DirStartup.py}, by importing the + Bacula definitions with {\bf import bacula}. The methods + available with this object are described below. + +\item [The Bacula Events Class] + You create this class in the startup script, and you pass + it to the Bacula Object's {\bf set\_events} method. The + purpose of the Bacula Events Class is to define what global + or daemon events you want to monitor. When one of those events + occurs, your Bacula Events Class will be called at the method + corresponding to the event. There are currently three events, + JobStart, JobEnd, and Exit, which are described in detail below. + +\item [The Job Object] + When a Job starts, and assuming you have defined a JobStart method + in your Bacula Events Class, Bacula will create a Job Object. This + object will be passed to the JobStart event. The Job Object has a + has good number of read-only members or attributes providing many + details of the Job, and it also has a number of writable attributes + that allow you to pass information into the Job. These attributes + are described below. + +\item [The Job Events Class] + You create this class in the JobStart method of your Bacula Events + class, and it allows you to define which of the possible Job Object + events you want to see. You must pass an instance of your Job Events + class to the Job Object set\_events() method. + Normally, you will probably only have one + Job Events Class, which will be instantiated for each Job. However, + if you wish to see different events in different Jobs, you may have + as many Job Events classes as you wish. +\end{description} + + +The first thing the startup script must do is to define what global Bacula +events (daemon events), it wants to see. This is done by creating a +Bacula Events class, instantiating it, then passing it to the +{\bf set\_events} method. There are three possible +events. + +\begin{description} +\item [JobStart] + \index[general]{JobStart} + This Python method, if defined, will be called each time a Job is started. + The method is passed the class instantiation object as the first argument, + and the Bacula Job object as the second argument. The Bacula Job object + has several built-in methods, and you can define which ones you + want called. If you do not define this method, you will not be able + to interact with Bacula jobs. + +\item [JobEnd] + This Python method, if defined, will be called each time a Job terminates. + The method is passed the class instantiation object as the first argument, + and the Bacula Job object as the second argument. + +\item [Exit] + This Python method, if defined, will be called when the Director terminates. + The method is passed the class instantiation object as the first argument. +\end{description} + +Access to the Bacula variables and methods is done with: + + import bacula + +The following are the read-only attributes provided by the bacula object. +\begin{description} +\item [Name] +\item [ConfigFile] +\item [WorkingDir] +\item [Version] string consisting of "Version Build-date" +\end{description} + + +A simple definition of the Bacula Events Class might be the following: + +\footnotesize +\begin{verbatim} +import sys, bacula +class BaculaEvents: + def JobStart(self, job): + ... +\end{verbatim} +\normalsize + +Then to instantiate the class and pass it to Bacula, you +would do: + +\footnotesize +\begin{verbatim} +bacula.set_events(BaculaEvents()) # register Bacula Events wanted +\end{verbatim} +\normalsize + +And at that point, each time a Job is started, your BaculaEvents JobStart +method will be called. + +Now to actually do anything with a Job, you must define which Job events +you want to see, and this is done by defining a JobEvents class containing +the methods you want called. Each method name corresponds to one of the +Job Events that Bacula will generate. + +A simple Job Events class might look like the following: + +\footnotesize +\begin{verbatim} +class JobEvents: + def NewVolume(self, job): + ... +\end{verbatim} +\normalsize + +Here, your JobEvents class method NewVolume will be called each time +the Job needs a new Volume name. To actually register the events defined +in your class with the Job, you must instantiate the JobEvents class and +set it in the Job {\bf set\_events} variable. Note, this is a bit different +from how you registered the Bacula events. The registration process must +be done in the Bacula JobStart event (your method). So, you would modify +Bacula Events (not the Job events) as follows: + +\footnotesize +\begin{verbatim} +import sys, bacula +class BaculaEvents: + def JobStart(self, job): + events = JobEvents() # create instance of Job class + job.set_events(events) # register Job events desired + ... +\end{verbatim} +\normalsize + +When a job event is triggered, the appropriate event definition is +called in the JobEvents class. This is the means by which your Python +script or code gets control. Once it has control, it may read job +attributes, or set them. See below for a list of read-only attributes, +and those that are writable. + +In addition, the Bacula {\bf job} object in the Director has +a number of methods (subroutines) that can be called. They +are: +\begin{description} +\item [set\_events] The set\_events method takes a single + argument, which is the instantiation of the Job Events class + that contains the methods that you want called. The method + names that will be called must correspond to the Bacula + defined events. You may define additional methods but Bacula + will not use them. +\item [run] The run method takes a single string + argument, which is the run command (same as in the Console) + that you want to submit to start a new Job. The value + returned by the run method is the JobId of the job that + started, or -1 if there was an error. +\item [write] The write method is used to be able to send + print output to the Job Report. This will be described later. +\item[cancel] The cancel method takes a single integer argument, + which is a JobId. If JobId is found, it will be canceled. +\item [DoesVolumeExist] The DoesVolumeExist method takes a single + string argument, which is the Volume name, and returns + 1 if the volume exists in the Catalog and 0 if the volume + does not exist. +\end{description} + +The following attributes are read/write within the Director +for the {\bf job} object. + +\begin{description} +\item [Priority] Read or set the Job priority. + Note, that setting a Job Priority is effective only before + the Job actually starts. +\item [Level] This attribute contains a string representing the Job + level, e.g. Full, Differential, Incremental, ... if read. + The level can also be set. +\end{description} + +The following read-only attributes are available within the Director +for the {\bf job} object. + +\begin{description} +\item [Type] This attribute contains a string representing the Job + type, e.g. Backup, Restore, Verify, ... +\item [JobId] This attribute contains an integer representing the + JobId. +\item [Client] This attribute contains a string with the name of the + Client for this job. +\item [NumVols] This attribute contains an integer with the number of + Volumes in the Pool being used by the Job. +\item [Pool] This attribute contains a string with the name of the Pool + being used by the Job. +\item [Storage] This attribute contains a string with the name of the + Storage resource being used by the Job. +\item [Catalog] This attribute contains a string with the name of the + Catalog resource being used by the Job. +\item [MediaType] This attribute contains a string with the name of the + Media Type associated with the Storage resource being used by the Job. +\item [Job] This attribute contains a string containing the name of the + Job resource used by this job (not unique). +\item [JobName] This attribute contains a string representing the full + unique Job name. +\item [JobStatus] This attribute contains a single character string + representing the current Job status. The status may change + during execution of the job. It may take on the following + values: + \begin{description} + \item [C] Created, not yet running + \item [R] Running + \item [B] Blocked + \item [T] Completed successfully + \item [E] Terminated with errors + \item [e] Non-fatal error + \item [f] Fatal error + \item [D] Verify found differences + \item [A] Canceled by user + \item [F] Waiting for Client + \item [S] Waiting for Storage daemon + \item [m] Waiting for new media + \item [M] Waiting for media mount + \item [s] Waiting for storage resource + \item [j] Waiting for job resource + \item [c] Waiting for client resource + \item [d] Waiting on maximum jobs + \item [t] Waiting on start time + \item [p] Waiting on higher priority jobs + \end{description} + +\item [Priority] This attribute contains an integer with the priority + assigned to the job. +\item [CatalogRes] tuple consisting of (DBName, Address, User, + Password, Socket, Port, Database Vendor) taken from the Catalog resource + for the Job with the exception of Database Vendor, which is + one of the following: MySQL, PostgreSQL, SQLite, Internal, + depending on what database you configured. +\item [VolumeName] + After a Volume has been purged, this attribute will contain the + name of that Volume. At other times, this value may have no meaning. +\end{description} + +The following write-only attributes are available within the +Director: + +\begin{description} +\item [JobReport] Send line to the Job Report. +\item [VolumeName] Set a new Volume name. Valid only during the + NewVolume event. +\end{description} + +\section{Python Console Command} +\index[general]{Python Console Command} +\index[general]{Console Command!Python} + +There is a new Console command named {\bf python}. It takes +a single argument {\bf restart}. Example: +\begin{verbatim} + python restart +\end{verbatim} + +This command restarts the Python interpreter in the Director. +This can be useful when you are modifying the DirStartUp script, +because normally Python will cache it, and thus the +script will be read one time. + +\section{Debugging Python Scripts} +\index[general]{Debugging Python Scripts} +In general, you debug your Python scripts by using print statements. +You can also develop your script or important parts of it as a +separate file using the Python interpreter to run it. Once you +have it working correctly, you can then call the script from +within the Bacula Python script (DirStartUp.py). + +If you are having problems loading DirStartUp.py, you will probably +not get any error messages because Bacula can only print Python +error messages after the Python interpreter is started. However, you +may be able to see the error messages by starting Bacula in +a shell window with the {\bf -d1} option on the command line. That +should cause the Python error messages to be printed in the shell +window. + +If you are getting error messages such as the following when +loading DirStartUp.py: + +\begin{verbatim} + Traceback (most recent call last): + File "/etc/bacula/scripts/DirStartUp.py", line 6, in ? + import time, sys, bacula + ImportError: /usr/lib/python2.3/lib-dynload/timemodule.so: undefined + symbol: PyInt_FromLong + bacula-dir: pythonlib.c:134 Python Import error. +\end{verbatim} + +It is because the DirStartUp script is calling a dynamically loaded +module (timemodule.so in the above case) that then tries to use +Python functions exported from the Python interpreter (in this case +PyInt\_FromLong). The way Bacula is currently linked with Python does +not permit this. The solution to the problem is to put such functions +(in this case the import of time into a separate Python script, which +will do your calculations and return the values you want. Then call +(not import) this script from the Bacula DirStartUp.py script, and +it all should work as you expect. + + + + + +\section{Python Example} +\index[general]{Python Example} +\index[general]{Example!Python} + +An example script for the Director startup file is provided in +{\bf examples/python/DirStartup.py} as follows: + +\footnotesize +\begin{verbatim} +# +# Bacula Python interface script for the Director +# + +# You must import both sys and bacula +import sys, bacula + +# This is the list of Bacula daemon events that you +# can receive. +class BaculaEvents(object): + def __init__(self): + # Called here when a new Bacula Events class is + # is created. Normally not used + noop = 1 + + def JobStart(self, job): + """ + Called here when a new job is started. If you want + to do anything with the Job, you must register + events you want to receive. + """ + events = JobEvents() # create instance of Job class + events.job = job # save Bacula's job pointer + job.set_events(events) # register events desired + sys.stderr = events # send error output to Bacula + sys.stdout = events # send stdout to Bacula + jobid = job.JobId; client = job.Client + numvols = job.NumVols + job.JobReport="Python Dir JobStart: JobId=%d Client=%s NumVols=%d\n" % (jobid,client,numvols) + + # Bacula Job is going to terminate + def JobEnd(self, job): + jobid = job.JobId + client = job.Client + job.JobReport="Python Dir JobEnd output: JobId=%d Client=%s.\n" % (jobid, client) + + # Called here when the Bacula daemon is going to exit + def Exit(self, job): + print "Daemon exiting." + +bacula.set_events(BaculaEvents()) # register daemon events desired + +""" + These are the Job events that you can receive. +""" +class JobEvents(object): + def __init__(self): + # Called here when you instantiate the Job. Not + # normally used + noop = 1 + + def JobInit(self, job): + # Called when the job is first scheduled + noop = 1 + + def JobRun(self, job): + # Called just before running the job after initializing + # This is the point to change most Job parameters. + # It is equivalent to the JobRunBefore point. + noop = 1 + + def NewVolume(self, job): + # Called when Bacula wants a new Volume name. The Volume + # name returned, if any, must be stored in job.VolumeName + jobid = job.JobId + client = job.Client + numvol = job.NumVols; + print job.CatalogRes + job.JobReport = "JobId=%d Client=%s NumVols=%d" % (jobid, client, numvol) + job.JobReport="Python before New Volume set for Job.\n" + Vol = "TestA-%d" % numvol + job.JobReport = "Exists=%d TestA-%d" % (job.DoesVolumeExist(Vol), numvol) + job.VolumeName="TestA-%d" % numvol + job.JobReport="Python after New Volume set for Job.\n" + return 1 + + def VolumePurged(self, job): + # Called when a Volume is purged. The Volume name can be referenced + # with job.VolumeName + noop = 1 + + + +\end{verbatim} +\normalsize diff --git a/docs/manuals/fr/misc/python.tex b/docs/manuals/fr/misc/python.tex deleted file mode 100644 index 5d3c9530..00000000 --- a/docs/manuals/fr/misc/python.tex +++ /dev/null @@ -1,479 +0,0 @@ -%% -%% - -\chapter{Python Scripting} -\label{PythonChapter} -\index[general]{Python Scripting} -\index[general]{Scripting!Python} - -You may be asking what Python is and why a scripting language is -needed in Bacula. The answer to the first question is that Python -is an Object Oriented scripting language with features similar -to those found in Perl, but the syntax of the language is much -cleaner and simpler. The answer to why have scripting in Bacula is to -give the user more control over the whole backup process. Probably -the simplest example is when Bacula needs a new Volume name, with -a scripting language such as Python, you can generate any name -you want, based on the current state of Bacula. - -\section{Python Configuration} -\index[general]{Python Configuration} -\index[general]{Configuration!Python} - -Python must be enabled during the configuration process by adding -a \verb:--:with-python, and possibly specifying an alternate -directory if your Python is not installed in a standard system -location. If you are using RPMs you will need the python-devel package -installed. - -When Python is configured, it becomes an integral part of Bacula and -runs in Bacula's address space, so even though it is an interpreted -language, it is very efficient. - -When the Director starts, it looks to see if you have a {\bf -Scripts Directory} Directive defined (normal default {\bf -/etc/bacula/scripts}, if so, it looks in that directory for a file named -{\bf DirStartUp.py}. If it is found, Bacula will pass this file to Python -for execution. The {\bf Scripts Directory} is a new directive that you add -to the Director resource of your bacula-dir.conf file. - -Note: Bacula does not install Python scripts by default because these -scripts are for you to program. This means that with a default -installation with Python enabled, Bacula will print the following error -message: - -\begin{verbatim} -09-Jun 15:14 bacula-dir: ERROR in pythonlib.c:131 Could not import -Python script /etc/bacula/scripts/DirStartUp. Python disabled. -\end{verbatim} - -The source code directory {\bf examples/python} contains sample scripts -for DirStartUp.py, SDStartUp.py, and FDStartUp.py that you might want -to use as a starting point. Normally, your scripts directory (at least -where you store the Python scripts) should be writable by Bacula, because -Python will attempt to write a compiled version of the scripts (e.g. -DirStartUp.pyc) back to that directory. - -When starting with the sample scripts, you can delete any part that -you will not need, but you should keep all the Bacula Event and Job Event -definitions. If you do not want a particular event, simply replace the -existing code with a {\bf noop = 1}. - -\section{Bacula Events} -\index[general]{Bacula Events} -\index[general]{Events} -A Bacula event is a point in the Bacula code where Bacula -will call a subroutine (actually a method) that you have -defined in the Python StartUp script. Events correspond -to some significant event such as a Job Start, a Job End, -Bacula needs a new Volume Name, ... When your script is -called, it will have access to all the Bacula variables -specific to the Job (attributes of the Job Object), and -it can even call some of the Job methods (subroutines) -or set new values in the Job attributes, such as the -Priority. You will see below how the events are used. - -\section{Python Objects} -\index[general]{Python Objects} -\index[general]{Objects!Python} - -There are four Python objects that you will need to work with: -\begin{description} -\item [The Bacula Object] - The Bacula object is created by the Bacula daemon (the Director - in the present case) when the daemon starts. It is available to - the Python startup script, {\bf DirStartup.py}, by importing the - Bacula definitions with {\bf import bacula}. The methods - available with this object are described below. - -\item [The Bacula Events Class] - You create this class in the startup script, and you pass - it to the Bacula Object's {\bf set\_events} method. The - purpose of the Bacula Events Class is to define what global - or daemon events you want to monitor. When one of those events - occurs, your Bacula Events Class will be called at the method - corresponding to the event. There are currently three events, - JobStart, JobEnd, and Exit, which are described in detail below. - -\item [The Job Object] - When a Job starts, and assuming you have defined a JobStart method - in your Bacula Events Class, Bacula will create a Job Object. This - object will be passed to the JobStart event. The Job Object has a - has good number of read-only members or attributes providing many - details of the Job, and it also has a number of writable attributes - that allow you to pass information into the Job. These attributes - are described below. - -\item [The Job Events Class] - You create this class in the JobStart method of your Bacula Events - class, and it allows you to define which of the possible Job Object - events you want to see. You must pass an instance of your Job Events - class to the Job Object set\_events() method. - Normally, you will probably only have one - Job Events Class, which will be instantiated for each Job. However, - if you wish to see different events in different Jobs, you may have - as many Job Events classes as you wish. -\end{description} - - -The first thing the startup script must do is to define what global Bacula -events (daemon events), it wants to see. This is done by creating a -Bacula Events class, instantiating it, then passing it to the -{\bf set\_events} method. There are three possible -events. - -\begin{description} -\item [JobStart] - \index[general]{JobStart} - This Python method, if defined, will be called each time a Job is started. - The method is passed the class instantiation object as the first argument, - and the Bacula Job object as the second argument. The Bacula Job object - has several built-in methods, and you can define which ones you - want called. If you do not define this method, you will not be able - to interact with Bacula jobs. - -\item [JobEnd] - This Python method, if defined, will be called each time a Job terminates. - The method is passed the class instantiation object as the first argument, - and the Bacula Job object as the second argument. - -\item [Exit] - This Python method, if defined, will be called when the Director terminates. - The method is passed the class instantiation object as the first argument. -\end{description} - -Access to the Bacula variables and methods is done with: - - import bacula - -The following are the read-only attributes provided by the bacula object. -\begin{description} -\item [Name] -\item [ConfigFile] -\item [WorkingDir] -\item [Version] string consisting of "Version Build-date" -\end{description} - - -A simple definition of the Bacula Events Class might be the following: - -\footnotesize -\begin{verbatim} -import sys, bacula -class BaculaEvents: - def JobStart(self, job): - ... -\end{verbatim} -\normalsize - -Then to instantiate the class and pass it to Bacula, you -would do: - -\footnotesize -\begin{verbatim} -bacula.set_events(BaculaEvents()) # register Bacula Events wanted -\end{verbatim} -\normalsize - -And at that point, each time a Job is started, your BaculaEvents JobStart -method will be called. - -Now to actually do anything with a Job, you must define which Job events -you want to see, and this is done by defining a JobEvents class containing -the methods you want called. Each method name corresponds to one of the -Job Events that Bacula will generate. - -A simple Job Events class might look like the following: - -\footnotesize -\begin{verbatim} -class JobEvents: - def NewVolume(self, job): - ... -\end{verbatim} -\normalsize - -Here, your JobEvents class method NewVolume will be called each time -the Job needs a new Volume name. To actually register the events defined -in your class with the Job, you must instantiate the JobEvents class and -set it in the Job {\bf set\_events} variable. Note, this is a bit different -from how you registered the Bacula events. The registration process must -be done in the Bacula JobStart event (your method). So, you would modify -Bacula Events (not the Job events) as follows: - -\footnotesize -\begin{verbatim} -import sys, bacula -class BaculaEvents: - def JobStart(self, job): - events = JobEvents() # create instance of Job class - job.set_events(events) # register Job events desired - ... -\end{verbatim} -\normalsize - -When a job event is triggered, the appropriate event definition is -called in the JobEvents class. This is the means by which your Python -script or code gets control. Once it has control, it may read job -attributes, or set them. See below for a list of read-only attributes, -and those that are writable. - -In addition, the Bacula {\bf job} object in the Director has -a number of methods (subroutines) that can be called. They -are: -\begin{description} -\item [set\_events] The set\_events method takes a single - argument, which is the instantiation of the Job Events class - that contains the methods that you want called. The method - names that will be called must correspond to the Bacula - defined events. You may define additional methods but Bacula - will not use them. -\item [run] The run method takes a single string - argument, which is the run command (same as in the Console) - that you want to submit to start a new Job. The value - returned by the run method is the JobId of the job that - started, or -1 if there was an error. -\item [write] The write method is used to be able to send - print output to the Job Report. This will be described later. -\item[cancel] The cancel method takes a single integer argument, - which is a JobId. If JobId is found, it will be canceled. -\item [DoesVolumeExist] The DoesVolumeExist method takes a single - string argument, which is the Volume name, and returns - 1 if the volume exists in the Catalog and 0 if the volume - does not exist. -\end{description} - -The following attributes are read/write within the Director -for the {\bf job} object. - -\begin{description} -\item [Priority] Read or set the Job priority. - Note, that setting a Job Priority is effective only before - the Job actually starts. -\item [Level] This attribute contains a string representing the Job - level, e.g. Full, Differential, Incremental, ... if read. - The level can also be set. -\end{description} - -The following read-only attributes are available within the Director -for the {\bf job} object. - -\begin{description} -\item [Type] This attribute contains a string representing the Job - type, e.g. Backup, Restore, Verify, ... -\item [JobId] This attribute contains an integer representing the - JobId. -\item [Client] This attribute contains a string with the name of the - Client for this job. -\item [NumVols] This attribute contains an integer with the number of - Volumes in the Pool being used by the Job. -\item [Pool] This attribute contains a string with the name of the Pool - being used by the Job. -\item [Storage] This attribute contains a string with the name of the - Storage resource being used by the Job. -\item [Catalog] This attribute contains a string with the name of the - Catalog resource being used by the Job. -\item [MediaType] This attribute contains a string with the name of the - Media Type associated with the Storage resource being used by the Job. -\item [Job] This attribute contains a string containing the name of the - Job resource used by this job (not unique). -\item [JobName] This attribute contains a string representing the full - unique Job name. -\item [JobStatus] This attribute contains a single character string - representing the current Job status. The status may change - during execution of the job. It may take on the following - values: - \begin{description} - \item [C] Created, not yet running - \item [R] Running - \item [B] Blocked - \item [T] Completed successfully - \item [E] Terminated with errors - \item [e] Non-fatal error - \item [f] Fatal error - \item [D] Verify found differences - \item [A] Canceled by user - \item [F] Waiting for Client - \item [S] Waiting for Storage daemon - \item [m] Waiting for new media - \item [M] Waiting for media mount - \item [s] Waiting for storage resource - \item [j] Waiting for job resource - \item [c] Waiting for client resource - \item [d] Waiting on maximum jobs - \item [t] Waiting on start time - \item [p] Waiting on higher priority jobs - \end{description} - -\item [Priority] This attribute contains an integer with the priority - assigned to the job. -\item [CatalogRes] tuple consisting of (DBName, Address, User, - Password, Socket, Port, Database Vendor) taken from the Catalog resource - for the Job with the exception of Database Vendor, which is - one of the following: MySQL, PostgreSQL, SQLite, Internal, - depending on what database you configured. -\item [VolumeName] - After a Volume has been purged, this attribute will contain the - name of that Volume. At other times, this value may have no meaning. -\end{description} - -The following write-only attributes are available within the -Director: - -\begin{description} -\item [JobReport] Send line to the Job Report. -\item [VolumeName] Set a new Volume name. Valid only during the - NewVolume event. -\end{description} - -\section{Python Console Command} -\index[general]{Python Console Command} -\index[general]{Console Command!Python} - -There is a new Console command named {\bf python}. It takes -a single argument {\bf restart}. Example: -\begin{verbatim} - python restart -\end{verbatim} - -This command restarts the Python interpreter in the Director. -This can be useful when you are modifying the DirStartUp script, -because normally Python will cache it, and thus the -script will be read one time. - -\section{Debugging Python Scripts} -\index[general]{Debugging Python Scripts} -In general, you debug your Python scripts by using print statements. -You can also develop your script or important parts of it as a -separate file using the Python interpreter to run it. Once you -have it working correctly, you can then call the script from -within the Bacula Python script (DirStartUp.py). - -If you are having problems loading DirStartUp.py, you will probably -not get any error messages because Bacula can only print Python -error messages after the Python interpreter is started. However, you -may be able to see the error messages by starting Bacula in -a shell window with the {\bf -d1} option on the command line. That -should cause the Python error messages to be printed in the shell -window. - -If you are getting error messages such as the following when -loading DirStartUp.py: - -\begin{verbatim} - Traceback (most recent call last): - File "/etc/bacula/scripts/DirStartUp.py", line 6, in ? - import time, sys, bacula - ImportError: /usr/lib/python2.3/lib-dynload/timemodule.so: undefined - symbol: PyInt_FromLong - bacula-dir: pythonlib.c:134 Python Import error. -\end{verbatim} - -It is because the DirStartUp script is calling a dynamically loaded -module (timemodule.so in the above case) that then tries to use -Python functions exported from the Python interpreter (in this case -PyInt\_FromLong). The way Bacula is currently linked with Python does -not permit this. The solution to the problem is to put such functions -(in this case the import of time into a separate Python script, which -will do your calculations and return the values you want. Then call -(not import) this script from the Bacula DirStartUp.py script, and -it all should work as you expect. - - - - - -\section{Python Example} -\index[general]{Python Example} -\index[general]{Example!Python} - -An example script for the Director startup file is provided in -{\bf examples/python/DirStartup.py} as follows: - -\footnotesize -\begin{verbatim} -# -# Bacula Python interface script for the Director -# - -# You must import both sys and bacula -import sys, bacula - -# This is the list of Bacula daemon events that you -# can receive. -class BaculaEvents(object): - def __init__(self): - # Called here when a new Bacula Events class is - # is created. Normally not used - noop = 1 - - def JobStart(self, job): - """ - Called here when a new job is started. If you want - to do anything with the Job, you must register - events you want to receive. - """ - events = JobEvents() # create instance of Job class - events.job = job # save Bacula's job pointer - job.set_events(events) # register events desired - sys.stderr = events # send error output to Bacula - sys.stdout = events # send stdout to Bacula - jobid = job.JobId; client = job.Client - numvols = job.NumVols - job.JobReport="Python Dir JobStart: JobId=%d Client=%s NumVols=%d\n" % (jobid,client,numvols) - - # Bacula Job is going to terminate - def JobEnd(self, job): - jobid = job.JobId - client = job.Client - job.JobReport="Python Dir JobEnd output: JobId=%d Client=%s.\n" % (jobid, client) - - # Called here when the Bacula daemon is going to exit - def Exit(self, job): - print "Daemon exiting." - -bacula.set_events(BaculaEvents()) # register daemon events desired - -""" - These are the Job events that you can receive. -""" -class JobEvents(object): - def __init__(self): - # Called here when you instantiate the Job. Not - # normally used - noop = 1 - - def JobInit(self, job): - # Called when the job is first scheduled - noop = 1 - - def JobRun(self, job): - # Called just before running the job after initializing - # This is the point to change most Job parameters. - # It is equivalent to the JobRunBefore point. - noop = 1 - - def NewVolume(self, job): - # Called when Bacula wants a new Volume name. The Volume - # name returned, if any, must be stored in job.VolumeName - jobid = job.JobId - client = job.Client - numvol = job.NumVols; - print job.CatalogRes - job.JobReport = "JobId=%d Client=%s NumVols=%d" % (jobid, client, numvol) - job.JobReport="Python before New Volume set for Job.\n" - Vol = "TestA-%d" % numvol - job.JobReport = "Exists=%d TestA-%d" % (job.DoesVolumeExist(Vol), numvol) - job.VolumeName="TestA-%d" % numvol - job.JobReport="Python after New Volume set for Job.\n" - return 1 - - def VolumePurged(self, job): - # Called when a Volume is purged. The Volume name can be referenced - # with job.VolumeName - noop = 1 - - - -\end{verbatim} -\normalsize diff --git a/docs/manuals/fr/misc/stunnel-en.tex b/docs/manuals/fr/misc/stunnel-en.tex new file mode 100644 index 00000000..49078651 --- /dev/null +++ b/docs/manuals/fr/misc/stunnel-en.tex @@ -0,0 +1,553 @@ +%% +%% + +\chapter{Using Stunnel to Encrypt Communications} +\label{StunnelChapter} +\index[general]{Using Stunnel to Encrypt Communications to Clients } + +Prior to version 1.37, Bacula did not have built-in communications encryption. +Please see the \ilink {TLS chapter}{CommEncryption} if you are using Bacula +1.37 or greater. + +Without too much effort, it is possible to encrypt the communications +between any of the daemons. This chapter will show you how to use {\bf +stunnel} to encrypt communications to your client programs. We assume the +Director and the Storage daemon are running on one machine that will be called +{\bf server} and the Client or File daemon is running on a different machine +called {\bf client}. Although the details may be slightly different, the same +principles apply whether you are encrypting between Unix, Linux, or Win32 +machines. This example was developed between two Linux machines running +stunnel version 4.04-4 on a Red Hat Enterprise 3.0 system. + +\section{Communications Ports Used} +\index[general]{Used!Communications Ports } +\index[general]{Communications Ports Used } + +First, you must know that with the standard Bacula configuration, the Director +will contact the File daemon on port 9102. The File daemon then contacts the +Storage daemon using the address and port parameters supplied by the Director. +The standard port used will be 9103. This is the typical server/client view of +the world, the File daemon is a server to the Director (i.e. listens for the +Director to contact it), and the Storage daemon is a server to the File +daemon. + +\section{Encryption} +\index[general]{Encryption } + +The encryption is accomplished between the Director and the File daemon by +using an stunnel on the Director's machine (server) to encrypt the data and to +contact an stunnel on the File daemon's machine (client), which decrypts the +data and passes it to the client. + +Between the File daemon and the Storage daemon, we use an stunnel on the File +daemon's machine to encrypt the data and another stunnel on the Storage +daemon's machine to decrypt the data. + +As a consequence, there are actually four copies of stunnel running, two on the +server and two on the client. This may sound a bit complicated, but it really +isn't. To accomplish this, we will need to construct four separate conf files +for stunnel, and we will need to make some minor modifications to the +Director's conf file. None of the other conf files need to be changed. + +\section{A Picture} +\index[general]{Picture } + +Since pictures usually help a lot, here is an overview of what we will be +doing. Don't worry about all the details of the port numbers and such for the +moment. + +\footnotesize +\begin{verbatim} + File daemon (client): + stunnel-fd1.conf + |===========| + Port 29102 >----| Stunnel 1 |-----> Port 9102 + |===========| + stunnel-fd2.conf + |===========| + Port 9103 >----| Stunnel 2 |-----> server:29103 + |===========| + Director (server): + stunnel-dir.conf + |===========| + Port 29102 >----| Stunnel 3 |-----> client:29102 + |===========| + stunnel-sd.conf + |===========| + Port 29103 >----| Stunnel 4 |-----> 9103 + |===========| +\end{verbatim} +\normalsize + +\section{Certificates} +\index[general]{Certificates } + +In order for stunnel to function as a server, which it does in our diagram for +Stunnel 1 and Stunnel 4, you must have a certificate and the key. It is +possible to keep the two in separate files, but normally, you keep them in one +single .pem file. You may create this certificate yourself in which case, it +will be self-signed, or you may have it signed by a CA. + +If you want your clients to verify that the server is in fact valid (Stunnel 2 +and Stunnel 3), you will need to have the server certificates signed by a CA +(Certificate Authority), and you will need to have the CA's public certificate +(contains the CA's public key). + +Having a CA signed certificate is {\bf highly} recommended if you are using +your client across the Internet, otherwise you are exposed to the man in the +middle attack and hence loss of your data. + +See below for how to create a self-signed certificate. + +\section{Securing the Data Channel} +\index[general]{Channel!Securing the Data } +\index[general]{Securing the Data Channel } + +To simplify things a bit, let's for the moment consider only the data channel. +That is the connection between the File daemon and the Storage daemon, which +takes place on port 9103. In fact, in a minimalist solution, this is the only +connection that needs to be encrypted, because it is the one that transports your +data. The connection between the Director and the File daemon is simply a +control channel used to start the job and get the job status. + +Normally the File daemon will contact the Storage daemon on port 9103 +(supplied by the Director), so we need an stunnel that listens on port 9103 on +the File daemon's machine, encrypts the data and sends it to the Storage +daemon. This is depicted by Stunnel 2 above. Note that this stunnel is +listening on port 9103 and sending to server:29103. We use port 29103 on the +server because if we would send the data to port 9103, it would go directly to the +Storage daemon, which doesn't understand encrypted data. On the server +machine, we run Stunnel 4, which listens on port 29103, decrypts the data and +sends it to the Storage daemon, which is listening on port 9103. + +\section{Data Channel Configuration} +\index[general]{Modification of bacula-dir.conf for the Data Channel } +\index[general]{baculoa-dir.conf!Modification for the Data Channel } + +The Storage resource of the bacula-dir.conf normally looks something like the +following: + +\footnotesize +\begin{verbatim} +Storage { + Name = File + Address = server + SDPort = 9103 + Password = storage_password + Device = File + Media Type = File +} +\end{verbatim} +\normalsize + +Notice that this is running on the server machine, and it points the File +daemon back to server:9103, which is where our Storage daemon is listening. We +modify this to be: + +\footnotesize +\begin{verbatim} +Storage { + Name = File + Address = localhost + SDPort = 9103 + Password = storage_password + Device = File + Media Type = File +} +\end{verbatim} +\normalsize + +This causes the File daemon to send the data to the stunnel running on +localhost (the client machine). We could have used client as the address as +well. + +\section{Stunnel Configuration for the Data Channel} +\index[general]{Stunnel Configuration for the Data Channel } + +In the diagram above, we see above Stunnel 2 that we use stunnel-fd2.conf on the +client. A pretty much minimal config file would look like the following: + +\footnotesize +\begin{verbatim} +client = yes +[29103] +accept = localhost:9103 +connect = server:29103 +\end{verbatim} +\normalsize + +The above config file does encrypt the data but it does not require a +certificate, so it is subject to the man in the middle attack. The file I +actually used, stunnel-fd2.conf, looked like this: + +\footnotesize +\begin{verbatim} +# +# Stunnel conf for Bacula client -> SD +# +pid = /home/kern/bacula/bin/working/stunnel.pid +# +# A cert is not mandatory here. If verify=2, a +# cert signed by a CA must be specified, and +# either CAfile or CApath must point to the CA's +# cert +# +cert = /home/kern/stunnel/stunnel.pem +CAfile = /home/kern/ssl/cacert.pem +verify = 2 +client = yes +# debug = 7 +# foreground = yes +[29103] +accept = localhost:9103 +connect = server:29103 +\end{verbatim} +\normalsize + +You will notice that I specified a pid file location because I ran stunnel +under my own userid so I could not use the default, which requires root +permission. I also specified a certificate that I have as well as verify level +2 so that the certificate is required and verified, and I must supply the +location of the CA (Certificate Authority) certificate so that the stunnel +certificate can be verified. Finally, you will see that there are two lines +commented out, which when enabled, produce a lot of nice debug info in the +command window. + +If you do not have a signed certificate (stunnel.pem), you need to delete the +cert, CAfile, and verify lines. + +Note that the stunnel.pem, is actually a private key and a certificate in a +single file. These two can be kept and specified individually, but keeping +them in one file is more convenient. + +The config file, stunnel-sd.conf, needed for Stunnel 4 on the server machine +is: + +\footnotesize +\begin{verbatim} +# +# Bacula stunnel conf for Storage daemon +# +pid = /home/kern/bacula/bin/working/stunnel.pid +# +# A cert is mandatory here, it may be self signed +# If it is self signed, the client may not use +# verify +# +cert = /home/kern/stunnel/stunnel.pem +client = no +# debug = 7 +# foreground = yes +[29103] +accept = 29103 +connect = 9103 +\end{verbatim} +\normalsize + +\section{Starting and Testing the Data Encryption} +\index[general]{Starting and Testing the Data Encryption } +\index[general]{Encryption!Starting and Testing the Data } + +It will most likely be the simplest to implement the Data Channel encryption +in the following order: + +\begin{itemize} +\item Setup and run Bacula backing up some data on your client machine + without encryption. +\item Stop Bacula. +\item Modify the Storage resource in the Director's conf file. +\item Start Bacula +\item Start stunnel on the server with: + + \footnotesize +\begin{verbatim} + stunnel stunnel-sd.conf + +\end{verbatim} +\normalsize + +\item Start stunnel on the client with: + + \footnotesize +\begin{verbatim} + stunnel stunnel-fd2.conf + +\end{verbatim} +\normalsize + +\item Run a job. +\item If it doesn't work, turn debug on in both stunnel conf files, restart + the stunnels, rerun the job, repeat until it works. + \end{itemize} + +\section{Encrypting the Control Channel} +\index[general]{Channel!Encrypting the Control } +\index[general]{Encrypting the Control Channel } + +The Job control channel is between the Director and the File daemon, and as +mentioned above, it is not really necessary to encrypt, but it is good +practice to encrypt it as well. The two stunnels that are used in this case +will be Stunnel 1 and Stunnel 3 in the diagram above. Stunnel 3 on the server +might normally listen on port 9102, but if you have a local File daemon, this +will not work, so we make it listen on port 29102. It then sends the data to +client:29102. Again we use port 29102 so that the stunnel on the client +machine can decrypt the data before passing it on to port 9102 where the File +daemon is listening. + +\section{Control Channel Configuration} +\index[general]{Control Channel Configuration } + +We need to modify the standard Client resource, which would normally look +something like: + +\footnotesize +\begin{verbatim} +Client { + Name = client-fd + Address = client + FDPort = 9102 + Catalog = BackupDB + Password = "xxx" +} +\end{verbatim} +\normalsize + +to be: + +\footnotesize +\begin{verbatim} +Client { + Name = client-fd + Address = localhost + FDPort = 29102 + Catalog = BackupDB + Password = "xxx" +} +\end{verbatim} +\normalsize + +This will cause the Director to send the control information to +localhost:29102 instead of directly to the client. + +\section{Stunnel Configuration for the Control Channel} +\index[general]{Config Files for stunnel to Encrypt the Control Channel } + +The stunnel config file, stunnel-dir.conf, for the Director's machine would +look like the following: + +\footnotesize +\begin{verbatim} +# +# Bacula stunnel conf for the Directory to contact a client +# +pid = /home/kern/bacula/bin/working/stunnel.pid +# +# A cert is not mandatory here. If verify=2, a +# cert signed by a CA must be specified, and +# either CAfile or CApath must point to the CA's +# cert +# +cert = /home/kern/stunnel/stunnel.pem +CAfile = /home/kern/ssl/cacert.pem +verify = 2 +client = yes +# debug = 7 +# foreground = yes +[29102] +accept = localhost:29102 +connect = client:29102 +\end{verbatim} +\normalsize + +and the config file, stunnel-fd1.conf, needed to run stunnel on the Client +would be: + +\footnotesize +\begin{verbatim} +# +# Bacula stunnel conf for the Directory to contact a client +# +pid = /home/kern/bacula/bin/working/stunnel.pid +# +# A cert is not mandatory here. If verify=2, a +# cert signed by a CA must be specified, and +# either CAfile or CApath must point to the CA's +# cert +# +cert = /home/kern/stunnel/stunnel.pem +CAfile = /home/kern/ssl/cacert.pem +verify = 2 +client = yes +# debug = 7 +# foreground = yes +[29102] +accept = localhost:29102 +connect = client:29102 +\end{verbatim} +\normalsize + +\section{Starting and Testing the Control Channel} +\index[general]{Starting and Testing the Control Channel } +\index[general]{Channel!Starting and Testing the Control } + +It will most likely be the simplest to implement the Control Channel +encryption in the following order: + +\begin{itemize} +\item Stop Bacula. +\item Modify the Client resource in the Director's conf file. +\item Start Bacula +\item Start stunnel on the server with: + + \footnotesize +\begin{verbatim} + stunnel stunnel-dir.conf + +\end{verbatim} +\normalsize + +\item Start stunnel on the client with: + + \footnotesize +\begin{verbatim} + stunnel stunnel-fd1.conf + +\end{verbatim} +\normalsize + +\item Run a job. +\item If it doesn't work, turn debug on in both stunnel conf files, restart + the stunnels, rerun the job, repeat until it works. + \end{itemize} + +\section{Using stunnel to Encrypt to a Second Client} +\index[general]{Using stunnel to Encrypt to a Second Client } +\index[general]{Client!Using stunnel to Encrypt to a Second } + +On the client machine, you can just duplicate the setup that you have on the +first client file for file and it should work fine. + +In the bacula-dir.conf file, you will want to create a second client pretty +much identical to how you did for the first one, but the port number must be +unique. We previously used: + +\footnotesize +\begin{verbatim} +Client { + Name = client-fd + Address = localhost + FDPort = 29102 + Catalog = BackupDB + Password = "xxx" +} +\end{verbatim} +\normalsize + +so for the second client, we will, of course, have a different name, and we +will also need a different port. Remember that we used port 29103 for the +Storage daemon, so for the second client, we can use port 29104, and the +Client resource would look like: + +\footnotesize +\begin{verbatim} +Client { + Name = client2-fd + Address = localhost + FDPort = 29104 + Catalog = BackupDB + Password = "yyy" +} +\end{verbatim} +\normalsize + +Now, fortunately, we do not need a third stunnel to on the Director's machine, +we can just add the new port to the config file, stunnel-dir.conf, to make: + +\footnotesize +\begin{verbatim} +# +# Bacula stunnel conf for the Directory to contact a client +# +pid = /home/kern/bacula/bin/working/stunnel.pid +# +# A cert is not mandatory here. If verify=2, a +# cert signed by a CA must be specified, and +# either CAfile or CApath must point to the CA's +# cert +# +cert = /home/kern/stunnel/stunnel.pem +CAfile = /home/kern/ssl/cacert.pem +verify = 2 +client = yes +# debug = 7 +# foreground = yes +[29102] +accept = localhost:29102 +connect = client:29102 +[29104] +accept = localhost:29102 +connect = client2:29102 +\end{verbatim} +\normalsize + +There are no changes necessary to the Storage daemon or the other stunnel so +that this new client can talk to our Storage daemon. + +\section{Creating a Self-signed Certificate} +\index[general]{Creating a Self-signed Certificate } +\index[general]{Certificate!Creating a Self-signed } + +You may create a self-signed certificate for use with stunnel that will permit +you to make it function, but will not allow certificate validation. The .pem +file containing both the certificate and the key can be made with the +following, which I put in a file named {\bf makepem}: + +\footnotesize +\begin{verbatim} +#!/bin/sh +# +# Simple shell script to make a .pem file that can be used +# with stunnel and Bacula +# +OPENSSL=openssl + umask 77 + PEM1="/bin/mktemp openssl.XXXXXX" + PEM2="/bin/mktemp openssl.XXXXXX" + ${OPENSSL} req -newkey rsa:1024 -keyout $PEM1 -nodes \ + -x509 -days 365 -out $PEM2 + cat $PEM1 > stunnel.pem + echo "" >>stunnel.pem + cat $PEM2 >>stunnel.pem + rm $PEM1 $PEM2 +\end{verbatim} +\normalsize + +The above script will ask you a number of questions. You may simply answer +each of them by entering a return, or if you wish you may enter your own data. + + +\section{Getting a CA Signed Certificate} +\index[general]{Certificate!Getting a CA Signed } +\index[general]{Getting a CA Signed Certificate } + +The process of getting a certificate that is signed by a CA is quite a bit +more complicated. You can purchase one from quite a number of PKI vendors, but +that is not at all necessary for use with Bacula. + +To get a CA signed +certificate, you will either need to find a friend that has setup his own CA +or to become a CA yourself, and thus you can sign all your own certificates. +The book OpenSSL by John Viega, Matt Mesier \& Pravir Chandra from O'Reilly +explains how to do it, or you can read the documentation provided in the +Open-source PKI Book project at Source Forge: +\elink{ +http://ospkibook.sourceforge.net/docs/OSPKI-2.4.7/OSPKI-html/ospki-book.htm} +{http://ospkibook.sourceforge.net/docs/OSPKI-2.4.7/OSPKI-html/ospki-book.htm}. +Note, this link may change. + +\section{Using ssh to Secure the Communications} +\index[general]{Communications!Using ssh to Secure the } +\index[general]{Using ssh to Secure the Communications } + +Please see the script {\bf ssh-tunnel.sh} in the {\bf examples} directory. It +was contributed by Stephan Holl. diff --git a/docs/manuals/fr/misc/stunnel.tex b/docs/manuals/fr/misc/stunnel.tex deleted file mode 100644 index 49078651..00000000 --- a/docs/manuals/fr/misc/stunnel.tex +++ /dev/null @@ -1,553 +0,0 @@ -%% -%% - -\chapter{Using Stunnel to Encrypt Communications} -\label{StunnelChapter} -\index[general]{Using Stunnel to Encrypt Communications to Clients } - -Prior to version 1.37, Bacula did not have built-in communications encryption. -Please see the \ilink {TLS chapter}{CommEncryption} if you are using Bacula -1.37 or greater. - -Without too much effort, it is possible to encrypt the communications -between any of the daemons. This chapter will show you how to use {\bf -stunnel} to encrypt communications to your client programs. We assume the -Director and the Storage daemon are running on one machine that will be called -{\bf server} and the Client or File daemon is running on a different machine -called {\bf client}. Although the details may be slightly different, the same -principles apply whether you are encrypting between Unix, Linux, or Win32 -machines. This example was developed between two Linux machines running -stunnel version 4.04-4 on a Red Hat Enterprise 3.0 system. - -\section{Communications Ports Used} -\index[general]{Used!Communications Ports } -\index[general]{Communications Ports Used } - -First, you must know that with the standard Bacula configuration, the Director -will contact the File daemon on port 9102. The File daemon then contacts the -Storage daemon using the address and port parameters supplied by the Director. -The standard port used will be 9103. This is the typical server/client view of -the world, the File daemon is a server to the Director (i.e. listens for the -Director to contact it), and the Storage daemon is a server to the File -daemon. - -\section{Encryption} -\index[general]{Encryption } - -The encryption is accomplished between the Director and the File daemon by -using an stunnel on the Director's machine (server) to encrypt the data and to -contact an stunnel on the File daemon's machine (client), which decrypts the -data and passes it to the client. - -Between the File daemon and the Storage daemon, we use an stunnel on the File -daemon's machine to encrypt the data and another stunnel on the Storage -daemon's machine to decrypt the data. - -As a consequence, there are actually four copies of stunnel running, two on the -server and two on the client. This may sound a bit complicated, but it really -isn't. To accomplish this, we will need to construct four separate conf files -for stunnel, and we will need to make some minor modifications to the -Director's conf file. None of the other conf files need to be changed. - -\section{A Picture} -\index[general]{Picture } - -Since pictures usually help a lot, here is an overview of what we will be -doing. Don't worry about all the details of the port numbers and such for the -moment. - -\footnotesize -\begin{verbatim} - File daemon (client): - stunnel-fd1.conf - |===========| - Port 29102 >----| Stunnel 1 |-----> Port 9102 - |===========| - stunnel-fd2.conf - |===========| - Port 9103 >----| Stunnel 2 |-----> server:29103 - |===========| - Director (server): - stunnel-dir.conf - |===========| - Port 29102 >----| Stunnel 3 |-----> client:29102 - |===========| - stunnel-sd.conf - |===========| - Port 29103 >----| Stunnel 4 |-----> 9103 - |===========| -\end{verbatim} -\normalsize - -\section{Certificates} -\index[general]{Certificates } - -In order for stunnel to function as a server, which it does in our diagram for -Stunnel 1 and Stunnel 4, you must have a certificate and the key. It is -possible to keep the two in separate files, but normally, you keep them in one -single .pem file. You may create this certificate yourself in which case, it -will be self-signed, or you may have it signed by a CA. - -If you want your clients to verify that the server is in fact valid (Stunnel 2 -and Stunnel 3), you will need to have the server certificates signed by a CA -(Certificate Authority), and you will need to have the CA's public certificate -(contains the CA's public key). - -Having a CA signed certificate is {\bf highly} recommended if you are using -your client across the Internet, otherwise you are exposed to the man in the -middle attack and hence loss of your data. - -See below for how to create a self-signed certificate. - -\section{Securing the Data Channel} -\index[general]{Channel!Securing the Data } -\index[general]{Securing the Data Channel } - -To simplify things a bit, let's for the moment consider only the data channel. -That is the connection between the File daemon and the Storage daemon, which -takes place on port 9103. In fact, in a minimalist solution, this is the only -connection that needs to be encrypted, because it is the one that transports your -data. The connection between the Director and the File daemon is simply a -control channel used to start the job and get the job status. - -Normally the File daemon will contact the Storage daemon on port 9103 -(supplied by the Director), so we need an stunnel that listens on port 9103 on -the File daemon's machine, encrypts the data and sends it to the Storage -daemon. This is depicted by Stunnel 2 above. Note that this stunnel is -listening on port 9103 and sending to server:29103. We use port 29103 on the -server because if we would send the data to port 9103, it would go directly to the -Storage daemon, which doesn't understand encrypted data. On the server -machine, we run Stunnel 4, which listens on port 29103, decrypts the data and -sends it to the Storage daemon, which is listening on port 9103. - -\section{Data Channel Configuration} -\index[general]{Modification of bacula-dir.conf for the Data Channel } -\index[general]{baculoa-dir.conf!Modification for the Data Channel } - -The Storage resource of the bacula-dir.conf normally looks something like the -following: - -\footnotesize -\begin{verbatim} -Storage { - Name = File - Address = server - SDPort = 9103 - Password = storage_password - Device = File - Media Type = File -} -\end{verbatim} -\normalsize - -Notice that this is running on the server machine, and it points the File -daemon back to server:9103, which is where our Storage daemon is listening. We -modify this to be: - -\footnotesize -\begin{verbatim} -Storage { - Name = File - Address = localhost - SDPort = 9103 - Password = storage_password - Device = File - Media Type = File -} -\end{verbatim} -\normalsize - -This causes the File daemon to send the data to the stunnel running on -localhost (the client machine). We could have used client as the address as -well. - -\section{Stunnel Configuration for the Data Channel} -\index[general]{Stunnel Configuration for the Data Channel } - -In the diagram above, we see above Stunnel 2 that we use stunnel-fd2.conf on the -client. A pretty much minimal config file would look like the following: - -\footnotesize -\begin{verbatim} -client = yes -[29103] -accept = localhost:9103 -connect = server:29103 -\end{verbatim} -\normalsize - -The above config file does encrypt the data but it does not require a -certificate, so it is subject to the man in the middle attack. The file I -actually used, stunnel-fd2.conf, looked like this: - -\footnotesize -\begin{verbatim} -# -# Stunnel conf for Bacula client -> SD -# -pid = /home/kern/bacula/bin/working/stunnel.pid -# -# A cert is not mandatory here. If verify=2, a -# cert signed by a CA must be specified, and -# either CAfile or CApath must point to the CA's -# cert -# -cert = /home/kern/stunnel/stunnel.pem -CAfile = /home/kern/ssl/cacert.pem -verify = 2 -client = yes -# debug = 7 -# foreground = yes -[29103] -accept = localhost:9103 -connect = server:29103 -\end{verbatim} -\normalsize - -You will notice that I specified a pid file location because I ran stunnel -under my own userid so I could not use the default, which requires root -permission. I also specified a certificate that I have as well as verify level -2 so that the certificate is required and verified, and I must supply the -location of the CA (Certificate Authority) certificate so that the stunnel -certificate can be verified. Finally, you will see that there are two lines -commented out, which when enabled, produce a lot of nice debug info in the -command window. - -If you do not have a signed certificate (stunnel.pem), you need to delete the -cert, CAfile, and verify lines. - -Note that the stunnel.pem, is actually a private key and a certificate in a -single file. These two can be kept and specified individually, but keeping -them in one file is more convenient. - -The config file, stunnel-sd.conf, needed for Stunnel 4 on the server machine -is: - -\footnotesize -\begin{verbatim} -# -# Bacula stunnel conf for Storage daemon -# -pid = /home/kern/bacula/bin/working/stunnel.pid -# -# A cert is mandatory here, it may be self signed -# If it is self signed, the client may not use -# verify -# -cert = /home/kern/stunnel/stunnel.pem -client = no -# debug = 7 -# foreground = yes -[29103] -accept = 29103 -connect = 9103 -\end{verbatim} -\normalsize - -\section{Starting and Testing the Data Encryption} -\index[general]{Starting and Testing the Data Encryption } -\index[general]{Encryption!Starting and Testing the Data } - -It will most likely be the simplest to implement the Data Channel encryption -in the following order: - -\begin{itemize} -\item Setup and run Bacula backing up some data on your client machine - without encryption. -\item Stop Bacula. -\item Modify the Storage resource in the Director's conf file. -\item Start Bacula -\item Start stunnel on the server with: - - \footnotesize -\begin{verbatim} - stunnel stunnel-sd.conf - -\end{verbatim} -\normalsize - -\item Start stunnel on the client with: - - \footnotesize -\begin{verbatim} - stunnel stunnel-fd2.conf - -\end{verbatim} -\normalsize - -\item Run a job. -\item If it doesn't work, turn debug on in both stunnel conf files, restart - the stunnels, rerun the job, repeat until it works. - \end{itemize} - -\section{Encrypting the Control Channel} -\index[general]{Channel!Encrypting the Control } -\index[general]{Encrypting the Control Channel } - -The Job control channel is between the Director and the File daemon, and as -mentioned above, it is not really necessary to encrypt, but it is good -practice to encrypt it as well. The two stunnels that are used in this case -will be Stunnel 1 and Stunnel 3 in the diagram above. Stunnel 3 on the server -might normally listen on port 9102, but if you have a local File daemon, this -will not work, so we make it listen on port 29102. It then sends the data to -client:29102. Again we use port 29102 so that the stunnel on the client -machine can decrypt the data before passing it on to port 9102 where the File -daemon is listening. - -\section{Control Channel Configuration} -\index[general]{Control Channel Configuration } - -We need to modify the standard Client resource, which would normally look -something like: - -\footnotesize -\begin{verbatim} -Client { - Name = client-fd - Address = client - FDPort = 9102 - Catalog = BackupDB - Password = "xxx" -} -\end{verbatim} -\normalsize - -to be: - -\footnotesize -\begin{verbatim} -Client { - Name = client-fd - Address = localhost - FDPort = 29102 - Catalog = BackupDB - Password = "xxx" -} -\end{verbatim} -\normalsize - -This will cause the Director to send the control information to -localhost:29102 instead of directly to the client. - -\section{Stunnel Configuration for the Control Channel} -\index[general]{Config Files for stunnel to Encrypt the Control Channel } - -The stunnel config file, stunnel-dir.conf, for the Director's machine would -look like the following: - -\footnotesize -\begin{verbatim} -# -# Bacula stunnel conf for the Directory to contact a client -# -pid = /home/kern/bacula/bin/working/stunnel.pid -# -# A cert is not mandatory here. If verify=2, a -# cert signed by a CA must be specified, and -# either CAfile or CApath must point to the CA's -# cert -# -cert = /home/kern/stunnel/stunnel.pem -CAfile = /home/kern/ssl/cacert.pem -verify = 2 -client = yes -# debug = 7 -# foreground = yes -[29102] -accept = localhost:29102 -connect = client:29102 -\end{verbatim} -\normalsize - -and the config file, stunnel-fd1.conf, needed to run stunnel on the Client -would be: - -\footnotesize -\begin{verbatim} -# -# Bacula stunnel conf for the Directory to contact a client -# -pid = /home/kern/bacula/bin/working/stunnel.pid -# -# A cert is not mandatory here. If verify=2, a -# cert signed by a CA must be specified, and -# either CAfile or CApath must point to the CA's -# cert -# -cert = /home/kern/stunnel/stunnel.pem -CAfile = /home/kern/ssl/cacert.pem -verify = 2 -client = yes -# debug = 7 -# foreground = yes -[29102] -accept = localhost:29102 -connect = client:29102 -\end{verbatim} -\normalsize - -\section{Starting and Testing the Control Channel} -\index[general]{Starting and Testing the Control Channel } -\index[general]{Channel!Starting and Testing the Control } - -It will most likely be the simplest to implement the Control Channel -encryption in the following order: - -\begin{itemize} -\item Stop Bacula. -\item Modify the Client resource in the Director's conf file. -\item Start Bacula -\item Start stunnel on the server with: - - \footnotesize -\begin{verbatim} - stunnel stunnel-dir.conf - -\end{verbatim} -\normalsize - -\item Start stunnel on the client with: - - \footnotesize -\begin{verbatim} - stunnel stunnel-fd1.conf - -\end{verbatim} -\normalsize - -\item Run a job. -\item If it doesn't work, turn debug on in both stunnel conf files, restart - the stunnels, rerun the job, repeat until it works. - \end{itemize} - -\section{Using stunnel to Encrypt to a Second Client} -\index[general]{Using stunnel to Encrypt to a Second Client } -\index[general]{Client!Using stunnel to Encrypt to a Second } - -On the client machine, you can just duplicate the setup that you have on the -first client file for file and it should work fine. - -In the bacula-dir.conf file, you will want to create a second client pretty -much identical to how you did for the first one, but the port number must be -unique. We previously used: - -\footnotesize -\begin{verbatim} -Client { - Name = client-fd - Address = localhost - FDPort = 29102 - Catalog = BackupDB - Password = "xxx" -} -\end{verbatim} -\normalsize - -so for the second client, we will, of course, have a different name, and we -will also need a different port. Remember that we used port 29103 for the -Storage daemon, so for the second client, we can use port 29104, and the -Client resource would look like: - -\footnotesize -\begin{verbatim} -Client { - Name = client2-fd - Address = localhost - FDPort = 29104 - Catalog = BackupDB - Password = "yyy" -} -\end{verbatim} -\normalsize - -Now, fortunately, we do not need a third stunnel to on the Director's machine, -we can just add the new port to the config file, stunnel-dir.conf, to make: - -\footnotesize -\begin{verbatim} -# -# Bacula stunnel conf for the Directory to contact a client -# -pid = /home/kern/bacula/bin/working/stunnel.pid -# -# A cert is not mandatory here. If verify=2, a -# cert signed by a CA must be specified, and -# either CAfile or CApath must point to the CA's -# cert -# -cert = /home/kern/stunnel/stunnel.pem -CAfile = /home/kern/ssl/cacert.pem -verify = 2 -client = yes -# debug = 7 -# foreground = yes -[29102] -accept = localhost:29102 -connect = client:29102 -[29104] -accept = localhost:29102 -connect = client2:29102 -\end{verbatim} -\normalsize - -There are no changes necessary to the Storage daemon or the other stunnel so -that this new client can talk to our Storage daemon. - -\section{Creating a Self-signed Certificate} -\index[general]{Creating a Self-signed Certificate } -\index[general]{Certificate!Creating a Self-signed } - -You may create a self-signed certificate for use with stunnel that will permit -you to make it function, but will not allow certificate validation. The .pem -file containing both the certificate and the key can be made with the -following, which I put in a file named {\bf makepem}: - -\footnotesize -\begin{verbatim} -#!/bin/sh -# -# Simple shell script to make a .pem file that can be used -# with stunnel and Bacula -# -OPENSSL=openssl - umask 77 - PEM1="/bin/mktemp openssl.XXXXXX" - PEM2="/bin/mktemp openssl.XXXXXX" - ${OPENSSL} req -newkey rsa:1024 -keyout $PEM1 -nodes \ - -x509 -days 365 -out $PEM2 - cat $PEM1 > stunnel.pem - echo "" >>stunnel.pem - cat $PEM2 >>stunnel.pem - rm $PEM1 $PEM2 -\end{verbatim} -\normalsize - -The above script will ask you a number of questions. You may simply answer -each of them by entering a return, or if you wish you may enter your own data. - - -\section{Getting a CA Signed Certificate} -\index[general]{Certificate!Getting a CA Signed } -\index[general]{Getting a CA Signed Certificate } - -The process of getting a certificate that is signed by a CA is quite a bit -more complicated. You can purchase one from quite a number of PKI vendors, but -that is not at all necessary for use with Bacula. - -To get a CA signed -certificate, you will either need to find a friend that has setup his own CA -or to become a CA yourself, and thus you can sign all your own certificates. -The book OpenSSL by John Viega, Matt Mesier \& Pravir Chandra from O'Reilly -explains how to do it, or you can read the documentation provided in the -Open-source PKI Book project at Source Forge: -\elink{ -http://ospkibook.sourceforge.net/docs/OSPKI-2.4.7/OSPKI-html/ospki-book.htm} -{http://ospkibook.sourceforge.net/docs/OSPKI-2.4.7/OSPKI-html/ospki-book.htm}. -Note, this link may change. - -\section{Using ssh to Secure the Communications} -\index[general]{Communications!Using ssh to Secure the } -\index[general]{Using ssh to Secure the Communications } - -Please see the script {\bf ssh-tunnel.sh} in the {\bf examples} directory. It -was contributed by Stephan Holl. diff --git a/docs/manuals/fr/misc/vars-en.tex b/docs/manuals/fr/misc/vars-en.tex new file mode 100644 index 00000000..b03c3acc --- /dev/null +++ b/docs/manuals/fr/misc/vars-en.tex @@ -0,0 +1,229 @@ +%% +%% + +\chapter{Variable Expansion} +\label{VarsChapter} +\index[general]{Variable Expansion } +\index[general]{Expansion!Variable } + +% TODO: does the following mean that this should not be in book? + +Please note that as of version 1.37, the Variable Expansion +is deprecated and replaced by Python scripting (not yet +documented). + +Variable expansion is somewhat similar to Unix shell variable expansion. +Currently (version 1.31), it is used only in format labels, but in the future, +it will most likely be used in more places. + +\section{General Functionality} +\index[general]{Functionality!General } +\index[general]{General Functionality } + +This is basically a string expansion capability that permits referencing +variables, indexing arrays, conditional replacement of variables, case +conversion, substring selection, regular expression matching and replacement, +character class replacement, padding strings, repeated expansion in a user +controlled loop, support of arithmetic expressions in the loop start, step and +end conditions, and recursive expansion. + +When using variable expansion characters in a Volume Label Format record, the +format should always be enclosed in double quotes ({\bf "}). + +For example, {\bf \$\{HOME\}} will be replaced by your home directory as +defined in the environment. If you have defined the variable {\bf xxx} to be +{\bf Test}, then the reference {\bf \$\{xxx:p/7/Y/r\}} will right pad the +contents of {\bf xxx} to a length of seven characters filling with the +character {\bf Y} giving {\bf YYYTest}. + +\section{Bacula Variables} +\index[general]{Bacula Variables } +\index[general]{Variables!Bacula } + +Within Bacula, there are three main classes of variables with some minor +variations within the classes. The classes are: + +\begin{description} + +\item [Counters] + \index[general]{Counters } + Counters are defined by the {\bf Counter} resources in the Director's conf +file. The counter can either be a temporary counter that lasts for the +duration of Bacula's execution, or it can be a variable that is stored in +the catalog, and thus retains its value from one Bacula execution to another. +Counter variables may be incremented by postfixing a plus sign ({\bf +} after +the variable name). + +\item [Internal Variables] + \index[general]{Internal Variables } + Internal variables are read-only, and may be related to the current job (i.e. +Job name), or maybe special variables such as the date and time. The +following variables are available: + +\begin{itemize} +\item [Year] -- the full year +\item [Month] -- the current month 1-12 +\item [Day] -- the day of the month 1-31 +\item [Hour] -- the hour 0-24 +\item [Minute] -- the current minute 0-59 +\item [Second] -- the current second 0-59 +\item [WeekDay] -- the current day of the week 0-6 with 0 being Sunday +\item [Job] -- the job name +\item [general] -- the Director's name +\item [Level] -- the Job Level +\item [Type] -- the Job type +\item [JobId] -- the JobId +\item [JobName] -- the unique job name composed of Job and date +\item [Storage] -- the Storage daemon's name +\item [Client] -- the Client's name +\item [NumVols] -- the current number of Volumes in the Pool +\item [Pool] -- the Pool name +\item [Catalog] -- the Catalog name +\item [MediaType] -- the Media Type + \end{itemize} + +\item [Environment Variables] + \index[general]{Environment Variables } + Environment variables are read-only, and must be defined in the environment +prior to executing Bacula. Environment variables may be either scalar or an +array, where the elements of the array are referenced by subscripting the +variable name (e.g. {\bf \$\{Months[3]\}}). Environment variable arrays are +defined by separating the elements with a vertical bar ({\bf |}), thus {\bf +set Months="Jan|Feb|Mar|Apr|..."} defines an environment variable named +{\bf Month} that will be treated as an array, and the reference {\bf +\$\{Months[3]\}} will yield {\bf Mar}. The elements of the array can have +differing lengths. +\end{description} + +\section{Full Syntax} +\index[general]{Syntax!Full } +\index[general]{Full Syntax } + +Since the syntax is quite extensive, below, you will find the pseudo BNF. The +special characters have the following meaning: + +\footnotesize +\begin{verbatim} + ::= definition + ( ) grouping if the parens are not quoted + | separates alternatives + '/' literal / (or any other character) + CAPS a character or character sequence + * preceding item can be repeated zero or more times + ? preceding item can appear zero or one time + + preceding item must appear one or more times +\end{verbatim} +\normalsize + +And the pseudo BNF describing the syntax is: + +\footnotesize +\begin{verbatim} + input ::= ( TEXT + | variable + | INDEX_OPEN input INDEX_CLOSE (loop_limits)? + )* + variable ::= DELIM_INIT (name|expression) + name ::= (NAME_CHARS)+ + expression ::= DELIM_OPEN + (name|variable)+ + (INDEX_OPEN num_exp INDEX_CLOSE)? + (':' command)* + DELIM_CLOSE + command ::= '-' (TEXT_EXP|variable)+ + | '+' (TEXT_EXP|variable)+ + | 'o' NUMBER ('-'|',') (NUMBER)? + | '#' + | '*' (TEXT_EXP|variable)+ + | 's' '/' (TEXT_PATTERN)+ + '/' (variable|TEXT_SUBST)* + '/' ('m'|'g'|'i'|'t')* + | 'y' '/' (variable|TEXT_SUBST)+ + '/' (variable|TEXT_SUBST)* + '/' + | 'p' '/' NUMBER + '/' (variable|TEXT_SUBST)* + '/' ('r'|'l'|'c') + | '%' (name|variable)+ + ('(' (TEXT_ARGS)? ')')? + | 'l' + | 'u' + num_exp ::= operand + | operand ('+'|'-'|'*'|'/'|'%') num_exp + operand ::= ('+'|'-')? NUMBER + | INDEX_MARK + | '(' num_exp ')' + | variable + loop_limits ::= DELIM_OPEN + (num_exp)? ',' (num_exp)? (',' (num_exp)?)? + DELIM_CLOSE + NUMBER ::= ('0'|...|'9')+ + TEXT_PATTERN::= (^('/'))+ + TEXT_SUBST ::= (^(DELIM_INIT|'/'))+ + TEXT_ARGS ::= (^(DELIM_INIT|')'))+ + TEXT_EXP ::= (^(DELIM_INIT|DELIM_CLOSE|':'|'+'))+ + TEXT ::= (^(DELIM_INIT|INDEX_OPEN|INDEX_CLOSE))+ + DELIM_INIT ::= '$' + DELIM_OPEN ::= '{' + DELIM_CLOSE ::= '}' + INDEX_OPEN ::= '[' + INDEX_CLOSE ::= ']' + INDEX_MARK ::= '#' + NAME_CHARS ::= 'a'|...|'z'|'A'|...|'Z'|'0'|...|'9' +\end{verbatim} +\normalsize + +\section{Semantics} +\index[general]{Semantics } + +The items listed in {\bf command} above, which always follow a colon ({\bf :}) +have the following meanings: + +\footnotesize +\begin{verbatim} + - perform substitution if variable is empty + + perform substitution if variable is not empty + o cut out substring of the variable value + # length of the variable value + * substitute empty string if the variable value is not empty, + otherwise substitute the trailing parameter + s regular expression search and replace. The trailing + options are: m = multiline, i = case insensitive, + g = global, t = plain text (no regexp) + y transpose characters from class A to class B + p pad variable to l = left, r = right or c = center, + with second value. + % special function call (none implemented) + l lower case the variable value + u upper case the variable value +\end{verbatim} +\normalsize + +The {\bf loop\_limits} are start, step, and end values. + +A counter variable name followed immediately by a plus ({\bf +}) will cause +the counter to be incremented by one. + +\section{Examples} +\index[general]{Examples } + +To create an ISO date: + +\footnotesize +\begin{verbatim} + DLT-${Year}-${Month:p/2/0/r}-${Day:p/2/0/r} +\end{verbatim} +\normalsize + +on 20 June 2003 would give {\bf DLT-2003-06-20} + +If you set the environment variable {\bf mon} to + +\footnotesize +\begin{verbatim} + January|February|March|April|May|... + File-${mon[${Month}]}/${Day}/${Year} +\end{verbatim} +\normalsize + +on the first of March would give {\bf File-March/1/2003 } diff --git a/docs/manuals/fr/misc/vars.tex b/docs/manuals/fr/misc/vars.tex deleted file mode 100644 index b03c3acc..00000000 --- a/docs/manuals/fr/misc/vars.tex +++ /dev/null @@ -1,229 +0,0 @@ -%% -%% - -\chapter{Variable Expansion} -\label{VarsChapter} -\index[general]{Variable Expansion } -\index[general]{Expansion!Variable } - -% TODO: does the following mean that this should not be in book? - -Please note that as of version 1.37, the Variable Expansion -is deprecated and replaced by Python scripting (not yet -documented). - -Variable expansion is somewhat similar to Unix shell variable expansion. -Currently (version 1.31), it is used only in format labels, but in the future, -it will most likely be used in more places. - -\section{General Functionality} -\index[general]{Functionality!General } -\index[general]{General Functionality } - -This is basically a string expansion capability that permits referencing -variables, indexing arrays, conditional replacement of variables, case -conversion, substring selection, regular expression matching and replacement, -character class replacement, padding strings, repeated expansion in a user -controlled loop, support of arithmetic expressions in the loop start, step and -end conditions, and recursive expansion. - -When using variable expansion characters in a Volume Label Format record, the -format should always be enclosed in double quotes ({\bf "}). - -For example, {\bf \$\{HOME\}} will be replaced by your home directory as -defined in the environment. If you have defined the variable {\bf xxx} to be -{\bf Test}, then the reference {\bf \$\{xxx:p/7/Y/r\}} will right pad the -contents of {\bf xxx} to a length of seven characters filling with the -character {\bf Y} giving {\bf YYYTest}. - -\section{Bacula Variables} -\index[general]{Bacula Variables } -\index[general]{Variables!Bacula } - -Within Bacula, there are three main classes of variables with some minor -variations within the classes. The classes are: - -\begin{description} - -\item [Counters] - \index[general]{Counters } - Counters are defined by the {\bf Counter} resources in the Director's conf -file. The counter can either be a temporary counter that lasts for the -duration of Bacula's execution, or it can be a variable that is stored in -the catalog, and thus retains its value from one Bacula execution to another. -Counter variables may be incremented by postfixing a plus sign ({\bf +} after -the variable name). - -\item [Internal Variables] - \index[general]{Internal Variables } - Internal variables are read-only, and may be related to the current job (i.e. -Job name), or maybe special variables such as the date and time. The -following variables are available: - -\begin{itemize} -\item [Year] -- the full year -\item [Month] -- the current month 1-12 -\item [Day] -- the day of the month 1-31 -\item [Hour] -- the hour 0-24 -\item [Minute] -- the current minute 0-59 -\item [Second] -- the current second 0-59 -\item [WeekDay] -- the current day of the week 0-6 with 0 being Sunday -\item [Job] -- the job name -\item [general] -- the Director's name -\item [Level] -- the Job Level -\item [Type] -- the Job type -\item [JobId] -- the JobId -\item [JobName] -- the unique job name composed of Job and date -\item [Storage] -- the Storage daemon's name -\item [Client] -- the Client's name -\item [NumVols] -- the current number of Volumes in the Pool -\item [Pool] -- the Pool name -\item [Catalog] -- the Catalog name -\item [MediaType] -- the Media Type - \end{itemize} - -\item [Environment Variables] - \index[general]{Environment Variables } - Environment variables are read-only, and must be defined in the environment -prior to executing Bacula. Environment variables may be either scalar or an -array, where the elements of the array are referenced by subscripting the -variable name (e.g. {\bf \$\{Months[3]\}}). Environment variable arrays are -defined by separating the elements with a vertical bar ({\bf |}), thus {\bf -set Months="Jan|Feb|Mar|Apr|..."} defines an environment variable named -{\bf Month} that will be treated as an array, and the reference {\bf -\$\{Months[3]\}} will yield {\bf Mar}. The elements of the array can have -differing lengths. -\end{description} - -\section{Full Syntax} -\index[general]{Syntax!Full } -\index[general]{Full Syntax } - -Since the syntax is quite extensive, below, you will find the pseudo BNF. The -special characters have the following meaning: - -\footnotesize -\begin{verbatim} - ::= definition - ( ) grouping if the parens are not quoted - | separates alternatives - '/' literal / (or any other character) - CAPS a character or character sequence - * preceding item can be repeated zero or more times - ? preceding item can appear zero or one time - + preceding item must appear one or more times -\end{verbatim} -\normalsize - -And the pseudo BNF describing the syntax is: - -\footnotesize -\begin{verbatim} - input ::= ( TEXT - | variable - | INDEX_OPEN input INDEX_CLOSE (loop_limits)? - )* - variable ::= DELIM_INIT (name|expression) - name ::= (NAME_CHARS)+ - expression ::= DELIM_OPEN - (name|variable)+ - (INDEX_OPEN num_exp INDEX_CLOSE)? - (':' command)* - DELIM_CLOSE - command ::= '-' (TEXT_EXP|variable)+ - | '+' (TEXT_EXP|variable)+ - | 'o' NUMBER ('-'|',') (NUMBER)? - | '#' - | '*' (TEXT_EXP|variable)+ - | 's' '/' (TEXT_PATTERN)+ - '/' (variable|TEXT_SUBST)* - '/' ('m'|'g'|'i'|'t')* - | 'y' '/' (variable|TEXT_SUBST)+ - '/' (variable|TEXT_SUBST)* - '/' - | 'p' '/' NUMBER - '/' (variable|TEXT_SUBST)* - '/' ('r'|'l'|'c') - | '%' (name|variable)+ - ('(' (TEXT_ARGS)? ')')? - | 'l' - | 'u' - num_exp ::= operand - | operand ('+'|'-'|'*'|'/'|'%') num_exp - operand ::= ('+'|'-')? NUMBER - | INDEX_MARK - | '(' num_exp ')' - | variable - loop_limits ::= DELIM_OPEN - (num_exp)? ',' (num_exp)? (',' (num_exp)?)? - DELIM_CLOSE - NUMBER ::= ('0'|...|'9')+ - TEXT_PATTERN::= (^('/'))+ - TEXT_SUBST ::= (^(DELIM_INIT|'/'))+ - TEXT_ARGS ::= (^(DELIM_INIT|')'))+ - TEXT_EXP ::= (^(DELIM_INIT|DELIM_CLOSE|':'|'+'))+ - TEXT ::= (^(DELIM_INIT|INDEX_OPEN|INDEX_CLOSE))+ - DELIM_INIT ::= '$' - DELIM_OPEN ::= '{' - DELIM_CLOSE ::= '}' - INDEX_OPEN ::= '[' - INDEX_CLOSE ::= ']' - INDEX_MARK ::= '#' - NAME_CHARS ::= 'a'|...|'z'|'A'|...|'Z'|'0'|...|'9' -\end{verbatim} -\normalsize - -\section{Semantics} -\index[general]{Semantics } - -The items listed in {\bf command} above, which always follow a colon ({\bf :}) -have the following meanings: - -\footnotesize -\begin{verbatim} - - perform substitution if variable is empty - + perform substitution if variable is not empty - o cut out substring of the variable value - # length of the variable value - * substitute empty string if the variable value is not empty, - otherwise substitute the trailing parameter - s regular expression search and replace. The trailing - options are: m = multiline, i = case insensitive, - g = global, t = plain text (no regexp) - y transpose characters from class A to class B - p pad variable to l = left, r = right or c = center, - with second value. - % special function call (none implemented) - l lower case the variable value - u upper case the variable value -\end{verbatim} -\normalsize - -The {\bf loop\_limits} are start, step, and end values. - -A counter variable name followed immediately by a plus ({\bf +}) will cause -the counter to be incremented by one. - -\section{Examples} -\index[general]{Examples } - -To create an ISO date: - -\footnotesize -\begin{verbatim} - DLT-${Year}-${Month:p/2/0/r}-${Day:p/2/0/r} -\end{verbatim} -\normalsize - -on 20 June 2003 would give {\bf DLT-2003-06-20} - -If you set the environment variable {\bf mon} to - -\footnotesize -\begin{verbatim} - January|February|March|April|May|... - File-${mon[${Month}]}/${Day}/${Year} -\end{verbatim} -\normalsize - -on the first of March would give {\bf File-March/1/2003 } diff --git a/docs/manuals/fr/problems/base/faq.tex b/docs/manuals/fr/problems/base/faq.tex new file mode 100644 index 00000000..2fff751a --- /dev/null +++ b/docs/manuals/fr/problems/base/faq.tex @@ -0,0 +1,876 @@ +%% +%% +% TODO: maybe merge all this FAQ in with the appropriate section? +% TODO: and use detailed indexing to help reader + +\chapter{Bacula Frequently Asked Questions} +\label{FaqChapter} +\index[general]{Questions!Bacula Frequently Asked } +\index[general]{Bacula Frequently Asked Questions } + +These are questions that have been submitted over time by the +Bacula users. The following +FAQ is very useful, but it is not always up to date +with newer information, so after reading it, if you don't find what you +want, you might try the Bacula wiki maintained by Frank Sweetser, which +contains more than just a FAQ: +\elink{http://wiki.bacula.org}{http://wiki.bacula.org} +or go directly to the FAQ at: +\elink{http://wiki.bacula.org/doku.php?id=faq} +{http://wiki.bacula.org/doku.php?id=faq}. + +Please also see +\ilink{the bugs section}{BugsChapter} of this document for a list +of known bugs and solutions. + +\begin{description} +\label{what} +\section{What is Bacula?} +\item [What is {\bf Bacula}? ] + \index[general]{What is Bacula? } + {\bf Bacula} is a network backup and restore program. + +\section{Does Bacula support Windows?} +\item [Does Bacula support Windows?] +\index[general]{Does Bacula support Windows? } + Yes, Bacula compiles and runs on Windows machines (Win98, WinMe, WinXP, + WinNT, Win2003, and Win2000). We provide a binary version of the Client + (bacula-fd), but have not tested the Director nor the Storage daemon. + Note, Win95 is no longer supported because it doesn't have the + GetFileAttributesExA API call. + + +\label{lang} +\section{What language is Bacula written in?} +\item [What language is Bacula written in?] +\index[general]{What language is Bacula written in? } + It is written in C++, but it is mostly C code using only a limited set of + the C++ extensions over C. Thus Bacula is completely compiled using the + C++ compiler. There are several modules, including the Win32 interface, that + are written using the object oriented C++ features. Over time, we are slowly + adding a larger subset of C++. + +\label{run} +\section{On what machines does Bacula run?} +\item [On what machines does Bacula run? ] + \index[general]{On what machines does Bacula run? } + {\bf Bacula} builds and executes on Red Hat Linux (versions RH7.1-RHEL + 4.0, Fedora, SuSE, Gentoo, Debian, Mandriva, ...), FreeBSD, Solaris, + Alpha, SGI (client), NetBSD, OpenBSD, Mac OS X (client), and Win32. + + Bacula has been my only backup tool for over seven years backing up 8 + machines nightly (6 Linux boxes running SuSE, previously + Red Hat and Fedora, a WinXP machine, and a WinNT machine). + + +\label{stable} +\section{Is Bacula Stable?} +\item [Is Bacula Stable? ] +\index[general]{Is Bacula Stable? } + Yes, it is remarkably stable, but remember, there are still a lot of + unimplemented or partially implemented features. With a program of this + size (150,000+ lines of C++ code not including the SQL programs) there + are bound to be bugs. The current test environment (a twisted pair + local network and a HP DLT backup tape) is not exactly ideal, so + additional testing on other sites is necessary. The File daemon has + never crashed -- running months at a time with no intervention. The + Storage daemon is remarkably stable with most of the problems arising + during labeling or switching tapes. Storage daemon crashes are rare + but running multiple drives and simultaneous jobs sometimes (rarely) + problems. + The Director, given the multitude of functions it fulfills is also + relatively stable. In a production environment, it rarely if ever + crashes. Of the three daemons, the Director is the most prone to having + problems. Still, it frequently runs several months with no problems. + + There are a number of reasons for this stability. + + \begin{enumerate} + \item The program is constantly checking the chain of allocated + memory buffers to ensure that no overruns have occurred. \\ + \item All memory leaks (orphaned buffers) are reported each time the + program terminates.\\ + \item Any signal (segmentation fault, ...) generates a + traceback that is emailed to the developer. This permits quick + resolution of bugs even if they only show up rarely in a production + system.\\ + \item There is a reasonably comprehensive set of regression tests + that avoids re-creating the most common errors in new versions of + Bacula. + \end{enumerate} + +\label{AuthorizationErrors} +\section{I'm Getting Authorization Errors. What is Going On? } +\item [I'm Getting Authorization Errors. What is Going On? ] +\index[general]{Authorization Errors} +\index[general]{Concurrent Jobs} + For security reasons, Bacula requires that both the File daemon and the + Storage daemon know the name of the Director as well as its password. As a + consequence, if you change the Director's name or password, you must make + the corresponding change in the Storage daemon's and in the File daemon's + configuration files. + + During the authorization process, the Storage daemon and File daemon + also require that the Director authenticates itself, so both ends + require the other to have the correct name and password. + + If you have edited the conf files and modified any name or any password, + and you are getting authentication errors, then your best bet is to go + back to the original conf files generated by the Bacula installation + process. Make only the absolutely necessary modifications to these + files -- e.g. add the correct email address. Then follow the + instructions in the \ilink{ Running Bacula}{TutorialChapter} chapter of + this manual. You will run a backup to disk and a restore. Only when + that works, should you begin customization of the conf files. + + Another reason that you can get authentication errors is if you are + running Multiple Concurrent Jobs in the Director, but you have not set + them in the File daemon or the Storage daemon. Once you reach their + limit, they will reject the connection producing authentication (or + connection) errors. + + If you are having problems connecting to a Windows machine that + previously worked, you might try restarting the Bacula service since + Windows frequently encounters networking connection problems. + + Some users report that authentication fails if there is not a proper + reverse DNS lookup entry for the machine. This seems to be a + requirement of gethostbyname(), which is what Bacula uses to translate + names into IP addresses. If you cannot add a reverse DNS entry, or you + don't know how to do so, you can avoid the problem by specifying an IP + address rather than a machine name in the appropriate Bacula conf file. + + Here is a picture that indicates what names/passwords in which + files/Resources must match up: + + \includegraphics{\idir Conf-Diagram.eps} + + In the left column, you will find the Director, Storage, and Client + resources, with their names and passwords -- these are all in {\bf + bacula-dir.conf}. The right column is where the corresponding values + should be found in the Console, Storage daemon (SD), and File daemon (FD) + configuration files. + + Another thing to check is to ensure that the Bacula component you are + trying to access has {\bf Maximum Concurrent Jobs} set large enough to + handle each of the Jobs and the Console that want to connect + simultaneously. Once the maximum connections has been reached, each + Bacula component will reject all new connections. + + Finally, make sure you have no {\bf hosts.allow} or {\bf hosts.deny} + file that is not permitting access to the site trying to connect. + +\label{AccessProblems} +\section{Bacula Runs Fine but Cannot Access a Client on a Different Machine. + Why? } +\item [Bacula Runs Fine but Cannot Access a Client on a Different Machine. + Why? ] +\index[general]{Cannot Access a Client} + There are several reasons why Bacula could not contact a client on a + different machine. They are: + +\begin{itemize} +\item It is a Windows Client, and the client died because of an improper + configuration file. Check that the Bacula icon is in the system tray and the + the menu items work. If the client has died, the icon will disappear only + when you move the mouse over the icon. +\item The Client address or port is incorrect or not resolved by DNS. See if + you can ping the client machine using the same address as in the Client + record. +\item You have a firewall, and it is blocking traffic on port 9102 between + the Director's machine and the Client's machine (or on port 9103 between the + Client and the Storage daemon machines). +\item Your password or names are not correct in both the Director and the + Client machine. Try configuring everything identical to how you run the + client on the same machine as the Director, but just change the Address. If + that works, make the other changes one step at a time until it works. +\item You may also be having problems between your File daemon and your + Storage daemon. The name you use in the Storage resource of your + Director's conf file must be known (resolvable) by the File daemon, + because it is passed symbolically to the File daemon, which then + resolves it to get an IP address used to contact the Storage daemon. +\item You may have a {\bf hosts.allow} or {\bf hosts.deny} file that is + not permitting access. +\end{itemize} + +\label{startover} +\section{My Catalog is Full of Test Runs, How Can I Start Over?} +\item [My Catalog is Full of Test Runs, How Can I Start Over? ] + \index[general]{My Catalog is Full of Test Runs, How Can I Start Over? } + If you are using MySQL do the following: + +\footnotesize +\begin{verbatim} + cd /src/cats + ./drop_mysql_tables + ./make_mysql_tables + +\end{verbatim} +\normalsize + +If you are using SQLite, do the following: + +\footnotesize +\begin{verbatim} + Delete bacula.db from your working directory. + cd /src/cats + ./drop_sqlite_tables + ./make_sqlite_tables + +\end{verbatim} +\normalsize + +Then write an EOF on each tape you used with {\bf Bacula} using: + +\footnotesize +\begin{verbatim} +mt -f /dev/st0 rewind +mt -f /dev/st0 weof +\end{verbatim} +\normalsize + +where you need to adjust the device name for your system. + +\label{restorehang} +\section{I Run a Restore Job and Bacula Hangs. What do I do?} +\item [I Run a Restore Job and Bacula Hangs. What do I do?] +\index[general]{I Run a Restore Job and Bacula Hangs. What do I do? } + On Bacula version 1.25 and prior, it expects you to have the correct + tape mounted prior to a restore. On Bacula version 1.26 and higher, it + will ask you for the tape, and if the wrong one is mounted, it will + inform you. + + If you have previously done an {\bf unmount} command, all Storage daemon + sessions (jobs) will be completely blocked from using the drive + unmounted, so be sure to do a {\bf mount} after your unmount. If in + doubt, do a second {\bf mount}, it won't cause any harm. + +\label{windowstart} +\section{I Cannot Get My Windows Client to Start Automatically? } +\item [I Cannot Get My Windows Client to Start Automatically? ] +\index[general]{Windows Auto Start} + You are probably having one of two problems: either the Client is dying + due to an incorrect configuration file, or you didn't do the + Installation commands necessary to install it as a Windows Service. + + For the first problem, see the next FAQ question. For the second + problem, please review the \ilink{ Windows Installation + instructions}{Win32Chapter} in this manual. + +\label{windowsdie} +\section{My Windows Client Immediately Dies When I Start It} +\item [My Windows Client Immediately Dies When I Start It] +\index[general]{Windows Client Dies} +The most common problem is either that the configuration file is not where +it expects it to be, or that there is an error in the configuration file. +You must have the configuration file in {\bf +c:\textbackslash{}bacula\textbackslash{}bin\textbackslash{}bacula-fd.conf}. + +To {\bf see} what is going on when the File daemon starts on Windows, do the +following: + +\footnotesize +\begin{verbatim} + Start a DOS shell Window. + cd c:\bacula\bin + bacula-fd -d100 -c c:\bacula\bin\bacula-fd.conf + +\end{verbatim} +\normalsize + +This will cause the FD to write a file {\bf bacula.trace} in the current +directory, which you can examine and thereby determine the problem. + +\label{scroll} +\item [When I Start the Console, the Error Messages Fly By. How can I see + them? ] +\index[general]{Error Messages} + Either use a shell window with a scroll bar, or use the gnome-console. + In any case, you probably should be logging all output to a file, and + then you can simply view the file using an editor or the {\bf less} + program. To log all output, I have the following in my Director's + Message resource definition: + +\footnotesize +\begin{verbatim} + append = "/home/kern/bacula/bin/log" = all, !skipped + +\end{verbatim} +\normalsize + +Obviously you will want to change the filename to be appropriate for your +system. + +\label{nobackup} +\section{My backups are not working on my Windows + Client. What should I do?} +\item [I didn't realize that the backups were not working on my Windows + Client. What should I do? ] +\index[general]{Backups Failing} +You should be sending yourself an email message for each job. This will avoid +the possibility of not knowing about a failed backup. To do so put something +like: + +\footnotesize +\begin{verbatim} + Mail = yourname@yourdomain = all, !skipped + +\end{verbatim} +\normalsize + +in your Director's message resource. You should then receive one email for +each Job that ran. When you are comfortable with what is going on (it took +me 9 months), you might change that to: + +\footnotesize +\begin{verbatim} + MailOnError = yourname@yourdomain = all, !skipped + +\end{verbatim} +\normalsize + +then you only get email messages when a Job errors as is the case for your +Windows machine. + +You should also be logging the Director's messages, please see the previous +FAQ for how to do so. + +\label{sched} +\section{All my Jobs are scheduled for the same time. Will this cause + problems?} +\item [All my Jobs are scheduled for the same time. Will this cause + problems? ] +\index[general]{Schedule problems} + No, not at all. Bacula will schedule all the Jobs at the same time, but + will run them one after another unless you have increased the number of + simultaneous jobs in the configuration files for the Director, the File + daemon, and the Storage daemon. The appropriate configuration record is + {\bf Maximum Concurrent Jobs = nn}. At the current time, we recommend + that you leave this set to {\bf 1} for the Director. + +\label{disk} +\section{Can Bacula Backup My System To Files instead of Tape?} +\item [Can Bacula Backup My System To Files instead of Tape? ] +\index[general]{Backup to Disk} + Yes, in principle, Bacula can backup to any storage medium as long as + you have correctly defined that medium in the Storage daemon's Device + resource. For an example of how to backup to files, please see the + \ilink{Pruning Example}{PruningExample} in the Recycling chapter of this + manual. Also, there is a whole chapter devoted to \ilink{Basic Volume + Management}{DiskChapter}. This chapter was originally written to + explain how to write to disk, but was expanded to include volume + management. It is, however, still quite a good chapter to read. + +\label{testbackup} +\section{Can I use a dummy device to test the backup?} + Yes, to have a {\sl Virtual} device which just consumes data, you can use a + FIFO device (see \ilink{Stored configuration}{SetupFifo}). + It's useful to test a backup. +\footnotesize +\begin{verbatim} +Device { + Name = NULL + Media Type = NULL + Device Type = Fifo + Archive Device = /dev/null + LabelMedia = yes + Random Access = no + AutomaticMount = no + RemovableMedia = no + MaximumOpenWait = 60 + AlwaysOpen = no +} +\end{verbatim} +\normalsize + +\label{bigfiles} +\section{Can Bacula Backup and Restore Files Bigger than 2 Gigabytes?} +\item [Can Bacula Backup and Restore Files Bigger than 2 Gigabytes?] +\index[general]{Large file support} +If your operating system permits it, and you are running Bacula version +1.26 or later, the answer is yes. To the best of our knowledge all client +system supported by Bacula can handle files bigger 2 Gigabytes. + +\label{cancel} +\section{I want to stop a job.} +%% Is there a better way than "./bacula stop" to stop it?} +\item [I Started A Job then Decided I Really Did Not Want to Run It. Is + there a better way than {\bf ./bacula stop} to stop it?] +\index[general]{Cancelling jobs} + Yes, you normally should use the Console command {\bf cancel} to cancel + a Job that is either scheduled or running. If the Job is scheduled, it + will be marked for cancellation and will be canceled when it is + scheduled to start. If it is running, it will normally terminate after + a few minutes. If the Job is waiting on a tape mount, you may need to + do a {\bf mount} command before it will be canceled. + +\label{trademark} +\section{Why have You Trademarked the Name Bacula?} +\item [Why have You Trademarked the Name + Bacula\raisebox{.6ex}{{\footnotesize \textsuperscript{\textregistered}}}?] +\index[general]{Bacula Trademark} +We have trademarked the name Bacula to ensure that all media written by any +program named Bacula will always be compatible. Anyone may use the name +Bacula, even in a derivative product as long as it remains totally compatible +in all respects with the program defined here. + +\label{docversion} +\section{Why is the Online Document for Version 1.39 but the Released Version is 1.38?} +\item [Why is the Online Document for Version 1.39 of Bacula when the + Current Version is 1.38?] +\index[general]{Multiple manuals} +As Bacula is being developed, the document is also being enhanced, more +often than not it has clarifications of existing features that can be very +useful to our users, so we publish the very latest document. Fortunately +it is rare that there are confusions with new features. + +If you want to read a document that pertains only to a specific version, +please use the one distributed in the source code. The web site also has +online versions of both the released manual and the current development +manual. + +\label{sure} +\section{Does Bacula really save and restore all files?} +\item [How Can I Be Sure that Bacula Really Saves and Restores All Files? ] +\index[general]{Checking Restores} + It is really quite simple, but took me a while to figure + out how to "prove" it. First make a Bacula Rescue disk, see the + \ilink{Disaster Recovery Using Bacula}{RescueChapter} chapter + of this manual. + Second, you run a full backup of all your files on all partitions. + Third, you run an Verify InitCatalog Job on the same FileSet, which + effectively makes a record of all the files on your system. Fourth, you + run a Verify Catalog job and assure yourself that nothing has changed + (well, between an InitCatalog and Catalog one doesn't expect anything). + Then do the unthinkable, write zeros on your MBR (master boot record) + wiping out your hard disk. Now, restore your whole system using your + Bacula Rescue disk and the Full backup you made, and finally re-run the + Verify Catalog job. You will see that with the exception of the + directory modification and access dates and the files changed during the + boot, your system is identical to what it was before you wiped your hard + disk. + Alternatively you could do the wiping and restoring to another computer + of the same type. + +\label{upgrade} +\section{I want an Incremental but Bacula runs it as a Full backup. Why?} +\item [I did a Full backup last week, but now in running an Incremental, + Bacula says it did not find a FULL backup, so it did a FULL backup. Why?] +\index[general]{FULL backup not found} + Before doing an Incremental or a Differential + backup, Bacula checks to see if there was a prior Full backup of the + same Job that terminated successfully. If so, it uses the date that + full backup started as the time for comparing if files have changed. If + Bacula does not find a successful full backup, it proceeds to do one. + Perhaps you canceled the full backup, or it terminated in error. In + such cases, the full backup will not be successful. You can check by + entering {\bf list jobs} and look to see if there is a prior Job with + the same Name that has Level F and JobStatus T (normal termination). + + Another reason why Bacula may not find a suitable Full backup is that + every time you change the FileSet, Bacula will require a new Full + backup. This is necessary to ensure that all files are properly backed + up in the case where you have added more files to the FileSet. + Beginning with version 1.31, the FileSets are also dated when they are + created, and this date is displayed with the name when you are listing + or selecting a FileSet. For more on backup levels see below. + + See also {\bf Ignore FileSet Changes} in the + \ilink{FileSet Resource definition}{FileSetResource} in the Director + chapter of this document. + +\label{filenamelengths} +\section{Do you really handle unlimited path lengths?} +\item [How Can You Claim to Handle Unlimited Path and Filename Lengths + when All Other Programs Have Fixed Limits?] +\index[general]{Path and Filename Lengths} + Most of those other programs have been around for a long time, in fact + since the beginning of Unix, which means that they were designed for + rather small fixed length path and filename lengths. Over the years, + these restrictions have been relaxed allowing longer names. Bacula on + the other hand was designed in 2000, and so from the start, Path and + Filenames have been kept in buffers that start at 256 bytes in length, + but can grow as needed to handle any length. Most of the work is + carried out by lower level routines making the coding rather easy. + + Note that due to limitations Win32 path and filenames cannot exceed + 260 characters. By using Win32 Unicode functions, we will remove this + restriction in later versions of Bacula. + +\label{unique} +\section{What Is the Really Unique Feature of Bacula?} +\item [What Is the Really Unique Feature of Bacula?] +\index[general]{Unique Feature of Bacula} + Well, it is hard to come up with unique features when backup programs + for Unix machines have been around since the 1960s. That said, I + believe that Bacula is the first and only program to use a standard SQL + interface to catalog its database. Although this adds a bit of + complexity and possibly overhead, it provides an amazingly rich set of + features that are easy to program and enhance. The current code has + barely scratched the surface in this regard (version 1.38). + + The second feature, which gives a lot of power and flexibility to Bacula + is the Bootstrap record definition. + + The third unique feature, which is currently (1.30) unimplemented, and + thus can be called vaporware :-), is Base level saves. When + implemented, this will enormously reduce tape usage. + +\label{sequence} +\section{How can I force one job to run after another?} +\item [If I Run Multiple Simultaneous Jobs, How Can I Force One + Particular Job to Run After Another Job? ] +\index[general]{Multiple Simultaneous Jobs} +Yes, you can set Priorities on your jobs so that they run in the order you +specify. Please see: +\ilink{the Priority record}{Priority} in the Job resource. + +\label{nomail} +\section{I Am Not Getting Email Notification, What Can I Do? } +\item [I Am Not Getting Email Notification, What Can I Do? ] +\index[general]{No Email Notification} + The most common problem is that you have not specified a fully qualified + email address and your bsmtp server is rejecting the mail. The next + most common problem is that your bsmtp server doesn't like the syntax on + the From part of the message. For more details on this and other + problems, please see the \ilink{ Getting Email Notification to + Work}{email} section of the Tips chapter of this manual. The section + \ilink{ Getting Notified of Job Completion}{notification} of the Tips + chapter may also be useful. For more information on the {\bf bsmtp} + mail program, please see \ilink{bsmtp in the Volume Utility Tools + chapter}{bsmtp} of this manual. + +\label{periods} +\section{My retention periods don't work} +\item [I Change Recycling, Retention Periods, or File Sizes in my Pool + Resource and they Still Don't Work.] +\index[general]{Recycling} +\index[general]{Retention Periods} +\index[general]{Pool changes} + The different variables associated with a Pool are defined in the Pool + Resource, but are actually read by Bacula from the Catalog database. On + Bacula versions prior to 1.30, after changing your Pool Resource, you must + manually update the corresponding values in the Catalog by using the {\bf + update pool} command in the Console program. In Bacula version 1.30, Bacula + does this for you automatically every time it starts. + + When Bacula creates a Media record (Volume), it uses many default values from + the Pool record. If you subsequently change the Pool record, the new values + will be used as a default for the next Volume that is created, but if you + want the new values to apply to existing Volumes, you must manually update + the Volume Catalog entry using the {\bf update volume} command in the Console + program. + +\label{CompressionNotWorking} +\section{Why aren't my files compressed?} +\item [I Have Configured Compression On, But None of My Files Are + Compressed. Why?] +\index[general]{Compression} + There are two kinds of compression. One is tape compression. This is done by + the tape drive hardware, and you either enable or disable it with system + tools such as {\bf mt}. This compression works independently of Bacula, + and when it is enabled, you should not use the Bacula software + compression. + + Bacula also has software compression code in the File daemons, which you + normally need to enable only when backing up to file Volumes. There are + two conditions necessary to enable the Bacula software compression. + +\begin{enumerate} +\item You must have the zip development libraries loaded on your system + when building Bacula and Bacula must find this library, normally {\bf + /usr/lib/libz.a}. On Red Hat systems, this library is provided by the + {\bf zlib-devel} rpm. + + If the library is found by Bacula during the {\bf ./configure} it will + be mentioned in the {\bf config.out} line by: + +\footnotesize +\begin{verbatim} + ZLIB support: yes + +\end{verbatim} +\normalsize + +\item You must add the {\bf compression=gzip} option on your Include + statement in the Director's configuration file. +\end{enumerate} + +\label{NewTape} +\item [Bacula is Asking for a New Tape After 2 GB of Data but My Tape + holds 33 GB. Why?] +\index[general]{Tape capacity} +There are several reasons why Bacula will request a new tape. + +\begin{itemize} +\item There is an I/O error on the tape. Bacula prints an error message and + requests a new tape. Bacula does not attempt to continue writing after an + I/O error. +\item Bacula encounters and end of medium on the tape. This is not always + distinguishable from an I/O error. +\item You have specifically set some size limitation on the tape. For example + the {\bf Maximum Volume Bytes} or {\bf Maximum Volume Files} in the + Director's Pool resource, or {\bf Maximum Volume Size} in the Storage + daemon's Device resource. +\end{itemize} + +\label{LevelChanging} +\section{Incremental backups are not working} +\item [Bacula is Not Doing the Right Thing When I Request an Incremental + Backup. Why?] +\index[general]{Incremental backups} + As explained in one of the previous questions, Bacula will automatically + upgrade an Incremental or Differential job to a Full backup if it cannot + find a prior Full backup or a suitable Full backup. For the gory + details on how/when Bacula decides to upgrade levels please see the + \ilink{Level record}{Level} in the Director's configuration chapter of + this manual. + + If after reading the above mentioned section, you believe that Bacula is not + correctly handling the level (Differential/Incremental), please send us the + following information for analysis: + +\begin{itemize} +\item Your Director's configuration file. +\item The output from {\bf list jobs} covering the period where you are + having the problem. +\item The Job report output from the prior Full save (not critical). +\item An {\bf llist jobid=nnn} where nnn is the JobId of the prior Full save. + +\item The Job report output from the save that is doing the wrong thing (not + critical). +\item An {\bf llist jobid=nnn} where nnn is the JobId of the job that was not + correct. +\item An explanation of what job went wrong and why you think it did. + \end{itemize} + +The above information can allow us to analyze what happened, without it, +there is not much we can do. + +\label{WaitForever} +\section{I am waiting forever for a backup of an offsite machine} +\item [I am Backing Up an Offsite Machine with an Unreliable Connection. + The Director Waits Forever for the Client to Contact the SD. What Can I + Do?] +\index[general]{Backing Up Offsite Machines} + Bacula was written on the assumption that it will have a good TCP/IP + connection between all the daemons. As a consequence, the current + Bacula doesn't deal with faulty connections very well. This situation + is slowly being corrected over time. + + There are several things you can do to improve the situation. + +\begin{itemize} +\item Upgrade to version 1.32 and use the new SDConnectTimeout record. For + example, set: + +\footnotesize +\begin{verbatim} + SD Connect Timeout = 5 min + +\end{verbatim} +\normalsize + +in the FileDaemon resource. +\item Run these kinds of jobs after all other jobs. + \end{itemize} + +\label{sshHanging} +\section{SSH hangs forever after starting Bacula} +\item [When I ssh into a machine and start Bacula then attempt to exit, + ssh hangs forever.] +\index[general]{ssh hangs} + This happens because Bacula leaves stdin, stdout, and stderr open for + debug purposes. To avoid it, the simplest thing to do is to redirect + the output of those files to {\bf /dev/null} or another file in your + startup script (the Red Hat autostart scripts do this automatically). + For example, you start the Director with: + +\footnotesize +\begin{verbatim} + bacula-dir -c bacula-dir.conf ... >/dev/null 0>\&1 2>\&1 + +\end{verbatim} +\normalsize + +and likewise for the other daemons. + +\label{RetentionPeriods} +\section{I'm confused by retention periods} +\item [I'm confused by the different Retention periods: File Retention, + Job Retention, Volume Retention. Why are there so many?] +\index[general]{Retention Periods} + Yes, this certainly can be confusing. The basic reason for so many is + to allow flexibility. The File records take quite a lot of space in the + catalog, so they are typically records you want to remove rather + quickly. The Job records, take very little space, and they can be + useful even without the File records to see what Jobs actually ran and + when. One must understand that if the File records are removed from the + catalog, you cannot use the {\bf restore} command to restore an + individual file since Bacula no longer knows where it is. However, as + long as the Volume Retention period has not expired, the data will still + be on the tape, and can be recovered from the tape. + + For example, I keep a 30 day retention period for my Files to keep my + catalog from getting too big, but I keep my tapes for a minimum of one + year, just in case. + +\label{MaxVolumeSize} +\section{MaxVolumeSize is ignored} +\item [Why Does Bacula Ignore the MaxVolumeSize Set in my Pool?] +\index[general]{MaxVolumeSize} + The MaxVolumeSize that Bacula uses comes from the Media record, so most + likely you changed your Pool, which is used as the default for creating + Media records, {\bf after} you created your Volume. Check what is in + the Media record by doing: + +\footnotesize +\begin{verbatim} +llist Volume=xxx +\end{verbatim} +\normalsize + +If it doesn't have the right value, you can use: + +\footnotesize +\begin{verbatim} +update Volume=xxx +\end{verbatim} +\normalsize + +to change it. + +\label{ConnectionRefused} +\section{I get a Connection refused when connecting to my Client} +\item [In connecting to my Client, I get "ERR:Connection Refused. Packet + Size too big from File daemon:192.168.1.4:9102" Why?] +\index[general]{ERR:Connection Refused} + This is typically a communications error resulting from one of the + following: + + +\begin{itemize} +\item Old versions of Bacula, usually a Win32 client, where two threads were + using the same I/O packet. Fixed in more recent versions. Please upgrade. +\item Some other program such as an HP Printer using the same port (9102 in + this case). +\end{itemize} + +If it is neither of the above, please submit a bug report at +\elink{bugs.bacula.org}{http://bugs.bacula.org}. + +Another solution might be to run the daemon with the debug option by: + +\footnotesize +\begin{verbatim} + Start a DOS shell Window. + cd c:\bacula\bin + bacula-fd -d100 -c c:\bacula\bin\bacula-fd.conf + +\end{verbatim} +\normalsize + +This will cause the FD to write a file {\bf bacula.trace} in the current +directory, which you can examine to determine the problem. + +\section{Long running jobs die with Pipe Error} +\item [During long running jobs my File daemon dies with Pipe Error, or + some other communications error. Why?] +\index[general]{Communications Errors} +\index[general]{Pipe Errors} +\index[general]{slow} +\index[general]{Backups!slow} + There are a number of reasons why a connection might break. + Most often, it is a router between your two computers that times out + inactive lines (not respecting the keepalive feature that Bacula uses). + In that case, you can use the {\bf Heartbeat Interval} directive in + both the Storage daemon and the File daemon. + + In at least one case, the problem has been a bad driver for a Win32 + NVidia NForce 3 ethernet card with driver (4.4.2 17/05/2004). + In this case, a good driver is (4.8.2.0 06/04/2005). Moral of + the story, make sure you have the latest ethernet drivers + loaded, or use the following workaround as suggested by Thomas + Simmons for Win32 machines: + + Browse to: + Start \gt{} Control Panel \gt{} Network Connections + + Right click the connection for the nvidia adapter and select properties. + Under the General tab, click "Configure...". Under the Advanced tab set + "Checksum Offload" to disabled and click OK to save the change. + + Lack of communications, or communications that get interrupted can + also be caused by Linux firewalls where you have a rule that throttles + connections or traffic. For example, if you have: + +\footnotesize +\begin{verbatim} +iptables -t filter -A INPUT -m limit --limit 3/second --limit-burst 3 -j DROP +\end{verbatim} +\normalsize + + you will want to add the following rules {\bf before} the above rule: +\footnotesize +\begin{verbatim} +iptables -t filter -A INPUT --dport 9101 -j ACCEPT +iptables -t filter -A INPUT --dport 9102 -j ACCEPT +iptables -t filter -A INPUT --dport 9103 -j ACCEPT +\end{verbatim} +\normalsize + This will ensure that any Bacula traffic will not get terminated because + of high usage rates. + +\section{How do I tell the Job which Volume to use?} +\item[I can't figure out how to tell the job which volume to use] + \index[general]{What tape to mount} + This is an interesting statement. I now see that a number of people new to + Bacula have the same problem as you, probably from using programs like tar. + + In fact, you do not tell Bacula what tapes to use. It is the inverse. Bacula + tells you want tapes it wants. You put tapes at its disposition and it + chooses. + + Now, if you *really* want to be tricky and try to tell Bacula what to do, it + will be reasonable if for example you mount a valid tape that it can use on a + drive, it will most likely go ahead and use it. It also has a documented + algorithm for choosing tapes -- but you are asking for problems ... + + So, the trick is to invert your concept of things and put Bacula in charge of + handling the tapes. Once you do that, you will be fine. If you want to + anticipate what it is going to do, you can generally figure it out correctly + and get what you want. + + If you start with the idea that you are going to force or tell Bacula to use + particular tapes or you insist on trying to run in that kind of mode, you will + probably not be too happy. + + I don't want to worry about what tape has what data. That is what Bacula is + designed for. + + If you have an application where you *really* need to remove a tape each day + and insert a new one, it can be done the directives exist to accomplish that. + In such a case, one little "trick" to knowing what tape Bacula will want at + 2am while you are asleep is to run a tiny job at 4pm while you are still at + work that backs up say one directory, or even one file. You will quickly find + out what tape it wants, and you can mount it before you go home ... + +\label{Password generation} +\section{Password generation} +\item [How do I generate a password?] +\index[general]{MaxVolumeSize} + + Each daemon needs a password. This password occurs in the configuration + file for that daemon and in the bacula-dir.conf file. These passwords are + plain text. There is no special generation procedure. Most people just + use random text. + + Passwords are never sent over the wire in plain text. They are always + encrypted. + + Security surrounding these passwords is best left security to your + operating system. Passwords are not encrypted within Bacula + configuration files. + +\end{description} + diff --git a/docs/manuals/fr/problems/base/fdl.tex b/docs/manuals/fr/problems/base/fdl.tex new file mode 100644 index 00000000..b46cd990 --- /dev/null +++ b/docs/manuals/fr/problems/base/fdl.tex @@ -0,0 +1,485 @@ +% TODO: maybe get rid of centering + +\chapter{GNU Free Documentation License} +\index[general]{GNU Free Documentation License} +\index[general]{License!GNU Free Documentation} + +\label{label_fdl} + + \begin{center} + + Version 1.2, November 2002 + + + Copyright \copyright 2000,2001,2002 Free Software Foundation, Inc. + + \bigskip + + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + \bigskip + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. +\end{center} + + +\begin{center} +{\bf\large Preamble} +\end{center} + +The purpose of this License is to make a manual, textbook, or other +functional and useful document "free" in the sense of freedom: to +assure everyone the effective freedom to copy and redistribute it, +with or without modifying it, either commercially or noncommercially. +Secondarily, this License preserves for the author and publisher a way +to get credit for their work, while not being considered responsible +for modifications made by others. + +This License is a kind of "copyleft", which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + + +\begin{center} +{\Large\bf 1. APPLICABILITY AND DEFINITIONS} +\end{center} + +This License applies to any manual or other work, in any medium, that +contains a notice placed by the copyright holder saying it can be +distributed under the terms of this License. Such a notice grants a +world-wide, royalty-free license, unlimited in duration, to use that +work under the conditions stated herein. The \textbf{"Document"}, below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as \textbf{"you"}. You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law. + +A \textbf{"Modified Version"} of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +A \textbf{"Secondary Section"} is a named appendix or a front-matter section of +the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall subject +(or to related matters) and contains nothing that could fall directly +within that overall subject. (Thus, if the Document is in part a +textbook of mathematics, a Secondary Section may not explain any +mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +The \textbf{"Invariant Sections"} are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. If a +section does not fit the above definition of Secondary then it is not +allowed to be designated as Invariant. The Document may contain zero +Invariant Sections. If the Document does not identify any Invariant +Sections then there are none. + +The \textbf{"Cover Texts"} are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. A Front-Cover Text may +be at most 5 words, and a Back-Cover Text may be at most 25 words. + +A \textbf{"Transparent"} copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, that is suitable for revising the document +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup, or absence of markup, has been arranged to thwart +or discourage subsequent modification by readers is not Transparent. +An image format is not Transparent if used for any substantial amount +of text. A copy that is not "Transparent" is called \textbf{"Opaque"}. + +Examples of suitable formats for Transparent copies include plain +ASCII without markup, Texinfo input format, LaTeX input format, SGML +or XML using a publicly available DTD, and standard-conforming simple +HTML, PostScript or PDF designed for human modification. Examples of +transparent image formats include PNG, XCF and JPG. Opaque formats +include proprietary formats that can be read and edited only by +proprietary word processors, SGML or XML for which the DTD and/or +processing tools are not generally available, and the +machine-generated HTML, PostScript or PDF produced by some word +processors for output purposes only. + +The \textbf{"Title Page"} means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, "Title Page" means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. + +A section \textbf{"Entitled XYZ"} means a named subunit of the Document whose +title either is precisely XYZ or contains XYZ in parentheses following +text that translates XYZ in another language. (Here XYZ stands for a +specific section name mentioned below, such as \textbf{"Acknowledgements"}, +\textbf{"Dedications"}, \textbf{"Endorsements"}, or \textbf{"History"}.) +To \textbf{"Preserve the Title"} +of such a section when you modify the Document means that it remains a +section "Entitled XYZ" according to this definition. + +The Document may include Warranty Disclaimers next to the notice which +states that this License applies to the Document. These Warranty +Disclaimers are considered to be included by reference in this +License, but only as regards disclaiming warranties: any other +implication that these Warranty Disclaimers may have is void and has +no effect on the meaning of this License. + + +\begin{center} +{\Large\bf 2. VERBATIM COPYING} +\end{center} + +You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +You may also lend copies, under the same conditions stated above, and +you may publicly display copies. + + +\begin{center} +{\Large\bf 3. COPYING IN QUANTITY} +\end{center} + + +If you publish printed copies (or copies in media that commonly have +printed covers) of the Document, numbering more than 100, and the +Document's license notice requires Cover Texts, you must enclose the +copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a computer-network location from which the general network-using +public has access to download using public-standard network protocols +a complete Transparent copy of the Document, free of added material. +If you use the latter option, you must take reasonably prudent steps, +when you begin distribution of Opaque copies in quantity, to ensure +that this Transparent copy will remain thus accessible at the stated +location until at least one year after the last time you distribute an +Opaque copy (directly or through your agents or retailers) of that +edition to the public. + +It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. + + +\begin{center} +{\Large\bf 4. MODIFICATIONS} +\end{center} + +You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +\begin{itemize} +\item[A.] + Use in the Title Page (and on the covers, if any) a title distinct + from that of the Document, and from those of previous versions + (which should, if there were any, be listed in the History section + of the Document). You may use the same title as a previous version + if the original publisher of that version gives permission. + +\item[B.] + List on the Title Page, as authors, one or more persons or entities + responsible for authorship of the modifications in the Modified + Version, together with at least five of the principal authors of the + Document (all of its principal authors, if it has fewer than five), + unless they release you from this requirement. + +\item[C.] + State on the Title page the name of the publisher of the + Modified Version, as the publisher. + +\item[D.] + Preserve all the copyright notices of the Document. + +\item[E.] + Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. + +\item[F.] + Include, immediately after the copyright notices, a license notice + giving the public permission to use the Modified Version under the + terms of this License, in the form shown in the Addendum below. + +\item[G.] + Preserve in that license notice the full lists of Invariant Sections + and required Cover Texts given in the Document's license notice. + +\item[H.] + Include an unaltered copy of this License. + +\item[I.] + Preserve the section Entitled "History", Preserve its Title, and add + to it an item stating at least the title, year, new authors, and + publisher of the Modified Version as given on the Title Page. If + there is no section Entitled "History" in the Document, create one + stating the title, year, authors, and publisher of the Document as + given on its Title Page, then add an item describing the Modified + Version as stated in the previous sentence. + +\item[J.] + Preserve the network location, if any, given in the Document for + public access to a Transparent copy of the Document, and likewise + the network locations given in the Document for previous versions + it was based on. These may be placed in the "History" section. + You may omit a network location for a work that was published at + least four years before the Document itself, or if the original + publisher of the version it refers to gives permission. + +\item[K.] + For any section Entitled "Acknowledgements" or "Dedications", + Preserve the Title of the section, and preserve in the section all + the substance and tone of each of the contributor acknowledgements + and/or dedications given therein. + +\item[L.] + Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section titles. + +\item[M.] + Delete any section Entitled "Endorsements". Such a section + may not be included in the Modified Version. + +\item[N.] + Do not retitle any existing section to be Entitled "Endorsements" + or to conflict in title with any Invariant Section. + +\item[O.] + Preserve any Warranty Disclaimers. +\end{itemize} + +If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +You may add a section Entitled "Endorsements", provided it contains +nothing but endorsements of your Modified Version by various +parties--for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. + + +\begin{center} +{\Large\bf 5. COMBINING DOCUMENTS} +\end{center} + + +You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice, and that you preserve all their Warranty Disclaimers. + +The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +In the combination, you must combine any sections Entitled "History" +in the various original documents, forming one section Entitled +"History"; likewise combine any sections Entitled "Acknowledgements", +and any sections Entitled "Dedications". You must delete all sections +Entitled "Endorsements". + +\begin{center} +{\Large\bf 6. COLLECTIONS OF DOCUMENTS} +\end{center} + +You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. + +You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. + + +\begin{center} +{\Large\bf 7. AGGREGATION WITH INDEPENDENT WORKS} +\end{center} + + +A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, is called an "aggregate" if the copyright +resulting from the compilation is not used to limit the legal rights +of the compilation's users beyond what the individual works permit. +When the Document is included in an aggregate, this License does not +apply to the other works in the aggregate which are not themselves +derivative works of the Document. + +If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one half of +the entire aggregate, the Document's Cover Texts may be placed on +covers that bracket the Document within the aggregate, or the +electronic equivalent of covers if the Document is in electronic form. +Otherwise they must appear on printed covers that bracket the whole +aggregate. + + +\begin{center} +{\Large\bf 8. TRANSLATION} +\end{center} + + +Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License, and all the license notices in the +Document, and any Warranty Disclaimers, provided that you also include +the original English version of this License and the original versions +of those notices and disclaimers. In case of a disagreement between +the translation and the original version of this License or a notice +or disclaimer, the original version will prevail. + +If a section in the Document is Entitled "Acknowledgements", +"Dedications", or "History", the requirement (section 4) to Preserve +its Title (section 1) will typically require changing the actual +title. + + +\begin{center} +{\Large\bf 9. TERMINATION} +\end{center} + + +You may not copy, modify, sublicense, or distribute the Document except +as expressly provided for under this License. Any other attempt to +copy, modify, sublicense or distribute the Document is void, and will +automatically terminate your rights under this License. However, +parties who have received copies, or rights, from you under this +License will not have their licenses terminated so long as such +parties remain in full compliance. + + +\begin{center} +{\Large\bf 10. FUTURE REVISIONS OF THIS LICENSE} +\end{center} + + +The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. See +http://www.gnu.org/copyleft/. + +Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License "or any later version" applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. + + +\begin{center} +{\Large\bf ADDENDUM: How to use this License for your documents} +% TODO: this is too long for table of contents +\end{center} + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + +\bigskip +\begin{quote} + Copyright \copyright YEAR YOUR NAME. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.2 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. + A copy of the license is included in the section entitled "GNU + Free Documentation License". +\end{quote} +\bigskip + +If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the "with...Texts." line with this: + +\bigskip +\begin{quote} + with the Invariant Sections being LIST THEIR TITLES, with the + Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. +\end{quote} +\bigskip + +If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + +If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. + +%--------------------------------------------------------------------- diff --git a/docs/manuals/fr/problems/base/firewalls.tex b/docs/manuals/fr/problems/base/firewalls.tex new file mode 100644 index 00000000..9646ea65 --- /dev/null +++ b/docs/manuals/fr/problems/base/firewalls.tex @@ -0,0 +1,373 @@ +%% +%% + +\chapter{Dealing with Firewalls} +\label{FirewallsChapter} +\index[general]{Dealing with Firewalls } +\index[general]{Firewalls!Dealing with } + +If you have a firewall or a DMZ installed on your computer, you may experience +difficulties contacting one or more of the Clients to back them up. This is +especially true if you are trying to backup a Client across the Internet. + +\section{Technical Details} +\index[general]{Technical Details } +\index[general]{Details!Technical } + +If you are attempting to do this, the sequence of network events in Bacula to +do a backup are the following: + +\footnotesize +\begin{verbatim} +Console -> DIR:9101 +DIR -> SD:9103 +DIR -> FD:9102 +FD -> SD:9103 +\end{verbatim} +\normalsize + +Where hopefully it is obvious that DIR represents the Director, FD the File +daemon or client, and SD the Storage daemon. The numbers that follow those +names are the standard ports used by Bacula, and the \verb:->: represents the +left side making a connection to the right side (i.e. the right side is the +"server" or is listening on the specified port), and the left side is the +"client" that initiates the conversation. + +Note, port 9103 serves both the Director and the File daemon, each having its +own independent connection. + +If you are running {\bf iptables}, you might add something like: + +\footnotesize +\begin{verbatim} +-A FW-1-INPUT -m state --state NEW -m tcp -p tcp --dport 9101:9103 -j ACCEPT +\end{verbatim} +\normalsize + +on your server, and + +\footnotesize +\begin{verbatim} +-A FW-1-INPUT -m state --state NEW -m tcp -p tcp --dport 9102 -j ACCEPT +\end{verbatim} +\normalsize + +on your client. In both cases, I assume that the machine is allowed to +initiate connections on any port. If not, you will need to allow outgoing +connections on ports 9102 and 9103 on your server and 9103 on your client. +Thanks to Raymond Norton for this tip. + +\section{A Concrete Example} +\index[general]{Example!Concrete } +\index[general]{Concrete Example } + +The following discussion was originally written by +Jesse Guardiani because he has 'internal' and 'external' requiring the +Director and the Client to use different IP addresses. His original +solution was to define two different Storage resources in the Director's +conf file each pointing to the same Storage daemon but with different +IP addresses. In Bacula 1.38.x this no longer works, because Bacula makes +a one-to-one association between a Storage daemon resource and a Device (such +as an Autochanger). As a consequence, I have modified his original +text to a method that I believe will work, but is as of yet untested +(KES - July 2006). + +My bacula server is on the 192.168.1.0/24 network at IP address 192.168.1.52. +For the sake of discussion we will refer to this network as the 'internal' +network because it connects to the internet through a NAT'd firewall. We will +call the network on the public (internet) side of the NAT'd firewall the +'external' network. Also, for the sake of discussion we will call my bacula +server: + +\footnotesize +\begin{verbatim} + server.int.mydomain.tld +\end{verbatim} +\normalsize + +when a fully qualified domain name is required, or simply: + +\footnotesize +\begin{verbatim} + server +\end{verbatim} +\normalsize + +if a hostname is adequate. We will call the various bacula daemons running on +the server.int.mydomain.tld machine: + +\footnotesize +\begin{verbatim} + server-fd + server-sd + server-dir +\end{verbatim} +\normalsize + +In addition, I have two clients that I want to back up with Bacula. The first +client is on the internal network. Its fully qualified domain name is: + +\footnotesize +\begin{verbatim} + private1.int.mydomain.tld +\end{verbatim} +\normalsize + +And its hostname is: + +\footnotesize +\begin{verbatim} + private1 +\end{verbatim} +\normalsize + +This machine is a client and therefore runs just one bacula daemon: + +\footnotesize +\begin{verbatim} + private1-fd +\end{verbatim} +\normalsize + +The second client is on the external network. Its fully qualified domain name +is: + +\footnotesize +\begin{verbatim} + public1.mydomain.tld +\end{verbatim} +\normalsize + +And its hostname is: + +\footnotesize +\begin{verbatim} + public1 +\end{verbatim} +\normalsize + +This machine also runs just one bacula daemon: + +\footnotesize +\begin{verbatim} + public1-fd +\end{verbatim} +\normalsize + +Finally, I have a NAT firewall/gateway with two network interfaces. The first +interface is on the internal network and serves as a gateway to the internet +for all the machines attached to the internal network (For example, +server.int.mydomain.tld and private1.int.mydomain.tld). The second interface +is on the external (internet) network. The external interface has been +assigned the name: + +\footnotesize +\begin{verbatim} + firewall.mydomain.tld +\end{verbatim} +\normalsize + +Remember: + +\footnotesize +\begin{verbatim} + *.int.mydomain.tld = internal network + *.mydomain.tld = external network +\end{verbatim} +\normalsize + +\subsection{The Bacula Configuration Files for the Above} +\index[general]{Above!Bacula Configuration Files for the } +\index[general]{Bacula Configuration Files for the Above } + +server-sd manages a 4 tape AIT autoloader. All of my backups are written to +server-sd. I have just *one* Device resource in my server-sd.conf file: + +\footnotesize +\begin{verbatim} +Autochanger { + Name = "autochanger1";\ + Device = Drive0 + Changer Device = /dev/ch0; + Changer Command = "/usr/local/sbin/chio-bacula %c %o %S %a"; +} +Device { + Name = Drive0 + DriveIndex = 0 + Media Type = AIT-1; + Archive Device = /dev/nrsa1; + Label Media = yes; + AutoChanger = yes; + AutomaticMount = yes; # when device opened, read it + AlwaysOpen = yes; + Hardware End of Medium = No + Fast Forward Space File = No + BSF at EOM = yes +} +\end{verbatim} +\normalsize + +(note, please see +\ilink{the Tape Testing}{FreeBSDTapes} chapter of this manual +for important FreeBSD information.) However, unlike previously, there +is only one Storage definition in my server-dir.conf file: + +\footnotesize +\begin{verbatim} +Storage { + Name = "autochanger1" # Storage device for backing up + Address = Storage-server + SDPort = 9103 + Password = "mysecretpassword" + Device = "autochanger1" + Media Type = AIT-1 + Autochanger = yes +} +\end{verbatim} +\normalsize + +Note that the Storage resource uses neither of the two addresses to +the Storage daemon -- neither server.int.mydomain.tld nor +firewall.mydomain.tld, but instead uses the address Storage-server. + +What is key is that in the internal net, Storage-server is resolved +to server.int.mydomain.tld, either with an entry in /etc/hosts, or by +creating and appropriate DNS entry, and on the external net (the Client +machine), Storage-server is resolved to firewall.mydomain.tld. + + +In addition to the above, I have two Client resources defined in +server-dir.conf: + +\footnotesize +\begin{verbatim} +Client { + Name = private1-fd + Address = private1.int.mydomain.tld + FDPort = 9102 + Catalog = MyCatalog + Password = "mysecretpassword" # password for FileDaemon +} +Client { + Name = public1-fd + Address = public1.mydomain.tld + FDPort = 9102 + Catalog = MyCatalog + Password = "mysecretpassword" # password for FileDaemon +} +\end{verbatim} +\normalsize + +And finally, to tie it all together, I have two Job resources defined in +server-dir.conf: + +\footnotesize +\begin{verbatim} +Job { + Name = "Private1-Backup" + Type = Backup + Client = private1-fd + FileSet = "Private1" + Schedule = "WeeklyCycle" + Storage = "autochanger1-int" + Messages = Standard + Pool = "Weekly" + Write Bootstrap = "/var/db/bacula/Private1-Backup.bsr" + Priority = 12 +} +Job { + Name = "Public1-Backup" + Type = Backup + Client = public1-fd + FileSet = "Public1" + Schedule = "WeeklyCycle" + Storage = "autochanger1-ext" + Messages = Standard + Pool = "Weekly" + Write Bootstrap = "/var/db/bacula/Public1-Backup.bsr" + Priority = 13 +} +\end{verbatim} +\normalsize + +It is important to notice that because the 'Private1-Backup' Job is intended +to back up a machine on the internal network so it resolves Storage-server +to contact the Storage daemon via the internal net. +On the other hand, the 'Public1-Backup' Job is intended to +back up a machine on the external network, so it resolves Storage-server +to contact the Storage daemon via the external net. + +I have left the Pool, Catalog, Messages, FileSet, Schedule, and Director +resources out of the above server-dir.conf examples because they are not +pertinent to the discussion. + +\subsection{How Does It Work?} +\index[general]{How Does It Work? } +\index[general]{Work!How Does It } + +If I want to run a backup of private1.int.mydomain.tld and store that backup +using server-sd then my understanding of the order of events is this: + +\begin{enumerate} +\item I execute my Bacula 'console' command on server.int.mydomain.tld. +\item console connects to server-dir. +\item I tell console to 'run' backup Job 'Private1-Backup'. +\item console relays this command to server-dir. +\item server-dir connects to private1-fd at private1.int.mydomain.tld:9102 +\item server-dir tells private1-fd to start sending the files defined in the + 'Private1-Backup' Job's FileSet resource to the Storage resource + 'autochanger1', which we have defined in server-dir.conf as having the +address:port of Storage-server, which is mapped by DNS to server.int.mydomain.tld. +\item private1-fd connects to server.int.mydomain.tld:9103 and begins sending + files. + \end{enumerate} + +Alternatively, if I want to run a backup of public1.mydomain.tld and store +that backup using server-sd then my understanding of the order of events is +this: + +\begin{enumerate} +\item I execute my Bacula 'console' command on server.int.mydomain.tld. +\item console connects to server-dir. +\item I tell console to 'run' backup Job 'Public1-Backup'. +\item console relays this command to server-dir. +\item server-dir connects, through the NAT'd firewall, to public1-fd at + public1.mydomain.tld:9102 +\item server-dir tells public1-fd to start sending the files defined in the + 'Public1-Backup' Job's FileSet resource to the Storage resource + 'autochanger1', which we have defined in server-dir.conf as having the + same address:port as above of Storage-server, but which on this machine + is resolved to firewall.mydomain.tld:9103. +\item public1-fd connects to firewall.mydomain.tld:9103 and begins sending + files. + \end{enumerate} + +\subsection{Important Note} +\index[general]{Important Note } +\index[general]{Note!Important } + +In order for the above 'Public1-Backup' Job to succeed, +firewall.mydomain.tld:9103 MUST be forwarded using the firewall's +configuration software to server.int.mydomain.tld:9103. Some firewalls call +this 'Server Publication'. Others may call it 'Port Forwarding'. + +\subsection{Firewall Problems} +\index[general]{Firewall Problems} +\index[general]{Problems!Firewalls} +Either a firewall or a router may decide to timeout and terminate +open connections if they are not active for a short time. By Internet +standards the period should be two hours, and should be indefinitely +extended if KEEPALIVE is set as is the case by Bacula. If your firewall +or router does not respect these rules, you may find Bacula connections +terminated. In that case, the first thing to try is turning on the +{\bf Heart Beat Interval} both in the File daemon and the Storage daemon +and set an interval of say five minutes. + +Also, if you have denial of service rate limiting in your firewall, this +too can cause Bacula disconnects since Bacula can at times use very high +access rates. To avoid this, you should implement default accept +rules for the Bacula ports involved before the rate limiting rules. + +Finally, if you have a Windows machine, it will most likely by default +disallow connections to the Bacula Windows File daemon. See the +Windows chapter of this manual for additional details. diff --git a/docs/manuals/fr/problems/base/kaboom.tex b/docs/manuals/fr/problems/base/kaboom.tex new file mode 100644 index 00000000..a4e5bc57 --- /dev/null +++ b/docs/manuals/fr/problems/base/kaboom.tex @@ -0,0 +1,233 @@ +%% +%% + +\chapter{What To Do When Bacula Crashes (Kaboom)} +\label{KaboomChapter} +\index[general]{Kaboom!What To Do When Bacula Crashes } +\index[general]{What To Do When Bacula Crashes (Kaboom) } + +If you are running on a Linux system, and you have a set of working +configuration files, it is very unlikely that {\bf Bacula} will crash. As with +all software, however, it is inevitable that someday, it may crash, +particularly if you are running on another operating system or using a new or +unusual feature. + +This chapter explains what you should do if one of the three {\bf Bacula} +daemons (Director, File, Storage) crashes. When we speak of crashing, we +mean that the daemon terminates abnormally because of an error. There are +many cases where Bacula detects errors (such as PIPE errors) and will fail +a job. These are not considered crashes. In addition, under certain +conditions, Bacula will detect a fatal in the configuration, such as +lack of permission to read/write the working directory. In that case, +Bacula will force itself to crash with a SEGFAULT. However, before +crashing, Bacula will normally display a message indicating why. +For more details, please read on. + + +\section{Traceback} +\index[general]{Traceback} + +Each of the three Bacula daemons has a built-in exception handler which, in +case of an error, will attempt to produce a traceback. If successful the +traceback will be emailed to you. + +For this to work, you need to ensure that a few things are setup correctly on +your system: + +\begin{enumerate} +\item You must have a version of Bacula built with debug information turned + on and not stripped of debugging symbols. + +\item You must have an installed copy of {\bf gdb} (the GNU debugger), and it + must be on {\bf Bacula's} path. On some systems such as Solaris, {\bf + gdb} may be replaced by {\bf dbx}. + +\item The Bacula installed script file {\bf btraceback} must be in the same + directory as the daemon which dies, and it must be marked as executable. + +\item The script file {\bf btraceback.gdb} must have the correct path to it + specified in the {\bf btraceback} file. + +\item You must have a {\bf mail} program which is on {\bf Bacula's} path. + By default, this {\bf mail} program is set to {\bf bsmtp}, so it must + be correctly configured. + +\item If you run either the Director or Storage daemon under a non-root + userid, you will most likely need to modify the {\bf btraceback} file + to do something like {\bf sudo} (raise to root priority) for the + call to {\bf gdb} so that it has the proper permissions to debug + Bacula. +\end{enumerate} + +If all the above conditions are met, the daemon that crashes will produce a +traceback report and email it to you. If the above conditions are not true, +you can either run the debugger by hand as described below, or you may be able +to correct the problems by editing the {\bf btraceback} file. I recommend not +spending too much time on trying to get the traceback to work as it can be +very difficult. + +The changes that might be needed are to add a correct path to the {\bf gdb} +program, correct the path to the {\bf btraceback.gdb} file, change the {\bf +mail} program or its path, or change your email address. The key line in the +{\bf btraceback} file is: + +\footnotesize +\begin{verbatim} +gdb -quiet -batch -x /home/kern/bacula/bin/btraceback.gdb \ + $1 $2 2>\&1 | bsmtp -s "Bacula traceback" your-address@xxx.com +\end{verbatim} +\normalsize + +Since each daemon has the same traceback code, a single btraceback file is +sufficient if you are running more than one daemon on a machine. + +\section{Testing The Traceback} +\index[general]{Traceback!Testing The } +\index[general]{Testing The Traceback } + +To "manually" test the traceback feature, you simply start {\bf Bacula} then +obtain the {\bf PID} of the main daemon thread (there are multiple threads). +The output produced here will look different depending on what OS and what +version of the kernel you are running. +Unfortunately, the output had to be split to fit on this page: + +\footnotesize +\begin{verbatim} +[kern@rufus kern]$ ps fax --columns 132 | grep bacula-dir + 2103 ? S 0:00 /home/kern/bacula/k/src/dird/bacula-dir -c + /home/kern/bacula/k/src/dird/dird.conf + 2104 ? S 0:00 \_ /home/kern/bacula/k/src/dird/bacula-dir -c + /home/kern/bacula/k/src/dird/dird.conf + 2106 ? S 0:00 \_ /home/kern/bacula/k/src/dird/bacula-dir -c + /home/kern/bacula/k/src/dird/dird.conf + 2105 ? S 0:00 \_ /home/kern/bacula/k/src/dird/bacula-dir -c + /home/kern/bacula/k/src/dird/dird.conf +\end{verbatim} +\normalsize + +which in this case is 2103. Then while Bacula is running, you call the program +giving it the path to the Bacula executable and the {\bf PID}. In this case, +it is: + +\footnotesize +\begin{verbatim} +./btraceback /home/kern/bacula/k/src/dird 2103 +\end{verbatim} +\normalsize + +It should produce an email showing you the current state of the daemon (in +this case the Director), and then exit leaving {\bf Bacula} running as if +nothing happened. If this is not the case, you will need to correct the +problem by modifying the {\bf btraceback} script. + +Typical problems might be that {\bf gdb} or {\bf dbx} for Solaris is not on +the default path. Fix this by specifying the full path to it in the {\bf +btraceback} file. Another common problem is that you haven't modified the +script so that the {\bf bsmtp} program has an appropriate smtp server or +the proper syntax for your smtp server. If you use the {\bf mail} program +and it is not on the default path, it will also fail. On some systems, it +is preferable to use {\bf Mail} rather than {\bf mail}. + +\section{Getting A Traceback On Other Systems} +\index[general]{Getting A Traceback On Other Systems} +\index[general]{Systems!Getting A Traceback On Other} + +It should be possible to produce a similar traceback on systems other than +Linux, either using {\bf gdb} or some other debugger. Solaris with {\bf dbx} +loaded works quite fine. On other systems, you will need to modify the {\bf +btraceback} program to invoke the correct debugger, and possibly correct the +{\bf btraceback.gdb} script to have appropriate commands for your debugger. If +anyone succeeds in making this work with another debugger, please send us a +copy of what you modified. Please keep in mind that for any debugger to +work, it will most likely need to run as root, so you may need to modify +the {\bf btraceback} script accordingly. + +\label{ManuallyDebugging} +\section{Manually Running Bacula Under The Debugger} +\index[general]{Manually Running Bacula Under The Debugger} +\index[general]{Debugger!Manually Running Bacula Under The} + +If for some reason you cannot get the automatic traceback, or if you want to +interactively examine the variable contents after a crash, you can run Bacula +under the debugger. Assuming you want to run the Storage daemon under the +debugger (the technique is the same for the other daemons, only the name +changes), you would do the following: + +\begin{enumerate} +\item Start the Director and the File daemon. If the Storage daemon also + starts, you will need to find its PID as shown above (ps fax | grep + bacula-sd) and kill it with a command like the following: + +\footnotesize +\begin{verbatim} + kill -15 PID +\end{verbatim} +\normalsize + +where you replace {\bf PID} by the actual value. + +\item At this point, the Director and the File daemon should be running but + the Storage daemon should not. + +\item cd to the directory containing the Storage daemon + +\item Start the Storage daemon under the debugger: + + \footnotesize +\begin{verbatim} + gdb ./bacula-sd +\end{verbatim} +\normalsize + +\item Run the Storage daemon: + + \footnotesize +\begin{verbatim} + run -s -f -c ./bacula-sd.conf +\end{verbatim} +\normalsize + +You may replace the {\bf ./bacula-sd.conf} with the full path to the Storage +daemon's configuration file. + +\item At this point, Bacula will be fully operational. + +\item In another shell command window, start the Console program and do what + is necessary to cause Bacula to die. + +\item When Bacula crashes, the {\bf gdb} shell window will become active and + {\bf gdb} will show you the error that occurred. + +\item To get a general traceback of all threads, issue the following command: + + +\footnotesize +\begin{verbatim} + thread apply all bt +\end{verbatim} +\normalsize + +After that you can issue any debugging command. +\end{enumerate} + +\section{Getting Debug Output from Bacula} +\index[general]{Getting Debug Output from Bacula } +Each of the daemons normally has debug compiled into the program, but +disabled. There are two ways to enable the debug output. One is to add the +{\bf -d nnn} option on the command line when starting the debugger. The {\bf +nnn} is the debug level, and generally anything between 50 and 200 is +reasonable. The higher the number, the more output is produced. The output is +written to standard output. + +The second way of getting debug output is to dynamically turn it on using the +Console using the {\bf setdebug} command. The full syntax of the command is: + +\footnotesize +\begin{verbatim} + setdebug level=nnn client=client-name storage=storage-name dir +\end{verbatim} +\normalsize + +If none of the options are given, the command will prompt you. You can +selectively turn on/off debugging in any or all the daemons (i.e. it is not +necessary to specify all the components of the above command). diff --git a/docs/manuals/fr/problems/base/problems.tex b/docs/manuals/fr/problems/base/problems.tex new file mode 100644 index 00000000..ff6a874a --- /dev/null +++ b/docs/manuals/fr/problems/base/problems.tex @@ -0,0 +1,84 @@ +%% +%% +%% The following characters must be preceded by a backslash +%% to be entered as printable characters: +%% +%% # $ % & ~ _ ^ \ { } +%% + +\documentclass[10pt,a4paper]{book} + +\topmargin -0.5in +\oddsidemargin 0.0in +\evensidemargin 0.0in +\textheight 10in +\textwidth 6.5in + +\usepackage{html} +\usepackage{float} +\usepackage{graphicx} +\usepackage{bacula} +\usepackage{longtable} +\usepackage{makeidx} +\usepackage{index} +\usepackage{setspace} +\usepackage{hyperref} +\usepackage{url} + + +\makeindex +\newindex{general}{idx}{ind}{General Index} + +\sloppy + +\begin{document} +\sloppy + +\newfont{\bighead}{cmr17 at 36pt} +\parskip 10pt +\parindent 0pt + +\title{\includegraphics{\idir bacula-logo.eps} \\ \bigskip + \Huge{Bacula Problem Resolution Guide} + \begin{center} + \large{It comes in the night and sucks + the essence from your computers. } + \end{center} +} + + +\author{Kern Sibbald} +\date{\vspace{1.0in}\today \\ + This manual documents Bacula version \input{version} \\ + \vspace{0.2in} + Copyright \copyright 1999-2010, Free Software Foundation Europe + e.V. \\ + \vspace{0.2in} + Permission is granted to copy, distribute and/or modify this document under the terms of the + GNU Free Documentation License, Version 1.2 published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. + A copy of the license is included in the section entitled "GNU Free Documentation License". +} + +\maketitle + +\clearpage +\tableofcontents +\clearpage + +\include{faq} +\include{tips} +\include{tapetesting} +\include{firewalls} +\include{kaboom} +\include{fdl} + + +% The following line tells link_resolver.pl to not include these files: +% nolinks developersi baculai-dir baculai-fd baculai-sd baculai-console baculai-main + +% pull in the index +\clearpage +\printindex[general] + +\end{document} diff --git a/docs/manuals/fr/problems/base/rpm-faq.tex b/docs/manuals/fr/problems/base/rpm-faq.tex new file mode 100644 index 00000000..127fc39c --- /dev/null +++ b/docs/manuals/fr/problems/base/rpm-faq.tex @@ -0,0 +1,395 @@ +%% +%% + +\chapter{Bacula RPM Packaging FAQ} +\label{RpmFaqChapter} +\index[general]{FAQ!Bacula\textsuperscript{\textregistered} - RPM Packaging } +\index[general]{Bacula\textsuperscript{\textregistered} - RPM Packaging FAQ } + +\begin{enumerate} +\item + \ilink{How do I build Bacula for platform xxx?}{faq1} +\item + \ilink{How do I control which database support gets built?}{faq2} + +\item + \ilink{What other defines are used?}{faq3} +\item + \ilink{I'm getting errors about not having permission when I try to build the + packages. Do I need to be root?}{faq4} +\item + \ilink{I'm building my own rpms but on all platforms and compiles I get an + unresolved dependency for something called + /usr/afsws/bin/pagsh.}{faq5} +\item + \ilink{I'm building my own rpms because you don't publish for my platform. + Can I get my packages released to sourceforge for other people to use?}{faq6} +\item + \ilink{Is there an easier way than sorting out all these command line options?}{faq7} +\item + \ilink{I just upgraded from 1.36.x to 1.38.x and now my director daemon won't start. It appears to start but dies silently and I get a "connection refused" error when starting the console. What is wrong?}{faq8} +\item + \ilink{There are a lot of rpm packages. Which packages do I need for what?}{faq9} +\end{enumerate} + +\section{Answers} +\index[general]{Answers } + +\begin{enumerate} +\item + \label{faq1} + {\bf How do I build Bacula for platform xxx?} + The bacula spec file contains defines to build for several platforms: + Red Hat 7.x (rh7), Red Hat 8.0 (rh8), Red Hat 9 (rh9), Fedora Core (fc1, + fc3, fc4, fc5, fc6, fc7), Whitebox Enterprise Linux 3.0 (wb3), Red Hat Enterprise Linux + (rhel3, rhel4, rhel5), Mandrake 10.x (mdk), Mandriva 2006.x (mdv) CentOS (centos3, centos4, centos5) + Scientific Linux (sl3, sl4, sl5) and SuSE (su9, su10, su102, su103). The package build is controlled by a mandatory define set at the beginning of the file. These defines basically just control the dependency information that gets coded into the finished rpm package as well + as any special configure options required. The platform define may be edited + in the spec file directly (by default all defines are set to 0 or "not set"). + For example, to build the Red Hat 7.x package find the line in the spec file + which reads + +\footnotesize +\begin{verbatim} + %define rh7 0 + +\end{verbatim} +\normalsize + +and edit it to read + +\footnotesize +\begin{verbatim} + %define rh7 1 + +\end{verbatim} +\normalsize + +Alternately you may pass the define on the command line when calling rpmbuild: + + +\footnotesize +\begin{verbatim} + rpmbuild -ba --define "build_rh7 1" bacula.spec + rpmbuild --rebuild --define build_rh7 1" bacula-x.x.x-x.src.rpm + +\end{verbatim} +\normalsize + +\item + \label{faq2} + {\bf How do I control which database support gets built?} + Another mandatory build define controls which database support is compiled, + one of build\_sqlite, build\_mysql or build\_postgresql. To get the MySQL + package and support either set the + +\footnotesize +\begin{verbatim} + %define mysql 0 + OR + %define mysql4 0 + OR + %define mysql5 0 + +\end{verbatim} +\normalsize + +to + +\footnotesize +\begin{verbatim} + %define mysql 1 + OR + %define mysql4 1 + OR + %define mysql5 1 + +\end{verbatim} +\normalsize + +in the spec file directly or pass it to rpmbuild on the command line: + +\footnotesize +\begin{verbatim} + rpmbuild -ba --define "build_rh7 1" --define "build_mysql 1" bacula.spec + rpmbuild -ba --define "build_rh7 1" --define "build_mysql4 1" bacula.spec + rpmbuild -ba --define "build_rh7 1" --define "build_mysql5 1" bacula.spec + +\end{verbatim} +\normalsize + +\item + \label{faq3} + {\bf What other defines are used?} + Three other building defines of note are the depkgs\_version, docs\_version and + \_rescuever identifiers. These two defines are set with each release and must + match the version of those sources that are being used to build the packages. + You would not ordinarily need to edit these. See also the Build Options section + below for other build time options that can be passed on the command line. +\item + \label{faq4} + {\bf I'm getting errors about not having permission when I try to build the + packages. Do I need to be root?} + No, you do not need to be root and, in fact, it is better practice to + build rpm packages as a non-root user. Bacula packages are designed to + be built by a regular user but you must make a few changes on your + system to do this. If you are building on your own system then the + simplest method is to add write permissions for all to the build + directory (/usr/src/redhat/, /usr/src/RPM or /usr/src/packages). + To accomplish this, execute the following command as root: + +\footnotesize +\begin{verbatim} + chmod -R 777 /usr/src/redhat + chmod -R 777 /usr/src/RPM + chmod -R 777 /usr/src/packages + +\end{verbatim} +\normalsize + +If you are working on a shared system where you can not use the method +above then you need to recreate the appropriate above directory tree with all +of its subdirectories inside your home directory. Then create a file named + +{\tt .rpmmacros} + +in your home directory (or edit the file if it already exists) +and add the following line: + +\footnotesize +\begin{verbatim} + %_topdir /home/myuser/redhat + %_tmppath /tmp + +\end{verbatim} +\normalsize + +Another handy directive for the .rpmmacros file if you wish to suppress the +creation of debug rpm packages is: + +\footnotesize +\begin{verbatim} + %debug_package %{nil} + +\end{verbatim} + +\normalsize + +\item + \label{faq5} + {\bf I'm building my own rpms but on all platforms and compiles I get an + unresolved dependency for something called /usr/afsws/bin/pagsh.} This + is a shell from the OpenAFS (Andrew File System). If you are seeing + this then you chose to include the docs/examples directory in your + package. One of the example scripts in this directory is a pagsh + script. Rpmbuild, when scanning for dependencies, looks at the shebang + line of all packaged scripts in addition to checking shared libraries. + To avoid this do not package the examples directory. If you are seeing this + problem you are building a very old bacula package as the examples have been + removed from the doc packaging. + +\item + \label{faq6} + {\bf I'm building my own rpms because you don't publish for my platform. + Can I get my packages released to sourceforge for other people to use?} Yes, + contributions from users are accepted and appreciated. Please examine the + directory platforms/contrib-rpm in the source code for further information. + +\item + \label{faq7} + {\bf Is there an easier way than sorting out all these command line options?} Yes, + there is a gui wizard shell script which you can use to rebuild the src rpm package. + Look in the source archive for platforms/contrib-rpm/rpm\_wizard.sh. This script will + allow you to specify build options using GNOME dialog screens. It requires zenity. + +\item + \label{faq8} + {\bf I just upgraded from 1.36.x to 1.38.x and now my director daemon +won't start. It appears to start but dies silently and I get a "connection +refused" error when starting the console. What is wrong?} Beginning with +1.38 the rpm packages are configured to run the director and storage +daemons as a non-root user. The file daemon runs as user root and group +bacula, the storage daemon as user bacula and group disk, and the director +as user bacula and group bacula. If you are upgrading you will need to +change some file permissions for things to work. Execute the following +commands as root: + +\footnotesize +\begin{verbatim} + chown bacula.bacula /var/bacula/* + chown root.bacula /var/bacula/bacula-fd.9102.state + chown bacula.disk /var/bacula/bacula-sd.9103.state + +\end{verbatim} +\normalsize + +Further, if you are using File storage volumes rather than tapes those +files will also need to have ownership set to user bacula and group bacula. + +\item + \label{faq9} + {\bf There are a lot of rpm packages. Which packages do I need for +what?} For a bacula server you need to select the packsge based upon your +preferred catalog database: one of bacula-mysql, bacula-postgresql or +bacula-sqlite. If your system does not provide an mtx package you also +need bacula-mtx to satisfy that dependancy. For a client machine you need +only install bacula-client. Optionally, for either server or client +machines, you may install a graphical console bacula-gconsole and/or +bacula-wxconsole. The Bacula Administration Tool is installed with the +bacula-bat package. One last package, bacula-updatedb is required only when +upgrading a server more than one database revision level. + + + +\item {\bf Support for RHEL3/4/5, CentOS 3/4/5, Scientific Linux 3/4/5 and x86\_64} + The examples below show + explicit build support for RHEL4 and CentOS 4. Build support + for x86\_64 has also been added. +\end{enumerate} + +\footnotesize +\begin{verbatim} +Build with one of these 3 commands: + +rpmbuild --rebuild \ + --define "build_rhel4 1" \ + --define "build_sqlite 1" \ + bacula-1.38.3-1.src.rpm + +rpmbuild --rebuild \ + --define "build_rhel4 1" \ + --define "build_postgresql 1" \ + bacula-1.38.3-1.src.rpm + +rpmbuild --rebuild \ + --define "build_rhel4 1" \ + --define "build_mysql4 1" \ + bacula-1.38.3-1.src.rpm + +For CentOS substitute '--define "build_centos4 1"' in place of rhel4. +For Scientific Linux substitute '--define "build_sl4 1"' in place of rhel4. + +For 64 bit support add '--define "build_x86_64 1"' +\end{verbatim} +\normalsize + +\section{Build Options} +\index[general]{Build Options} +The spec file currently supports building on the following platforms: +\footnotesize +\begin{verbatim} +Red Hat builds +--define "build_rh7 1" +--define "build_rh8 1" +--define "build_rh9 1" + +Fedora Core build +--define "build_fc1 1" +--define "build_fc3 1" +--define "build_fc4 1" +--define "build_fc5 1" +--define "build_fc6 1" +--define "build_fc7 1" + +Whitebox Enterprise build +--define "build_wb3 1" + +Red Hat Enterprise builds +--define "build_rhel3 1" +--define "build_rhel4 1" +--define "build_rhel5 1" + +CentOS build +--define "build_centos3 1" +--define "build_centos4 1" +--define "build_centos5 1" + +Scientific Linux build +--define "build_sl3 1" +--define "build_sl4 1" +--define "build_sl5 1" + +SuSE build +--define "build_su9 1" +--define "build_su10 1" +--define "build_su102 1" +--define "build_su103 1" + +Mandrake 10.x build +--define "build_mdk 1" + +Mandriva build +--define "build_mdv 1" + +MySQL support: +for mysql 3.23.x support define this +--define "build_mysql 1" +if using mysql 4.x define this, +currently: Mandrake 10.x, Mandriva 2006.0, SuSE 9.x & 10.0, FC4 & RHEL4 +--define "build_mysql4 1" +if using mysql 5.x define this, +currently: SuSE 10.1 & FC5 +--define "build_mysql5 1" + +PostgreSQL support: +--define "build_postgresql 1" + +Sqlite support: +--define "build_sqlite 1" + +Build the client rpm only in place of one of the above database full builds: +--define "build_client_only 1" + +X86-64 support: +--define "build_x86_64 1" + +Supress build of bgnome-console: +--define "nobuild_gconsole 1" + +Build the WXWindows console: +requires wxGTK >= 2.6 +--define "build_wxconsole 1" + +Build the Bacula Administration Tool: +requires QT >= 4.2 +--define "build_bat 1" + +Build python scripting support: +--define "build_python 1" + +Modify the Packager tag for third party packages: +--define "contrib_packager Your Name " + +\end{verbatim} +\normalsize + +\section{RPM Install Problems} +\index[general]{RPM Install Problems} +In general the RPMs, once properly built should install correctly. +However, when attempting to run the daemons, a number of problems +can occur: +\begin{itemize} +\item [Wrong /var/bacula Permissions] + By default, the Director and Storage daemon do not run with + root permission. If the /var/bacula is owned by root, then it + is possible that the Director and the Storage daemon will not + be able to access this directory, which is used as the Working + Directory. To fix this, the easiest thing to do is: +\begin{verbatim} + chown bacula:bacula /var/bacula +\end{verbatim} + Note: as of 1.38.8 /var/bacula is installed root:bacula with + permissions 770. +\item [The Storage daemon cannot Access the Tape drive] + This can happen in some older RPM releases where the Storage + daemon ran under userid bacula, group bacula. There are two + ways of fixing this: the best is to modify the /etc/init.d/bacula-sd + file so that it starts the Storage daemon with group "disk". + The second way to fix the problem is to change the permissions + of your tape drive (usually /dev/nst0) so that Bacula can access it. + You will probably need to change the permissions of the SCSI control + device as well, which is usually /dev/sg0. The exact names depend + on your configuration, please see the Tape Testing chapter for + more information on devices. +\end{itemize} + diff --git a/docs/manuals/fr/problems/base/tapetesting.tex b/docs/manuals/fr/problems/base/tapetesting.tex new file mode 100644 index 00000000..710f90e7 --- /dev/null +++ b/docs/manuals/fr/problems/base/tapetesting.tex @@ -0,0 +1,1376 @@ +%% +%% + +\chapter{Testing Your Tape Drive With Bacula} +\label{TapeTestingChapter} +\index[general]{Testing Your Tape Drive With Bacula} + +This chapter is concerned with testing and configuring your tape drive to make +sure that it will work properly with Bacula using the {\bf btape} program. +\label{summary} + +\section{Get Your Tape Drive Working} + +In general, you should follow the following steps to get your tape drive to +work with Bacula. Start with a tape mounted in your drive. If you have an +autochanger, load a tape into the drive. We use {\bf /dev/nst0} as the tape +drive name, you will need to adapt it according to your system. + +Do not proceed to the next item until you have succeeded with the previous +one. + +\begin{enumerate} +\item Make sure that Bacula (the Storage daemon) is not running + or that you have {\bf unmount}ed the drive you will use + for testing. + +\item Use tar to write to, then read from your drive: + + \footnotesize +\begin{verbatim} + mt -f /dev/nst0 rewind + tar cvf /dev/nst0 . + mt -f /dev/nst0 rewind + tar tvf /dev/nst0 + +\end{verbatim} +\normalsize + +\item Make sure you have a valid and correct Device resource corresponding + to your drive. For Linux users, generally, the default one works. For + FreeBSD users, there are two possible Device configurations (see below). + For other drives and/or OSes, you will need to first ensure that your + system tape modes are properly setup (see below), then possibly modify + you Device resource depending on the output from the btape program (next + item). When doing this, you should consult the \ilink{Storage Daemon + Configuration}{StoredConfChapter} of this manual. + +\item If you are using a Fibre Channel to connect your tape drive to + Bacula, please be sure to disable any caching in the NSR (network + storage router, which is a Fibre Channel to SCSI converter). + +\item Run the btape {\bf test} command: + + \footnotesize +\begin{verbatim} + ./btape -c bacula-sd.conf /dev/nst0 + test + +\end{verbatim} +\normalsize + + It isn't necessary to run the autochanger part of the test at this time, + but do not go past this point until the basic test succeeds. If you do + have an autochanger, please be sure to read the \ilink{Autochanger + chapter}{AutochangersChapter} of this manual. + +\item Run the btape {\bf fill} command, preferably with two volumes. This + can take a long time. If you have an autochanger and it is configured, Bacula + will automatically use it. If you do not have it configured, you can manually + issue the appropriate {\bf mtx} command, or press the autochanger buttons to + change the tape when requested to do so. + +\item FreeBSD users, if you have a pre-5.0 system run the {\bf tapetest} + program, and make sure your system is patched if necessary. The tapetest + program can be found in the platform/freebsd directory. The instructions + for its use are at the top of the file. + +\item Run Bacula, and backup a reasonably small directory, say 60 + Megabytes. Do three successive backups of this directory. + +\item Stop Bacula, then restart it. Do another full backup of the same + directory. Then stop and restart Bacula. + +\item Do a restore of the directory backed up, by entering the following + restore command, being careful to restore it to an alternate location: + + +\footnotesize +\begin{verbatim} + restore select all done + yes + +\end{verbatim} +\normalsize + + Do a {\bf diff} on the restored directory to ensure it is identical to the + original directory. If you are going to backup multiple different systems + (Linux, Windows, Mac, Solaris, FreeBSD, ...), be sure you test the restore + on each system type. + +\item If you have an autochanger, you should now go back to the btape program + and run the autochanger test: + +\footnotesize +\begin{verbatim} + ./btape -c bacula-sd.conf /dev/nst0 + auto + +\end{verbatim} +\normalsize + + Adjust your autochanger as necessary to ensure that it works correctly. See + the Autochanger chapter of this manual for a complete discussion of testing + your autochanger. + +\item We strongly recommend that you use a dedicated SCSI + controller for your tape drives. Scanners are known to induce + serious problems with the SCSI bus, causing it to reset. If the + SCSI bus is reset while Bacula has the tape drive open, it will + most likely be fatal to your tape since the drive will rewind. + These kinds of problems show up in the system log. For example, + the following was most likely caused by a scanner: + +\footnotesize +\begin{verbatim} +Feb 14 17:29:55 epohost kernel: (scsi0:A:2:0): No or incomplete CDB sent to device. +Feb 14 17:29:55 epohost kernel: scsi0: Issued Channel A Bus Reset. 1 SCBs aborted +\end{verbatim} +\normalsize + +\end{enumerate} + +If you have reached this point, you stand a good chance of having everything +work. If you get into trouble at any point, {\bf carefully} read the +documentation given below. If you cannot get past some point, ask the {\bf +bacula-users} email list, but specify which of the steps you have successfully +completed. In particular, you may want to look at the +\ilink{ Tips for Resolving Problems}{problems1} section below. + + +\label{NoTapeInDrive} +\subsection{Problems When no Tape in Drive} +\index[general]{Problems When no Tape in Drive} +When Bacula was first written the Linux 2.4 kernel permitted opening the +drive whether or not there was a tape in the drive. Thus the Bacula code is +based on the concept that if the drive cannot be opened, there is a serious +problem, and the job is failed. + +With version 2.6 of the Linux kernel, if there is no tape in the drive, the +OS will wait two minutes (default) and then return a failure, and consequently, +Bacula version 1.36 and below will fail the job. This is important to keep +in mind, because if you use an option such as {\bf Offline on Unmount = +yes}, there will be a point when there is no tape in the drive, and if +another job starts or if Bacula asks the operator to mount a tape, when +Bacula attempts to open the drive (about a 20 minute delay), it will fail +and Bacula will fail the job. + +In version 1.38.x, the Bacula code partially gets around this problem -- at +least in the initial open of the drive. However, functions like Polling +the drive do not work correctly if there is no tape in the drive. +Providing you do not use {\bf Offline on Unmount = yes}, you should not +experience job failures as mentioned above. If you do experience such +failures, you can also increase the {\bf Maximum Open Wait} time interval, +which will give you more time to mount the next tape before the job is +failed. + +\subsection{Specifying the Configuration File} +\index[general]{File!Specifying the Configuration} +\index[general]{Specifying the Configuration File} + +Starting with version 1.27, each of the tape utility programs including the +{\bf btape} program requires a valid Storage daemon configuration file +(actually, the only part of the configuration file that {\bf btape} needs is +the {\bf Device} resource definitions). This permits {\bf btape} to find the +configuration parameters for your archive device (generally a tape drive). +Without those parameters, the testing and utility programs do not know how to +properly read and write your drive. By default, they use {\bf bacula-sd.conf} +in the current directory, but you may specify a different configuration file +using the {\bf -c} option. + +\subsection{Specifying a Device Name For a Tape} +\index[general]{Tape!Specifying a Device Name For a} +\index[general]{Specifying a Device Name For a Tape} + +{\bf btape} {\bf device-name} where the Volume can be found. In the case of a +tape, this is the physical device name such as {\bf /dev/nst0} or {\bf +/dev/rmt/0ubn} depending on your system that you specify on the Archive Device +directive. For the program to work, it must find the identical name in the +Device resource of the configuration file. If the name is not found in the +list of physical names, the utility program will compare the name you entered +to the Device names (rather than the Archive device names). + +When specifying a tape device, it is preferable that the "non-rewind" +variant of the device file name be given. In addition, on systems such as +Sun, which have multiple tape access methods, you must be sure to specify +to use Berkeley I/O conventions with the device. The +{\bf b} in the Solaris (Sun) archive specification {\bf /dev/rmt/0mbn} is +what is needed in this case. Bacula does not support SysV tape drive +behavior. + +See below for specifying Volume names. + +\subsection{Specifying a Device Name For a File} +\index[general]{File!Specifying a Device Name For a} +\index[general]{Specifying a Device Name For a File} + +If you are attempting to read or write an archive file rather than a tape, the +{\bf device-name} should be the full path to the archive location including +the filename. The filename (last part of the specification) will be stripped +and used as the Volume name, and the path (first part before the filename) +must have the same entry in the configuration file. So, the path is equivalent +to the archive device name, and the filename is equivalent to the volume name. + + +\section{btape} +\label{btape1} +\index[general]{Btape} + +This program permits a number of elementary tape operations via a tty command +interface. The {\bf test} command, described below, can be very useful for +testing tape drive compatibility problems. Aside from initial testing of tape +drive compatibility with {\bf Bacula}, {\bf btape} will be mostly used by +developers writing new tape drivers. + +{\bf btape} can be dangerous to use with existing {\bf Bacula} tapes because +it will relabel a tape or write on the tape if so requested regardless of +whether or not the tape contains valuable data, so please be careful and use +it only on blank tapes. + +To work properly, {\bf btape} needs to read the Storage daemon's configuration +file. As a default, it will look for {\bf bacula-sd.conf} in the current +directory. If your configuration file is elsewhere, please use the {\bf -c} +option to specify where. + +The physical device name or the Device resource name must be specified on the +command line, and this same device name must be present in the Storage +daemon's configuration file read by {\bf btape} + +\footnotesize +\begin{verbatim} +Usage: btape [options] device_name + -b specify bootstrap file + -c set configuration file to file + -d set debug level to nn + -p proceed inspite of I/O errors + -s turn off signals + -v be verbose + -? print this message. +\end{verbatim} +\normalsize + +\subsection{Using btape to Verify your Tape Drive} +\index[general]{Using btape to Verify your Tape Drive} +\index[general]{Drive!Using btape to Verify your Tape} + +An important reason for this program is to ensure that a Storage daemon +configuration file is defined so that Bacula will correctly read and write +tapes. + +It is highly recommended that you run the {\bf test} command before running +your first Bacula job to ensure that the parameters you have defined for your +storage device (tape drive) will permit {\bf Bacula} to function properly. You +only need to mount a blank tape, enter the command, and the output should be +reasonably self explanatory. For example: + +\footnotesize +\begin{verbatim} +(ensure that Bacula is not running) +./btape -c /usr/bin/bacula/bacula-sd.conf /dev/nst0 +\end{verbatim} +\normalsize + +The output will be: + +\footnotesize +\begin{verbatim} +Tape block granularity is 1024 bytes. +btape: btape.c:376 Using device: /dev/nst0 +* +\end{verbatim} +\normalsize + +Enter the test command: + +\footnotesize +\begin{verbatim} +test +\end{verbatim} +\normalsize + +The output produced should be something similar to the following: I've cut the +listing short because it is frequently updated to have new tests. + +\footnotesize +\begin{verbatim} +=== Append files test === +This test is essential to Bacula. +I'm going to write one record in file 0, + two records in file 1, + and three records in file 2 +btape: btape.c:387 Rewound /dev/nst0 +btape: btape.c:855 Wrote one record of 64412 bytes. +btape: btape.c:857 Wrote block to device. +btape: btape.c:410 Wrote EOF to /dev/nst0 +btape: btape.c:855 Wrote one record of 64412 bytes. +btape: btape.c:857 Wrote block to device. +btape: btape.c:855 Wrote one record of 64412 bytes. +btape: btape.c:857 Wrote block to device. +btape: btape.c:410 Wrote EOF to /dev/nst0 +btape: btape.c:855 Wrote one record of 64412 bytes. +btape: btape.c:857 Wrote block to device. +btape: btape.c:855 Wrote one record of 64412 bytes. +btape: btape.c:857 Wrote block to device. +btape: btape.c:855 Wrote one record of 64412 bytes. +btape: btape.c:857 Wrote block to device. +btape: btape.c:410 Wrote EOF to /dev/nst0 +btape: btape.c:387 Rewound /dev/nst0 +btape: btape.c:693 Now moving to end of media. +btape: btape.c:427 Moved to end of media +We should be in file 3. I am at file 3. This is correct! +Now the important part, I am going to attempt to append to the tape. +... +=== End Append files test === +\end{verbatim} +\normalsize + +If you do not successfully complete the above test, please resolve the +problem(s) before attempting to use {\bf Bacula}. Depending on your tape +drive, the test may recommend that you add certain records to your +configuration. We strongly recommend that you do so and then re-run the above +test to insure it works the first time. + +Some of the suggestions it provides for resolving the problems may or may not +be useful. If at all possible avoid using fixed blocking. If the test suddenly +starts to print a long series of: + +\footnotesize +\begin{verbatim} +Got EOF on tape. +Got EOF on tape. +... +\end{verbatim} +\normalsize + +then almost certainly, you are running your drive in fixed block mode rather +than variable block mode. See below for more help of resolving fix +versus variable block problems. + +It is also possible that you have your drive +set in SysV tape drive mode. The drive must use BSD tape conventions. +See the section above on setting your {\bf Archive device} correctly. + +For FreeBSD users, please see the notes below for doing further testing of +your tape drive. + +\subsection{Testing tape drive speed} +\label{sec:btapespeed} + +To determine the best configuration of your tape drive, you can run the +\texttt{speed} command available in the \texttt{btape} program. + +This command can have the following arguments: +\begin{itemize} +\item[\texttt{file\_size=n}] Specify the Maximum File Size for this test + (between 1 and 5GB). This counter is in GB. +\item[\texttt{nb\_file=n}] Specify the number of file to be written. The amount + of data should be greater than your memory ($file\_size*nb\_file$). +\item[\texttt{skip\_zero}] This flag permits to skip tests with constant + data. +\item[\texttt{skip\_random}] This flag permits to skip tests with random + data. +\item[\texttt{skip\_raw}] This flag permits to skip tests with raw access. +\item[\texttt{skip\_block}] This flag permits to skip tests with Bacula block + access. +\end{itemize} + +\begin{verbatim} +*speed file_size=3 skip_raw +btape.c:1078 Test with zero data and bacula block structure. +btape.c:956 Begin writing 3 files of 3.221 GB with blocks of 129024 bytes. +++++++++++++++++++++++++++++++++++++++++++ +btape.c:604 Wrote 1 EOF to "Drive-0" (/dev/nst0) +btape.c:406 Volume bytes=3.221 GB. Write rate = 44.128 MB/s +... +btape.c:383 Total Volume bytes=9.664 GB. Total Write rate = 43.531 MB/s + +btape.c:1090 Test with random data, should give the minimum throughput. +btape.c:956 Begin writing 3 files of 3.221 GB with blocks of 129024 bytes. ++++++++++++++++++++++++++++++++++++++++++++ +btape.c:604 Wrote 1 EOF to "Drive-0" (/dev/nst0) +btape.c:406 Volume bytes=3.221 GB. Write rate = 7.271 MB/s ++++++++++++++++++++++++++++++++++++++++++++ +... +btape.c:383 Total Volume bytes=9.664 GB. Total Write rate = 7.365 MB/s + +\end{verbatim} + +When using compression, the random test will give your the minimum throughput +of your drive . The test using constant string will give you the maximum speed +of your hardware chain. (cpu, memory, scsi card, cable, drive, tape). + +You can change the block size in the Storage Daemon configuration file. + +\label{SCSITricks} +\subsection{Linux SCSI Tricks} +\index[general]{Tricks!Linux SCSI} +\index[general]{Linux SCSI Tricks} + +You can find out what SCSI devices you have by doing: + +\footnotesize +\begin{verbatim} +lsscsi +\end{verbatim} +\normalsize + +Typical output is: + +\footnotesize +\begin{verbatim} +[0:0:0:0] disk ATA ST3160812AS 3.AD /dev/sda +[2:0:4:0] tape HP Ultrium 2-SCSI F6CH /dev/st0 +[2:0:5:0] tape HP Ultrium 2-SCSI F6CH /dev/st1 +[2:0:6:0] mediumx OVERLAND LXB 0107 - +[2:0:9:0] tape HP Ultrium 1-SCSI E50H /dev/st2 +[2:0:10:0] mediumx OVERLAND LXB 0107 - +\end{verbatim} +\normalsize + +There are two drives in one autochanger: /dev/st0 and /dev/st1 +and a third tape drive at /dev/st2. For using them with Bacula, one +would normally reference them as /dev/nst0 ... /dev/nst2. Not also, +there are two different autochangers identified as "mediumx OVERLAND LXB". +They can be addressed via their /dev/sgN designation, which can be +obtained by counting from the beginning as 0 to each changer. In the +above case, the two changers are located on /dev/sg3 and /dev/sg5. The one +at /dev/sg3, controls drives /dev/nst0 and /dev/nst1; and the one at +/dev/sg5 controles drive /dev/nst2. + +If you do not have the {\bf lsscsi} command, you can obtain the same +information as follows: + +\footnotesize +\begin{verbatim} +cat /proc/scsi/scsi +\end{verbatim} +\normalsize + +For the above example with the three drives and two autochangers, +I get: + +\footnotesize +\begin{verbatim} +Attached devices: +Host: scsi0 Channel: 00 Id: 00 Lun: 00 + Vendor: ATA Model: ST3160812AS Rev: 3.AD + Type: Direct-Access ANSI SCSI revision: 05 +Host: scsi2 Channel: 00 Id: 04 Lun: 00 + Vendor: HP Model: Ultrium 2-SCSI Rev: F6CH + Type: Sequential-Access ANSI SCSI revision: 03 +Host: scsi2 Channel: 00 Id: 05 Lun: 00 + Vendor: HP Model: Ultrium 2-SCSI Rev: F6CH + Type: Sequential-Access ANSI SCSI revision: 03 +Host: scsi2 Channel: 00 Id: 06 Lun: 00 + Vendor: OVERLAND Model: LXB Rev: 0107 + Type: Medium Changer ANSI SCSI revision: 02 +Host: scsi2 Channel: 00 Id: 09 Lun: 00 + Vendor: HP Model: Ultrium 1-SCSI Rev: E50H + Type: Sequential-Access ANSI SCSI revision: 03 +Host: scsi2 Channel: 00 Id: 10 Lun: 00 + Vendor: OVERLAND Model: LXB Rev: 0107 + Type: Medium Changer ANSI SCSI revision: 02 +\end{verbatim} +\normalsize + + +As an additional example, I get the following (on a different machine from the +above example): + +\footnotesize +\begin{verbatim} +Attached devices: +Host: scsi2 Channel: 00 Id: 01 Lun: 00 + Vendor: HP Model: C5713A Rev: H107 + Type: Sequential-Access ANSI SCSI revision: 02 +Host: scsi2 Channel: 00 Id: 04 Lun: 00 + Vendor: SONY Model: SDT-10000 Rev: 0110 + Type: Sequential-Access ANSI SCSI revision: 02 +\end{verbatim} +\normalsize + +The above represents first an autochanger and second a simple +tape drive. The HP changer (the first entry) uses the same SCSI channel +for data and for control, so in Bacula, you would use: +\footnotesize +\begin{verbatim} +Archive Device = /dev/nst0 +Changer Device = /dev/sg0 +\end{verbatim} +\normalsize + +If you want to remove the SDT-10000 device, you can do so as root with: + +\footnotesize +\begin{verbatim} +echo "scsi remove-single-device 2 0 4 0">/proc/scsi/scsi +\end{verbatim} +\normalsize + +and you can put add it back with: + +\footnotesize +\begin{verbatim} +echo "scsi add-single-device 2 0 4 0">/proc/scsi/scsi +\end{verbatim} +\normalsize + +where the 2 0 4 0 are the Host, Channel, Id, and Lun as seen on the output +from {\bf cat /proc/scsi/scsi}. Note, the Channel must be specified as +numeric. + +Below is a slightly more complicated output, which is a single autochanger +with two drives, and which operates the changer on a different channel +from from the drives: + +\footnotesize +\begin{verbatim} +Attached devices: +Host: scsi0 Channel: 00 Id: 00 Lun: 00 + Vendor: ATA Model: WDC WD1600JD-75H Rev: 08.0 + Type: Direct-Access ANSI SCSI revision: 05 +Host: scsi2 Channel: 00 Id: 04 Lun: 00 + Vendor: HP Model: Ultrium 2-SCSI Rev: F6CH + Type: Sequential-Access ANSI SCSI revision: 03 +Host: scsi2 Channel: 00 Id: 05 Lun: 00 + Vendor: HP Model: Ultrium 2-SCSI Rev: F6CH + Type: Sequential-Access ANSI SCSI revision: 03 +Host: scsi2 Channel: 00 Id: 06 Lun: 00 + Vendor: OVERLAND Model: LXB Rev: 0106 + Type: Medium Changer ANSI SCSI revision: 02 +\end{verbatim} +\normalsize + +The above tape drives are accessed on /dev/nst0 and /dev/nst1, while +the control channel for those two drives is /dev/sg3. + + + +\label{problems1} +\section{Tips for Resolving Problems} +\index[general]{Problems!Tips for Resolving} +\index[general]{Tips for Resolving Problems} + +\label{CannotRestore} +\subsection{Bacula Saves But Cannot Restore Files} +\index[general]{Files!Bacula Saves But Cannot Restore} +\index[general]{Bacula Saves But Cannot Restore Files} + +If you are getting error messages such as: + +\footnotesize +\begin{verbatim} +Volume data error at 0:1! Wanted block-id: "BB02", got "". Buffer discarded +\end{verbatim} +\normalsize + +It is very likely that Bacula has tried to do block positioning and ended up +at an invalid block. This can happen if your tape drive is in fixed block mode +while Bacula's default is variable blocks. Note that in such cases, Bacula is +perfectly able to write to your Volumes (tapes), but cannot position to read +them. + +There are two possible solutions. + +\begin{enumerate} +\item The first and best is to always ensure that your drive is in variable + block mode. Note, it can switch back to fixed block mode on a reboot or if + another program uses the drive. So on such systems you need to modify the + Bacula startup files to explicitly set: + +\footnotesize +\begin{verbatim} +mt -f /dev/nst0 defblksize 0 +\end{verbatim} +\normalsize + +or whatever is appropriate on your system. Note, if you are running a Linux +system, and the above command does not work, it is most likely because you +have not loaded the appropriate {\bf mt} package, which is often called +{\bf mt\_st}, but may differ according to your distribution. + +\item The second possibility, especially, if Bacula wrote while the drive was + in fixed block mode, is to turn off block positioning in Bacula. This is done + by adding: + +\footnotesize +\begin{verbatim} +Block Positioning = no +\end{verbatim} +\normalsize + +to the Device resource. This is not the recommended procedure because it can +enormously slow down recovery of files, but it may help where all else +fails. This directive is available in version 1.35.5 or later (and not yet +tested). +\end{enumerate} + +If you are getting error messages such as: +\footnotesize +\begin{verbatim} +Volume data error at 0:0! +Block checksum mismatch in block=0 len=32625 calc=345678 blk=123456 +\end{verbatim} +\normalsize + +You are getting tape read errors, and this is most likely due to +one of the following things: +\begin{enumerate} +\item An old or bad tape. +\item A dirty drive that needs cleaning (particularly for DDS drives). +\item A loose SCSI cable. +\item Old firmware in your drive. Make sure you have the latest firmware + loaded. +\item Computer memory errors. +\item Over-clocking your CPU. +\item A bad SCSI card. +\end{enumerate} + + +\label{opendevice} +\subsection{Bacula Cannot Open the Device} +\index[general]{Device!Bacula Cannot Open the} +\index[general]{Bacula Cannot Open the Device} + +If you get an error message such as: + +\footnotesize +\begin{verbatim} +dev open failed: dev.c:265 stored: unable to open +device /dev/nst0:> ERR=No such device or address +\end{verbatim} +\normalsize + +the first time you run a job, it is most likely due to the fact that you +specified the incorrect device name on your {\bf Archive Device}. + +If Bacula works fine with your drive, then all off a sudden you get error +messages similar to the one shown above, it is quite possible that your driver +module is being removed because the kernel deems it idle. This is done via +{\bf crontab} with the use of {\bf rmmod -a}. To fix the problem, you can +remove this entry from {\bf crontab}, or you can manually {\bf modprob} your +driver module (or add it to the local startup script). Thanks to Alan Brown +for this tip. +\label{IncorrectFiles} + +\subsection{Incorrect File Number} +\index[general]{Number!Incorrect File} +\index[general]{Incorrect File Number} + +When Bacula moves to the end of the medium, it normally uses the {\bf +ioctl(MTEOM)} function. Then Bacula uses the {\bf ioctl(MTIOCGET)} function to +retrieve the current file position from the {\bf mt\_fileno} field. Some SCSI +tape drivers will use a fast means of seeking to the end of the medium and in +doing so, they will not know the current file position and hence return a {\bf +-1}. As a consequence, if you get {\bf "This is NOT correct!"} in the +positioning tests, this may be the cause. You must correct this condition in +order for Bacula to work. + +There are two possible solutions to the above problem of incorrect file +number: + +\begin{itemize} +\item Figure out how to configure your SCSI driver to keep track of the file + position during the MTEOM request. This is the preferred solution. +\item Modify the {\bf Device} resource of your {\bf bacula-sd.conf} file to + include: + +\footnotesize +\begin{verbatim} +Hardware End of File = no +\end{verbatim} +\normalsize + +This will cause Bacula to use the MTFSF request to seek to the end of the +medium, and Bacula will keep track of the file number itself. +\end{itemize} + +\label{IncorrectBlocks} +\subsection{Incorrect Number of Blocks or Positioning Errors} +\index[general]{Testing!Incorrect Number of Blocks or Positioning Errors} +\index[general]{Incorrect Number of Blocks or Positioning Errors} + +{\bf Bacula's} preferred method of working with tape drives (sequential +devices) is to run in variable block mode, and this is what is set by default. +You should first ensure that your tape drive is set for variable block mode +(see below). + +If your tape drive is in fixed block mode and you have told Bacula to use +different fixed block sizes or variable block sizes (default), you will get +errors when Bacula attempts to forward space to the correct block (the kernel +driver's idea of tape blocks will not correspond to Bacula's). + +All modern tape drives support variable tape blocks, but some older drives (in +particular the QIC drives) as well as the ATAPI ide-scsi driver run only in +fixed block mode. The Travan tape drives also apparently must run in fixed +block mode (to be confirmed). + +Even in variable block mode, with the exception of the first record on the +second or subsequent volume of a multi-volume backup, Bacula will write blocks +of a fixed size. However, in reading a tape, Bacula will assume that for each +read request, exactly one block from the tape will be transferred. This the +most common way that tape drives work and is well supported by {\bf Bacula}. + +Drives that run in fixed block mode can cause serious problems for Bacula if +the drive's block size does not correspond exactly to {\bf Bacula's} block +size. In fixed block size mode, drivers may transmit a partial block or +multiple blocks for a single read request. From {\bf Bacula's} point of view, +this destroys the concept of tape blocks. It is much better to run in variable +block mode, and almost all modern drives (the OnStream is an exception) run in +variable block mode. In order for Bacula to run in fixed block mode, you must +include the following records in the Storage daemon's Device resource +definition: + +\footnotesize +\begin{verbatim} +Minimum Block Size = nnn +Maximum Block Size = nnn +\end{verbatim} +\normalsize + +where {\bf nnn} must be the same for both records and must be identical to the +driver's fixed block size. + +We recommend that you avoid this configuration if at all possible by using +variable block sizes. + +If you must run with fixed size blocks, make sure they are not 512 bytes. This +is too small and the overhead that Bacula has with each record will become +excessive. If at all possible set any fixed block size to something like +64,512 bytes or possibly 32,768 if 64,512 is too large for your drive. See +below for the details on checking and setting the default drive block size. + +To recover files from tapes written in fixed block mode, see below. + +\label{TapeModes} +\subsection{Ensuring that the Tape Modes Are Properly Set -- {\bf Linux +Only}} +\index[general]{Ensuring that the Tape Modes Are Properly Set -- Linux Only} + +If you have a modern SCSI tape drive and you are having problems with the {\bf +test} command as noted above, it may be that some program has set one or more +of your SCSI driver's options to non-default values. For example, if your +driver is set to work in SysV manner, Bacula will not work correctly because +it expects BSD behavior. To reset your tape drive to the default values, you +can try the following, but {\bf ONLY} if you have a SCSI tape drive on a {\bf +Linux} system: + +\footnotesize +\begin{verbatim} +become super user +mt -f /dev/nst0 rewind +mt -f /dev/nst0 stoptions buffer-writes async-writes read-ahead +\end{verbatim} +\normalsize + +The above commands will clear all options and then set those specified. None +of the specified options are required by Bacula, but a number of other options +such as SysV behavior must not be set. Bacula does not support SysV tape +behavior. On systems other than Linux, you will need to consult your {\bf mt} +man pages or documentation to figure out how to do the same thing. This should +not really be necessary though -- for example, on both Linux and Solaris +systems, the default tape driver options are compatible with Bacula. +On Solaris systems, you must take care to specify the correct device +name on the {\bf Archive device} directive. See above for more details. + +You may also want to ensure that no prior program has set the default block +size, as happened to one user, by explicitly turning it off with: + +\footnotesize +\begin{verbatim} +mt -f /dev/nst0 defblksize 0 +\end{verbatim} +\normalsize + +If you are running a Linux +system, and the above command does not work, it is most likely because you +have not loaded the appropriate {\bf mt} package, which is often called +{\bf mt\_st}, but may differ according to your distribution. + +If you would like to know what options you have set before making any of the +changes noted above, you can now view them on Linux systems, thanks to a tip +provided by Willem Riede. Do the following: + +\footnotesize +\begin{verbatim} +become super user +mt -f /dev/nst0 stsetoptions 0 +grep st0 /var/log/messages +\end{verbatim} +\normalsize + +and you will get output that looks something like the following: + +\footnotesize +\begin{verbatim} +kernel: st0: Mode 0 options: buffer writes: 1, async writes: 1, read ahead: 1 +kernel: st0: can bsr: 0, two FMs: 0, fast mteom: 0, auto lock: 0, +kernel: st0: defs for wr: 0, no block limits: 0, partitions: 0, s2 log: 0 +kernel: st0: sysv: 0 nowait: 0 +\end{verbatim} +\normalsize + +Note, I have chopped off the beginning of the line with the date and machine +name for presentation purposes. + +Some people find that the above settings only last until the next reboot, so +please check this otherwise you may have unexpected problems. + +Beginning with Bacula version 1.35.8, if Bacula detects that you are running +in variable block mode, it will attempt to set your drive appropriately. All +OSes permit setting variable block mode, but some OSes do not permit setting +the other modes that Bacula needs to function properly. + +\label{compression} +\subsection{Tape Hardware Compression and Blocking Size} +\index[general]{Tape Hardware Compression and Blocking Size} +\index[general]{Size!Tape Hardware Compression and Blocking Size} + +You should be able to verify the tape compression status with sysfs on Linux. +\begin{verbatim} +cat /sys/class/scsi_tape/nst0/default_compression +\end{verbatim} + +You can, turn it on by using (on Linux): + +\footnotesize +\begin{verbatim} +become super user +mt -f /dev/nst0 defcompression 1 +\end{verbatim} +\normalsize + +and of course, if you use a zero instead of the one at the end, you will turn +it off. + +If you have built the {\bf mtx} program in the {\bf depkgs} package, you can +use tapeinfo to get quite a bit of information about your tape drive even if +it is not an autochanger. This program is called using the SCSI control +device. On Linux for tape drive /dev/nst0, this is usually /dev/sg0, while on +FreeBSD for /dev/nsa0, the control device is often /dev/pass2. For example on +my DDS-4 drive (/dev/nst0), I get the following: + +\footnotesize +\begin{verbatim} +tapeinfo -f /dev/sg0 +Product Type: Tape Drive +Vendor ID: 'HP ' +Product ID: 'C5713A ' +Revision: 'H107' +Attached Changer: No +MinBlock:1 +MaxBlock:16777215 +SCSI ID: 5 +SCSI LUN: 0 +Ready: yes +BufferedMode: yes +Medium Type: Not Loaded +Density Code: 0x26 +BlockSize: 0 +\end{verbatim} +\normalsize + +where the {\bf DataCompEnabled: yes} means that tape hardware compression is +turned on. You can turn it on and off (yes|no) by using the {\bf mt} +commands given above. Also, this output will tell you if the {\bf BlockSize} +is non-zero and hence set for a particular block size. Bacula is not likely to +work in such a situation because it will normally attempt to write blocks of +64,512 bytes, except the last block of the job which will generally be +shorter. The first thing to try is setting the default block size to zero +using the {\bf mt -f /dev/nst0 defblksize 0} command as shown above. +On FreeBSD, this would be something like: {\bf mt -f /dev/nsa0 blocksize 0}. + +On some operating systems with some tape drives, the amount of data that +can be written to the tape and whether or not compression is enabled is +determined by the density usually the {\bf mt -f /dev/nst0 setdensity xxx} command. +Often {\bf mt -f /dev/nst0 status} will print out the current +density code that is used with the drive. Most systems, but unfortunately +not all, set the density to the maximum by default. On some systems, you +can also get a list of all available density codes with: +{\bf mt -f /dev/nst0 densities} or a similar {\bf mt} command. +Note, for DLT and SDLT devices, no-compression versus compression is very +often controlled by the density code. On FreeBSD systems, the compression +mode is set using {\bf mt -f /dev/nsa0 comp xxx} where xxx is the +mode you want. In general, see {\bf man mt} for the options available on +your system. + +Note, some of the above {\bf mt} commands may not be persistent depending +on your system configuration. That is they may be reset if a program +other than Bacula uses the drive or, as is frequently the case, on reboot +of your system. + +If your tape drive requires fixed block sizes (very unusual), you can use the +following records: + +\footnotesize +\begin{verbatim} +Minimum Block Size = nnn +Maximum Block Size = nnn +\end{verbatim} +\normalsize + +in your Storage daemon's Device resource to force Bacula to write fixed size +blocks (where you sent nnn to be the same for both of the above records). This +should be done only if your drive does not support variable block sizes, or +you have some other strong reasons for using fixed block sizes. As mentioned +above, a small fixed block size of 512 or 1024 bytes will be very inefficient. +Try to set any fixed block size to something like 64,512 bytes or larger if +your drive will support it. + +Also, note that the {\bf Medium Type} field of the output of {\bf tapeinfo} +reports {\bf Not Loaded}, which is not correct. As a consequence, you should +ignore that field as well as the {\bf Attached Changer} field. + +To recover files from tapes written in fixed block mode, see below. +\label{FreeBSDTapes} + +\subsection{Tape Modes on FreeBSD} +\index[general]{FreeBSD!Tape Modes on} +\index[general]{Tape Modes on FreeBSD} + +On most FreeBSD systems such as 4.9 and most tape drives, Bacula should run +with: + +\footnotesize +\begin{verbatim} +mt -f /dev/nsa0 seteotmodel 2 +mt -f /dev/nsa0 blocksize 0 +mt -f /dev/nsa0 comp enable +\end{verbatim} +\normalsize + +You might want to put those commands in a startup script to make sure your +tape driver is properly initialized before running Bacula, because +depending on your system configuration, these modes may be reset if a +program other than Bacula uses the drive or when your system is rebooted. + +Then according to what the {\bf btape test} command returns, you will probably +need to set the following (see below for an alternative): + +\footnotesize +\begin{verbatim} + Hardware End of Medium = no + BSF at EOM = yes + Backward Space Record = no + Backward Space File = no + Fast Forward Space File = no + TWO EOF = yes +\end{verbatim} +\normalsize + +Then be sure to run some append tests with Bacula where you start and stop +Bacula between appending to the tape, or use {\bf btape} version 1.35.1 or +greater, which includes simulation of stopping/restarting Bacula. + +Please see the file {\bf platforms/freebsd/pthreads-fix.txt} in the main +Bacula directory concerning {\bf important} information concerning +compatibility of Bacula and your system. A much more optimal Device +configuration is shown below, but does not work with all tape drives. Please +test carefully before putting either into production. + +Note, for FreeBSD 4.10-RELEASE, using a Sony TSL11000 L100 DDS4 with an +autochanger set to variable block size and DCLZ compression, Brian McDonald +reports that to get Bacula to append correctly between Bacula executions, +the correct values to use are: + +\footnotesize +\begin{verbatim} +mt -f /dev/nsa0 seteotmodel 1 +mt -f /dev/nsa0 blocksize 0 +mt -f /dev/nsa0 comp enable +\end{verbatim} +\normalsize + +and + +\footnotesize +\begin{verbatim} + Hardware End of Medium = no + BSF at EOM = no + Backward Space Record = no + Backward Space File = no + Fast Forward Space File = yes + TWO EOF = no +\end{verbatim} +\normalsize + +This has been confirmed by several other people using different hardware. This +configuration is the preferred one because it uses one EOF and no backspacing +at the end of the tape, which works much more efficiently and reliably with +modern tape drives. + +Finally, here is a Device configuration that Danny Butroyd reports to work +correctly with the Overland Powerloader tape library using LT0-2 and +FreeBSD 5.4-Stable: + +\footnotesize +\begin{verbatim} +# Overland Powerloader LT02 - 17 slots single drive +Device { + Name = Powerloader + Media Type = LT0-2 + Archive Device = /dev/nsa0 + AutomaticMount = yes; + AlwaysOpen = yes; + RemovableMedia = yes; + RandomAccess = no; + Changer Command = "/usr/local/sbin/mtx-changer %c %o %S %a %d" + Changer Device = /dev/pass2 + AutoChanger = yes + Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'" + + # FreeBSD Specific Settings + Offline On Unmount = no + Hardware End of Medium = no + BSF at EOM = yes + Backward Space Record = no + Fast Forward Space File = no + TWO EOF = yes +} + +The following Device resource works fine with Dell PowerVault 110T and +120T devices on both FreeBSD 5.3 and on NetBSD 3.0. It also works +with Sony AIT-2 drives on FreeBSD. +\footnotesize +\begin{verbatim} +Device { + ... + # FreeBSD/NetBSD Specific Settings + Hardware End of Medium = no + BSF at EOM = yes + Backward Space Record = no + Fast Forward Space File = yes + TWO EOF = yes +} +\end{verbatim} +\normalsize + +On FreeBSD version 6.0, it is reported that you can even set +Backward Space Record = yes. + + + +\subsection{Finding your Tape Drives and Autochangers on FreeBSD} +\index[general]{FreeBSD!Finding Tape Drives and Autochangers} +\index[general]{Finding Tape Drives and Autochangers on FreeBSD} + +On FreeBSD, you can do a {\bf camcontrol devlist} as root to determine what +drives and autochangers you have. For example, + +\footnotesize +\begin{verbatim} +undef# camcontrol devlist + at scbus0 target 2 lun 0 (pass0,sa0) + at scbus0 target 4 lun 0 (pass1,sa1) + at scbus0 target 4 lun 1 (pass2) +\end{verbatim} +\normalsize + +from the above, you can determine that there is a tape drive on {\bf /dev/sa0} +and another on {\bf /dev/sa1} in addition since there is a second line for the +drive on {\bf /dev/sa1}, you know can assume that it is the control device for +the autochanger (i.e. {\bf /dev/pass2}). It is also the control device name to +use when invoking the tapeinfo program. E.g. + +\footnotesize +\begin{verbatim} +tapeinfo -f /dev/pass2 +\end{verbatim} +\normalsize + +\label{onstream} + +\subsection{Using the OnStream driver on Linux Systems} +\index[general]{Using the OnStream driver on Linux Systems} +\index[general]{Systems!Using the OnStream driver on Linux} + +Bacula version 1.33 (not 1.32x) is now working and ready for testing with the +OnStream kernel osst driver version 0.9.14 or above. Osst is available from: +\elink{http://sourceforge.net/projects/osst/} +{http://sourceforge.net/projects/osst/}. + +To make Bacula work you must first load the new driver then, as root, do: + +\footnotesize +\begin{verbatim} + mt -f /dev/nosst0 defblksize 32768 +\end{verbatim} +\normalsize + +Also you must add the following to your Device resource in your Storage +daemon's conf file: + +\footnotesize +\begin{verbatim} + Minimum Block Size = 32768 + Maximum Block Size = 32768 +\end{verbatim} +\normalsize + +Here is a Device specification provided by Michel Meyers that is known to +work: + +\footnotesize +\begin{verbatim} +Device { + Name = "Onstream DI-30" + Media Type = "ADR-30" + Archive Device = /dev/nosst0 + Minimum Block Size = 32768 + Maximum Block Size = 32768 + Hardware End of Medium = yes + BSF at EOM = no + Backward Space File = yes + Fast Forward Space File = yes + Two EOF = no + AutomaticMount = yes + AlwaysOpen = yes + Removable Media = yes +} +\end{verbatim} +\normalsize + +\section{Hardware Compression on EXB-8900} +\index[general]{Hardware Compression on EXB-8900} +\index[general]{EXB-8900!Hardware Compression} + +To active, check, or disable the hardware compression feature +on an EXB-8900, use the exabyte MammothTool. You can get it here: +\elink{http://www.exabyte.com/support/online/downloads/index.cfm} +{http://www.exabyte.com/support/online/downloads/index.cfm}. +There is a Solaris version of this tool. With option -C 0 or 1 you +can disable or activate compression. Start this tool without any +options for a small reference. + +\label{fill} +\subsection{Using btape to Simulate Filling a Tape} +\index[general]{Using btape to Simulate Filling a Tape} +\index[general]{Tape!Using btape to Simulate Filling} + +Because there are often problems with certain tape drives or systems when end +of tape conditions occur, {\bf btape} has a special command {\bf fill} that +causes it to write random data to a tape until the tape fills. It then writes +at least one more Bacula block to a second tape. Finally, it reads back both +tapes to ensure that the data has been written in a way that Bacula can +recover it. Note, there is also a single tape option as noted below, which you +should use rather than the two tape test. See below for more details. + +This can be an extremely time consuming process (here it is about 6 hours) to +fill a full tape. Note, that btape writes random data to the tape when it is +filling it. This has two consequences: 1. it takes a bit longer to generate +the data, especially on slow CPUs. 2. the total amount of data is +approximately the real physical capacity of your tape, regardless of whether +or not the tape drive compression is on or off. This is because random data +does not compress very much. + +To begin this test, you enter the {\bf fill} command and follow the +instructions. There are two options: the simple single tape option and the +multiple tape option. Please use only the simple single tape option because +the multiple tape option still doesn't work totally correctly. If the single +tape option does not succeed, you should correct the problem before using +Bacula. +\label{RecoveringFiles} + +\section{Recovering Files Written With Fixed Block Sizes} +\index[general]{Recovering Files Written With Fixed Block Sizes} + +If you have been previously running your tape drive in fixed block mode +(default 512) and Bacula with variable blocks (default), then in version +1.32f-x and 1.34 and above, Bacula will fail to recover files because it does +block spacing, and because the block sizes don't agree between your tape drive +and Bacula it will not work. + +The long term solution is to run your drive in variable block mode as +described above. However, if you have written tapes using fixed block sizes, +this can be a bit of a pain. The solution to the problem is: while you are +doing a restore command using a tape written in fixed block size, ensure that +your drive is set to the fixed block size used while the tape was written. +Then when doing the {\bf restore} command in the Console program, do not +answer the prompt {\bf yes/mod/no}. Instead, edit the bootstrap file (the +location is listed in the prompt) using any ASCII editor. Remove all {\bf +VolBlock} lines in the file. When the file is re-written, answer the question, +and Bacula will run without using block positioning, and it should recover +your files. + +\label{BlockModes} +\section{Tape Blocking Modes} +\index[general]{Modes!Tape Blocking} +\index[general]{Tape Blocking Modes} + +SCSI tapes may either be written in {\bf variable} or {\bf fixed} block sizes. +Newer drives support both modes, but some drives such as the QIC devices +always use fixed block sizes. Bacula attempts to fill and write complete +blocks (default 65K), so that in normal mode (variable block size), Bacula +will always write blocks of the same size except the last block of a Job. If +Bacula is configured to write fixed block sizes, it will pad the last block of +the Job to the correct size. Bacula expects variable tape block size drives to +behave as follows: Each write to the drive results in a single record being +written to the tape. Each read returns a single record. If you request less +bytes than are in the record, only those number of bytes will be returned, but +the entire logical record will have been read (the next read will retrieve the +next record). Thus data from a single write is always returned in a single +read, and sequentially written records are returned by sequential reads. + +Bacula expects fixed block size tape drives to behave as follows: If a write +length is greater than the physical block size of the drive, the write will be +written as two blocks each of the fixed physical size. This single write may +become multiple physical records on the tape. (This is not a good situation). +According to the documentation, one may never write an amount of data that is +not the exact multiple of the blocksize (it is not specified if an error +occurs or if the the last record is padded). When reading, it is my +understanding that each read request reads one physical record from the tape. +Due to the complications of fixed block size tape drives, you should avoid +them if possible with Bacula, or you must be ABSOLUTELY certain that you use +fixed block sizes within Bacula that correspond to the physical block size of +the tape drive. This will ensure that Bacula has a one to one correspondence +between what it writes and the physical record on the tape. + +Please note that Bacula will not function correctly if it writes a block and +that block is split into two or more physical records on the tape. Bacula +assumes that each write causes a single record to be written, and that it can +sequentially recover each of the blocks it has written by using the same +number of sequential reads as it had written. + +\section{Details of Tape Modes} +\index[general]{Modes!Details} +\index[general]{Details of Tape Modes} +Rudolf Cejka has provided the following information concerning +certain tape modes and MTEOM. + +\begin{description} +\item[Tape level] + It is always possible to position filemarks or blocks, whereas + positioning to the end-of-data is only optional feature, however it is + implemented very often. SCSI specification also talks about optional + sequential filemarks, setmarks and sequential setmarks, but these are not + implemented so often. Modern tape drives keep track of file positions in + built-in chip (AIT, LTO) or at the beginning of the tape (SDLT), so there + is not any speed difference, if end-of-data or filemarks is used (I have + heard, that LTO-1 from all 3 manufacturers do not use its chip for file + locations, but a tape as in SDLT case, and I'm not sure about LTO-2 and + LTO-3 case). However there is a big difference, that end-of-data ignores + file position, whereas filemarks returns the real number of skipped + files, so OS can track current file number just in filemarks case. + +\item[OS level] + Solaris does use just SCSI SPACE Filemarks, it does not support SCSI + SPACE End-of-data. When MTEOM is called, Solaris does use SCSI SPACE + Filemarks with count = 1048576 for fast mode, and combination of SCSI + SPACE Filemarks with count = 1 with SCSI SPACE Blocks with count = 1 for + slow mode, so EOD mark on the tape on some older tape drives is not + skipped. File number is always tracked for MTEOM. + + Linux does support both SCSI SPACE Filemarks and End-of-data: When MTEOM + is called in MT\_ST\_FAST\_MTEOM mode, SCSI SPACE End-of-data is used. + In the other case, SCSI SPACE Filemarks with count = + 8388607 is used. + There is no real slow mode like in Solaris - I just expect, that for + older tape drives Filemarks may be slower than End-of-data, but not so + much as in Solaris slow mode. File number is tracked for MTEOM just + without MT\_ST\_FAST\_MTEOM - when MT\_ST\_FAST\_MTEOM is used, it is not. + + FreeBSD does support both SCSI SPACE Filemarks and End-of-data, but when + MTEOD (MTEOM) is called, SCSI SPACE End-of-data is always used. FreeBSD + never use SCSI SPACE Filemarks for MTEOD. File number is never tracked + for MTEOD. + +\item[Bacula level] + When {\bf Hardware End of Medium = Yes} is used, MTEOM is called, but it + does not mean, that hardware End-of-data must be used. When Hardware End + of Medium = No, if Fast Forward Space File = Yes, MTFSF with count = + 32767 is used, else Block Read with count = 1 with Forward Space File + with count = 1 is used, which is really very slow. + +\item [Hardware End of Medium = Yes|No] + The name of this option is misleading and is the source of confusion, + because it is not the hardware EOM, what is really switched here. + + If I use Yes, OS must not use SCSI SPACE End-of-data, because Bacula + expects, that there is tracked file number, which is not supported by + SCSI specification. Instead, the OS have to use SCSI SPACE Filemarks. + + If I use No, an action depends on Fast Forward Space File. + + When I set {\bf Hardware End of Medium = no} + and {\bf Fast Forward Space File = no} + file positioning was very slow + on my LTO-3 (about ten to 100 minutes), but + + with {\bf Hardware End of Medium = no} and +{\bf Fast Forward Space File = yes}, the time is ten to +100 times faster (about one to two minutes). + +\end{description} + +\section{Tape Performance Problems} +\index[general]{Tape Performance} +If you have LTO-3 or LTO-4 drives, you should be able to +fairly good transfer rates; from 60 to 150 MB/second, providing +you have fast disks; GigaBit Ethernet connections (probably 2); you are +running multiple simultaneous jobs; you have Bacula data spooling +enabled; your tape block size is set to 131072 or 262144; and +you have set {\bf Maximum File Size = 5G}. + +If you are not getting good performance, consider some of the following +suggestions from the Allen Balck on the Bacula Users email list: + +\begin{enumerate} +\item You are using an old HBA (i.e. SCSI-1, which only does 5 MB/s) + +\item There are other, slower, devices on the SCSI bus. The HBA will + negotiate the speed of every device down to the speed of the + slowest. + +\item There is a termination problem on the bus (either too much or + too little termination). The HBA will drop the bus speed in an + attempt to increase the reliability of the bus. + +\item Loose or damaged cabling - this will probably make the HBA "think" + you have a termination problem and it will react as in 3 above. +\end{enumerate} + +See if /var/adm/messages (or /var/log/messages) tells you what the sync +rate of the SCSI devices/bus are. Also, the next time you reboot, the +BIOS may be able to tell you what the rate of each device is. + + +\section{Autochanger Errors} +\index[general]{Errors!Autochanger} +\index[general]{Autochanger Errors} + +If you are getting errors such as: + +\footnotesize +\begin{verbatim} +3992 Bad autochanger "load slot 1, drive 1": ERR=Child exited with code 1. +\end{verbatim} +\normalsize + +and you are running your Storage daemon as non-root, then most likely +you are having permissions problems with the control channel. Running +as root, set permissions on /dev/sgX so that the userid and group of +your Storage daemon can access the device. You need to ensure that you +all access to the proper control device, and if you don't have any +SCSI disk drives (including SATA drives), you might want to change +the permissions on /dev/sg*. + +\section{Syslog Errors} +\index[general]{Errors!Syslog} +\index[general]{Syslog Errors} + +If you are getting errors such as: + +\footnotesize +\begin{verbatim} +: kernel: st0: MTSETDRVBUFFER only allowed for root +\end{verbatim} +\normalsize + +you are most likely running your Storage daemon as non-root, and +Bacula is attempting to set the correct OS buffering to correspond +to your Device resource. Most OSes allow only root to issue this +ioctl command. In general, the message can be ignored providing +you are sure that your OS parameters are properly configured as +described earlier in this manual. If you are running your Storage daemon +as root, you should not be getting these system log messages, and if +you are, something is probably wrong. diff --git a/docs/manuals/fr/problems/base/tips.tex b/docs/manuals/fr/problems/base/tips.tex new file mode 100644 index 00000000..f13da7a0 --- /dev/null +++ b/docs/manuals/fr/problems/base/tips.tex @@ -0,0 +1,1045 @@ +%% +%% + +\chapter{Tips and Suggestions} +\label{TipsChapter} +\index[general]{Tips and Suggestions } +\index[general]{Suggestions!Tips and } +\label{examples} +\index[general]{Examples } + +There are a number of example scripts for various things that can be found in +the {\bf example} subdirectory and its subdirectories of the Bacula source +distribution. + +For additional tips, please see the \elink{Bacula +wiki}{http://wiki.bacula.org}. + +\section{Upgrading Bacula Versions} +\label{upgrading} +\index[general]{Upgrading Bacula Versions } +\index[general]{Versions!Upgrading Bacula } +\index[general]{Upgrading} + +The first thing to do before upgrading from one version to another is to +ensure that you don't overwrite or delete your production (current) version +of Bacula until you have tested that the new version works. + +If you have installed Bacula into a single directory, this is simple: simply +make a copy of your Bacula directory. + +If you have done a more typical Unix installation where the binaries are +placed in one directory and the configuration files are placed in another, +then the simplest way is to configure your new Bacula to go into a single +file. Alternatively, make copies of all your binaries and especially your +conf files. + +Whatever your situation may be (one of the two just described), you should +probably start with the {\bf defaultconf} script that can be found in the {\bf +examples} subdirectory. Copy this script to the main Bacula directory, modify +it as necessary (there should not need to be many modifications), configure +Bacula, build it, install it, then stop your production Bacula, copy all the +{\bf *.conf} files from your production Bacula directory to the test Bacula +directory, start the test version, and run a few test backups. If all seems +good, then you can proceed to install the new Bacula in place of or possibly +over the old Bacula. + +When installing a new Bacula you need not worry about losing the changes you +made to your configuration files as the installation process will not +overwrite them providing that you do not do a {\bf make uninstall}. + +If the new version of Bacula requires an upgrade to the database, +you can upgrade it with the script {\bf update\_bacula\_tables}, which +will be installed in your scripts directory (default {\bf /etc/bacula}), +or alternatively, you can find it in the +{\bf \lt{}bacula-source\gt{}/src/cats} directory. + +\section{Getting Notified of Job Completion} +\label{notification} +\index[general]{Getting Notified of Job Completion } +\index[general]{Completion!Getting Notified of Job } + +One of the first things you should do is to ensure that you are being properly +notified of the status of each Job run by Bacula, or at a minimum of each Job +that terminates with an error. + +Until you are completely comfortable with {\bf Bacula}, we recommend that you +send an email to yourself for each Job that is run. This is most easily +accomplished by adding an email notification address in the {\bf Messages} +resource of your Director's configuration file. An email is automatically +configured in the default configuration files, but you must ensure that the +default {\bf root} address is replaced by your email address. + +For additional examples of how to configure a Bacula, please take a look at the +{\bf .conf} files found in the {\bf examples} sub-directory. We recommend the +following configuration (where you change the paths and email address to +correspond to your setup). Note, the {\bf mailcommand} and {\bf +operatorcommand} should be on a single line. They were split here for +presentation: + +\footnotesize +\begin{verbatim} +Messages { + Name = Standard + mailcommand = "/home/bacula/bin/bsmtp -h localhost + -f \"\(Bacula\) %r\" + -s \"Bacula: %t %e of %c %l\" %r" + operatorcommand = "/home/bacula/bin/bsmtp -h localhost + -f \"\(Bacula\) %r\" + -s \"Bacula: Intervention needed for %j\" %r" + Mail = your-email-address = all, !skipped, !terminate + append = "/home/bacula/bin/log" = all, !skipped, !terminate + operator = your-email-address = mount + console = all, !skipped, !saved +} +\end{verbatim} +\normalsize + +You will need to ensure that the {\bf /home/bacula/bin} path on the {\bf +mailcommand} and the {\bf operatorcommand} lines point to your {\bf Bacula} +binary directory where the {\bf bsmtp} program will be installed. You will +also want to ensure that the {\bf your-email-address} is replaced by your +email address, and finally, you will also need to ensure that the {\bf +/home/bacula/bin/log} points to the file where you want to log all messages. + +With the above Messages resource, you will be notified by email of every Job +that ran, all the output will be appended to the {\bf log} file you specify, +all output will be directed to the console program, and all mount messages +will be emailed to you. Note, some messages will be sent to multiple +destinations. + +The form of the mailcommand is a bit complicated, but it allows you to +distinguish whether the Job terminated in error or terminated normally. Please +see the +\ilink{Mail Command}{mailcommand} section of the Messages +Resource chapter of this manual for the details of the substitution characters +used above. + +Once you are totally comfortable with Bacula as I am, or if you have a large +number of nightly Jobs as I do (eight), you will probably want to change the +{\bf Mail} command to {\bf Mail On Error} which will generate an email message +only if the Job terminates in error. If the Job terminates normally, no email +message will be sent, but the output will still be appended to the log file as +well as sent to the Console program. + +\section{Getting Email Notification to Work} +\label{email} +\index[general]{Work!Getting Email Notification to } +\index[general]{Getting Email Notification to Work } + +The section above describes how to get email notification of job status. +Occasionally, however, users have problems receiving any email at all. In that +case, the things to check are the following: + +\begin{itemize} +\item Ensure that you have a valid email address specified on your {\bf Mail} + record in the Director's Messages resource. The email address should be fully + qualified. Simply using {\bf root} generally will not work, rather you should +use {\bf root@localhost} or better yet your full domain. +\item Ensure that you do not have a {\bf Mail} record in the Storage daemon's + or File daemon's configuration files. The only record you should have is {\bf + director}: + +\footnotesize +\begin{verbatim} + director = director-name = all + +\end{verbatim} +\normalsize + +\item If all else fails, try replacing the {\bf mailcommand} with + + \footnotesize +\begin{verbatim} +mailcommand = "mail -s test your@domain.com" +\end{verbatim} +\normalsize + +\item Once the above is working, assuming you want to use {\bf bsmtp}, submit + the desired bsmtp command by hand and ensure that the email is delivered, + then put that command into {\bf Bacula}. Small differences in things such as +the parenthesis around the word Bacula can make a big difference to some +bsmtp programs. For example, you might start simply by using: + +\footnotesize +\begin{verbatim} +mailcommand = "/home/bacula/bin/bsmtp -f \"root@localhost\" %r" +\end{verbatim} +\normalsize + +\end{itemize} + +\section{Getting Notified that Bacula is Running} +\label{JobNotification} +\index[general]{Running!Getting Notified that Bacula is } +\index[general]{Getting Notified that Bacula is Running } + +If like me, you have setup Bacula so that email is sent only when a Job has +errors, as described in the previous section of this chapter, inevitably, one +day, something will go wrong and {\bf Bacula} can stall. This could be because +Bacula crashes, which is vary rare, or more likely the network has caused {\bf +Bacula} to {\bf hang} for some unknown reason. + +To avoid this, you can use the {\bf RunAfterJob} command in the Job resource +to schedule a Job nightly, or weekly that simply emails you a message saying +that Bacula is still running. For example, I have setup the following Job in +my Director's configuration file: + +\footnotesize +\begin{verbatim} +Schedule { + Name = "Watchdog" + Run = Level=Full sun-sat at 6:05 +} +Job { + Name = "Watchdog" + Type = Admin + Client=Watchdog + FileSet="Verify Set" + Messages = Standard + Storage = DLTDrive + Pool = Default + Schedule = "Watchdog" + RunAfterJob = "/home/kern/bacula/bin/watchdog %c %d" +} +Client { + Name = Watchdog + Address = rufus + FDPort = 9102 + Catalog = Verify + Password = "" + File Retention = 1day + Job Retention = 1 month + AutoPrune = yes +} +\end{verbatim} +\normalsize + +Where I established a schedule to run the Job nightly. The Job itself is type +{\bf Admin} which means that it doesn't actually do anything, and I've defined +a FileSet, Pool, Storage, and Client, all of which are not really used (and +probably don't need to be specified). The key aspect of this Job is the +command: + +\footnotesize +\begin{verbatim} + RunAfterJob = "/home/kern/bacula/bin/watchdog %c %d" +\end{verbatim} +\normalsize + +which runs my "watchdog" script. As an example, I have added the Job codes +\%c and \%d which will cause the Client name and the Director's name to be +passed to the script. For example, if the Client's name is {\bf Watchdog} and +the Director's name is {\bf main-dir} then referencing \$1 in the script would +get {\bf Watchdog} and referencing \$2 would get {\bf main-dir}. In this case, +having the script know the Client and Director's name is not really useful, +but in other situations it may be. + +You can put anything in the watchdog script. In my case, I like to monitor the +size of my catalog to be sure that {\bf Bacula} is really pruning it. The +following is my watchdog script: + +\footnotesize +\begin{verbatim} +#!/bin/sh +cd /home/kern/mysql/var/bacula +du . * | +/home/kern/bacula/bin/bsmtp \ + -f "\(Bacula\) abuse@whitehouse.com" -h mail.yyyy.com \ + -s "Bacula running" abuse@whitehouse.com +\end{verbatim} +\normalsize + +If you just wish to send yourself a message, you can do it with: + +\footnotesize +\begin{verbatim} +#!/bin/sh +cd /home/kern/mysql/var/bacula +/home/kern/bacula/bin/bsmtp \ + -f "\(Bacula\) abuse@whitehouse.com" -h mail.yyyy.com \ + -s "Bacula running" abuse@whitehouse.com </volume-list + exit 0 +\end{verbatim} +\normalsize + +so that the whole case looks like: + +\footnotesize +\begin{verbatim} + list) +# +# commented out lines + cat /volume-list + exit 0 + ;; +\end{verbatim} +\normalsize + +where you replace \lt{}absolute-path\gt{} with the full path to the +volume-list file. Then using the console, you enter the following command: + +\footnotesize +\begin{verbatim} + label barcodes +\end{verbatim} +\normalsize + +and Bacula will proceed to mount the autochanger Volumes in the list and label +them with the Volume names you have supplied. Bacula will think that the list +was provided by the autochanger barcodes, but in reality, it was you who +supplied the \lt{}barcodes\gt{}. + +If it seems to work, when it finishes, enter: + +\footnotesize +\begin{verbatim} + list volumes +\end{verbatim} +\normalsize + +and you should see all the volumes nicely created. + +\section{Backing Up Portables Using DHCP} +\label{DNS} +\index[general]{DHCP!Backing Up Portables Using } +\index[general]{Backing Up Portables Using DHCP } + +You may want to backup laptops or portables that are not always connected to +the network. If you are using DHCP to assign an IP address to those machines +when they connect, you will need to use the Dynamic Update capability of DNS +to assign a name to those machines that can be used in the Address field of +the Client resource in the Director's conf file. + +\section{Going on Vacation} +\label{Vacation} +\index[general]{Vacation!Going on } +\index[general]{Going on Vacation } + +At some point, you may want to be absent for a week or two and you want to +make sure Bacula has enough tape left so that the backups will complete. You +start by doing a {\bf list volumes} in the Console program: + +\footnotesize +\begin{verbatim} +list volumes + +Using default Catalog name=BackupDB DB=bacula +Pool: Default ++---------+---------------+-----------+-----------+----------------+- +| MediaId | VolumeName | MediaType | VolStatus | VolBytes | ++---------+---------------+-----------+-----------+----------------+- +| 23 | DLT-30Nov02 | DLT8000 | Full | 54,739,278,128 | +| 24 | DLT-21Dec02 | DLT8000 | Full | 56,331,524,629 | +| 25 | DLT-11Jan03 | DLT8000 | Full | 67,863,514,895 | +| 26 | DLT-02Feb03 | DLT8000 | Full | 63,439,314,216 | +| 27 | DLT-03Mar03 | DLT8000 | Full | 66,022,754,598 | +| 28 | DLT-04Apr03 | DLT8000 | Full | 60,792,559,924 | +| 29 | DLT-28Apr03 | DLT8000 | Full | 62,072,494,063 | +| 30 | DLT-17May03 | DLT8000 | Full | 65,901,767,839 | +| 31 | DLT-07Jun03 | DLT8000 | Used | 56,558,490,015 | +| 32 | DLT-28Jun03 | DLT8000 | Full | 64,274,871,265 | +| 33 | DLT-19Jul03 | DLT8000 | Full | 64,648,749,480 | +| 34 | DLT-08Aug03 | DLT8000 | Full | 64,293,941,255 | +| 35 | DLT-24Aug03 | DLT8000 | Append | 9,999,216,782 | ++---------+---------------+-----------+-----------+----------------+ +\end{verbatim} +\normalsize + +Note, I have truncated the output for presentation purposes. What is +significant, is that I can see that my current tape has almost 10 Gbytes of +data, and that the average amount of data I get on my tapes is about 60 +Gbytes. So if I go on vacation now, I don't need to worry about tape capacity +(at least not for short absences). + +Equally significant is the fact that I did go on vacation the 28th of June +2003, and when I did the {\bf list volumes} command, my current tape at that +time, DLT-07Jun03 MediaId 31, had 56.5 Gbytes written. I could see that the +tape would fill shortly. Consequently, I manually marked it as {\bf Used} and +replaced it with a fresh tape that I labeled as DLT-28Jun03, thus assuring +myself that the backups would all complete without my intervention. + +\section{Exclude Files on Windows Regardless of Case} +\label{Case} +\index[general]{Exclude Files on Windows Regardless of Case} +% TODO: should this be put in the win32 chapter? +% TODO: should all these tips be placed in other chapters? + +This tip was submitted by Marc Brueckner who wasn't sure of the case of some +of his files on Win32, which is case insensitive. The problem is that Bacula +thinks that {\bf /UNIMPORTANT FILES} is different from {\bf /Unimportant +Files}. Marc was aware that the file exclusion permits wild-cards. So, he +specified: + +\footnotesize +\begin{verbatim} +"/[Uu][Nn][Ii][Mm][Pp][Oo][Rr][Tt][Aa][Nn][Tt] [Ff][Ii][Ll][Ee][Ss]" +\end{verbatim} +\normalsize + +As a consequence, the above exclude works for files of any case. + +Please note that this works only in Bacula Exclude statement and not in +Include. + +\section{Executing Scripts on a Remote Machine} +\label{RemoteExecution} +\index[general]{Machine!Executing Scripts on a Remote } +\index[general]{Executing Scripts on a Remote Machine } + +This tip also comes from Marc Brueckner. (Note, this tip is probably outdated +by the addition of {\bf ClientRunBeforJob} and {\bf ClientRunAfterJob} Job +records, but the technique still could be useful.) First I thought the "Run +Before Job" statement in the Job-resource is for executing a script on the +remote machine (the machine to be backed up). (Note, this is possible as mentioned +above by using {\bf ClientRunBeforJob} and {\bf ClientRunAfterJob}). +It could be useful to execute +scripts on the remote machine e.g. for stopping databases or other services +while doing the backup. (Of course I have to start the services again when the +backup has finished) I found the following solution: Bacula could execute +scripts on the remote machine by using ssh. The authentication is done +automatically using a private key. First you have to generate a keypair. I've +done this by: + +\footnotesize +\begin{verbatim} +ssh-keygen -b 4096 -t dsa -f Bacula_key +\end{verbatim} +\normalsize + +This statement may take a little time to run. It creates a public/private key +pair with no passphrase. You could save the keys in /etc/bacula. Now you have +two new files : Bacula\_key which contains the private key and Bacula\_key.pub +which contains the public key. + +Now you have to append the Bacula\_key.pub file to the file authorized\_keys +in the \textbackslash{}root\textbackslash{}.ssh directory of the remote +machine. Then you have to add (or uncomment) the line + +\footnotesize +\begin{verbatim} +AuthorizedKeysFile %h/.ssh/authorized_keys +\end{verbatim} +\normalsize + +to the sshd\_config file on the remote machine. Where the \%h stands for the +home-directory of the user (root in this case). + +Assuming that your sshd is already running on the remote machine, you can now +enter the following on the machine where Bacula runs: + +\footnotesize +\begin{verbatim} +ssh -i Bacula_key -l root "ls -la" +\end{verbatim} +\normalsize + +This should execute the "ls -la" command on the remote machine. + +Now you could add lines like the following to your Director's conf file: + +\footnotesize +\begin{verbatim} +... +Run Before Job = ssh -i /etc/bacula/Bacula_key 192.168.1.1 \ + "/etc/init.d/database stop" +Run After Job = ssh -i /etc/bacula/Bacula_key 192.168.1.1 \ + "/etc/init.d/database start" +... +\end{verbatim} +\normalsize + +Even though Bacula version 1.32 and later has a ClientRunBeforeJob, the ssh method still +could be useful for updating all the Bacula clients on several remote machines +in a single script. + +\section{Recycling All Your Volumes} +\label{recycle} +\index[general]{Recycling All Your Volumes } +\index[general]{Volumes!Recycling All Your } + +This tip comes from Phil Stracchino. + +If you decide to blow away your catalog and start over, the simplest way to +re-add all your prelabeled tapes with a minimum of fuss (provided you don't +care about the data on the tapes) is to add the tape labels using the console +{\bf add} command, then go into the catalog and manually set the VolStatus of +every tape to {\bf Recycle}. + +The SQL command to do this is very simple, either use your vendor's +command line interface (mysql, postgres, sqlite, ...) or use the sql +command in the Bacula console: + +\footnotesize +\begin{verbatim} +update Media set VolStatus='Recycle'; +\end{verbatim} +\normalsize + +Bacula will then ignore the data already stored on the tapes and just re-use +each tape without further objection. + +\section{Backing up ACLs on ext3 or XFS filesystems} +\label{ACLs} +\index[general]{Filesystems!Backing up ACLs on ext3 or XFS } +\index[general]{Backing up ACLs on ext3 or XFS filesystems } + +This tip comes from Volker Sauer. + +Note, this tip was given prior to implementation of ACLs in Bacula (version +1.34.5). It is left here because dumping/displaying ACLs can still be useful +in testing/verifying that Bacula is backing up and restoring your ACLs +properly. Please see the +\ilink{aclsupport}{ACLSupport} FileSet option in the +configuration chapter of this manual. + +For example, you could dump the ACLs to a file with a script similar to the +following: + +\footnotesize +\begin{verbatim} +#!/bin/sh +BACKUP_DIRS="/foo /bar" +STORE_ACL=/root/acl-backup +umask 077 +for i in $BACKUP_DIRS; do + cd $i /usr/bin/getfacl -R --skip-base .>$STORE_ACL/${i//\//_} +done +\end{verbatim} +\normalsize + +Then use Bacula to backup {\bf /root/acl-backup}. + +The ACLs could be restored using Bacula to the {\bf /root/acl-backup} file, +then restored to your system using: + +\footnotesize +\begin{verbatim} +setfacl --restore/root/acl-backup +\end{verbatim} +\normalsize + +\section{Total Automation of Bacula Tape Handling} +\label{automate} +\index[general]{Handling!Total Automation of Bacula Tape } +\index[general]{Total Automation of Bacula Tape Handling } + +This tip was provided by Alexander Kuehn. + +\elink{Bacula}{http://www.bacula.org/} is a really nice backup program except +that the manual tape changing requires user interaction with the bacula +console. + +Fortunately I can fix this. +NOTE!!! This suggestion applies for people who do *NOT* have tape autochangers +and must change tapes manually.!!!!! + +Bacula supports a variety of tape changers through the use of mtx-changer +scripts/programs. This highly flexible approach allowed me to create +\elink{this shell script}{http://www.bacula.org/en/rel-manual/mtx-changer.txt} which does the following: +% TODO: We need to include this in book appendix and point to it. +% TODO: +Whenever a new tape is required it sends a mail to the operator to insert the +new tape. Then it waits until a tape has been inserted, sends a mail again to +say thank you and let's bacula continue its backup. +So you can schedule and run backups without ever having to log on or see the +console. +To make the whole thing work you need to create a Device resource which looks +something like this ("Archive Device", "Maximum Changer Wait", "Media +Type" and "Label media" may have different values): + +\footnotesize +\begin{verbatim} +Device { + Name=DDS3 + Archive Device = # use yours not mine! ;)/dev/nsa0 + Changer Device = # not really required/dev/nsa0 + Changer Command = "# use this (maybe change the path)! + /usr/local/bin/mtx-changer %o %a %S" + Maximum Changer Wait = 3d # 3 days in seconds + AutomaticMount = yes; # mount on start + AlwaysOpen = yes; # keep device locked + Media Type = DDS3 # it's just a name + RemovableMedia = yes; # + Offline On Unmount = Yes; # keep this too + Label media = Yes; # +} +\end{verbatim} +\normalsize + +As the script has to emulate the complete wisdom of a mtx-changer it has an +internal "database" containing where which tape is stored, you can see this on +the following line: + +\footnotesize +\begin{verbatim} +labels="VOL-0001 VOL-0002 VOL-0003 VOL-0004 VOL-0005 VOL-0006 +VOL-0007 VOL-0008 VOL-0009 VOL-0010 VOL-0011 VOL-0012" +\end{verbatim} +\normalsize + +The above should be all on one line, and it effectively tells Bacula that +volume "VOL-0001" is located in slot 1 (which is our lowest slot), that +volume "VOL-0002" is located in slot 2 and so on.. +The script also maintains a logfile (/var/log/mtx.log) where you can monitor +its operation. + +\section{Running Concurrent Jobs} +\label{ConcurrentJobs} +\index[general]{Jobs!Running Concurrent} +\index[general]{Running Concurrent Jobs} +\index[general]{Concurrent Jobs} + +Bacula can run multiple concurrent jobs, but the default configuration files +do not enable it. Using the {\bf Maximum Concurrent Jobs} directive, you +can configure how many and which jobs can be run simultaneously. +The Director's default value for {\bf Maximum Concurrent Jobs} is "1". + +To initially setup concurrent jobs you need to define {\bf Maximum Concurrent Jobs} in +the Director's configuration file (bacula-dir.conf) in the +Director, Job, Client, and Storage resources. + +Additionally the File daemon, and the Storage daemon each have their own +{\bf Maximum Concurrent Jobs} directive that sets the overall maximum +number of concurrent jobs the daemon will run. The default for both the +File daemon and the Storage daemon is "20". + +For example, if you want two different jobs to run simultaneously backing up +the same Client to the same Storage device, they will run concurrently only if +you have set {\bf Maximum Concurrent Jobs} greater than one in the Director +resource, the Client resource, and the Storage resource in bacula-dir.conf. + +We recommend that you read the \ilink{Data +Spooling}{SpoolingChapter} of this manual first, then test your multiple +concurrent backup including restore testing before you put it into +production. + +Below is a super stripped down bacula-dir.conf file showing you the four +places where the the file must be modified to allow the same job {\bf +NightlySave} to run up to four times concurrently. The change to the Job +resource is not necessary if you want different Jobs to run at the same time, +which is the normal case. + +\footnotesize +\begin{verbatim} +# +# Bacula Director Configuration file -- bacula-dir.conf +# +Director { + Name = rufus-dir + Maximum Concurrent Jobs = 4 + ... +} +Job { + Name = "NightlySave" + Maximum Concurrent Jobs = 4 + Client = rufus-fd + Storage = File + ... +} +Client { + Name = rufus-fd + Maximum Concurrent Jobs = 4 + ... +} +Storage { + Name = File + Maximum Concurrent Jobs = 4 + ... +} +\end{verbatim} +\normalsize diff --git a/docs/manuals/fr/problems/base/version.tex b/docs/manuals/fr/problems/base/version.tex new file mode 100644 index 00000000..36878dd0 --- /dev/null +++ b/docs/manuals/fr/problems/base/version.tex @@ -0,0 +1 @@ +5.1.2 (26 February 2010) diff --git a/docs/manuals/fr/problems/faq-en.tex b/docs/manuals/fr/problems/faq-en.tex new file mode 100644 index 00000000..2fff751a --- /dev/null +++ b/docs/manuals/fr/problems/faq-en.tex @@ -0,0 +1,876 @@ +%% +%% +% TODO: maybe merge all this FAQ in with the appropriate section? +% TODO: and use detailed indexing to help reader + +\chapter{Bacula Frequently Asked Questions} +\label{FaqChapter} +\index[general]{Questions!Bacula Frequently Asked } +\index[general]{Bacula Frequently Asked Questions } + +These are questions that have been submitted over time by the +Bacula users. The following +FAQ is very useful, but it is not always up to date +with newer information, so after reading it, if you don't find what you +want, you might try the Bacula wiki maintained by Frank Sweetser, which +contains more than just a FAQ: +\elink{http://wiki.bacula.org}{http://wiki.bacula.org} +or go directly to the FAQ at: +\elink{http://wiki.bacula.org/doku.php?id=faq} +{http://wiki.bacula.org/doku.php?id=faq}. + +Please also see +\ilink{the bugs section}{BugsChapter} of this document for a list +of known bugs and solutions. + +\begin{description} +\label{what} +\section{What is Bacula?} +\item [What is {\bf Bacula}? ] + \index[general]{What is Bacula? } + {\bf Bacula} is a network backup and restore program. + +\section{Does Bacula support Windows?} +\item [Does Bacula support Windows?] +\index[general]{Does Bacula support Windows? } + Yes, Bacula compiles and runs on Windows machines (Win98, WinMe, WinXP, + WinNT, Win2003, and Win2000). We provide a binary version of the Client + (bacula-fd), but have not tested the Director nor the Storage daemon. + Note, Win95 is no longer supported because it doesn't have the + GetFileAttributesExA API call. + + +\label{lang} +\section{What language is Bacula written in?} +\item [What language is Bacula written in?] +\index[general]{What language is Bacula written in? } + It is written in C++, but it is mostly C code using only a limited set of + the C++ extensions over C. Thus Bacula is completely compiled using the + C++ compiler. There are several modules, including the Win32 interface, that + are written using the object oriented C++ features. Over time, we are slowly + adding a larger subset of C++. + +\label{run} +\section{On what machines does Bacula run?} +\item [On what machines does Bacula run? ] + \index[general]{On what machines does Bacula run? } + {\bf Bacula} builds and executes on Red Hat Linux (versions RH7.1-RHEL + 4.0, Fedora, SuSE, Gentoo, Debian, Mandriva, ...), FreeBSD, Solaris, + Alpha, SGI (client), NetBSD, OpenBSD, Mac OS X (client), and Win32. + + Bacula has been my only backup tool for over seven years backing up 8 + machines nightly (6 Linux boxes running SuSE, previously + Red Hat and Fedora, a WinXP machine, and a WinNT machine). + + +\label{stable} +\section{Is Bacula Stable?} +\item [Is Bacula Stable? ] +\index[general]{Is Bacula Stable? } + Yes, it is remarkably stable, but remember, there are still a lot of + unimplemented or partially implemented features. With a program of this + size (150,000+ lines of C++ code not including the SQL programs) there + are bound to be bugs. The current test environment (a twisted pair + local network and a HP DLT backup tape) is not exactly ideal, so + additional testing on other sites is necessary. The File daemon has + never crashed -- running months at a time with no intervention. The + Storage daemon is remarkably stable with most of the problems arising + during labeling or switching tapes. Storage daemon crashes are rare + but running multiple drives and simultaneous jobs sometimes (rarely) + problems. + The Director, given the multitude of functions it fulfills is also + relatively stable. In a production environment, it rarely if ever + crashes. Of the three daemons, the Director is the most prone to having + problems. Still, it frequently runs several months with no problems. + + There are a number of reasons for this stability. + + \begin{enumerate} + \item The program is constantly checking the chain of allocated + memory buffers to ensure that no overruns have occurred. \\ + \item All memory leaks (orphaned buffers) are reported each time the + program terminates.\\ + \item Any signal (segmentation fault, ...) generates a + traceback that is emailed to the developer. This permits quick + resolution of bugs even if they only show up rarely in a production + system.\\ + \item There is a reasonably comprehensive set of regression tests + that avoids re-creating the most common errors in new versions of + Bacula. + \end{enumerate} + +\label{AuthorizationErrors} +\section{I'm Getting Authorization Errors. What is Going On? } +\item [I'm Getting Authorization Errors. What is Going On? ] +\index[general]{Authorization Errors} +\index[general]{Concurrent Jobs} + For security reasons, Bacula requires that both the File daemon and the + Storage daemon know the name of the Director as well as its password. As a + consequence, if you change the Director's name or password, you must make + the corresponding change in the Storage daemon's and in the File daemon's + configuration files. + + During the authorization process, the Storage daemon and File daemon + also require that the Director authenticates itself, so both ends + require the other to have the correct name and password. + + If you have edited the conf files and modified any name or any password, + and you are getting authentication errors, then your best bet is to go + back to the original conf files generated by the Bacula installation + process. Make only the absolutely necessary modifications to these + files -- e.g. add the correct email address. Then follow the + instructions in the \ilink{ Running Bacula}{TutorialChapter} chapter of + this manual. You will run a backup to disk and a restore. Only when + that works, should you begin customization of the conf files. + + Another reason that you can get authentication errors is if you are + running Multiple Concurrent Jobs in the Director, but you have not set + them in the File daemon or the Storage daemon. Once you reach their + limit, they will reject the connection producing authentication (or + connection) errors. + + If you are having problems connecting to a Windows machine that + previously worked, you might try restarting the Bacula service since + Windows frequently encounters networking connection problems. + + Some users report that authentication fails if there is not a proper + reverse DNS lookup entry for the machine. This seems to be a + requirement of gethostbyname(), which is what Bacula uses to translate + names into IP addresses. If you cannot add a reverse DNS entry, or you + don't know how to do so, you can avoid the problem by specifying an IP + address rather than a machine name in the appropriate Bacula conf file. + + Here is a picture that indicates what names/passwords in which + files/Resources must match up: + + \includegraphics{\idir Conf-Diagram.eps} + + In the left column, you will find the Director, Storage, and Client + resources, with their names and passwords -- these are all in {\bf + bacula-dir.conf}. The right column is where the corresponding values + should be found in the Console, Storage daemon (SD), and File daemon (FD) + configuration files. + + Another thing to check is to ensure that the Bacula component you are + trying to access has {\bf Maximum Concurrent Jobs} set large enough to + handle each of the Jobs and the Console that want to connect + simultaneously. Once the maximum connections has been reached, each + Bacula component will reject all new connections. + + Finally, make sure you have no {\bf hosts.allow} or {\bf hosts.deny} + file that is not permitting access to the site trying to connect. + +\label{AccessProblems} +\section{Bacula Runs Fine but Cannot Access a Client on a Different Machine. + Why? } +\item [Bacula Runs Fine but Cannot Access a Client on a Different Machine. + Why? ] +\index[general]{Cannot Access a Client} + There are several reasons why Bacula could not contact a client on a + different machine. They are: + +\begin{itemize} +\item It is a Windows Client, and the client died because of an improper + configuration file. Check that the Bacula icon is in the system tray and the + the menu items work. If the client has died, the icon will disappear only + when you move the mouse over the icon. +\item The Client address or port is incorrect or not resolved by DNS. See if + you can ping the client machine using the same address as in the Client + record. +\item You have a firewall, and it is blocking traffic on port 9102 between + the Director's machine and the Client's machine (or on port 9103 between the + Client and the Storage daemon machines). +\item Your password or names are not correct in both the Director and the + Client machine. Try configuring everything identical to how you run the + client on the same machine as the Director, but just change the Address. If + that works, make the other changes one step at a time until it works. +\item You may also be having problems between your File daemon and your + Storage daemon. The name you use in the Storage resource of your + Director's conf file must be known (resolvable) by the File daemon, + because it is passed symbolically to the File daemon, which then + resolves it to get an IP address used to contact the Storage daemon. +\item You may have a {\bf hosts.allow} or {\bf hosts.deny} file that is + not permitting access. +\end{itemize} + +\label{startover} +\section{My Catalog is Full of Test Runs, How Can I Start Over?} +\item [My Catalog is Full of Test Runs, How Can I Start Over? ] + \index[general]{My Catalog is Full of Test Runs, How Can I Start Over? } + If you are using MySQL do the following: + +\footnotesize +\begin{verbatim} + cd /src/cats + ./drop_mysql_tables + ./make_mysql_tables + +\end{verbatim} +\normalsize + +If you are using SQLite, do the following: + +\footnotesize +\begin{verbatim} + Delete bacula.db from your working directory. + cd /src/cats + ./drop_sqlite_tables + ./make_sqlite_tables + +\end{verbatim} +\normalsize + +Then write an EOF on each tape you used with {\bf Bacula} using: + +\footnotesize +\begin{verbatim} +mt -f /dev/st0 rewind +mt -f /dev/st0 weof +\end{verbatim} +\normalsize + +where you need to adjust the device name for your system. + +\label{restorehang} +\section{I Run a Restore Job and Bacula Hangs. What do I do?} +\item [I Run a Restore Job and Bacula Hangs. What do I do?] +\index[general]{I Run a Restore Job and Bacula Hangs. What do I do? } + On Bacula version 1.25 and prior, it expects you to have the correct + tape mounted prior to a restore. On Bacula version 1.26 and higher, it + will ask you for the tape, and if the wrong one is mounted, it will + inform you. + + If you have previously done an {\bf unmount} command, all Storage daemon + sessions (jobs) will be completely blocked from using the drive + unmounted, so be sure to do a {\bf mount} after your unmount. If in + doubt, do a second {\bf mount}, it won't cause any harm. + +\label{windowstart} +\section{I Cannot Get My Windows Client to Start Automatically? } +\item [I Cannot Get My Windows Client to Start Automatically? ] +\index[general]{Windows Auto Start} + You are probably having one of two problems: either the Client is dying + due to an incorrect configuration file, or you didn't do the + Installation commands necessary to install it as a Windows Service. + + For the first problem, see the next FAQ question. For the second + problem, please review the \ilink{ Windows Installation + instructions}{Win32Chapter} in this manual. + +\label{windowsdie} +\section{My Windows Client Immediately Dies When I Start It} +\item [My Windows Client Immediately Dies When I Start It] +\index[general]{Windows Client Dies} +The most common problem is either that the configuration file is not where +it expects it to be, or that there is an error in the configuration file. +You must have the configuration file in {\bf +c:\textbackslash{}bacula\textbackslash{}bin\textbackslash{}bacula-fd.conf}. + +To {\bf see} what is going on when the File daemon starts on Windows, do the +following: + +\footnotesize +\begin{verbatim} + Start a DOS shell Window. + cd c:\bacula\bin + bacula-fd -d100 -c c:\bacula\bin\bacula-fd.conf + +\end{verbatim} +\normalsize + +This will cause the FD to write a file {\bf bacula.trace} in the current +directory, which you can examine and thereby determine the problem. + +\label{scroll} +\item [When I Start the Console, the Error Messages Fly By. How can I see + them? ] +\index[general]{Error Messages} + Either use a shell window with a scroll bar, or use the gnome-console. + In any case, you probably should be logging all output to a file, and + then you can simply view the file using an editor or the {\bf less} + program. To log all output, I have the following in my Director's + Message resource definition: + +\footnotesize +\begin{verbatim} + append = "/home/kern/bacula/bin/log" = all, !skipped + +\end{verbatim} +\normalsize + +Obviously you will want to change the filename to be appropriate for your +system. + +\label{nobackup} +\section{My backups are not working on my Windows + Client. What should I do?} +\item [I didn't realize that the backups were not working on my Windows + Client. What should I do? ] +\index[general]{Backups Failing} +You should be sending yourself an email message for each job. This will avoid +the possibility of not knowing about a failed backup. To do so put something +like: + +\footnotesize +\begin{verbatim} + Mail = yourname@yourdomain = all, !skipped + +\end{verbatim} +\normalsize + +in your Director's message resource. You should then receive one email for +each Job that ran. When you are comfortable with what is going on (it took +me 9 months), you might change that to: + +\footnotesize +\begin{verbatim} + MailOnError = yourname@yourdomain = all, !skipped + +\end{verbatim} +\normalsize + +then you only get email messages when a Job errors as is the case for your +Windows machine. + +You should also be logging the Director's messages, please see the previous +FAQ for how to do so. + +\label{sched} +\section{All my Jobs are scheduled for the same time. Will this cause + problems?} +\item [All my Jobs are scheduled for the same time. Will this cause + problems? ] +\index[general]{Schedule problems} + No, not at all. Bacula will schedule all the Jobs at the same time, but + will run them one after another unless you have increased the number of + simultaneous jobs in the configuration files for the Director, the File + daemon, and the Storage daemon. The appropriate configuration record is + {\bf Maximum Concurrent Jobs = nn}. At the current time, we recommend + that you leave this set to {\bf 1} for the Director. + +\label{disk} +\section{Can Bacula Backup My System To Files instead of Tape?} +\item [Can Bacula Backup My System To Files instead of Tape? ] +\index[general]{Backup to Disk} + Yes, in principle, Bacula can backup to any storage medium as long as + you have correctly defined that medium in the Storage daemon's Device + resource. For an example of how to backup to files, please see the + \ilink{Pruning Example}{PruningExample} in the Recycling chapter of this + manual. Also, there is a whole chapter devoted to \ilink{Basic Volume + Management}{DiskChapter}. This chapter was originally written to + explain how to write to disk, but was expanded to include volume + management. It is, however, still quite a good chapter to read. + +\label{testbackup} +\section{Can I use a dummy device to test the backup?} + Yes, to have a {\sl Virtual} device which just consumes data, you can use a + FIFO device (see \ilink{Stored configuration}{SetupFifo}). + It's useful to test a backup. +\footnotesize +\begin{verbatim} +Device { + Name = NULL + Media Type = NULL + Device Type = Fifo + Archive Device = /dev/null + LabelMedia = yes + Random Access = no + AutomaticMount = no + RemovableMedia = no + MaximumOpenWait = 60 + AlwaysOpen = no +} +\end{verbatim} +\normalsize + +\label{bigfiles} +\section{Can Bacula Backup and Restore Files Bigger than 2 Gigabytes?} +\item [Can Bacula Backup and Restore Files Bigger than 2 Gigabytes?] +\index[general]{Large file support} +If your operating system permits it, and you are running Bacula version +1.26 or later, the answer is yes. To the best of our knowledge all client +system supported by Bacula can handle files bigger 2 Gigabytes. + +\label{cancel} +\section{I want to stop a job.} +%% Is there a better way than "./bacula stop" to stop it?} +\item [I Started A Job then Decided I Really Did Not Want to Run It. Is + there a better way than {\bf ./bacula stop} to stop it?] +\index[general]{Cancelling jobs} + Yes, you normally should use the Console command {\bf cancel} to cancel + a Job that is either scheduled or running. If the Job is scheduled, it + will be marked for cancellation and will be canceled when it is + scheduled to start. If it is running, it will normally terminate after + a few minutes. If the Job is waiting on a tape mount, you may need to + do a {\bf mount} command before it will be canceled. + +\label{trademark} +\section{Why have You Trademarked the Name Bacula?} +\item [Why have You Trademarked the Name + Bacula\raisebox{.6ex}{{\footnotesize \textsuperscript{\textregistered}}}?] +\index[general]{Bacula Trademark} +We have trademarked the name Bacula to ensure that all media written by any +program named Bacula will always be compatible. Anyone may use the name +Bacula, even in a derivative product as long as it remains totally compatible +in all respects with the program defined here. + +\label{docversion} +\section{Why is the Online Document for Version 1.39 but the Released Version is 1.38?} +\item [Why is the Online Document for Version 1.39 of Bacula when the + Current Version is 1.38?] +\index[general]{Multiple manuals} +As Bacula is being developed, the document is also being enhanced, more +often than not it has clarifications of existing features that can be very +useful to our users, so we publish the very latest document. Fortunately +it is rare that there are confusions with new features. + +If you want to read a document that pertains only to a specific version, +please use the one distributed in the source code. The web site also has +online versions of both the released manual and the current development +manual. + +\label{sure} +\section{Does Bacula really save and restore all files?} +\item [How Can I Be Sure that Bacula Really Saves and Restores All Files? ] +\index[general]{Checking Restores} + It is really quite simple, but took me a while to figure + out how to "prove" it. First make a Bacula Rescue disk, see the + \ilink{Disaster Recovery Using Bacula}{RescueChapter} chapter + of this manual. + Second, you run a full backup of all your files on all partitions. + Third, you run an Verify InitCatalog Job on the same FileSet, which + effectively makes a record of all the files on your system. Fourth, you + run a Verify Catalog job and assure yourself that nothing has changed + (well, between an InitCatalog and Catalog one doesn't expect anything). + Then do the unthinkable, write zeros on your MBR (master boot record) + wiping out your hard disk. Now, restore your whole system using your + Bacula Rescue disk and the Full backup you made, and finally re-run the + Verify Catalog job. You will see that with the exception of the + directory modification and access dates and the files changed during the + boot, your system is identical to what it was before you wiped your hard + disk. + Alternatively you could do the wiping and restoring to another computer + of the same type. + +\label{upgrade} +\section{I want an Incremental but Bacula runs it as a Full backup. Why?} +\item [I did a Full backup last week, but now in running an Incremental, + Bacula says it did not find a FULL backup, so it did a FULL backup. Why?] +\index[general]{FULL backup not found} + Before doing an Incremental or a Differential + backup, Bacula checks to see if there was a prior Full backup of the + same Job that terminated successfully. If so, it uses the date that + full backup started as the time for comparing if files have changed. If + Bacula does not find a successful full backup, it proceeds to do one. + Perhaps you canceled the full backup, or it terminated in error. In + such cases, the full backup will not be successful. You can check by + entering {\bf list jobs} and look to see if there is a prior Job with + the same Name that has Level F and JobStatus T (normal termination). + + Another reason why Bacula may not find a suitable Full backup is that + every time you change the FileSet, Bacula will require a new Full + backup. This is necessary to ensure that all files are properly backed + up in the case where you have added more files to the FileSet. + Beginning with version 1.31, the FileSets are also dated when they are + created, and this date is displayed with the name when you are listing + or selecting a FileSet. For more on backup levels see below. + + See also {\bf Ignore FileSet Changes} in the + \ilink{FileSet Resource definition}{FileSetResource} in the Director + chapter of this document. + +\label{filenamelengths} +\section{Do you really handle unlimited path lengths?} +\item [How Can You Claim to Handle Unlimited Path and Filename Lengths + when All Other Programs Have Fixed Limits?] +\index[general]{Path and Filename Lengths} + Most of those other programs have been around for a long time, in fact + since the beginning of Unix, which means that they were designed for + rather small fixed length path and filename lengths. Over the years, + these restrictions have been relaxed allowing longer names. Bacula on + the other hand was designed in 2000, and so from the start, Path and + Filenames have been kept in buffers that start at 256 bytes in length, + but can grow as needed to handle any length. Most of the work is + carried out by lower level routines making the coding rather easy. + + Note that due to limitations Win32 path and filenames cannot exceed + 260 characters. By using Win32 Unicode functions, we will remove this + restriction in later versions of Bacula. + +\label{unique} +\section{What Is the Really Unique Feature of Bacula?} +\item [What Is the Really Unique Feature of Bacula?] +\index[general]{Unique Feature of Bacula} + Well, it is hard to come up with unique features when backup programs + for Unix machines have been around since the 1960s. That said, I + believe that Bacula is the first and only program to use a standard SQL + interface to catalog its database. Although this adds a bit of + complexity and possibly overhead, it provides an amazingly rich set of + features that are easy to program and enhance. The current code has + barely scratched the surface in this regard (version 1.38). + + The second feature, which gives a lot of power and flexibility to Bacula + is the Bootstrap record definition. + + The third unique feature, which is currently (1.30) unimplemented, and + thus can be called vaporware :-), is Base level saves. When + implemented, this will enormously reduce tape usage. + +\label{sequence} +\section{How can I force one job to run after another?} +\item [If I Run Multiple Simultaneous Jobs, How Can I Force One + Particular Job to Run After Another Job? ] +\index[general]{Multiple Simultaneous Jobs} +Yes, you can set Priorities on your jobs so that they run in the order you +specify. Please see: +\ilink{the Priority record}{Priority} in the Job resource. + +\label{nomail} +\section{I Am Not Getting Email Notification, What Can I Do? } +\item [I Am Not Getting Email Notification, What Can I Do? ] +\index[general]{No Email Notification} + The most common problem is that you have not specified a fully qualified + email address and your bsmtp server is rejecting the mail. The next + most common problem is that your bsmtp server doesn't like the syntax on + the From part of the message. For more details on this and other + problems, please see the \ilink{ Getting Email Notification to + Work}{email} section of the Tips chapter of this manual. The section + \ilink{ Getting Notified of Job Completion}{notification} of the Tips + chapter may also be useful. For more information on the {\bf bsmtp} + mail program, please see \ilink{bsmtp in the Volume Utility Tools + chapter}{bsmtp} of this manual. + +\label{periods} +\section{My retention periods don't work} +\item [I Change Recycling, Retention Periods, or File Sizes in my Pool + Resource and they Still Don't Work.] +\index[general]{Recycling} +\index[general]{Retention Periods} +\index[general]{Pool changes} + The different variables associated with a Pool are defined in the Pool + Resource, but are actually read by Bacula from the Catalog database. On + Bacula versions prior to 1.30, after changing your Pool Resource, you must + manually update the corresponding values in the Catalog by using the {\bf + update pool} command in the Console program. In Bacula version 1.30, Bacula + does this for you automatically every time it starts. + + When Bacula creates a Media record (Volume), it uses many default values from + the Pool record. If you subsequently change the Pool record, the new values + will be used as a default for the next Volume that is created, but if you + want the new values to apply to existing Volumes, you must manually update + the Volume Catalog entry using the {\bf update volume} command in the Console + program. + +\label{CompressionNotWorking} +\section{Why aren't my files compressed?} +\item [I Have Configured Compression On, But None of My Files Are + Compressed. Why?] +\index[general]{Compression} + There are two kinds of compression. One is tape compression. This is done by + the tape drive hardware, and you either enable or disable it with system + tools such as {\bf mt}. This compression works independently of Bacula, + and when it is enabled, you should not use the Bacula software + compression. + + Bacula also has software compression code in the File daemons, which you + normally need to enable only when backing up to file Volumes. There are + two conditions necessary to enable the Bacula software compression. + +\begin{enumerate} +\item You must have the zip development libraries loaded on your system + when building Bacula and Bacula must find this library, normally {\bf + /usr/lib/libz.a}. On Red Hat systems, this library is provided by the + {\bf zlib-devel} rpm. + + If the library is found by Bacula during the {\bf ./configure} it will + be mentioned in the {\bf config.out} line by: + +\footnotesize +\begin{verbatim} + ZLIB support: yes + +\end{verbatim} +\normalsize + +\item You must add the {\bf compression=gzip} option on your Include + statement in the Director's configuration file. +\end{enumerate} + +\label{NewTape} +\item [Bacula is Asking for a New Tape After 2 GB of Data but My Tape + holds 33 GB. Why?] +\index[general]{Tape capacity} +There are several reasons why Bacula will request a new tape. + +\begin{itemize} +\item There is an I/O error on the tape. Bacula prints an error message and + requests a new tape. Bacula does not attempt to continue writing after an + I/O error. +\item Bacula encounters and end of medium on the tape. This is not always + distinguishable from an I/O error. +\item You have specifically set some size limitation on the tape. For example + the {\bf Maximum Volume Bytes} or {\bf Maximum Volume Files} in the + Director's Pool resource, or {\bf Maximum Volume Size} in the Storage + daemon's Device resource. +\end{itemize} + +\label{LevelChanging} +\section{Incremental backups are not working} +\item [Bacula is Not Doing the Right Thing When I Request an Incremental + Backup. Why?] +\index[general]{Incremental backups} + As explained in one of the previous questions, Bacula will automatically + upgrade an Incremental or Differential job to a Full backup if it cannot + find a prior Full backup or a suitable Full backup. For the gory + details on how/when Bacula decides to upgrade levels please see the + \ilink{Level record}{Level} in the Director's configuration chapter of + this manual. + + If after reading the above mentioned section, you believe that Bacula is not + correctly handling the level (Differential/Incremental), please send us the + following information for analysis: + +\begin{itemize} +\item Your Director's configuration file. +\item The output from {\bf list jobs} covering the period where you are + having the problem. +\item The Job report output from the prior Full save (not critical). +\item An {\bf llist jobid=nnn} where nnn is the JobId of the prior Full save. + +\item The Job report output from the save that is doing the wrong thing (not + critical). +\item An {\bf llist jobid=nnn} where nnn is the JobId of the job that was not + correct. +\item An explanation of what job went wrong and why you think it did. + \end{itemize} + +The above information can allow us to analyze what happened, without it, +there is not much we can do. + +\label{WaitForever} +\section{I am waiting forever for a backup of an offsite machine} +\item [I am Backing Up an Offsite Machine with an Unreliable Connection. + The Director Waits Forever for the Client to Contact the SD. What Can I + Do?] +\index[general]{Backing Up Offsite Machines} + Bacula was written on the assumption that it will have a good TCP/IP + connection between all the daemons. As a consequence, the current + Bacula doesn't deal with faulty connections very well. This situation + is slowly being corrected over time. + + There are several things you can do to improve the situation. + +\begin{itemize} +\item Upgrade to version 1.32 and use the new SDConnectTimeout record. For + example, set: + +\footnotesize +\begin{verbatim} + SD Connect Timeout = 5 min + +\end{verbatim} +\normalsize + +in the FileDaemon resource. +\item Run these kinds of jobs after all other jobs. + \end{itemize} + +\label{sshHanging} +\section{SSH hangs forever after starting Bacula} +\item [When I ssh into a machine and start Bacula then attempt to exit, + ssh hangs forever.] +\index[general]{ssh hangs} + This happens because Bacula leaves stdin, stdout, and stderr open for + debug purposes. To avoid it, the simplest thing to do is to redirect + the output of those files to {\bf /dev/null} or another file in your + startup script (the Red Hat autostart scripts do this automatically). + For example, you start the Director with: + +\footnotesize +\begin{verbatim} + bacula-dir -c bacula-dir.conf ... >/dev/null 0>\&1 2>\&1 + +\end{verbatim} +\normalsize + +and likewise for the other daemons. + +\label{RetentionPeriods} +\section{I'm confused by retention periods} +\item [I'm confused by the different Retention periods: File Retention, + Job Retention, Volume Retention. Why are there so many?] +\index[general]{Retention Periods} + Yes, this certainly can be confusing. The basic reason for so many is + to allow flexibility. The File records take quite a lot of space in the + catalog, so they are typically records you want to remove rather + quickly. The Job records, take very little space, and they can be + useful even without the File records to see what Jobs actually ran and + when. One must understand that if the File records are removed from the + catalog, you cannot use the {\bf restore} command to restore an + individual file since Bacula no longer knows where it is. However, as + long as the Volume Retention period has not expired, the data will still + be on the tape, and can be recovered from the tape. + + For example, I keep a 30 day retention period for my Files to keep my + catalog from getting too big, but I keep my tapes for a minimum of one + year, just in case. + +\label{MaxVolumeSize} +\section{MaxVolumeSize is ignored} +\item [Why Does Bacula Ignore the MaxVolumeSize Set in my Pool?] +\index[general]{MaxVolumeSize} + The MaxVolumeSize that Bacula uses comes from the Media record, so most + likely you changed your Pool, which is used as the default for creating + Media records, {\bf after} you created your Volume. Check what is in + the Media record by doing: + +\footnotesize +\begin{verbatim} +llist Volume=xxx +\end{verbatim} +\normalsize + +If it doesn't have the right value, you can use: + +\footnotesize +\begin{verbatim} +update Volume=xxx +\end{verbatim} +\normalsize + +to change it. + +\label{ConnectionRefused} +\section{I get a Connection refused when connecting to my Client} +\item [In connecting to my Client, I get "ERR:Connection Refused. Packet + Size too big from File daemon:192.168.1.4:9102" Why?] +\index[general]{ERR:Connection Refused} + This is typically a communications error resulting from one of the + following: + + +\begin{itemize} +\item Old versions of Bacula, usually a Win32 client, where two threads were + using the same I/O packet. Fixed in more recent versions. Please upgrade. +\item Some other program such as an HP Printer using the same port (9102 in + this case). +\end{itemize} + +If it is neither of the above, please submit a bug report at +\elink{bugs.bacula.org}{http://bugs.bacula.org}. + +Another solution might be to run the daemon with the debug option by: + +\footnotesize +\begin{verbatim} + Start a DOS shell Window. + cd c:\bacula\bin + bacula-fd -d100 -c c:\bacula\bin\bacula-fd.conf + +\end{verbatim} +\normalsize + +This will cause the FD to write a file {\bf bacula.trace} in the current +directory, which you can examine to determine the problem. + +\section{Long running jobs die with Pipe Error} +\item [During long running jobs my File daemon dies with Pipe Error, or + some other communications error. Why?] +\index[general]{Communications Errors} +\index[general]{Pipe Errors} +\index[general]{slow} +\index[general]{Backups!slow} + There are a number of reasons why a connection might break. + Most often, it is a router between your two computers that times out + inactive lines (not respecting the keepalive feature that Bacula uses). + In that case, you can use the {\bf Heartbeat Interval} directive in + both the Storage daemon and the File daemon. + + In at least one case, the problem has been a bad driver for a Win32 + NVidia NForce 3 ethernet card with driver (4.4.2 17/05/2004). + In this case, a good driver is (4.8.2.0 06/04/2005). Moral of + the story, make sure you have the latest ethernet drivers + loaded, or use the following workaround as suggested by Thomas + Simmons for Win32 machines: + + Browse to: + Start \gt{} Control Panel \gt{} Network Connections + + Right click the connection for the nvidia adapter and select properties. + Under the General tab, click "Configure...". Under the Advanced tab set + "Checksum Offload" to disabled and click OK to save the change. + + Lack of communications, or communications that get interrupted can + also be caused by Linux firewalls where you have a rule that throttles + connections or traffic. For example, if you have: + +\footnotesize +\begin{verbatim} +iptables -t filter -A INPUT -m limit --limit 3/second --limit-burst 3 -j DROP +\end{verbatim} +\normalsize + + you will want to add the following rules {\bf before} the above rule: +\footnotesize +\begin{verbatim} +iptables -t filter -A INPUT --dport 9101 -j ACCEPT +iptables -t filter -A INPUT --dport 9102 -j ACCEPT +iptables -t filter -A INPUT --dport 9103 -j ACCEPT +\end{verbatim} +\normalsize + This will ensure that any Bacula traffic will not get terminated because + of high usage rates. + +\section{How do I tell the Job which Volume to use?} +\item[I can't figure out how to tell the job which volume to use] + \index[general]{What tape to mount} + This is an interesting statement. I now see that a number of people new to + Bacula have the same problem as you, probably from using programs like tar. + + In fact, you do not tell Bacula what tapes to use. It is the inverse. Bacula + tells you want tapes it wants. You put tapes at its disposition and it + chooses. + + Now, if you *really* want to be tricky and try to tell Bacula what to do, it + will be reasonable if for example you mount a valid tape that it can use on a + drive, it will most likely go ahead and use it. It also has a documented + algorithm for choosing tapes -- but you are asking for problems ... + + So, the trick is to invert your concept of things and put Bacula in charge of + handling the tapes. Once you do that, you will be fine. If you want to + anticipate what it is going to do, you can generally figure it out correctly + and get what you want. + + If you start with the idea that you are going to force or tell Bacula to use + particular tapes or you insist on trying to run in that kind of mode, you will + probably not be too happy. + + I don't want to worry about what tape has what data. That is what Bacula is + designed for. + + If you have an application where you *really* need to remove a tape each day + and insert a new one, it can be done the directives exist to accomplish that. + In such a case, one little "trick" to knowing what tape Bacula will want at + 2am while you are asleep is to run a tiny job at 4pm while you are still at + work that backs up say one directory, or even one file. You will quickly find + out what tape it wants, and you can mount it before you go home ... + +\label{Password generation} +\section{Password generation} +\item [How do I generate a password?] +\index[general]{MaxVolumeSize} + + Each daemon needs a password. This password occurs in the configuration + file for that daemon and in the bacula-dir.conf file. These passwords are + plain text. There is no special generation procedure. Most people just + use random text. + + Passwords are never sent over the wire in plain text. They are always + encrypted. + + Security surrounding these passwords is best left security to your + operating system. Passwords are not encrypted within Bacula + configuration files. + +\end{description} + diff --git a/docs/manuals/fr/problems/faq.tex b/docs/manuals/fr/problems/faq.tex deleted file mode 100644 index 2fff751a..00000000 --- a/docs/manuals/fr/problems/faq.tex +++ /dev/null @@ -1,876 +0,0 @@ -%% -%% -% TODO: maybe merge all this FAQ in with the appropriate section? -% TODO: and use detailed indexing to help reader - -\chapter{Bacula Frequently Asked Questions} -\label{FaqChapter} -\index[general]{Questions!Bacula Frequently Asked } -\index[general]{Bacula Frequently Asked Questions } - -These are questions that have been submitted over time by the -Bacula users. The following -FAQ is very useful, but it is not always up to date -with newer information, so after reading it, if you don't find what you -want, you might try the Bacula wiki maintained by Frank Sweetser, which -contains more than just a FAQ: -\elink{http://wiki.bacula.org}{http://wiki.bacula.org} -or go directly to the FAQ at: -\elink{http://wiki.bacula.org/doku.php?id=faq} -{http://wiki.bacula.org/doku.php?id=faq}. - -Please also see -\ilink{the bugs section}{BugsChapter} of this document for a list -of known bugs and solutions. - -\begin{description} -\label{what} -\section{What is Bacula?} -\item [What is {\bf Bacula}? ] - \index[general]{What is Bacula? } - {\bf Bacula} is a network backup and restore program. - -\section{Does Bacula support Windows?} -\item [Does Bacula support Windows?] -\index[general]{Does Bacula support Windows? } - Yes, Bacula compiles and runs on Windows machines (Win98, WinMe, WinXP, - WinNT, Win2003, and Win2000). We provide a binary version of the Client - (bacula-fd), but have not tested the Director nor the Storage daemon. - Note, Win95 is no longer supported because it doesn't have the - GetFileAttributesExA API call. - - -\label{lang} -\section{What language is Bacula written in?} -\item [What language is Bacula written in?] -\index[general]{What language is Bacula written in? } - It is written in C++, but it is mostly C code using only a limited set of - the C++ extensions over C. Thus Bacula is completely compiled using the - C++ compiler. There are several modules, including the Win32 interface, that - are written using the object oriented C++ features. Over time, we are slowly - adding a larger subset of C++. - -\label{run} -\section{On what machines does Bacula run?} -\item [On what machines does Bacula run? ] - \index[general]{On what machines does Bacula run? } - {\bf Bacula} builds and executes on Red Hat Linux (versions RH7.1-RHEL - 4.0, Fedora, SuSE, Gentoo, Debian, Mandriva, ...), FreeBSD, Solaris, - Alpha, SGI (client), NetBSD, OpenBSD, Mac OS X (client), and Win32. - - Bacula has been my only backup tool for over seven years backing up 8 - machines nightly (6 Linux boxes running SuSE, previously - Red Hat and Fedora, a WinXP machine, and a WinNT machine). - - -\label{stable} -\section{Is Bacula Stable?} -\item [Is Bacula Stable? ] -\index[general]{Is Bacula Stable? } - Yes, it is remarkably stable, but remember, there are still a lot of - unimplemented or partially implemented features. With a program of this - size (150,000+ lines of C++ code not including the SQL programs) there - are bound to be bugs. The current test environment (a twisted pair - local network and a HP DLT backup tape) is not exactly ideal, so - additional testing on other sites is necessary. The File daemon has - never crashed -- running months at a time with no intervention. The - Storage daemon is remarkably stable with most of the problems arising - during labeling or switching tapes. Storage daemon crashes are rare - but running multiple drives and simultaneous jobs sometimes (rarely) - problems. - The Director, given the multitude of functions it fulfills is also - relatively stable. In a production environment, it rarely if ever - crashes. Of the three daemons, the Director is the most prone to having - problems. Still, it frequently runs several months with no problems. - - There are a number of reasons for this stability. - - \begin{enumerate} - \item The program is constantly checking the chain of allocated - memory buffers to ensure that no overruns have occurred. \\ - \item All memory leaks (orphaned buffers) are reported each time the - program terminates.\\ - \item Any signal (segmentation fault, ...) generates a - traceback that is emailed to the developer. This permits quick - resolution of bugs even if they only show up rarely in a production - system.\\ - \item There is a reasonably comprehensive set of regression tests - that avoids re-creating the most common errors in new versions of - Bacula. - \end{enumerate} - -\label{AuthorizationErrors} -\section{I'm Getting Authorization Errors. What is Going On? } -\item [I'm Getting Authorization Errors. What is Going On? ] -\index[general]{Authorization Errors} -\index[general]{Concurrent Jobs} - For security reasons, Bacula requires that both the File daemon and the - Storage daemon know the name of the Director as well as its password. As a - consequence, if you change the Director's name or password, you must make - the corresponding change in the Storage daemon's and in the File daemon's - configuration files. - - During the authorization process, the Storage daemon and File daemon - also require that the Director authenticates itself, so both ends - require the other to have the correct name and password. - - If you have edited the conf files and modified any name or any password, - and you are getting authentication errors, then your best bet is to go - back to the original conf files generated by the Bacula installation - process. Make only the absolutely necessary modifications to these - files -- e.g. add the correct email address. Then follow the - instructions in the \ilink{ Running Bacula}{TutorialChapter} chapter of - this manual. You will run a backup to disk and a restore. Only when - that works, should you begin customization of the conf files. - - Another reason that you can get authentication errors is if you are - running Multiple Concurrent Jobs in the Director, but you have not set - them in the File daemon or the Storage daemon. Once you reach their - limit, they will reject the connection producing authentication (or - connection) errors. - - If you are having problems connecting to a Windows machine that - previously worked, you might try restarting the Bacula service since - Windows frequently encounters networking connection problems. - - Some users report that authentication fails if there is not a proper - reverse DNS lookup entry for the machine. This seems to be a - requirement of gethostbyname(), which is what Bacula uses to translate - names into IP addresses. If you cannot add a reverse DNS entry, or you - don't know how to do so, you can avoid the problem by specifying an IP - address rather than a machine name in the appropriate Bacula conf file. - - Here is a picture that indicates what names/passwords in which - files/Resources must match up: - - \includegraphics{\idir Conf-Diagram.eps} - - In the left column, you will find the Director, Storage, and Client - resources, with their names and passwords -- these are all in {\bf - bacula-dir.conf}. The right column is where the corresponding values - should be found in the Console, Storage daemon (SD), and File daemon (FD) - configuration files. - - Another thing to check is to ensure that the Bacula component you are - trying to access has {\bf Maximum Concurrent Jobs} set large enough to - handle each of the Jobs and the Console that want to connect - simultaneously. Once the maximum connections has been reached, each - Bacula component will reject all new connections. - - Finally, make sure you have no {\bf hosts.allow} or {\bf hosts.deny} - file that is not permitting access to the site trying to connect. - -\label{AccessProblems} -\section{Bacula Runs Fine but Cannot Access a Client on a Different Machine. - Why? } -\item [Bacula Runs Fine but Cannot Access a Client on a Different Machine. - Why? ] -\index[general]{Cannot Access a Client} - There are several reasons why Bacula could not contact a client on a - different machine. They are: - -\begin{itemize} -\item It is a Windows Client, and the client died because of an improper - configuration file. Check that the Bacula icon is in the system tray and the - the menu items work. If the client has died, the icon will disappear only - when you move the mouse over the icon. -\item The Client address or port is incorrect or not resolved by DNS. See if - you can ping the client machine using the same address as in the Client - record. -\item You have a firewall, and it is blocking traffic on port 9102 between - the Director's machine and the Client's machine (or on port 9103 between the - Client and the Storage daemon machines). -\item Your password or names are not correct in both the Director and the - Client machine. Try configuring everything identical to how you run the - client on the same machine as the Director, but just change the Address. If - that works, make the other changes one step at a time until it works. -\item You may also be having problems between your File daemon and your - Storage daemon. The name you use in the Storage resource of your - Director's conf file must be known (resolvable) by the File daemon, - because it is passed symbolically to the File daemon, which then - resolves it to get an IP address used to contact the Storage daemon. -\item You may have a {\bf hosts.allow} or {\bf hosts.deny} file that is - not permitting access. -\end{itemize} - -\label{startover} -\section{My Catalog is Full of Test Runs, How Can I Start Over?} -\item [My Catalog is Full of Test Runs, How Can I Start Over? ] - \index[general]{My Catalog is Full of Test Runs, How Can I Start Over? } - If you are using MySQL do the following: - -\footnotesize -\begin{verbatim} - cd /src/cats - ./drop_mysql_tables - ./make_mysql_tables - -\end{verbatim} -\normalsize - -If you are using SQLite, do the following: - -\footnotesize -\begin{verbatim} - Delete bacula.db from your working directory. - cd /src/cats - ./drop_sqlite_tables - ./make_sqlite_tables - -\end{verbatim} -\normalsize - -Then write an EOF on each tape you used with {\bf Bacula} using: - -\footnotesize -\begin{verbatim} -mt -f /dev/st0 rewind -mt -f /dev/st0 weof -\end{verbatim} -\normalsize - -where you need to adjust the device name for your system. - -\label{restorehang} -\section{I Run a Restore Job and Bacula Hangs. What do I do?} -\item [I Run a Restore Job and Bacula Hangs. What do I do?] -\index[general]{I Run a Restore Job and Bacula Hangs. What do I do? } - On Bacula version 1.25 and prior, it expects you to have the correct - tape mounted prior to a restore. On Bacula version 1.26 and higher, it - will ask you for the tape, and if the wrong one is mounted, it will - inform you. - - If you have previously done an {\bf unmount} command, all Storage daemon - sessions (jobs) will be completely blocked from using the drive - unmounted, so be sure to do a {\bf mount} after your unmount. If in - doubt, do a second {\bf mount}, it won't cause any harm. - -\label{windowstart} -\section{I Cannot Get My Windows Client to Start Automatically? } -\item [I Cannot Get My Windows Client to Start Automatically? ] -\index[general]{Windows Auto Start} - You are probably having one of two problems: either the Client is dying - due to an incorrect configuration file, or you didn't do the - Installation commands necessary to install it as a Windows Service. - - For the first problem, see the next FAQ question. For the second - problem, please review the \ilink{ Windows Installation - instructions}{Win32Chapter} in this manual. - -\label{windowsdie} -\section{My Windows Client Immediately Dies When I Start It} -\item [My Windows Client Immediately Dies When I Start It] -\index[general]{Windows Client Dies} -The most common problem is either that the configuration file is not where -it expects it to be, or that there is an error in the configuration file. -You must have the configuration file in {\bf -c:\textbackslash{}bacula\textbackslash{}bin\textbackslash{}bacula-fd.conf}. - -To {\bf see} what is going on when the File daemon starts on Windows, do the -following: - -\footnotesize -\begin{verbatim} - Start a DOS shell Window. - cd c:\bacula\bin - bacula-fd -d100 -c c:\bacula\bin\bacula-fd.conf - -\end{verbatim} -\normalsize - -This will cause the FD to write a file {\bf bacula.trace} in the current -directory, which you can examine and thereby determine the problem. - -\label{scroll} -\item [When I Start the Console, the Error Messages Fly By. How can I see - them? ] -\index[general]{Error Messages} - Either use a shell window with a scroll bar, or use the gnome-console. - In any case, you probably should be logging all output to a file, and - then you can simply view the file using an editor or the {\bf less} - program. To log all output, I have the following in my Director's - Message resource definition: - -\footnotesize -\begin{verbatim} - append = "/home/kern/bacula/bin/log" = all, !skipped - -\end{verbatim} -\normalsize - -Obviously you will want to change the filename to be appropriate for your -system. - -\label{nobackup} -\section{My backups are not working on my Windows - Client. What should I do?} -\item [I didn't realize that the backups were not working on my Windows - Client. What should I do? ] -\index[general]{Backups Failing} -You should be sending yourself an email message for each job. This will avoid -the possibility of not knowing about a failed backup. To do so put something -like: - -\footnotesize -\begin{verbatim} - Mail = yourname@yourdomain = all, !skipped - -\end{verbatim} -\normalsize - -in your Director's message resource. You should then receive one email for -each Job that ran. When you are comfortable with what is going on (it took -me 9 months), you might change that to: - -\footnotesize -\begin{verbatim} - MailOnError = yourname@yourdomain = all, !skipped - -\end{verbatim} -\normalsize - -then you only get email messages when a Job errors as is the case for your -Windows machine. - -You should also be logging the Director's messages, please see the previous -FAQ for how to do so. - -\label{sched} -\section{All my Jobs are scheduled for the same time. Will this cause - problems?} -\item [All my Jobs are scheduled for the same time. Will this cause - problems? ] -\index[general]{Schedule problems} - No, not at all. Bacula will schedule all the Jobs at the same time, but - will run them one after another unless you have increased the number of - simultaneous jobs in the configuration files for the Director, the File - daemon, and the Storage daemon. The appropriate configuration record is - {\bf Maximum Concurrent Jobs = nn}. At the current time, we recommend - that you leave this set to {\bf 1} for the Director. - -\label{disk} -\section{Can Bacula Backup My System To Files instead of Tape?} -\item [Can Bacula Backup My System To Files instead of Tape? ] -\index[general]{Backup to Disk} - Yes, in principle, Bacula can backup to any storage medium as long as - you have correctly defined that medium in the Storage daemon's Device - resource. For an example of how to backup to files, please see the - \ilink{Pruning Example}{PruningExample} in the Recycling chapter of this - manual. Also, there is a whole chapter devoted to \ilink{Basic Volume - Management}{DiskChapter}. This chapter was originally written to - explain how to write to disk, but was expanded to include volume - management. It is, however, still quite a good chapter to read. - -\label{testbackup} -\section{Can I use a dummy device to test the backup?} - Yes, to have a {\sl Virtual} device which just consumes data, you can use a - FIFO device (see \ilink{Stored configuration}{SetupFifo}). - It's useful to test a backup. -\footnotesize -\begin{verbatim} -Device { - Name = NULL - Media Type = NULL - Device Type = Fifo - Archive Device = /dev/null - LabelMedia = yes - Random Access = no - AutomaticMount = no - RemovableMedia = no - MaximumOpenWait = 60 - AlwaysOpen = no -} -\end{verbatim} -\normalsize - -\label{bigfiles} -\section{Can Bacula Backup and Restore Files Bigger than 2 Gigabytes?} -\item [Can Bacula Backup and Restore Files Bigger than 2 Gigabytes?] -\index[general]{Large file support} -If your operating system permits it, and you are running Bacula version -1.26 or later, the answer is yes. To the best of our knowledge all client -system supported by Bacula can handle files bigger 2 Gigabytes. - -\label{cancel} -\section{I want to stop a job.} -%% Is there a better way than "./bacula stop" to stop it?} -\item [I Started A Job then Decided I Really Did Not Want to Run It. Is - there a better way than {\bf ./bacula stop} to stop it?] -\index[general]{Cancelling jobs} - Yes, you normally should use the Console command {\bf cancel} to cancel - a Job that is either scheduled or running. If the Job is scheduled, it - will be marked for cancellation and will be canceled when it is - scheduled to start. If it is running, it will normally terminate after - a few minutes. If the Job is waiting on a tape mount, you may need to - do a {\bf mount} command before it will be canceled. - -\label{trademark} -\section{Why have You Trademarked the Name Bacula?} -\item [Why have You Trademarked the Name - Bacula\raisebox{.6ex}{{\footnotesize \textsuperscript{\textregistered}}}?] -\index[general]{Bacula Trademark} -We have trademarked the name Bacula to ensure that all media written by any -program named Bacula will always be compatible. Anyone may use the name -Bacula, even in a derivative product as long as it remains totally compatible -in all respects with the program defined here. - -\label{docversion} -\section{Why is the Online Document for Version 1.39 but the Released Version is 1.38?} -\item [Why is the Online Document for Version 1.39 of Bacula when the - Current Version is 1.38?] -\index[general]{Multiple manuals} -As Bacula is being developed, the document is also being enhanced, more -often than not it has clarifications of existing features that can be very -useful to our users, so we publish the very latest document. Fortunately -it is rare that there are confusions with new features. - -If you want to read a document that pertains only to a specific version, -please use the one distributed in the source code. The web site also has -online versions of both the released manual and the current development -manual. - -\label{sure} -\section{Does Bacula really save and restore all files?} -\item [How Can I Be Sure that Bacula Really Saves and Restores All Files? ] -\index[general]{Checking Restores} - It is really quite simple, but took me a while to figure - out how to "prove" it. First make a Bacula Rescue disk, see the - \ilink{Disaster Recovery Using Bacula}{RescueChapter} chapter - of this manual. - Second, you run a full backup of all your files on all partitions. - Third, you run an Verify InitCatalog Job on the same FileSet, which - effectively makes a record of all the files on your system. Fourth, you - run a Verify Catalog job and assure yourself that nothing has changed - (well, between an InitCatalog and Catalog one doesn't expect anything). - Then do the unthinkable, write zeros on your MBR (master boot record) - wiping out your hard disk. Now, restore your whole system using your - Bacula Rescue disk and the Full backup you made, and finally re-run the - Verify Catalog job. You will see that with the exception of the - directory modification and access dates and the files changed during the - boot, your system is identical to what it was before you wiped your hard - disk. - Alternatively you could do the wiping and restoring to another computer - of the same type. - -\label{upgrade} -\section{I want an Incremental but Bacula runs it as a Full backup. Why?} -\item [I did a Full backup last week, but now in running an Incremental, - Bacula says it did not find a FULL backup, so it did a FULL backup. Why?] -\index[general]{FULL backup not found} - Before doing an Incremental or a Differential - backup, Bacula checks to see if there was a prior Full backup of the - same Job that terminated successfully. If so, it uses the date that - full backup started as the time for comparing if files have changed. If - Bacula does not find a successful full backup, it proceeds to do one. - Perhaps you canceled the full backup, or it terminated in error. In - such cases, the full backup will not be successful. You can check by - entering {\bf list jobs} and look to see if there is a prior Job with - the same Name that has Level F and JobStatus T (normal termination). - - Another reason why Bacula may not find a suitable Full backup is that - every time you change the FileSet, Bacula will require a new Full - backup. This is necessary to ensure that all files are properly backed - up in the case where you have added more files to the FileSet. - Beginning with version 1.31, the FileSets are also dated when they are - created, and this date is displayed with the name when you are listing - or selecting a FileSet. For more on backup levels see below. - - See also {\bf Ignore FileSet Changes} in the - \ilink{FileSet Resource definition}{FileSetResource} in the Director - chapter of this document. - -\label{filenamelengths} -\section{Do you really handle unlimited path lengths?} -\item [How Can You Claim to Handle Unlimited Path and Filename Lengths - when All Other Programs Have Fixed Limits?] -\index[general]{Path and Filename Lengths} - Most of those other programs have been around for a long time, in fact - since the beginning of Unix, which means that they were designed for - rather small fixed length path and filename lengths. Over the years, - these restrictions have been relaxed allowing longer names. Bacula on - the other hand was designed in 2000, and so from the start, Path and - Filenames have been kept in buffers that start at 256 bytes in length, - but can grow as needed to handle any length. Most of the work is - carried out by lower level routines making the coding rather easy. - - Note that due to limitations Win32 path and filenames cannot exceed - 260 characters. By using Win32 Unicode functions, we will remove this - restriction in later versions of Bacula. - -\label{unique} -\section{What Is the Really Unique Feature of Bacula?} -\item [What Is the Really Unique Feature of Bacula?] -\index[general]{Unique Feature of Bacula} - Well, it is hard to come up with unique features when backup programs - for Unix machines have been around since the 1960s. That said, I - believe that Bacula is the first and only program to use a standard SQL - interface to catalog its database. Although this adds a bit of - complexity and possibly overhead, it provides an amazingly rich set of - features that are easy to program and enhance. The current code has - barely scratched the surface in this regard (version 1.38). - - The second feature, which gives a lot of power and flexibility to Bacula - is the Bootstrap record definition. - - The third unique feature, which is currently (1.30) unimplemented, and - thus can be called vaporware :-), is Base level saves. When - implemented, this will enormously reduce tape usage. - -\label{sequence} -\section{How can I force one job to run after another?} -\item [If I Run Multiple Simultaneous Jobs, How Can I Force One - Particular Job to Run After Another Job? ] -\index[general]{Multiple Simultaneous Jobs} -Yes, you can set Priorities on your jobs so that they run in the order you -specify. Please see: -\ilink{the Priority record}{Priority} in the Job resource. - -\label{nomail} -\section{I Am Not Getting Email Notification, What Can I Do? } -\item [I Am Not Getting Email Notification, What Can I Do? ] -\index[general]{No Email Notification} - The most common problem is that you have not specified a fully qualified - email address and your bsmtp server is rejecting the mail. The next - most common problem is that your bsmtp server doesn't like the syntax on - the From part of the message. For more details on this and other - problems, please see the \ilink{ Getting Email Notification to - Work}{email} section of the Tips chapter of this manual. The section - \ilink{ Getting Notified of Job Completion}{notification} of the Tips - chapter may also be useful. For more information on the {\bf bsmtp} - mail program, please see \ilink{bsmtp in the Volume Utility Tools - chapter}{bsmtp} of this manual. - -\label{periods} -\section{My retention periods don't work} -\item [I Change Recycling, Retention Periods, or File Sizes in my Pool - Resource and they Still Don't Work.] -\index[general]{Recycling} -\index[general]{Retention Periods} -\index[general]{Pool changes} - The different variables associated with a Pool are defined in the Pool - Resource, but are actually read by Bacula from the Catalog database. On - Bacula versions prior to 1.30, after changing your Pool Resource, you must - manually update the corresponding values in the Catalog by using the {\bf - update pool} command in the Console program. In Bacula version 1.30, Bacula - does this for you automatically every time it starts. - - When Bacula creates a Media record (Volume), it uses many default values from - the Pool record. If you subsequently change the Pool record, the new values - will be used as a default for the next Volume that is created, but if you - want the new values to apply to existing Volumes, you must manually update - the Volume Catalog entry using the {\bf update volume} command in the Console - program. - -\label{CompressionNotWorking} -\section{Why aren't my files compressed?} -\item [I Have Configured Compression On, But None of My Files Are - Compressed. Why?] -\index[general]{Compression} - There are two kinds of compression. One is tape compression. This is done by - the tape drive hardware, and you either enable or disable it with system - tools such as {\bf mt}. This compression works independently of Bacula, - and when it is enabled, you should not use the Bacula software - compression. - - Bacula also has software compression code in the File daemons, which you - normally need to enable only when backing up to file Volumes. There are - two conditions necessary to enable the Bacula software compression. - -\begin{enumerate} -\item You must have the zip development libraries loaded on your system - when building Bacula and Bacula must find this library, normally {\bf - /usr/lib/libz.a}. On Red Hat systems, this library is provided by the - {\bf zlib-devel} rpm. - - If the library is found by Bacula during the {\bf ./configure} it will - be mentioned in the {\bf config.out} line by: - -\footnotesize -\begin{verbatim} - ZLIB support: yes - -\end{verbatim} -\normalsize - -\item You must add the {\bf compression=gzip} option on your Include - statement in the Director's configuration file. -\end{enumerate} - -\label{NewTape} -\item [Bacula is Asking for a New Tape After 2 GB of Data but My Tape - holds 33 GB. Why?] -\index[general]{Tape capacity} -There are several reasons why Bacula will request a new tape. - -\begin{itemize} -\item There is an I/O error on the tape. Bacula prints an error message and - requests a new tape. Bacula does not attempt to continue writing after an - I/O error. -\item Bacula encounters and end of medium on the tape. This is not always - distinguishable from an I/O error. -\item You have specifically set some size limitation on the tape. For example - the {\bf Maximum Volume Bytes} or {\bf Maximum Volume Files} in the - Director's Pool resource, or {\bf Maximum Volume Size} in the Storage - daemon's Device resource. -\end{itemize} - -\label{LevelChanging} -\section{Incremental backups are not working} -\item [Bacula is Not Doing the Right Thing When I Request an Incremental - Backup. Why?] -\index[general]{Incremental backups} - As explained in one of the previous questions, Bacula will automatically - upgrade an Incremental or Differential job to a Full backup if it cannot - find a prior Full backup or a suitable Full backup. For the gory - details on how/when Bacula decides to upgrade levels please see the - \ilink{Level record}{Level} in the Director's configuration chapter of - this manual. - - If after reading the above mentioned section, you believe that Bacula is not - correctly handling the level (Differential/Incremental), please send us the - following information for analysis: - -\begin{itemize} -\item Your Director's configuration file. -\item The output from {\bf list jobs} covering the period where you are - having the problem. -\item The Job report output from the prior Full save (not critical). -\item An {\bf llist jobid=nnn} where nnn is the JobId of the prior Full save. - -\item The Job report output from the save that is doing the wrong thing (not - critical). -\item An {\bf llist jobid=nnn} where nnn is the JobId of the job that was not - correct. -\item An explanation of what job went wrong and why you think it did. - \end{itemize} - -The above information can allow us to analyze what happened, without it, -there is not much we can do. - -\label{WaitForever} -\section{I am waiting forever for a backup of an offsite machine} -\item [I am Backing Up an Offsite Machine with an Unreliable Connection. - The Director Waits Forever for the Client to Contact the SD. What Can I - Do?] -\index[general]{Backing Up Offsite Machines} - Bacula was written on the assumption that it will have a good TCP/IP - connection between all the daemons. As a consequence, the current - Bacula doesn't deal with faulty connections very well. This situation - is slowly being corrected over time. - - There are several things you can do to improve the situation. - -\begin{itemize} -\item Upgrade to version 1.32 and use the new SDConnectTimeout record. For - example, set: - -\footnotesize -\begin{verbatim} - SD Connect Timeout = 5 min - -\end{verbatim} -\normalsize - -in the FileDaemon resource. -\item Run these kinds of jobs after all other jobs. - \end{itemize} - -\label{sshHanging} -\section{SSH hangs forever after starting Bacula} -\item [When I ssh into a machine and start Bacula then attempt to exit, - ssh hangs forever.] -\index[general]{ssh hangs} - This happens because Bacula leaves stdin, stdout, and stderr open for - debug purposes. To avoid it, the simplest thing to do is to redirect - the output of those files to {\bf /dev/null} or another file in your - startup script (the Red Hat autostart scripts do this automatically). - For example, you start the Director with: - -\footnotesize -\begin{verbatim} - bacula-dir -c bacula-dir.conf ... >/dev/null 0>\&1 2>\&1 - -\end{verbatim} -\normalsize - -and likewise for the other daemons. - -\label{RetentionPeriods} -\section{I'm confused by retention periods} -\item [I'm confused by the different Retention periods: File Retention, - Job Retention, Volume Retention. Why are there so many?] -\index[general]{Retention Periods} - Yes, this certainly can be confusing. The basic reason for so many is - to allow flexibility. The File records take quite a lot of space in the - catalog, so they are typically records you want to remove rather - quickly. The Job records, take very little space, and they can be - useful even without the File records to see what Jobs actually ran and - when. One must understand that if the File records are removed from the - catalog, you cannot use the {\bf restore} command to restore an - individual file since Bacula no longer knows where it is. However, as - long as the Volume Retention period has not expired, the data will still - be on the tape, and can be recovered from the tape. - - For example, I keep a 30 day retention period for my Files to keep my - catalog from getting too big, but I keep my tapes for a minimum of one - year, just in case. - -\label{MaxVolumeSize} -\section{MaxVolumeSize is ignored} -\item [Why Does Bacula Ignore the MaxVolumeSize Set in my Pool?] -\index[general]{MaxVolumeSize} - The MaxVolumeSize that Bacula uses comes from the Media record, so most - likely you changed your Pool, which is used as the default for creating - Media records, {\bf after} you created your Volume. Check what is in - the Media record by doing: - -\footnotesize -\begin{verbatim} -llist Volume=xxx -\end{verbatim} -\normalsize - -If it doesn't have the right value, you can use: - -\footnotesize -\begin{verbatim} -update Volume=xxx -\end{verbatim} -\normalsize - -to change it. - -\label{ConnectionRefused} -\section{I get a Connection refused when connecting to my Client} -\item [In connecting to my Client, I get "ERR:Connection Refused. Packet - Size too big from File daemon:192.168.1.4:9102" Why?] -\index[general]{ERR:Connection Refused} - This is typically a communications error resulting from one of the - following: - - -\begin{itemize} -\item Old versions of Bacula, usually a Win32 client, where two threads were - using the same I/O packet. Fixed in more recent versions. Please upgrade. -\item Some other program such as an HP Printer using the same port (9102 in - this case). -\end{itemize} - -If it is neither of the above, please submit a bug report at -\elink{bugs.bacula.org}{http://bugs.bacula.org}. - -Another solution might be to run the daemon with the debug option by: - -\footnotesize -\begin{verbatim} - Start a DOS shell Window. - cd c:\bacula\bin - bacula-fd -d100 -c c:\bacula\bin\bacula-fd.conf - -\end{verbatim} -\normalsize - -This will cause the FD to write a file {\bf bacula.trace} in the current -directory, which you can examine to determine the problem. - -\section{Long running jobs die with Pipe Error} -\item [During long running jobs my File daemon dies with Pipe Error, or - some other communications error. Why?] -\index[general]{Communications Errors} -\index[general]{Pipe Errors} -\index[general]{slow} -\index[general]{Backups!slow} - There are a number of reasons why a connection might break. - Most often, it is a router between your two computers that times out - inactive lines (not respecting the keepalive feature that Bacula uses). - In that case, you can use the {\bf Heartbeat Interval} directive in - both the Storage daemon and the File daemon. - - In at least one case, the problem has been a bad driver for a Win32 - NVidia NForce 3 ethernet card with driver (4.4.2 17/05/2004). - In this case, a good driver is (4.8.2.0 06/04/2005). Moral of - the story, make sure you have the latest ethernet drivers - loaded, or use the following workaround as suggested by Thomas - Simmons for Win32 machines: - - Browse to: - Start \gt{} Control Panel \gt{} Network Connections - - Right click the connection for the nvidia adapter and select properties. - Under the General tab, click "Configure...". Under the Advanced tab set - "Checksum Offload" to disabled and click OK to save the change. - - Lack of communications, or communications that get interrupted can - also be caused by Linux firewalls where you have a rule that throttles - connections or traffic. For example, if you have: - -\footnotesize -\begin{verbatim} -iptables -t filter -A INPUT -m limit --limit 3/second --limit-burst 3 -j DROP -\end{verbatim} -\normalsize - - you will want to add the following rules {\bf before} the above rule: -\footnotesize -\begin{verbatim} -iptables -t filter -A INPUT --dport 9101 -j ACCEPT -iptables -t filter -A INPUT --dport 9102 -j ACCEPT -iptables -t filter -A INPUT --dport 9103 -j ACCEPT -\end{verbatim} -\normalsize - This will ensure that any Bacula traffic will not get terminated because - of high usage rates. - -\section{How do I tell the Job which Volume to use?} -\item[I can't figure out how to tell the job which volume to use] - \index[general]{What tape to mount} - This is an interesting statement. I now see that a number of people new to - Bacula have the same problem as you, probably from using programs like tar. - - In fact, you do not tell Bacula what tapes to use. It is the inverse. Bacula - tells you want tapes it wants. You put tapes at its disposition and it - chooses. - - Now, if you *really* want to be tricky and try to tell Bacula what to do, it - will be reasonable if for example you mount a valid tape that it can use on a - drive, it will most likely go ahead and use it. It also has a documented - algorithm for choosing tapes -- but you are asking for problems ... - - So, the trick is to invert your concept of things and put Bacula in charge of - handling the tapes. Once you do that, you will be fine. If you want to - anticipate what it is going to do, you can generally figure it out correctly - and get what you want. - - If you start with the idea that you are going to force or tell Bacula to use - particular tapes or you insist on trying to run in that kind of mode, you will - probably not be too happy. - - I don't want to worry about what tape has what data. That is what Bacula is - designed for. - - If you have an application where you *really* need to remove a tape each day - and insert a new one, it can be done the directives exist to accomplish that. - In such a case, one little "trick" to knowing what tape Bacula will want at - 2am while you are asleep is to run a tiny job at 4pm while you are still at - work that backs up say one directory, or even one file. You will quickly find - out what tape it wants, and you can mount it before you go home ... - -\label{Password generation} -\section{Password generation} -\item [How do I generate a password?] -\index[general]{MaxVolumeSize} - - Each daemon needs a password. This password occurs in the configuration - file for that daemon and in the bacula-dir.conf file. These passwords are - plain text. There is no special generation procedure. Most people just - use random text. - - Passwords are never sent over the wire in plain text. They are always - encrypted. - - Security surrounding these passwords is best left security to your - operating system. Passwords are not encrypted within Bacula - configuration files. - -\end{description} - diff --git a/docs/manuals/fr/problems/fdl-en.tex b/docs/manuals/fr/problems/fdl-en.tex new file mode 100644 index 00000000..b46cd990 --- /dev/null +++ b/docs/manuals/fr/problems/fdl-en.tex @@ -0,0 +1,485 @@ +% TODO: maybe get rid of centering + +\chapter{GNU Free Documentation License} +\index[general]{GNU Free Documentation License} +\index[general]{License!GNU Free Documentation} + +\label{label_fdl} + + \begin{center} + + Version 1.2, November 2002 + + + Copyright \copyright 2000,2001,2002 Free Software Foundation, Inc. + + \bigskip + + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + \bigskip + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. +\end{center} + + +\begin{center} +{\bf\large Preamble} +\end{center} + +The purpose of this License is to make a manual, textbook, or other +functional and useful document "free" in the sense of freedom: to +assure everyone the effective freedom to copy and redistribute it, +with or without modifying it, either commercially or noncommercially. +Secondarily, this License preserves for the author and publisher a way +to get credit for their work, while not being considered responsible +for modifications made by others. + +This License is a kind of "copyleft", which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + + +\begin{center} +{\Large\bf 1. APPLICABILITY AND DEFINITIONS} +\end{center} + +This License applies to any manual or other work, in any medium, that +contains a notice placed by the copyright holder saying it can be +distributed under the terms of this License. Such a notice grants a +world-wide, royalty-free license, unlimited in duration, to use that +work under the conditions stated herein. The \textbf{"Document"}, below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as \textbf{"you"}. You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law. + +A \textbf{"Modified Version"} of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +A \textbf{"Secondary Section"} is a named appendix or a front-matter section of +the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall subject +(or to related matters) and contains nothing that could fall directly +within that overall subject. (Thus, if the Document is in part a +textbook of mathematics, a Secondary Section may not explain any +mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +The \textbf{"Invariant Sections"} are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. If a +section does not fit the above definition of Secondary then it is not +allowed to be designated as Invariant. The Document may contain zero +Invariant Sections. If the Document does not identify any Invariant +Sections then there are none. + +The \textbf{"Cover Texts"} are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. A Front-Cover Text may +be at most 5 words, and a Back-Cover Text may be at most 25 words. + +A \textbf{"Transparent"} copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, that is suitable for revising the document +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup, or absence of markup, has been arranged to thwart +or discourage subsequent modification by readers is not Transparent. +An image format is not Transparent if used for any substantial amount +of text. A copy that is not "Transparent" is called \textbf{"Opaque"}. + +Examples of suitable formats for Transparent copies include plain +ASCII without markup, Texinfo input format, LaTeX input format, SGML +or XML using a publicly available DTD, and standard-conforming simple +HTML, PostScript or PDF designed for human modification. Examples of +transparent image formats include PNG, XCF and JPG. Opaque formats +include proprietary formats that can be read and edited only by +proprietary word processors, SGML or XML for which the DTD and/or +processing tools are not generally available, and the +machine-generated HTML, PostScript or PDF produced by some word +processors for output purposes only. + +The \textbf{"Title Page"} means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, "Title Page" means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. + +A section \textbf{"Entitled XYZ"} means a named subunit of the Document whose +title either is precisely XYZ or contains XYZ in parentheses following +text that translates XYZ in another language. (Here XYZ stands for a +specific section name mentioned below, such as \textbf{"Acknowledgements"}, +\textbf{"Dedications"}, \textbf{"Endorsements"}, or \textbf{"History"}.) +To \textbf{"Preserve the Title"} +of such a section when you modify the Document means that it remains a +section "Entitled XYZ" according to this definition. + +The Document may include Warranty Disclaimers next to the notice which +states that this License applies to the Document. These Warranty +Disclaimers are considered to be included by reference in this +License, but only as regards disclaiming warranties: any other +implication that these Warranty Disclaimers may have is void and has +no effect on the meaning of this License. + + +\begin{center} +{\Large\bf 2. VERBATIM COPYING} +\end{center} + +You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +You may also lend copies, under the same conditions stated above, and +you may publicly display copies. + + +\begin{center} +{\Large\bf 3. COPYING IN QUANTITY} +\end{center} + + +If you publish printed copies (or copies in media that commonly have +printed covers) of the Document, numbering more than 100, and the +Document's license notice requires Cover Texts, you must enclose the +copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a computer-network location from which the general network-using +public has access to download using public-standard network protocols +a complete Transparent copy of the Document, free of added material. +If you use the latter option, you must take reasonably prudent steps, +when you begin distribution of Opaque copies in quantity, to ensure +that this Transparent copy will remain thus accessible at the stated +location until at least one year after the last time you distribute an +Opaque copy (directly or through your agents or retailers) of that +edition to the public. + +It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. + + +\begin{center} +{\Large\bf 4. MODIFICATIONS} +\end{center} + +You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +\begin{itemize} +\item[A.] + Use in the Title Page (and on the covers, if any) a title distinct + from that of the Document, and from those of previous versions + (which should, if there were any, be listed in the History section + of the Document). You may use the same title as a previous version + if the original publisher of that version gives permission. + +\item[B.] + List on the Title Page, as authors, one or more persons or entities + responsible for authorship of the modifications in the Modified + Version, together with at least five of the principal authors of the + Document (all of its principal authors, if it has fewer than five), + unless they release you from this requirement. + +\item[C.] + State on the Title page the name of the publisher of the + Modified Version, as the publisher. + +\item[D.] + Preserve all the copyright notices of the Document. + +\item[E.] + Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. + +\item[F.] + Include, immediately after the copyright notices, a license notice + giving the public permission to use the Modified Version under the + terms of this License, in the form shown in the Addendum below. + +\item[G.] + Preserve in that license notice the full lists of Invariant Sections + and required Cover Texts given in the Document's license notice. + +\item[H.] + Include an unaltered copy of this License. + +\item[I.] + Preserve the section Entitled "History", Preserve its Title, and add + to it an item stating at least the title, year, new authors, and + publisher of the Modified Version as given on the Title Page. If + there is no section Entitled "History" in the Document, create one + stating the title, year, authors, and publisher of the Document as + given on its Title Page, then add an item describing the Modified + Version as stated in the previous sentence. + +\item[J.] + Preserve the network location, if any, given in the Document for + public access to a Transparent copy of the Document, and likewise + the network locations given in the Document for previous versions + it was based on. These may be placed in the "History" section. + You may omit a network location for a work that was published at + least four years before the Document itself, or if the original + publisher of the version it refers to gives permission. + +\item[K.] + For any section Entitled "Acknowledgements" or "Dedications", + Preserve the Title of the section, and preserve in the section all + the substance and tone of each of the contributor acknowledgements + and/or dedications given therein. + +\item[L.] + Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section titles. + +\item[M.] + Delete any section Entitled "Endorsements". Such a section + may not be included in the Modified Version. + +\item[N.] + Do not retitle any existing section to be Entitled "Endorsements" + or to conflict in title with any Invariant Section. + +\item[O.] + Preserve any Warranty Disclaimers. +\end{itemize} + +If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +You may add a section Entitled "Endorsements", provided it contains +nothing but endorsements of your Modified Version by various +parties--for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. + + +\begin{center} +{\Large\bf 5. COMBINING DOCUMENTS} +\end{center} + + +You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice, and that you preserve all their Warranty Disclaimers. + +The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +In the combination, you must combine any sections Entitled "History" +in the various original documents, forming one section Entitled +"History"; likewise combine any sections Entitled "Acknowledgements", +and any sections Entitled "Dedications". You must delete all sections +Entitled "Endorsements". + +\begin{center} +{\Large\bf 6. COLLECTIONS OF DOCUMENTS} +\end{center} + +You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. + +You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. + + +\begin{center} +{\Large\bf 7. AGGREGATION WITH INDEPENDENT WORKS} +\end{center} + + +A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, is called an "aggregate" if the copyright +resulting from the compilation is not used to limit the legal rights +of the compilation's users beyond what the individual works permit. +When the Document is included in an aggregate, this License does not +apply to the other works in the aggregate which are not themselves +derivative works of the Document. + +If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one half of +the entire aggregate, the Document's Cover Texts may be placed on +covers that bracket the Document within the aggregate, or the +electronic equivalent of covers if the Document is in electronic form. +Otherwise they must appear on printed covers that bracket the whole +aggregate. + + +\begin{center} +{\Large\bf 8. TRANSLATION} +\end{center} + + +Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License, and all the license notices in the +Document, and any Warranty Disclaimers, provided that you also include +the original English version of this License and the original versions +of those notices and disclaimers. In case of a disagreement between +the translation and the original version of this License or a notice +or disclaimer, the original version will prevail. + +If a section in the Document is Entitled "Acknowledgements", +"Dedications", or "History", the requirement (section 4) to Preserve +its Title (section 1) will typically require changing the actual +title. + + +\begin{center} +{\Large\bf 9. TERMINATION} +\end{center} + + +You may not copy, modify, sublicense, or distribute the Document except +as expressly provided for under this License. Any other attempt to +copy, modify, sublicense or distribute the Document is void, and will +automatically terminate your rights under this License. However, +parties who have received copies, or rights, from you under this +License will not have their licenses terminated so long as such +parties remain in full compliance. + + +\begin{center} +{\Large\bf 10. FUTURE REVISIONS OF THIS LICENSE} +\end{center} + + +The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. See +http://www.gnu.org/copyleft/. + +Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License "or any later version" applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. + + +\begin{center} +{\Large\bf ADDENDUM: How to use this License for your documents} +% TODO: this is too long for table of contents +\end{center} + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + +\bigskip +\begin{quote} + Copyright \copyright YEAR YOUR NAME. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.2 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. + A copy of the license is included in the section entitled "GNU + Free Documentation License". +\end{quote} +\bigskip + +If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the "with...Texts." line with this: + +\bigskip +\begin{quote} + with the Invariant Sections being LIST THEIR TITLES, with the + Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. +\end{quote} +\bigskip + +If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + +If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. + +%--------------------------------------------------------------------- diff --git a/docs/manuals/fr/problems/fdl.tex b/docs/manuals/fr/problems/fdl.tex deleted file mode 100644 index b46cd990..00000000 --- a/docs/manuals/fr/problems/fdl.tex +++ /dev/null @@ -1,485 +0,0 @@ -% TODO: maybe get rid of centering - -\chapter{GNU Free Documentation License} -\index[general]{GNU Free Documentation License} -\index[general]{License!GNU Free Documentation} - -\label{label_fdl} - - \begin{center} - - Version 1.2, November 2002 - - - Copyright \copyright 2000,2001,2002 Free Software Foundation, Inc. - - \bigskip - - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - \bigskip - - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. -\end{center} - - -\begin{center} -{\bf\large Preamble} -\end{center} - -The purpose of this License is to make a manual, textbook, or other -functional and useful document "free" in the sense of freedom: to -assure everyone the effective freedom to copy and redistribute it, -with or without modifying it, either commercially or noncommercially. -Secondarily, this License preserves for the author and publisher a way -to get credit for their work, while not being considered responsible -for modifications made by others. - -This License is a kind of "copyleft", which means that derivative -works of the document must themselves be free in the same sense. It -complements the GNU General Public License, which is a copyleft -license designed for free software. - -We have designed this License in order to use it for manuals for free -software, because free software needs free documentation: a free -program should come with manuals providing the same freedoms that the -software does. But this License is not limited to software manuals; -it can be used for any textual work, regardless of subject matter or -whether it is published as a printed book. We recommend this License -principally for works whose purpose is instruction or reference. - - -\begin{center} -{\Large\bf 1. APPLICABILITY AND DEFINITIONS} -\end{center} - -This License applies to any manual or other work, in any medium, that -contains a notice placed by the copyright holder saying it can be -distributed under the terms of this License. Such a notice grants a -world-wide, royalty-free license, unlimited in duration, to use that -work under the conditions stated herein. The \textbf{"Document"}, below, -refers to any such manual or work. Any member of the public is a -licensee, and is addressed as \textbf{"you"}. You accept the license if you -copy, modify or distribute the work in a way requiring permission -under copyright law. - -A \textbf{"Modified Version"} of the Document means any work containing the -Document or a portion of it, either copied verbatim, or with -modifications and/or translated into another language. - -A \textbf{"Secondary Section"} is a named appendix or a front-matter section of -the Document that deals exclusively with the relationship of the -publishers or authors of the Document to the Document's overall subject -(or to related matters) and contains nothing that could fall directly -within that overall subject. (Thus, if the Document is in part a -textbook of mathematics, a Secondary Section may not explain any -mathematics.) The relationship could be a matter of historical -connection with the subject or with related matters, or of legal, -commercial, philosophical, ethical or political position regarding -them. - -The \textbf{"Invariant Sections"} are certain Secondary Sections whose titles -are designated, as being those of Invariant Sections, in the notice -that says that the Document is released under this License. If a -section does not fit the above definition of Secondary then it is not -allowed to be designated as Invariant. The Document may contain zero -Invariant Sections. If the Document does not identify any Invariant -Sections then there are none. - -The \textbf{"Cover Texts"} are certain short passages of text that are listed, -as Front-Cover Texts or Back-Cover Texts, in the notice that says that -the Document is released under this License. A Front-Cover Text may -be at most 5 words, and a Back-Cover Text may be at most 25 words. - -A \textbf{"Transparent"} copy of the Document means a machine-readable copy, -represented in a format whose specification is available to the -general public, that is suitable for revising the document -straightforwardly with generic text editors or (for images composed of -pixels) generic paint programs or (for drawings) some widely available -drawing editor, and that is suitable for input to text formatters or -for automatic translation to a variety of formats suitable for input -to text formatters. A copy made in an otherwise Transparent file -format whose markup, or absence of markup, has been arranged to thwart -or discourage subsequent modification by readers is not Transparent. -An image format is not Transparent if used for any substantial amount -of text. A copy that is not "Transparent" is called \textbf{"Opaque"}. - -Examples of suitable formats for Transparent copies include plain -ASCII without markup, Texinfo input format, LaTeX input format, SGML -or XML using a publicly available DTD, and standard-conforming simple -HTML, PostScript or PDF designed for human modification. Examples of -transparent image formats include PNG, XCF and JPG. Opaque formats -include proprietary formats that can be read and edited only by -proprietary word processors, SGML or XML for which the DTD and/or -processing tools are not generally available, and the -machine-generated HTML, PostScript or PDF produced by some word -processors for output purposes only. - -The \textbf{"Title Page"} means, for a printed book, the title page itself, -plus such following pages as are needed to hold, legibly, the material -this License requires to appear in the title page. For works in -formats which do not have any title page as such, "Title Page" means -the text near the most prominent appearance of the work's title, -preceding the beginning of the body of the text. - -A section \textbf{"Entitled XYZ"} means a named subunit of the Document whose -title either is precisely XYZ or contains XYZ in parentheses following -text that translates XYZ in another language. (Here XYZ stands for a -specific section name mentioned below, such as \textbf{"Acknowledgements"}, -\textbf{"Dedications"}, \textbf{"Endorsements"}, or \textbf{"History"}.) -To \textbf{"Preserve the Title"} -of such a section when you modify the Document means that it remains a -section "Entitled XYZ" according to this definition. - -The Document may include Warranty Disclaimers next to the notice which -states that this License applies to the Document. These Warranty -Disclaimers are considered to be included by reference in this -License, but only as regards disclaiming warranties: any other -implication that these Warranty Disclaimers may have is void and has -no effect on the meaning of this License. - - -\begin{center} -{\Large\bf 2. VERBATIM COPYING} -\end{center} - -You may copy and distribute the Document in any medium, either -commercially or noncommercially, provided that this License, the -copyright notices, and the license notice saying this License applies -to the Document are reproduced in all copies, and that you add no other -conditions whatsoever to those of this License. You may not use -technical measures to obstruct or control the reading or further -copying of the copies you make or distribute. However, you may accept -compensation in exchange for copies. If you distribute a large enough -number of copies you must also follow the conditions in section 3. - -You may also lend copies, under the same conditions stated above, and -you may publicly display copies. - - -\begin{center} -{\Large\bf 3. COPYING IN QUANTITY} -\end{center} - - -If you publish printed copies (or copies in media that commonly have -printed covers) of the Document, numbering more than 100, and the -Document's license notice requires Cover Texts, you must enclose the -copies in covers that carry, clearly and legibly, all these Cover -Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on -the back cover. Both covers must also clearly and legibly identify -you as the publisher of these copies. The front cover must present -the full title with all words of the title equally prominent and -visible. You may add other material on the covers in addition. -Copying with changes limited to the covers, as long as they preserve -the title of the Document and satisfy these conditions, can be treated -as verbatim copying in other respects. - -If the required texts for either cover are too voluminous to fit -legibly, you should put the first ones listed (as many as fit -reasonably) on the actual cover, and continue the rest onto adjacent -pages. - -If you publish or distribute Opaque copies of the Document numbering -more than 100, you must either include a machine-readable Transparent -copy along with each Opaque copy, or state in or with each Opaque copy -a computer-network location from which the general network-using -public has access to download using public-standard network protocols -a complete Transparent copy of the Document, free of added material. -If you use the latter option, you must take reasonably prudent steps, -when you begin distribution of Opaque copies in quantity, to ensure -that this Transparent copy will remain thus accessible at the stated -location until at least one year after the last time you distribute an -Opaque copy (directly or through your agents or retailers) of that -edition to the public. - -It is requested, but not required, that you contact the authors of the -Document well before redistributing any large number of copies, to give -them a chance to provide you with an updated version of the Document. - - -\begin{center} -{\Large\bf 4. MODIFICATIONS} -\end{center} - -You may copy and distribute a Modified Version of the Document under -the conditions of sections 2 and 3 above, provided that you release -the Modified Version under precisely this License, with the Modified -Version filling the role of the Document, thus licensing distribution -and modification of the Modified Version to whoever possesses a copy -of it. In addition, you must do these things in the Modified Version: - -\begin{itemize} -\item[A.] - Use in the Title Page (and on the covers, if any) a title distinct - from that of the Document, and from those of previous versions - (which should, if there were any, be listed in the History section - of the Document). You may use the same title as a previous version - if the original publisher of that version gives permission. - -\item[B.] - List on the Title Page, as authors, one or more persons or entities - responsible for authorship of the modifications in the Modified - Version, together with at least five of the principal authors of the - Document (all of its principal authors, if it has fewer than five), - unless they release you from this requirement. - -\item[C.] - State on the Title page the name of the publisher of the - Modified Version, as the publisher. - -\item[D.] - Preserve all the copyright notices of the Document. - -\item[E.] - Add an appropriate copyright notice for your modifications - adjacent to the other copyright notices. - -\item[F.] - Include, immediately after the copyright notices, a license notice - giving the public permission to use the Modified Version under the - terms of this License, in the form shown in the Addendum below. - -\item[G.] - Preserve in that license notice the full lists of Invariant Sections - and required Cover Texts given in the Document's license notice. - -\item[H.] - Include an unaltered copy of this License. - -\item[I.] - Preserve the section Entitled "History", Preserve its Title, and add - to it an item stating at least the title, year, new authors, and - publisher of the Modified Version as given on the Title Page. If - there is no section Entitled "History" in the Document, create one - stating the title, year, authors, and publisher of the Document as - given on its Title Page, then add an item describing the Modified - Version as stated in the previous sentence. - -\item[J.] - Preserve the network location, if any, given in the Document for - public access to a Transparent copy of the Document, and likewise - the network locations given in the Document for previous versions - it was based on. These may be placed in the "History" section. - You may omit a network location for a work that was published at - least four years before the Document itself, or if the original - publisher of the version it refers to gives permission. - -\item[K.] - For any section Entitled "Acknowledgements" or "Dedications", - Preserve the Title of the section, and preserve in the section all - the substance and tone of each of the contributor acknowledgements - and/or dedications given therein. - -\item[L.] - Preserve all the Invariant Sections of the Document, - unaltered in their text and in their titles. Section numbers - or the equivalent are not considered part of the section titles. - -\item[M.] - Delete any section Entitled "Endorsements". Such a section - may not be included in the Modified Version. - -\item[N.] - Do not retitle any existing section to be Entitled "Endorsements" - or to conflict in title with any Invariant Section. - -\item[O.] - Preserve any Warranty Disclaimers. -\end{itemize} - -If the Modified Version includes new front-matter sections or -appendices that qualify as Secondary Sections and contain no material -copied from the Document, you may at your option designate some or all -of these sections as invariant. To do this, add their titles to the -list of Invariant Sections in the Modified Version's license notice. -These titles must be distinct from any other section titles. - -You may add a section Entitled "Endorsements", provided it contains -nothing but endorsements of your Modified Version by various -parties--for example, statements of peer review or that the text has -been approved by an organization as the authoritative definition of a -standard. - -You may add a passage of up to five words as a Front-Cover Text, and a -passage of up to 25 words as a Back-Cover Text, to the end of the list -of Cover Texts in the Modified Version. Only one passage of -Front-Cover Text and one of Back-Cover Text may be added by (or -through arrangements made by) any one entity. If the Document already -includes a cover text for the same cover, previously added by you or -by arrangement made by the same entity you are acting on behalf of, -you may not add another; but you may replace the old one, on explicit -permission from the previous publisher that added the old one. - -The author(s) and publisher(s) of the Document do not by this License -give permission to use their names for publicity for or to assert or -imply endorsement of any Modified Version. - - -\begin{center} -{\Large\bf 5. COMBINING DOCUMENTS} -\end{center} - - -You may combine the Document with other documents released under this -License, under the terms defined in section 4 above for modified -versions, provided that you include in the combination all of the -Invariant Sections of all of the original documents, unmodified, and -list them all as Invariant Sections of your combined work in its -license notice, and that you preserve all their Warranty Disclaimers. - -The combined work need only contain one copy of this License, and -multiple identical Invariant Sections may be replaced with a single -copy. If there are multiple Invariant Sections with the same name but -different contents, make the title of each such section unique by -adding at the end of it, in parentheses, the name of the original -author or publisher of that section if known, or else a unique number. -Make the same adjustment to the section titles in the list of -Invariant Sections in the license notice of the combined work. - -In the combination, you must combine any sections Entitled "History" -in the various original documents, forming one section Entitled -"History"; likewise combine any sections Entitled "Acknowledgements", -and any sections Entitled "Dedications". You must delete all sections -Entitled "Endorsements". - -\begin{center} -{\Large\bf 6. COLLECTIONS OF DOCUMENTS} -\end{center} - -You may make a collection consisting of the Document and other documents -released under this License, and replace the individual copies of this -License in the various documents with a single copy that is included in -the collection, provided that you follow the rules of this License for -verbatim copying of each of the documents in all other respects. - -You may extract a single document from such a collection, and distribute -it individually under this License, provided you insert a copy of this -License into the extracted document, and follow this License in all -other respects regarding verbatim copying of that document. - - -\begin{center} -{\Large\bf 7. AGGREGATION WITH INDEPENDENT WORKS} -\end{center} - - -A compilation of the Document or its derivatives with other separate -and independent documents or works, in or on a volume of a storage or -distribution medium, is called an "aggregate" if the copyright -resulting from the compilation is not used to limit the legal rights -of the compilation's users beyond what the individual works permit. -When the Document is included in an aggregate, this License does not -apply to the other works in the aggregate which are not themselves -derivative works of the Document. - -If the Cover Text requirement of section 3 is applicable to these -copies of the Document, then if the Document is less than one half of -the entire aggregate, the Document's Cover Texts may be placed on -covers that bracket the Document within the aggregate, or the -electronic equivalent of covers if the Document is in electronic form. -Otherwise they must appear on printed covers that bracket the whole -aggregate. - - -\begin{center} -{\Large\bf 8. TRANSLATION} -\end{center} - - -Translation is considered a kind of modification, so you may -distribute translations of the Document under the terms of section 4. -Replacing Invariant Sections with translations requires special -permission from their copyright holders, but you may include -translations of some or all Invariant Sections in addition to the -original versions of these Invariant Sections. You may include a -translation of this License, and all the license notices in the -Document, and any Warranty Disclaimers, provided that you also include -the original English version of this License and the original versions -of those notices and disclaimers. In case of a disagreement between -the translation and the original version of this License or a notice -or disclaimer, the original version will prevail. - -If a section in the Document is Entitled "Acknowledgements", -"Dedications", or "History", the requirement (section 4) to Preserve -its Title (section 1) will typically require changing the actual -title. - - -\begin{center} -{\Large\bf 9. TERMINATION} -\end{center} - - -You may not copy, modify, sublicense, or distribute the Document except -as expressly provided for under this License. Any other attempt to -copy, modify, sublicense or distribute the Document is void, and will -automatically terminate your rights under this License. However, -parties who have received copies, or rights, from you under this -License will not have their licenses terminated so long as such -parties remain in full compliance. - - -\begin{center} -{\Large\bf 10. FUTURE REVISIONS OF THIS LICENSE} -\end{center} - - -The Free Software Foundation may publish new, revised versions -of the GNU Free Documentation License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. See -http://www.gnu.org/copyleft/. - -Each version of the License is given a distinguishing version number. -If the Document specifies that a particular numbered version of this -License "or any later version" applies to it, you have the option of -following the terms and conditions either of that specified version or -of any later version that has been published (not as a draft) by the -Free Software Foundation. If the Document does not specify a version -number of this License, you may choose any version ever published (not -as a draft) by the Free Software Foundation. - - -\begin{center} -{\Large\bf ADDENDUM: How to use this License for your documents} -% TODO: this is too long for table of contents -\end{center} - -To use this License in a document you have written, include a copy of -the License in the document and put the following copyright and -license notices just after the title page: - -\bigskip -\begin{quote} - Copyright \copyright YEAR YOUR NAME. - Permission is granted to copy, distribute and/or modify this document - under the terms of the GNU Free Documentation License, Version 1.2 - or any later version published by the Free Software Foundation; - with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. - A copy of the license is included in the section entitled "GNU - Free Documentation License". -\end{quote} -\bigskip - -If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, -replace the "with...Texts." line with this: - -\bigskip -\begin{quote} - with the Invariant Sections being LIST THEIR TITLES, with the - Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. -\end{quote} -\bigskip - -If you have Invariant Sections without Cover Texts, or some other -combination of the three, merge those two alternatives to suit the -situation. - -If your document contains nontrivial examples of program code, we -recommend releasing these examples in parallel under your choice of -free software license, such as the GNU General Public License, -to permit their use in free software. - -%--------------------------------------------------------------------- diff --git a/docs/manuals/fr/problems/firewalls-en.tex b/docs/manuals/fr/problems/firewalls-en.tex new file mode 100644 index 00000000..9646ea65 --- /dev/null +++ b/docs/manuals/fr/problems/firewalls-en.tex @@ -0,0 +1,373 @@ +%% +%% + +\chapter{Dealing with Firewalls} +\label{FirewallsChapter} +\index[general]{Dealing with Firewalls } +\index[general]{Firewalls!Dealing with } + +If you have a firewall or a DMZ installed on your computer, you may experience +difficulties contacting one or more of the Clients to back them up. This is +especially true if you are trying to backup a Client across the Internet. + +\section{Technical Details} +\index[general]{Technical Details } +\index[general]{Details!Technical } + +If you are attempting to do this, the sequence of network events in Bacula to +do a backup are the following: + +\footnotesize +\begin{verbatim} +Console -> DIR:9101 +DIR -> SD:9103 +DIR -> FD:9102 +FD -> SD:9103 +\end{verbatim} +\normalsize + +Where hopefully it is obvious that DIR represents the Director, FD the File +daemon or client, and SD the Storage daemon. The numbers that follow those +names are the standard ports used by Bacula, and the \verb:->: represents the +left side making a connection to the right side (i.e. the right side is the +"server" or is listening on the specified port), and the left side is the +"client" that initiates the conversation. + +Note, port 9103 serves both the Director and the File daemon, each having its +own independent connection. + +If you are running {\bf iptables}, you might add something like: + +\footnotesize +\begin{verbatim} +-A FW-1-INPUT -m state --state NEW -m tcp -p tcp --dport 9101:9103 -j ACCEPT +\end{verbatim} +\normalsize + +on your server, and + +\footnotesize +\begin{verbatim} +-A FW-1-INPUT -m state --state NEW -m tcp -p tcp --dport 9102 -j ACCEPT +\end{verbatim} +\normalsize + +on your client. In both cases, I assume that the machine is allowed to +initiate connections on any port. If not, you will need to allow outgoing +connections on ports 9102 and 9103 on your server and 9103 on your client. +Thanks to Raymond Norton for this tip. + +\section{A Concrete Example} +\index[general]{Example!Concrete } +\index[general]{Concrete Example } + +The following discussion was originally written by +Jesse Guardiani because he has 'internal' and 'external' requiring the +Director and the Client to use different IP addresses. His original +solution was to define two different Storage resources in the Director's +conf file each pointing to the same Storage daemon but with different +IP addresses. In Bacula 1.38.x this no longer works, because Bacula makes +a one-to-one association between a Storage daemon resource and a Device (such +as an Autochanger). As a consequence, I have modified his original +text to a method that I believe will work, but is as of yet untested +(KES - July 2006). + +My bacula server is on the 192.168.1.0/24 network at IP address 192.168.1.52. +For the sake of discussion we will refer to this network as the 'internal' +network because it connects to the internet through a NAT'd firewall. We will +call the network on the public (internet) side of the NAT'd firewall the +'external' network. Also, for the sake of discussion we will call my bacula +server: + +\footnotesize +\begin{verbatim} + server.int.mydomain.tld +\end{verbatim} +\normalsize + +when a fully qualified domain name is required, or simply: + +\footnotesize +\begin{verbatim} + server +\end{verbatim} +\normalsize + +if a hostname is adequate. We will call the various bacula daemons running on +the server.int.mydomain.tld machine: + +\footnotesize +\begin{verbatim} + server-fd + server-sd + server-dir +\end{verbatim} +\normalsize + +In addition, I have two clients that I want to back up with Bacula. The first +client is on the internal network. Its fully qualified domain name is: + +\footnotesize +\begin{verbatim} + private1.int.mydomain.tld +\end{verbatim} +\normalsize + +And its hostname is: + +\footnotesize +\begin{verbatim} + private1 +\end{verbatim} +\normalsize + +This machine is a client and therefore runs just one bacula daemon: + +\footnotesize +\begin{verbatim} + private1-fd +\end{verbatim} +\normalsize + +The second client is on the external network. Its fully qualified domain name +is: + +\footnotesize +\begin{verbatim} + public1.mydomain.tld +\end{verbatim} +\normalsize + +And its hostname is: + +\footnotesize +\begin{verbatim} + public1 +\end{verbatim} +\normalsize + +This machine also runs just one bacula daemon: + +\footnotesize +\begin{verbatim} + public1-fd +\end{verbatim} +\normalsize + +Finally, I have a NAT firewall/gateway with two network interfaces. The first +interface is on the internal network and serves as a gateway to the internet +for all the machines attached to the internal network (For example, +server.int.mydomain.tld and private1.int.mydomain.tld). The second interface +is on the external (internet) network. The external interface has been +assigned the name: + +\footnotesize +\begin{verbatim} + firewall.mydomain.tld +\end{verbatim} +\normalsize + +Remember: + +\footnotesize +\begin{verbatim} + *.int.mydomain.tld = internal network + *.mydomain.tld = external network +\end{verbatim} +\normalsize + +\subsection{The Bacula Configuration Files for the Above} +\index[general]{Above!Bacula Configuration Files for the } +\index[general]{Bacula Configuration Files for the Above } + +server-sd manages a 4 tape AIT autoloader. All of my backups are written to +server-sd. I have just *one* Device resource in my server-sd.conf file: + +\footnotesize +\begin{verbatim} +Autochanger { + Name = "autochanger1";\ + Device = Drive0 + Changer Device = /dev/ch0; + Changer Command = "/usr/local/sbin/chio-bacula %c %o %S %a"; +} +Device { + Name = Drive0 + DriveIndex = 0 + Media Type = AIT-1; + Archive Device = /dev/nrsa1; + Label Media = yes; + AutoChanger = yes; + AutomaticMount = yes; # when device opened, read it + AlwaysOpen = yes; + Hardware End of Medium = No + Fast Forward Space File = No + BSF at EOM = yes +} +\end{verbatim} +\normalsize + +(note, please see +\ilink{the Tape Testing}{FreeBSDTapes} chapter of this manual +for important FreeBSD information.) However, unlike previously, there +is only one Storage definition in my server-dir.conf file: + +\footnotesize +\begin{verbatim} +Storage { + Name = "autochanger1" # Storage device for backing up + Address = Storage-server + SDPort = 9103 + Password = "mysecretpassword" + Device = "autochanger1" + Media Type = AIT-1 + Autochanger = yes +} +\end{verbatim} +\normalsize + +Note that the Storage resource uses neither of the two addresses to +the Storage daemon -- neither server.int.mydomain.tld nor +firewall.mydomain.tld, but instead uses the address Storage-server. + +What is key is that in the internal net, Storage-server is resolved +to server.int.mydomain.tld, either with an entry in /etc/hosts, or by +creating and appropriate DNS entry, and on the external net (the Client +machine), Storage-server is resolved to firewall.mydomain.tld. + + +In addition to the above, I have two Client resources defined in +server-dir.conf: + +\footnotesize +\begin{verbatim} +Client { + Name = private1-fd + Address = private1.int.mydomain.tld + FDPort = 9102 + Catalog = MyCatalog + Password = "mysecretpassword" # password for FileDaemon +} +Client { + Name = public1-fd + Address = public1.mydomain.tld + FDPort = 9102 + Catalog = MyCatalog + Password = "mysecretpassword" # password for FileDaemon +} +\end{verbatim} +\normalsize + +And finally, to tie it all together, I have two Job resources defined in +server-dir.conf: + +\footnotesize +\begin{verbatim} +Job { + Name = "Private1-Backup" + Type = Backup + Client = private1-fd + FileSet = "Private1" + Schedule = "WeeklyCycle" + Storage = "autochanger1-int" + Messages = Standard + Pool = "Weekly" + Write Bootstrap = "/var/db/bacula/Private1-Backup.bsr" + Priority = 12 +} +Job { + Name = "Public1-Backup" + Type = Backup + Client = public1-fd + FileSet = "Public1" + Schedule = "WeeklyCycle" + Storage = "autochanger1-ext" + Messages = Standard + Pool = "Weekly" + Write Bootstrap = "/var/db/bacula/Public1-Backup.bsr" + Priority = 13 +} +\end{verbatim} +\normalsize + +It is important to notice that because the 'Private1-Backup' Job is intended +to back up a machine on the internal network so it resolves Storage-server +to contact the Storage daemon via the internal net. +On the other hand, the 'Public1-Backup' Job is intended to +back up a machine on the external network, so it resolves Storage-server +to contact the Storage daemon via the external net. + +I have left the Pool, Catalog, Messages, FileSet, Schedule, and Director +resources out of the above server-dir.conf examples because they are not +pertinent to the discussion. + +\subsection{How Does It Work?} +\index[general]{How Does It Work? } +\index[general]{Work!How Does It } + +If I want to run a backup of private1.int.mydomain.tld and store that backup +using server-sd then my understanding of the order of events is this: + +\begin{enumerate} +\item I execute my Bacula 'console' command on server.int.mydomain.tld. +\item console connects to server-dir. +\item I tell console to 'run' backup Job 'Private1-Backup'. +\item console relays this command to server-dir. +\item server-dir connects to private1-fd at private1.int.mydomain.tld:9102 +\item server-dir tells private1-fd to start sending the files defined in the + 'Private1-Backup' Job's FileSet resource to the Storage resource + 'autochanger1', which we have defined in server-dir.conf as having the +address:port of Storage-server, which is mapped by DNS to server.int.mydomain.tld. +\item private1-fd connects to server.int.mydomain.tld:9103 and begins sending + files. + \end{enumerate} + +Alternatively, if I want to run a backup of public1.mydomain.tld and store +that backup using server-sd then my understanding of the order of events is +this: + +\begin{enumerate} +\item I execute my Bacula 'console' command on server.int.mydomain.tld. +\item console connects to server-dir. +\item I tell console to 'run' backup Job 'Public1-Backup'. +\item console relays this command to server-dir. +\item server-dir connects, through the NAT'd firewall, to public1-fd at + public1.mydomain.tld:9102 +\item server-dir tells public1-fd to start sending the files defined in the + 'Public1-Backup' Job's FileSet resource to the Storage resource + 'autochanger1', which we have defined in server-dir.conf as having the + same address:port as above of Storage-server, but which on this machine + is resolved to firewall.mydomain.tld:9103. +\item public1-fd connects to firewall.mydomain.tld:9103 and begins sending + files. + \end{enumerate} + +\subsection{Important Note} +\index[general]{Important Note } +\index[general]{Note!Important } + +In order for the above 'Public1-Backup' Job to succeed, +firewall.mydomain.tld:9103 MUST be forwarded using the firewall's +configuration software to server.int.mydomain.tld:9103. Some firewalls call +this 'Server Publication'. Others may call it 'Port Forwarding'. + +\subsection{Firewall Problems} +\index[general]{Firewall Problems} +\index[general]{Problems!Firewalls} +Either a firewall or a router may decide to timeout and terminate +open connections if they are not active for a short time. By Internet +standards the period should be two hours, and should be indefinitely +extended if KEEPALIVE is set as is the case by Bacula. If your firewall +or router does not respect these rules, you may find Bacula connections +terminated. In that case, the first thing to try is turning on the +{\bf Heart Beat Interval} both in the File daemon and the Storage daemon +and set an interval of say five minutes. + +Also, if you have denial of service rate limiting in your firewall, this +too can cause Bacula disconnects since Bacula can at times use very high +access rates. To avoid this, you should implement default accept +rules for the Bacula ports involved before the rate limiting rules. + +Finally, if you have a Windows machine, it will most likely by default +disallow connections to the Bacula Windows File daemon. See the +Windows chapter of this manual for additional details. diff --git a/docs/manuals/fr/problems/firewalls.tex b/docs/manuals/fr/problems/firewalls.tex deleted file mode 100644 index 9646ea65..00000000 --- a/docs/manuals/fr/problems/firewalls.tex +++ /dev/null @@ -1,373 +0,0 @@ -%% -%% - -\chapter{Dealing with Firewalls} -\label{FirewallsChapter} -\index[general]{Dealing with Firewalls } -\index[general]{Firewalls!Dealing with } - -If you have a firewall or a DMZ installed on your computer, you may experience -difficulties contacting one or more of the Clients to back them up. This is -especially true if you are trying to backup a Client across the Internet. - -\section{Technical Details} -\index[general]{Technical Details } -\index[general]{Details!Technical } - -If you are attempting to do this, the sequence of network events in Bacula to -do a backup are the following: - -\footnotesize -\begin{verbatim} -Console -> DIR:9101 -DIR -> SD:9103 -DIR -> FD:9102 -FD -> SD:9103 -\end{verbatim} -\normalsize - -Where hopefully it is obvious that DIR represents the Director, FD the File -daemon or client, and SD the Storage daemon. The numbers that follow those -names are the standard ports used by Bacula, and the \verb:->: represents the -left side making a connection to the right side (i.e. the right side is the -"server" or is listening on the specified port), and the left side is the -"client" that initiates the conversation. - -Note, port 9103 serves both the Director and the File daemon, each having its -own independent connection. - -If you are running {\bf iptables}, you might add something like: - -\footnotesize -\begin{verbatim} --A FW-1-INPUT -m state --state NEW -m tcp -p tcp --dport 9101:9103 -j ACCEPT -\end{verbatim} -\normalsize - -on your server, and - -\footnotesize -\begin{verbatim} --A FW-1-INPUT -m state --state NEW -m tcp -p tcp --dport 9102 -j ACCEPT -\end{verbatim} -\normalsize - -on your client. In both cases, I assume that the machine is allowed to -initiate connections on any port. If not, you will need to allow outgoing -connections on ports 9102 and 9103 on your server and 9103 on your client. -Thanks to Raymond Norton for this tip. - -\section{A Concrete Example} -\index[general]{Example!Concrete } -\index[general]{Concrete Example } - -The following discussion was originally written by -Jesse Guardiani because he has 'internal' and 'external' requiring the -Director and the Client to use different IP addresses. His original -solution was to define two different Storage resources in the Director's -conf file each pointing to the same Storage daemon but with different -IP addresses. In Bacula 1.38.x this no longer works, because Bacula makes -a one-to-one association between a Storage daemon resource and a Device (such -as an Autochanger). As a consequence, I have modified his original -text to a method that I believe will work, but is as of yet untested -(KES - July 2006). - -My bacula server is on the 192.168.1.0/24 network at IP address 192.168.1.52. -For the sake of discussion we will refer to this network as the 'internal' -network because it connects to the internet through a NAT'd firewall. We will -call the network on the public (internet) side of the NAT'd firewall the -'external' network. Also, for the sake of discussion we will call my bacula -server: - -\footnotesize -\begin{verbatim} - server.int.mydomain.tld -\end{verbatim} -\normalsize - -when a fully qualified domain name is required, or simply: - -\footnotesize -\begin{verbatim} - server -\end{verbatim} -\normalsize - -if a hostname is adequate. We will call the various bacula daemons running on -the server.int.mydomain.tld machine: - -\footnotesize -\begin{verbatim} - server-fd - server-sd - server-dir -\end{verbatim} -\normalsize - -In addition, I have two clients that I want to back up with Bacula. The first -client is on the internal network. Its fully qualified domain name is: - -\footnotesize -\begin{verbatim} - private1.int.mydomain.tld -\end{verbatim} -\normalsize - -And its hostname is: - -\footnotesize -\begin{verbatim} - private1 -\end{verbatim} -\normalsize - -This machine is a client and therefore runs just one bacula daemon: - -\footnotesize -\begin{verbatim} - private1-fd -\end{verbatim} -\normalsize - -The second client is on the external network. Its fully qualified domain name -is: - -\footnotesize -\begin{verbatim} - public1.mydomain.tld -\end{verbatim} -\normalsize - -And its hostname is: - -\footnotesize -\begin{verbatim} - public1 -\end{verbatim} -\normalsize - -This machine also runs just one bacula daemon: - -\footnotesize -\begin{verbatim} - public1-fd -\end{verbatim} -\normalsize - -Finally, I have a NAT firewall/gateway with two network interfaces. The first -interface is on the internal network and serves as a gateway to the internet -for all the machines attached to the internal network (For example, -server.int.mydomain.tld and private1.int.mydomain.tld). The second interface -is on the external (internet) network. The external interface has been -assigned the name: - -\footnotesize -\begin{verbatim} - firewall.mydomain.tld -\end{verbatim} -\normalsize - -Remember: - -\footnotesize -\begin{verbatim} - *.int.mydomain.tld = internal network - *.mydomain.tld = external network -\end{verbatim} -\normalsize - -\subsection{The Bacula Configuration Files for the Above} -\index[general]{Above!Bacula Configuration Files for the } -\index[general]{Bacula Configuration Files for the Above } - -server-sd manages a 4 tape AIT autoloader. All of my backups are written to -server-sd. I have just *one* Device resource in my server-sd.conf file: - -\footnotesize -\begin{verbatim} -Autochanger { - Name = "autochanger1";\ - Device = Drive0 - Changer Device = /dev/ch0; - Changer Command = "/usr/local/sbin/chio-bacula %c %o %S %a"; -} -Device { - Name = Drive0 - DriveIndex = 0 - Media Type = AIT-1; - Archive Device = /dev/nrsa1; - Label Media = yes; - AutoChanger = yes; - AutomaticMount = yes; # when device opened, read it - AlwaysOpen = yes; - Hardware End of Medium = No - Fast Forward Space File = No - BSF at EOM = yes -} -\end{verbatim} -\normalsize - -(note, please see -\ilink{the Tape Testing}{FreeBSDTapes} chapter of this manual -for important FreeBSD information.) However, unlike previously, there -is only one Storage definition in my server-dir.conf file: - -\footnotesize -\begin{verbatim} -Storage { - Name = "autochanger1" # Storage device for backing up - Address = Storage-server - SDPort = 9103 - Password = "mysecretpassword" - Device = "autochanger1" - Media Type = AIT-1 - Autochanger = yes -} -\end{verbatim} -\normalsize - -Note that the Storage resource uses neither of the two addresses to -the Storage daemon -- neither server.int.mydomain.tld nor -firewall.mydomain.tld, but instead uses the address Storage-server. - -What is key is that in the internal net, Storage-server is resolved -to server.int.mydomain.tld, either with an entry in /etc/hosts, or by -creating and appropriate DNS entry, and on the external net (the Client -machine), Storage-server is resolved to firewall.mydomain.tld. - - -In addition to the above, I have two Client resources defined in -server-dir.conf: - -\footnotesize -\begin{verbatim} -Client { - Name = private1-fd - Address = private1.int.mydomain.tld - FDPort = 9102 - Catalog = MyCatalog - Password = "mysecretpassword" # password for FileDaemon -} -Client { - Name = public1-fd - Address = public1.mydomain.tld - FDPort = 9102 - Catalog = MyCatalog - Password = "mysecretpassword" # password for FileDaemon -} -\end{verbatim} -\normalsize - -And finally, to tie it all together, I have two Job resources defined in -server-dir.conf: - -\footnotesize -\begin{verbatim} -Job { - Name = "Private1-Backup" - Type = Backup - Client = private1-fd - FileSet = "Private1" - Schedule = "WeeklyCycle" - Storage = "autochanger1-int" - Messages = Standard - Pool = "Weekly" - Write Bootstrap = "/var/db/bacula/Private1-Backup.bsr" - Priority = 12 -} -Job { - Name = "Public1-Backup" - Type = Backup - Client = public1-fd - FileSet = "Public1" - Schedule = "WeeklyCycle" - Storage = "autochanger1-ext" - Messages = Standard - Pool = "Weekly" - Write Bootstrap = "/var/db/bacula/Public1-Backup.bsr" - Priority = 13 -} -\end{verbatim} -\normalsize - -It is important to notice that because the 'Private1-Backup' Job is intended -to back up a machine on the internal network so it resolves Storage-server -to contact the Storage daemon via the internal net. -On the other hand, the 'Public1-Backup' Job is intended to -back up a machine on the external network, so it resolves Storage-server -to contact the Storage daemon via the external net. - -I have left the Pool, Catalog, Messages, FileSet, Schedule, and Director -resources out of the above server-dir.conf examples because they are not -pertinent to the discussion. - -\subsection{How Does It Work?} -\index[general]{How Does It Work? } -\index[general]{Work!How Does It } - -If I want to run a backup of private1.int.mydomain.tld and store that backup -using server-sd then my understanding of the order of events is this: - -\begin{enumerate} -\item I execute my Bacula 'console' command on server.int.mydomain.tld. -\item console connects to server-dir. -\item I tell console to 'run' backup Job 'Private1-Backup'. -\item console relays this command to server-dir. -\item server-dir connects to private1-fd at private1.int.mydomain.tld:9102 -\item server-dir tells private1-fd to start sending the files defined in the - 'Private1-Backup' Job's FileSet resource to the Storage resource - 'autochanger1', which we have defined in server-dir.conf as having the -address:port of Storage-server, which is mapped by DNS to server.int.mydomain.tld. -\item private1-fd connects to server.int.mydomain.tld:9103 and begins sending - files. - \end{enumerate} - -Alternatively, if I want to run a backup of public1.mydomain.tld and store -that backup using server-sd then my understanding of the order of events is -this: - -\begin{enumerate} -\item I execute my Bacula 'console' command on server.int.mydomain.tld. -\item console connects to server-dir. -\item I tell console to 'run' backup Job 'Public1-Backup'. -\item console relays this command to server-dir. -\item server-dir connects, through the NAT'd firewall, to public1-fd at - public1.mydomain.tld:9102 -\item server-dir tells public1-fd to start sending the files defined in the - 'Public1-Backup' Job's FileSet resource to the Storage resource - 'autochanger1', which we have defined in server-dir.conf as having the - same address:port as above of Storage-server, but which on this machine - is resolved to firewall.mydomain.tld:9103. -\item public1-fd connects to firewall.mydomain.tld:9103 and begins sending - files. - \end{enumerate} - -\subsection{Important Note} -\index[general]{Important Note } -\index[general]{Note!Important } - -In order for the above 'Public1-Backup' Job to succeed, -firewall.mydomain.tld:9103 MUST be forwarded using the firewall's -configuration software to server.int.mydomain.tld:9103. Some firewalls call -this 'Server Publication'. Others may call it 'Port Forwarding'. - -\subsection{Firewall Problems} -\index[general]{Firewall Problems} -\index[general]{Problems!Firewalls} -Either a firewall or a router may decide to timeout and terminate -open connections if they are not active for a short time. By Internet -standards the period should be two hours, and should be indefinitely -extended if KEEPALIVE is set as is the case by Bacula. If your firewall -or router does not respect these rules, you may find Bacula connections -terminated. In that case, the first thing to try is turning on the -{\bf Heart Beat Interval} both in the File daemon and the Storage daemon -and set an interval of say five minutes. - -Also, if you have denial of service rate limiting in your firewall, this -too can cause Bacula disconnects since Bacula can at times use very high -access rates. To avoid this, you should implement default accept -rules for the Bacula ports involved before the rate limiting rules. - -Finally, if you have a Windows machine, it will most likely by default -disallow connections to the Bacula Windows File daemon. See the -Windows chapter of this manual for additional details. diff --git a/docs/manuals/fr/problems/kaboom-en.tex b/docs/manuals/fr/problems/kaboom-en.tex new file mode 100644 index 00000000..a4e5bc57 --- /dev/null +++ b/docs/manuals/fr/problems/kaboom-en.tex @@ -0,0 +1,233 @@ +%% +%% + +\chapter{What To Do When Bacula Crashes (Kaboom)} +\label{KaboomChapter} +\index[general]{Kaboom!What To Do When Bacula Crashes } +\index[general]{What To Do When Bacula Crashes (Kaboom) } + +If you are running on a Linux system, and you have a set of working +configuration files, it is very unlikely that {\bf Bacula} will crash. As with +all software, however, it is inevitable that someday, it may crash, +particularly if you are running on another operating system or using a new or +unusual feature. + +This chapter explains what you should do if one of the three {\bf Bacula} +daemons (Director, File, Storage) crashes. When we speak of crashing, we +mean that the daemon terminates abnormally because of an error. There are +many cases where Bacula detects errors (such as PIPE errors) and will fail +a job. These are not considered crashes. In addition, under certain +conditions, Bacula will detect a fatal in the configuration, such as +lack of permission to read/write the working directory. In that case, +Bacula will force itself to crash with a SEGFAULT. However, before +crashing, Bacula will normally display a message indicating why. +For more details, please read on. + + +\section{Traceback} +\index[general]{Traceback} + +Each of the three Bacula daemons has a built-in exception handler which, in +case of an error, will attempt to produce a traceback. If successful the +traceback will be emailed to you. + +For this to work, you need to ensure that a few things are setup correctly on +your system: + +\begin{enumerate} +\item You must have a version of Bacula built with debug information turned + on and not stripped of debugging symbols. + +\item You must have an installed copy of {\bf gdb} (the GNU debugger), and it + must be on {\bf Bacula's} path. On some systems such as Solaris, {\bf + gdb} may be replaced by {\bf dbx}. + +\item The Bacula installed script file {\bf btraceback} must be in the same + directory as the daemon which dies, and it must be marked as executable. + +\item The script file {\bf btraceback.gdb} must have the correct path to it + specified in the {\bf btraceback} file. + +\item You must have a {\bf mail} program which is on {\bf Bacula's} path. + By default, this {\bf mail} program is set to {\bf bsmtp}, so it must + be correctly configured. + +\item If you run either the Director or Storage daemon under a non-root + userid, you will most likely need to modify the {\bf btraceback} file + to do something like {\bf sudo} (raise to root priority) for the + call to {\bf gdb} so that it has the proper permissions to debug + Bacula. +\end{enumerate} + +If all the above conditions are met, the daemon that crashes will produce a +traceback report and email it to you. If the above conditions are not true, +you can either run the debugger by hand as described below, or you may be able +to correct the problems by editing the {\bf btraceback} file. I recommend not +spending too much time on trying to get the traceback to work as it can be +very difficult. + +The changes that might be needed are to add a correct path to the {\bf gdb} +program, correct the path to the {\bf btraceback.gdb} file, change the {\bf +mail} program or its path, or change your email address. The key line in the +{\bf btraceback} file is: + +\footnotesize +\begin{verbatim} +gdb -quiet -batch -x /home/kern/bacula/bin/btraceback.gdb \ + $1 $2 2>\&1 | bsmtp -s "Bacula traceback" your-address@xxx.com +\end{verbatim} +\normalsize + +Since each daemon has the same traceback code, a single btraceback file is +sufficient if you are running more than one daemon on a machine. + +\section{Testing The Traceback} +\index[general]{Traceback!Testing The } +\index[general]{Testing The Traceback } + +To "manually" test the traceback feature, you simply start {\bf Bacula} then +obtain the {\bf PID} of the main daemon thread (there are multiple threads). +The output produced here will look different depending on what OS and what +version of the kernel you are running. +Unfortunately, the output had to be split to fit on this page: + +\footnotesize +\begin{verbatim} +[kern@rufus kern]$ ps fax --columns 132 | grep bacula-dir + 2103 ? S 0:00 /home/kern/bacula/k/src/dird/bacula-dir -c + /home/kern/bacula/k/src/dird/dird.conf + 2104 ? S 0:00 \_ /home/kern/bacula/k/src/dird/bacula-dir -c + /home/kern/bacula/k/src/dird/dird.conf + 2106 ? S 0:00 \_ /home/kern/bacula/k/src/dird/bacula-dir -c + /home/kern/bacula/k/src/dird/dird.conf + 2105 ? S 0:00 \_ /home/kern/bacula/k/src/dird/bacula-dir -c + /home/kern/bacula/k/src/dird/dird.conf +\end{verbatim} +\normalsize + +which in this case is 2103. Then while Bacula is running, you call the program +giving it the path to the Bacula executable and the {\bf PID}. In this case, +it is: + +\footnotesize +\begin{verbatim} +./btraceback /home/kern/bacula/k/src/dird 2103 +\end{verbatim} +\normalsize + +It should produce an email showing you the current state of the daemon (in +this case the Director), and then exit leaving {\bf Bacula} running as if +nothing happened. If this is not the case, you will need to correct the +problem by modifying the {\bf btraceback} script. + +Typical problems might be that {\bf gdb} or {\bf dbx} for Solaris is not on +the default path. Fix this by specifying the full path to it in the {\bf +btraceback} file. Another common problem is that you haven't modified the +script so that the {\bf bsmtp} program has an appropriate smtp server or +the proper syntax for your smtp server. If you use the {\bf mail} program +and it is not on the default path, it will also fail. On some systems, it +is preferable to use {\bf Mail} rather than {\bf mail}. + +\section{Getting A Traceback On Other Systems} +\index[general]{Getting A Traceback On Other Systems} +\index[general]{Systems!Getting A Traceback On Other} + +It should be possible to produce a similar traceback on systems other than +Linux, either using {\bf gdb} or some other debugger. Solaris with {\bf dbx} +loaded works quite fine. On other systems, you will need to modify the {\bf +btraceback} program to invoke the correct debugger, and possibly correct the +{\bf btraceback.gdb} script to have appropriate commands for your debugger. If +anyone succeeds in making this work with another debugger, please send us a +copy of what you modified. Please keep in mind that for any debugger to +work, it will most likely need to run as root, so you may need to modify +the {\bf btraceback} script accordingly. + +\label{ManuallyDebugging} +\section{Manually Running Bacula Under The Debugger} +\index[general]{Manually Running Bacula Under The Debugger} +\index[general]{Debugger!Manually Running Bacula Under The} + +If for some reason you cannot get the automatic traceback, or if you want to +interactively examine the variable contents after a crash, you can run Bacula +under the debugger. Assuming you want to run the Storage daemon under the +debugger (the technique is the same for the other daemons, only the name +changes), you would do the following: + +\begin{enumerate} +\item Start the Director and the File daemon. If the Storage daemon also + starts, you will need to find its PID as shown above (ps fax | grep + bacula-sd) and kill it with a command like the following: + +\footnotesize +\begin{verbatim} + kill -15 PID +\end{verbatim} +\normalsize + +where you replace {\bf PID} by the actual value. + +\item At this point, the Director and the File daemon should be running but + the Storage daemon should not. + +\item cd to the directory containing the Storage daemon + +\item Start the Storage daemon under the debugger: + + \footnotesize +\begin{verbatim} + gdb ./bacula-sd +\end{verbatim} +\normalsize + +\item Run the Storage daemon: + + \footnotesize +\begin{verbatim} + run -s -f -c ./bacula-sd.conf +\end{verbatim} +\normalsize + +You may replace the {\bf ./bacula-sd.conf} with the full path to the Storage +daemon's configuration file. + +\item At this point, Bacula will be fully operational. + +\item In another shell command window, start the Console program and do what + is necessary to cause Bacula to die. + +\item When Bacula crashes, the {\bf gdb} shell window will become active and + {\bf gdb} will show you the error that occurred. + +\item To get a general traceback of all threads, issue the following command: + + +\footnotesize +\begin{verbatim} + thread apply all bt +\end{verbatim} +\normalsize + +After that you can issue any debugging command. +\end{enumerate} + +\section{Getting Debug Output from Bacula} +\index[general]{Getting Debug Output from Bacula } +Each of the daemons normally has debug compiled into the program, but +disabled. There are two ways to enable the debug output. One is to add the +{\bf -d nnn} option on the command line when starting the debugger. The {\bf +nnn} is the debug level, and generally anything between 50 and 200 is +reasonable. The higher the number, the more output is produced. The output is +written to standard output. + +The second way of getting debug output is to dynamically turn it on using the +Console using the {\bf setdebug} command. The full syntax of the command is: + +\footnotesize +\begin{verbatim} + setdebug level=nnn client=client-name storage=storage-name dir +\end{verbatim} +\normalsize + +If none of the options are given, the command will prompt you. You can +selectively turn on/off debugging in any or all the daemons (i.e. it is not +necessary to specify all the components of the above command). diff --git a/docs/manuals/fr/problems/kaboom.tex b/docs/manuals/fr/problems/kaboom.tex deleted file mode 100644 index a4e5bc57..00000000 --- a/docs/manuals/fr/problems/kaboom.tex +++ /dev/null @@ -1,233 +0,0 @@ -%% -%% - -\chapter{What To Do When Bacula Crashes (Kaboom)} -\label{KaboomChapter} -\index[general]{Kaboom!What To Do When Bacula Crashes } -\index[general]{What To Do When Bacula Crashes (Kaboom) } - -If you are running on a Linux system, and you have a set of working -configuration files, it is very unlikely that {\bf Bacula} will crash. As with -all software, however, it is inevitable that someday, it may crash, -particularly if you are running on another operating system or using a new or -unusual feature. - -This chapter explains what you should do if one of the three {\bf Bacula} -daemons (Director, File, Storage) crashes. When we speak of crashing, we -mean that the daemon terminates abnormally because of an error. There are -many cases where Bacula detects errors (such as PIPE errors) and will fail -a job. These are not considered crashes. In addition, under certain -conditions, Bacula will detect a fatal in the configuration, such as -lack of permission to read/write the working directory. In that case, -Bacula will force itself to crash with a SEGFAULT. However, before -crashing, Bacula will normally display a message indicating why. -For more details, please read on. - - -\section{Traceback} -\index[general]{Traceback} - -Each of the three Bacula daemons has a built-in exception handler which, in -case of an error, will attempt to produce a traceback. If successful the -traceback will be emailed to you. - -For this to work, you need to ensure that a few things are setup correctly on -your system: - -\begin{enumerate} -\item You must have a version of Bacula built with debug information turned - on and not stripped of debugging symbols. - -\item You must have an installed copy of {\bf gdb} (the GNU debugger), and it - must be on {\bf Bacula's} path. On some systems such as Solaris, {\bf - gdb} may be replaced by {\bf dbx}. - -\item The Bacula installed script file {\bf btraceback} must be in the same - directory as the daemon which dies, and it must be marked as executable. - -\item The script file {\bf btraceback.gdb} must have the correct path to it - specified in the {\bf btraceback} file. - -\item You must have a {\bf mail} program which is on {\bf Bacula's} path. - By default, this {\bf mail} program is set to {\bf bsmtp}, so it must - be correctly configured. - -\item If you run either the Director or Storage daemon under a non-root - userid, you will most likely need to modify the {\bf btraceback} file - to do something like {\bf sudo} (raise to root priority) for the - call to {\bf gdb} so that it has the proper permissions to debug - Bacula. -\end{enumerate} - -If all the above conditions are met, the daemon that crashes will produce a -traceback report and email it to you. If the above conditions are not true, -you can either run the debugger by hand as described below, or you may be able -to correct the problems by editing the {\bf btraceback} file. I recommend not -spending too much time on trying to get the traceback to work as it can be -very difficult. - -The changes that might be needed are to add a correct path to the {\bf gdb} -program, correct the path to the {\bf btraceback.gdb} file, change the {\bf -mail} program or its path, or change your email address. The key line in the -{\bf btraceback} file is: - -\footnotesize -\begin{verbatim} -gdb -quiet -batch -x /home/kern/bacula/bin/btraceback.gdb \ - $1 $2 2>\&1 | bsmtp -s "Bacula traceback" your-address@xxx.com -\end{verbatim} -\normalsize - -Since each daemon has the same traceback code, a single btraceback file is -sufficient if you are running more than one daemon on a machine. - -\section{Testing The Traceback} -\index[general]{Traceback!Testing The } -\index[general]{Testing The Traceback } - -To "manually" test the traceback feature, you simply start {\bf Bacula} then -obtain the {\bf PID} of the main daemon thread (there are multiple threads). -The output produced here will look different depending on what OS and what -version of the kernel you are running. -Unfortunately, the output had to be split to fit on this page: - -\footnotesize -\begin{verbatim} -[kern@rufus kern]$ ps fax --columns 132 | grep bacula-dir - 2103 ? S 0:00 /home/kern/bacula/k/src/dird/bacula-dir -c - /home/kern/bacula/k/src/dird/dird.conf - 2104 ? S 0:00 \_ /home/kern/bacula/k/src/dird/bacula-dir -c - /home/kern/bacula/k/src/dird/dird.conf - 2106 ? S 0:00 \_ /home/kern/bacula/k/src/dird/bacula-dir -c - /home/kern/bacula/k/src/dird/dird.conf - 2105 ? S 0:00 \_ /home/kern/bacula/k/src/dird/bacula-dir -c - /home/kern/bacula/k/src/dird/dird.conf -\end{verbatim} -\normalsize - -which in this case is 2103. Then while Bacula is running, you call the program -giving it the path to the Bacula executable and the {\bf PID}. In this case, -it is: - -\footnotesize -\begin{verbatim} -./btraceback /home/kern/bacula/k/src/dird 2103 -\end{verbatim} -\normalsize - -It should produce an email showing you the current state of the daemon (in -this case the Director), and then exit leaving {\bf Bacula} running as if -nothing happened. If this is not the case, you will need to correct the -problem by modifying the {\bf btraceback} script. - -Typical problems might be that {\bf gdb} or {\bf dbx} for Solaris is not on -the default path. Fix this by specifying the full path to it in the {\bf -btraceback} file. Another common problem is that you haven't modified the -script so that the {\bf bsmtp} program has an appropriate smtp server or -the proper syntax for your smtp server. If you use the {\bf mail} program -and it is not on the default path, it will also fail. On some systems, it -is preferable to use {\bf Mail} rather than {\bf mail}. - -\section{Getting A Traceback On Other Systems} -\index[general]{Getting A Traceback On Other Systems} -\index[general]{Systems!Getting A Traceback On Other} - -It should be possible to produce a similar traceback on systems other than -Linux, either using {\bf gdb} or some other debugger. Solaris with {\bf dbx} -loaded works quite fine. On other systems, you will need to modify the {\bf -btraceback} program to invoke the correct debugger, and possibly correct the -{\bf btraceback.gdb} script to have appropriate commands for your debugger. If -anyone succeeds in making this work with another debugger, please send us a -copy of what you modified. Please keep in mind that for any debugger to -work, it will most likely need to run as root, so you may need to modify -the {\bf btraceback} script accordingly. - -\label{ManuallyDebugging} -\section{Manually Running Bacula Under The Debugger} -\index[general]{Manually Running Bacula Under The Debugger} -\index[general]{Debugger!Manually Running Bacula Under The} - -If for some reason you cannot get the automatic traceback, or if you want to -interactively examine the variable contents after a crash, you can run Bacula -under the debugger. Assuming you want to run the Storage daemon under the -debugger (the technique is the same for the other daemons, only the name -changes), you would do the following: - -\begin{enumerate} -\item Start the Director and the File daemon. If the Storage daemon also - starts, you will need to find its PID as shown above (ps fax | grep - bacula-sd) and kill it with a command like the following: - -\footnotesize -\begin{verbatim} - kill -15 PID -\end{verbatim} -\normalsize - -where you replace {\bf PID} by the actual value. - -\item At this point, the Director and the File daemon should be running but - the Storage daemon should not. - -\item cd to the directory containing the Storage daemon - -\item Start the Storage daemon under the debugger: - - \footnotesize -\begin{verbatim} - gdb ./bacula-sd -\end{verbatim} -\normalsize - -\item Run the Storage daemon: - - \footnotesize -\begin{verbatim} - run -s -f -c ./bacula-sd.conf -\end{verbatim} -\normalsize - -You may replace the {\bf ./bacula-sd.conf} with the full path to the Storage -daemon's configuration file. - -\item At this point, Bacula will be fully operational. - -\item In another shell command window, start the Console program and do what - is necessary to cause Bacula to die. - -\item When Bacula crashes, the {\bf gdb} shell window will become active and - {\bf gdb} will show you the error that occurred. - -\item To get a general traceback of all threads, issue the following command: - - -\footnotesize -\begin{verbatim} - thread apply all bt -\end{verbatim} -\normalsize - -After that you can issue any debugging command. -\end{enumerate} - -\section{Getting Debug Output from Bacula} -\index[general]{Getting Debug Output from Bacula } -Each of the daemons normally has debug compiled into the program, but -disabled. There are two ways to enable the debug output. One is to add the -{\bf -d nnn} option on the command line when starting the debugger. The {\bf -nnn} is the debug level, and generally anything between 50 and 200 is -reasonable. The higher the number, the more output is produced. The output is -written to standard output. - -The second way of getting debug output is to dynamically turn it on using the -Console using the {\bf setdebug} command. The full syntax of the command is: - -\footnotesize -\begin{verbatim} - setdebug level=nnn client=client-name storage=storage-name dir -\end{verbatim} -\normalsize - -If none of the options are given, the command will prompt you. You can -selectively turn on/off debugging in any or all the daemons (i.e. it is not -necessary to specify all the components of the above command). diff --git a/docs/manuals/fr/problems/problems.tex b/docs/manuals/fr/problems/problems.tex index ff6a874a..f46c1cfb 100644 --- a/docs/manuals/fr/problems/problems.tex +++ b/docs/manuals/fr/problems/problems.tex @@ -66,12 +66,12 @@ \tableofcontents \clearpage -\include{faq} -\include{tips} -\include{tapetesting} -\include{firewalls} -\include{kaboom} -\include{fdl} +\include{faq-en} +\include{tips-en} +\include{tapetesting-en} +\include{firewalls-en} +\include{kaboom-en} +\include{fdl-en} % The following line tells link_resolver.pl to not include these files: diff --git a/docs/manuals/fr/problems/rpm-faq-en.tex b/docs/manuals/fr/problems/rpm-faq-en.tex new file mode 100644 index 00000000..127fc39c --- /dev/null +++ b/docs/manuals/fr/problems/rpm-faq-en.tex @@ -0,0 +1,395 @@ +%% +%% + +\chapter{Bacula RPM Packaging FAQ} +\label{RpmFaqChapter} +\index[general]{FAQ!Bacula\textsuperscript{\textregistered} - RPM Packaging } +\index[general]{Bacula\textsuperscript{\textregistered} - RPM Packaging FAQ } + +\begin{enumerate} +\item + \ilink{How do I build Bacula for platform xxx?}{faq1} +\item + \ilink{How do I control which database support gets built?}{faq2} + +\item + \ilink{What other defines are used?}{faq3} +\item + \ilink{I'm getting errors about not having permission when I try to build the + packages. Do I need to be root?}{faq4} +\item + \ilink{I'm building my own rpms but on all platforms and compiles I get an + unresolved dependency for something called + /usr/afsws/bin/pagsh.}{faq5} +\item + \ilink{I'm building my own rpms because you don't publish for my platform. + Can I get my packages released to sourceforge for other people to use?}{faq6} +\item + \ilink{Is there an easier way than sorting out all these command line options?}{faq7} +\item + \ilink{I just upgraded from 1.36.x to 1.38.x and now my director daemon won't start. It appears to start but dies silently and I get a "connection refused" error when starting the console. What is wrong?}{faq8} +\item + \ilink{There are a lot of rpm packages. Which packages do I need for what?}{faq9} +\end{enumerate} + +\section{Answers} +\index[general]{Answers } + +\begin{enumerate} +\item + \label{faq1} + {\bf How do I build Bacula for platform xxx?} + The bacula spec file contains defines to build for several platforms: + Red Hat 7.x (rh7), Red Hat 8.0 (rh8), Red Hat 9 (rh9), Fedora Core (fc1, + fc3, fc4, fc5, fc6, fc7), Whitebox Enterprise Linux 3.0 (wb3), Red Hat Enterprise Linux + (rhel3, rhel4, rhel5), Mandrake 10.x (mdk), Mandriva 2006.x (mdv) CentOS (centos3, centos4, centos5) + Scientific Linux (sl3, sl4, sl5) and SuSE (su9, su10, su102, su103). The package build is controlled by a mandatory define set at the beginning of the file. These defines basically just control the dependency information that gets coded into the finished rpm package as well + as any special configure options required. The platform define may be edited + in the spec file directly (by default all defines are set to 0 or "not set"). + For example, to build the Red Hat 7.x package find the line in the spec file + which reads + +\footnotesize +\begin{verbatim} + %define rh7 0 + +\end{verbatim} +\normalsize + +and edit it to read + +\footnotesize +\begin{verbatim} + %define rh7 1 + +\end{verbatim} +\normalsize + +Alternately you may pass the define on the command line when calling rpmbuild: + + +\footnotesize +\begin{verbatim} + rpmbuild -ba --define "build_rh7 1" bacula.spec + rpmbuild --rebuild --define build_rh7 1" bacula-x.x.x-x.src.rpm + +\end{verbatim} +\normalsize + +\item + \label{faq2} + {\bf How do I control which database support gets built?} + Another mandatory build define controls which database support is compiled, + one of build\_sqlite, build\_mysql or build\_postgresql. To get the MySQL + package and support either set the + +\footnotesize +\begin{verbatim} + %define mysql 0 + OR + %define mysql4 0 + OR + %define mysql5 0 + +\end{verbatim} +\normalsize + +to + +\footnotesize +\begin{verbatim} + %define mysql 1 + OR + %define mysql4 1 + OR + %define mysql5 1 + +\end{verbatim} +\normalsize + +in the spec file directly or pass it to rpmbuild on the command line: + +\footnotesize +\begin{verbatim} + rpmbuild -ba --define "build_rh7 1" --define "build_mysql 1" bacula.spec + rpmbuild -ba --define "build_rh7 1" --define "build_mysql4 1" bacula.spec + rpmbuild -ba --define "build_rh7 1" --define "build_mysql5 1" bacula.spec + +\end{verbatim} +\normalsize + +\item + \label{faq3} + {\bf What other defines are used?} + Three other building defines of note are the depkgs\_version, docs\_version and + \_rescuever identifiers. These two defines are set with each release and must + match the version of those sources that are being used to build the packages. + You would not ordinarily need to edit these. See also the Build Options section + below for other build time options that can be passed on the command line. +\item + \label{faq4} + {\bf I'm getting errors about not having permission when I try to build the + packages. Do I need to be root?} + No, you do not need to be root and, in fact, it is better practice to + build rpm packages as a non-root user. Bacula packages are designed to + be built by a regular user but you must make a few changes on your + system to do this. If you are building on your own system then the + simplest method is to add write permissions for all to the build + directory (/usr/src/redhat/, /usr/src/RPM or /usr/src/packages). + To accomplish this, execute the following command as root: + +\footnotesize +\begin{verbatim} + chmod -R 777 /usr/src/redhat + chmod -R 777 /usr/src/RPM + chmod -R 777 /usr/src/packages + +\end{verbatim} +\normalsize + +If you are working on a shared system where you can not use the method +above then you need to recreate the appropriate above directory tree with all +of its subdirectories inside your home directory. Then create a file named + +{\tt .rpmmacros} + +in your home directory (or edit the file if it already exists) +and add the following line: + +\footnotesize +\begin{verbatim} + %_topdir /home/myuser/redhat + %_tmppath /tmp + +\end{verbatim} +\normalsize + +Another handy directive for the .rpmmacros file if you wish to suppress the +creation of debug rpm packages is: + +\footnotesize +\begin{verbatim} + %debug_package %{nil} + +\end{verbatim} + +\normalsize + +\item + \label{faq5} + {\bf I'm building my own rpms but on all platforms and compiles I get an + unresolved dependency for something called /usr/afsws/bin/pagsh.} This + is a shell from the OpenAFS (Andrew File System). If you are seeing + this then you chose to include the docs/examples directory in your + package. One of the example scripts in this directory is a pagsh + script. Rpmbuild, when scanning for dependencies, looks at the shebang + line of all packaged scripts in addition to checking shared libraries. + To avoid this do not package the examples directory. If you are seeing this + problem you are building a very old bacula package as the examples have been + removed from the doc packaging. + +\item + \label{faq6} + {\bf I'm building my own rpms because you don't publish for my platform. + Can I get my packages released to sourceforge for other people to use?} Yes, + contributions from users are accepted and appreciated. Please examine the + directory platforms/contrib-rpm in the source code for further information. + +\item + \label{faq7} + {\bf Is there an easier way than sorting out all these command line options?} Yes, + there is a gui wizard shell script which you can use to rebuild the src rpm package. + Look in the source archive for platforms/contrib-rpm/rpm\_wizard.sh. This script will + allow you to specify build options using GNOME dialog screens. It requires zenity. + +\item + \label{faq8} + {\bf I just upgraded from 1.36.x to 1.38.x and now my director daemon +won't start. It appears to start but dies silently and I get a "connection +refused" error when starting the console. What is wrong?} Beginning with +1.38 the rpm packages are configured to run the director and storage +daemons as a non-root user. The file daemon runs as user root and group +bacula, the storage daemon as user bacula and group disk, and the director +as user bacula and group bacula. If you are upgrading you will need to +change some file permissions for things to work. Execute the following +commands as root: + +\footnotesize +\begin{verbatim} + chown bacula.bacula /var/bacula/* + chown root.bacula /var/bacula/bacula-fd.9102.state + chown bacula.disk /var/bacula/bacula-sd.9103.state + +\end{verbatim} +\normalsize + +Further, if you are using File storage volumes rather than tapes those +files will also need to have ownership set to user bacula and group bacula. + +\item + \label{faq9} + {\bf There are a lot of rpm packages. Which packages do I need for +what?} For a bacula server you need to select the packsge based upon your +preferred catalog database: one of bacula-mysql, bacula-postgresql or +bacula-sqlite. If your system does not provide an mtx package you also +need bacula-mtx to satisfy that dependancy. For a client machine you need +only install bacula-client. Optionally, for either server or client +machines, you may install a graphical console bacula-gconsole and/or +bacula-wxconsole. The Bacula Administration Tool is installed with the +bacula-bat package. One last package, bacula-updatedb is required only when +upgrading a server more than one database revision level. + + + +\item {\bf Support for RHEL3/4/5, CentOS 3/4/5, Scientific Linux 3/4/5 and x86\_64} + The examples below show + explicit build support for RHEL4 and CentOS 4. Build support + for x86\_64 has also been added. +\end{enumerate} + +\footnotesize +\begin{verbatim} +Build with one of these 3 commands: + +rpmbuild --rebuild \ + --define "build_rhel4 1" \ + --define "build_sqlite 1" \ + bacula-1.38.3-1.src.rpm + +rpmbuild --rebuild \ + --define "build_rhel4 1" \ + --define "build_postgresql 1" \ + bacula-1.38.3-1.src.rpm + +rpmbuild --rebuild \ + --define "build_rhel4 1" \ + --define "build_mysql4 1" \ + bacula-1.38.3-1.src.rpm + +For CentOS substitute '--define "build_centos4 1"' in place of rhel4. +For Scientific Linux substitute '--define "build_sl4 1"' in place of rhel4. + +For 64 bit support add '--define "build_x86_64 1"' +\end{verbatim} +\normalsize + +\section{Build Options} +\index[general]{Build Options} +The spec file currently supports building on the following platforms: +\footnotesize +\begin{verbatim} +Red Hat builds +--define "build_rh7 1" +--define "build_rh8 1" +--define "build_rh9 1" + +Fedora Core build +--define "build_fc1 1" +--define "build_fc3 1" +--define "build_fc4 1" +--define "build_fc5 1" +--define "build_fc6 1" +--define "build_fc7 1" + +Whitebox Enterprise build +--define "build_wb3 1" + +Red Hat Enterprise builds +--define "build_rhel3 1" +--define "build_rhel4 1" +--define "build_rhel5 1" + +CentOS build +--define "build_centos3 1" +--define "build_centos4 1" +--define "build_centos5 1" + +Scientific Linux build +--define "build_sl3 1" +--define "build_sl4 1" +--define "build_sl5 1" + +SuSE build +--define "build_su9 1" +--define "build_su10 1" +--define "build_su102 1" +--define "build_su103 1" + +Mandrake 10.x build +--define "build_mdk 1" + +Mandriva build +--define "build_mdv 1" + +MySQL support: +for mysql 3.23.x support define this +--define "build_mysql 1" +if using mysql 4.x define this, +currently: Mandrake 10.x, Mandriva 2006.0, SuSE 9.x & 10.0, FC4 & RHEL4 +--define "build_mysql4 1" +if using mysql 5.x define this, +currently: SuSE 10.1 & FC5 +--define "build_mysql5 1" + +PostgreSQL support: +--define "build_postgresql 1" + +Sqlite support: +--define "build_sqlite 1" + +Build the client rpm only in place of one of the above database full builds: +--define "build_client_only 1" + +X86-64 support: +--define "build_x86_64 1" + +Supress build of bgnome-console: +--define "nobuild_gconsole 1" + +Build the WXWindows console: +requires wxGTK >= 2.6 +--define "build_wxconsole 1" + +Build the Bacula Administration Tool: +requires QT >= 4.2 +--define "build_bat 1" + +Build python scripting support: +--define "build_python 1" + +Modify the Packager tag for third party packages: +--define "contrib_packager Your Name " + +\end{verbatim} +\normalsize + +\section{RPM Install Problems} +\index[general]{RPM Install Problems} +In general the RPMs, once properly built should install correctly. +However, when attempting to run the daemons, a number of problems +can occur: +\begin{itemize} +\item [Wrong /var/bacula Permissions] + By default, the Director and Storage daemon do not run with + root permission. If the /var/bacula is owned by root, then it + is possible that the Director and the Storage daemon will not + be able to access this directory, which is used as the Working + Directory. To fix this, the easiest thing to do is: +\begin{verbatim} + chown bacula:bacula /var/bacula +\end{verbatim} + Note: as of 1.38.8 /var/bacula is installed root:bacula with + permissions 770. +\item [The Storage daemon cannot Access the Tape drive] + This can happen in some older RPM releases where the Storage + daemon ran under userid bacula, group bacula. There are two + ways of fixing this: the best is to modify the /etc/init.d/bacula-sd + file so that it starts the Storage daemon with group "disk". + The second way to fix the problem is to change the permissions + of your tape drive (usually /dev/nst0) so that Bacula can access it. + You will probably need to change the permissions of the SCSI control + device as well, which is usually /dev/sg0. The exact names depend + on your configuration, please see the Tape Testing chapter for + more information on devices. +\end{itemize} + diff --git a/docs/manuals/fr/problems/rpm-faq.tex b/docs/manuals/fr/problems/rpm-faq.tex deleted file mode 100644 index 127fc39c..00000000 --- a/docs/manuals/fr/problems/rpm-faq.tex +++ /dev/null @@ -1,395 +0,0 @@ -%% -%% - -\chapter{Bacula RPM Packaging FAQ} -\label{RpmFaqChapter} -\index[general]{FAQ!Bacula\textsuperscript{\textregistered} - RPM Packaging } -\index[general]{Bacula\textsuperscript{\textregistered} - RPM Packaging FAQ } - -\begin{enumerate} -\item - \ilink{How do I build Bacula for platform xxx?}{faq1} -\item - \ilink{How do I control which database support gets built?}{faq2} - -\item - \ilink{What other defines are used?}{faq3} -\item - \ilink{I'm getting errors about not having permission when I try to build the - packages. Do I need to be root?}{faq4} -\item - \ilink{I'm building my own rpms but on all platforms and compiles I get an - unresolved dependency for something called - /usr/afsws/bin/pagsh.}{faq5} -\item - \ilink{I'm building my own rpms because you don't publish for my platform. - Can I get my packages released to sourceforge for other people to use?}{faq6} -\item - \ilink{Is there an easier way than sorting out all these command line options?}{faq7} -\item - \ilink{I just upgraded from 1.36.x to 1.38.x and now my director daemon won't start. It appears to start but dies silently and I get a "connection refused" error when starting the console. What is wrong?}{faq8} -\item - \ilink{There are a lot of rpm packages. Which packages do I need for what?}{faq9} -\end{enumerate} - -\section{Answers} -\index[general]{Answers } - -\begin{enumerate} -\item - \label{faq1} - {\bf How do I build Bacula for platform xxx?} - The bacula spec file contains defines to build for several platforms: - Red Hat 7.x (rh7), Red Hat 8.0 (rh8), Red Hat 9 (rh9), Fedora Core (fc1, - fc3, fc4, fc5, fc6, fc7), Whitebox Enterprise Linux 3.0 (wb3), Red Hat Enterprise Linux - (rhel3, rhel4, rhel5), Mandrake 10.x (mdk), Mandriva 2006.x (mdv) CentOS (centos3, centos4, centos5) - Scientific Linux (sl3, sl4, sl5) and SuSE (su9, su10, su102, su103). The package build is controlled by a mandatory define set at the beginning of the file. These defines basically just control the dependency information that gets coded into the finished rpm package as well - as any special configure options required. The platform define may be edited - in the spec file directly (by default all defines are set to 0 or "not set"). - For example, to build the Red Hat 7.x package find the line in the spec file - which reads - -\footnotesize -\begin{verbatim} - %define rh7 0 - -\end{verbatim} -\normalsize - -and edit it to read - -\footnotesize -\begin{verbatim} - %define rh7 1 - -\end{verbatim} -\normalsize - -Alternately you may pass the define on the command line when calling rpmbuild: - - -\footnotesize -\begin{verbatim} - rpmbuild -ba --define "build_rh7 1" bacula.spec - rpmbuild --rebuild --define build_rh7 1" bacula-x.x.x-x.src.rpm - -\end{verbatim} -\normalsize - -\item - \label{faq2} - {\bf How do I control which database support gets built?} - Another mandatory build define controls which database support is compiled, - one of build\_sqlite, build\_mysql or build\_postgresql. To get the MySQL - package and support either set the - -\footnotesize -\begin{verbatim} - %define mysql 0 - OR - %define mysql4 0 - OR - %define mysql5 0 - -\end{verbatim} -\normalsize - -to - -\footnotesize -\begin{verbatim} - %define mysql 1 - OR - %define mysql4 1 - OR - %define mysql5 1 - -\end{verbatim} -\normalsize - -in the spec file directly or pass it to rpmbuild on the command line: - -\footnotesize -\begin{verbatim} - rpmbuild -ba --define "build_rh7 1" --define "build_mysql 1" bacula.spec - rpmbuild -ba --define "build_rh7 1" --define "build_mysql4 1" bacula.spec - rpmbuild -ba --define "build_rh7 1" --define "build_mysql5 1" bacula.spec - -\end{verbatim} -\normalsize - -\item - \label{faq3} - {\bf What other defines are used?} - Three other building defines of note are the depkgs\_version, docs\_version and - \_rescuever identifiers. These two defines are set with each release and must - match the version of those sources that are being used to build the packages. - You would not ordinarily need to edit these. See also the Build Options section - below for other build time options that can be passed on the command line. -\item - \label{faq4} - {\bf I'm getting errors about not having permission when I try to build the - packages. Do I need to be root?} - No, you do not need to be root and, in fact, it is better practice to - build rpm packages as a non-root user. Bacula packages are designed to - be built by a regular user but you must make a few changes on your - system to do this. If you are building on your own system then the - simplest method is to add write permissions for all to the build - directory (/usr/src/redhat/, /usr/src/RPM or /usr/src/packages). - To accomplish this, execute the following command as root: - -\footnotesize -\begin{verbatim} - chmod -R 777 /usr/src/redhat - chmod -R 777 /usr/src/RPM - chmod -R 777 /usr/src/packages - -\end{verbatim} -\normalsize - -If you are working on a shared system where you can not use the method -above then you need to recreate the appropriate above directory tree with all -of its subdirectories inside your home directory. Then create a file named - -{\tt .rpmmacros} - -in your home directory (or edit the file if it already exists) -and add the following line: - -\footnotesize -\begin{verbatim} - %_topdir /home/myuser/redhat - %_tmppath /tmp - -\end{verbatim} -\normalsize - -Another handy directive for the .rpmmacros file if you wish to suppress the -creation of debug rpm packages is: - -\footnotesize -\begin{verbatim} - %debug_package %{nil} - -\end{verbatim} - -\normalsize - -\item - \label{faq5} - {\bf I'm building my own rpms but on all platforms and compiles I get an - unresolved dependency for something called /usr/afsws/bin/pagsh.} This - is a shell from the OpenAFS (Andrew File System). If you are seeing - this then you chose to include the docs/examples directory in your - package. One of the example scripts in this directory is a pagsh - script. Rpmbuild, when scanning for dependencies, looks at the shebang - line of all packaged scripts in addition to checking shared libraries. - To avoid this do not package the examples directory. If you are seeing this - problem you are building a very old bacula package as the examples have been - removed from the doc packaging. - -\item - \label{faq6} - {\bf I'm building my own rpms because you don't publish for my platform. - Can I get my packages released to sourceforge for other people to use?} Yes, - contributions from users are accepted and appreciated. Please examine the - directory platforms/contrib-rpm in the source code for further information. - -\item - \label{faq7} - {\bf Is there an easier way than sorting out all these command line options?} Yes, - there is a gui wizard shell script which you can use to rebuild the src rpm package. - Look in the source archive for platforms/contrib-rpm/rpm\_wizard.sh. This script will - allow you to specify build options using GNOME dialog screens. It requires zenity. - -\item - \label{faq8} - {\bf I just upgraded from 1.36.x to 1.38.x and now my director daemon -won't start. It appears to start but dies silently and I get a "connection -refused" error when starting the console. What is wrong?} Beginning with -1.38 the rpm packages are configured to run the director and storage -daemons as a non-root user. The file daemon runs as user root and group -bacula, the storage daemon as user bacula and group disk, and the director -as user bacula and group bacula. If you are upgrading you will need to -change some file permissions for things to work. Execute the following -commands as root: - -\footnotesize -\begin{verbatim} - chown bacula.bacula /var/bacula/* - chown root.bacula /var/bacula/bacula-fd.9102.state - chown bacula.disk /var/bacula/bacula-sd.9103.state - -\end{verbatim} -\normalsize - -Further, if you are using File storage volumes rather than tapes those -files will also need to have ownership set to user bacula and group bacula. - -\item - \label{faq9} - {\bf There are a lot of rpm packages. Which packages do I need for -what?} For a bacula server you need to select the packsge based upon your -preferred catalog database: one of bacula-mysql, bacula-postgresql or -bacula-sqlite. If your system does not provide an mtx package you also -need bacula-mtx to satisfy that dependancy. For a client machine you need -only install bacula-client. Optionally, for either server or client -machines, you may install a graphical console bacula-gconsole and/or -bacula-wxconsole. The Bacula Administration Tool is installed with the -bacula-bat package. One last package, bacula-updatedb is required only when -upgrading a server more than one database revision level. - - - -\item {\bf Support for RHEL3/4/5, CentOS 3/4/5, Scientific Linux 3/4/5 and x86\_64} - The examples below show - explicit build support for RHEL4 and CentOS 4. Build support - for x86\_64 has also been added. -\end{enumerate} - -\footnotesize -\begin{verbatim} -Build with one of these 3 commands: - -rpmbuild --rebuild \ - --define "build_rhel4 1" \ - --define "build_sqlite 1" \ - bacula-1.38.3-1.src.rpm - -rpmbuild --rebuild \ - --define "build_rhel4 1" \ - --define "build_postgresql 1" \ - bacula-1.38.3-1.src.rpm - -rpmbuild --rebuild \ - --define "build_rhel4 1" \ - --define "build_mysql4 1" \ - bacula-1.38.3-1.src.rpm - -For CentOS substitute '--define "build_centos4 1"' in place of rhel4. -For Scientific Linux substitute '--define "build_sl4 1"' in place of rhel4. - -For 64 bit support add '--define "build_x86_64 1"' -\end{verbatim} -\normalsize - -\section{Build Options} -\index[general]{Build Options} -The spec file currently supports building on the following platforms: -\footnotesize -\begin{verbatim} -Red Hat builds ---define "build_rh7 1" ---define "build_rh8 1" ---define "build_rh9 1" - -Fedora Core build ---define "build_fc1 1" ---define "build_fc3 1" ---define "build_fc4 1" ---define "build_fc5 1" ---define "build_fc6 1" ---define "build_fc7 1" - -Whitebox Enterprise build ---define "build_wb3 1" - -Red Hat Enterprise builds ---define "build_rhel3 1" ---define "build_rhel4 1" ---define "build_rhel5 1" - -CentOS build ---define "build_centos3 1" ---define "build_centos4 1" ---define "build_centos5 1" - -Scientific Linux build ---define "build_sl3 1" ---define "build_sl4 1" ---define "build_sl5 1" - -SuSE build ---define "build_su9 1" ---define "build_su10 1" ---define "build_su102 1" ---define "build_su103 1" - -Mandrake 10.x build ---define "build_mdk 1" - -Mandriva build ---define "build_mdv 1" - -MySQL support: -for mysql 3.23.x support define this ---define "build_mysql 1" -if using mysql 4.x define this, -currently: Mandrake 10.x, Mandriva 2006.0, SuSE 9.x & 10.0, FC4 & RHEL4 ---define "build_mysql4 1" -if using mysql 5.x define this, -currently: SuSE 10.1 & FC5 ---define "build_mysql5 1" - -PostgreSQL support: ---define "build_postgresql 1" - -Sqlite support: ---define "build_sqlite 1" - -Build the client rpm only in place of one of the above database full builds: ---define "build_client_only 1" - -X86-64 support: ---define "build_x86_64 1" - -Supress build of bgnome-console: ---define "nobuild_gconsole 1" - -Build the WXWindows console: -requires wxGTK >= 2.6 ---define "build_wxconsole 1" - -Build the Bacula Administration Tool: -requires QT >= 4.2 ---define "build_bat 1" - -Build python scripting support: ---define "build_python 1" - -Modify the Packager tag for third party packages: ---define "contrib_packager Your Name " - -\end{verbatim} -\normalsize - -\section{RPM Install Problems} -\index[general]{RPM Install Problems} -In general the RPMs, once properly built should install correctly. -However, when attempting to run the daemons, a number of problems -can occur: -\begin{itemize} -\item [Wrong /var/bacula Permissions] - By default, the Director and Storage daemon do not run with - root permission. If the /var/bacula is owned by root, then it - is possible that the Director and the Storage daemon will not - be able to access this directory, which is used as the Working - Directory. To fix this, the easiest thing to do is: -\begin{verbatim} - chown bacula:bacula /var/bacula -\end{verbatim} - Note: as of 1.38.8 /var/bacula is installed root:bacula with - permissions 770. -\item [The Storage daemon cannot Access the Tape drive] - This can happen in some older RPM releases where the Storage - daemon ran under userid bacula, group bacula. There are two - ways of fixing this: the best is to modify the /etc/init.d/bacula-sd - file so that it starts the Storage daemon with group "disk". - The second way to fix the problem is to change the permissions - of your tape drive (usually /dev/nst0) so that Bacula can access it. - You will probably need to change the permissions of the SCSI control - device as well, which is usually /dev/sg0. The exact names depend - on your configuration, please see the Tape Testing chapter for - more information on devices. -\end{itemize} - diff --git a/docs/manuals/fr/problems/tapetesting-en.tex b/docs/manuals/fr/problems/tapetesting-en.tex new file mode 100644 index 00000000..710f90e7 --- /dev/null +++ b/docs/manuals/fr/problems/tapetesting-en.tex @@ -0,0 +1,1376 @@ +%% +%% + +\chapter{Testing Your Tape Drive With Bacula} +\label{TapeTestingChapter} +\index[general]{Testing Your Tape Drive With Bacula} + +This chapter is concerned with testing and configuring your tape drive to make +sure that it will work properly with Bacula using the {\bf btape} program. +\label{summary} + +\section{Get Your Tape Drive Working} + +In general, you should follow the following steps to get your tape drive to +work with Bacula. Start with a tape mounted in your drive. If you have an +autochanger, load a tape into the drive. We use {\bf /dev/nst0} as the tape +drive name, you will need to adapt it according to your system. + +Do not proceed to the next item until you have succeeded with the previous +one. + +\begin{enumerate} +\item Make sure that Bacula (the Storage daemon) is not running + or that you have {\bf unmount}ed the drive you will use + for testing. + +\item Use tar to write to, then read from your drive: + + \footnotesize +\begin{verbatim} + mt -f /dev/nst0 rewind + tar cvf /dev/nst0 . + mt -f /dev/nst0 rewind + tar tvf /dev/nst0 + +\end{verbatim} +\normalsize + +\item Make sure you have a valid and correct Device resource corresponding + to your drive. For Linux users, generally, the default one works. For + FreeBSD users, there are two possible Device configurations (see below). + For other drives and/or OSes, you will need to first ensure that your + system tape modes are properly setup (see below), then possibly modify + you Device resource depending on the output from the btape program (next + item). When doing this, you should consult the \ilink{Storage Daemon + Configuration}{StoredConfChapter} of this manual. + +\item If you are using a Fibre Channel to connect your tape drive to + Bacula, please be sure to disable any caching in the NSR (network + storage router, which is a Fibre Channel to SCSI converter). + +\item Run the btape {\bf test} command: + + \footnotesize +\begin{verbatim} + ./btape -c bacula-sd.conf /dev/nst0 + test + +\end{verbatim} +\normalsize + + It isn't necessary to run the autochanger part of the test at this time, + but do not go past this point until the basic test succeeds. If you do + have an autochanger, please be sure to read the \ilink{Autochanger + chapter}{AutochangersChapter} of this manual. + +\item Run the btape {\bf fill} command, preferably with two volumes. This + can take a long time. If you have an autochanger and it is configured, Bacula + will automatically use it. If you do not have it configured, you can manually + issue the appropriate {\bf mtx} command, or press the autochanger buttons to + change the tape when requested to do so. + +\item FreeBSD users, if you have a pre-5.0 system run the {\bf tapetest} + program, and make sure your system is patched if necessary. The tapetest + program can be found in the platform/freebsd directory. The instructions + for its use are at the top of the file. + +\item Run Bacula, and backup a reasonably small directory, say 60 + Megabytes. Do three successive backups of this directory. + +\item Stop Bacula, then restart it. Do another full backup of the same + directory. Then stop and restart Bacula. + +\item Do a restore of the directory backed up, by entering the following + restore command, being careful to restore it to an alternate location: + + +\footnotesize +\begin{verbatim} + restore select all done + yes + +\end{verbatim} +\normalsize + + Do a {\bf diff} on the restored directory to ensure it is identical to the + original directory. If you are going to backup multiple different systems + (Linux, Windows, Mac, Solaris, FreeBSD, ...), be sure you test the restore + on each system type. + +\item If you have an autochanger, you should now go back to the btape program + and run the autochanger test: + +\footnotesize +\begin{verbatim} + ./btape -c bacula-sd.conf /dev/nst0 + auto + +\end{verbatim} +\normalsize + + Adjust your autochanger as necessary to ensure that it works correctly. See + the Autochanger chapter of this manual for a complete discussion of testing + your autochanger. + +\item We strongly recommend that you use a dedicated SCSI + controller for your tape drives. Scanners are known to induce + serious problems with the SCSI bus, causing it to reset. If the + SCSI bus is reset while Bacula has the tape drive open, it will + most likely be fatal to your tape since the drive will rewind. + These kinds of problems show up in the system log. For example, + the following was most likely caused by a scanner: + +\footnotesize +\begin{verbatim} +Feb 14 17:29:55 epohost kernel: (scsi0:A:2:0): No or incomplete CDB sent to device. +Feb 14 17:29:55 epohost kernel: scsi0: Issued Channel A Bus Reset. 1 SCBs aborted +\end{verbatim} +\normalsize + +\end{enumerate} + +If you have reached this point, you stand a good chance of having everything +work. If you get into trouble at any point, {\bf carefully} read the +documentation given below. If you cannot get past some point, ask the {\bf +bacula-users} email list, but specify which of the steps you have successfully +completed. In particular, you may want to look at the +\ilink{ Tips for Resolving Problems}{problems1} section below. + + +\label{NoTapeInDrive} +\subsection{Problems When no Tape in Drive} +\index[general]{Problems When no Tape in Drive} +When Bacula was first written the Linux 2.4 kernel permitted opening the +drive whether or not there was a tape in the drive. Thus the Bacula code is +based on the concept that if the drive cannot be opened, there is a serious +problem, and the job is failed. + +With version 2.6 of the Linux kernel, if there is no tape in the drive, the +OS will wait two minutes (default) and then return a failure, and consequently, +Bacula version 1.36 and below will fail the job. This is important to keep +in mind, because if you use an option such as {\bf Offline on Unmount = +yes}, there will be a point when there is no tape in the drive, and if +another job starts or if Bacula asks the operator to mount a tape, when +Bacula attempts to open the drive (about a 20 minute delay), it will fail +and Bacula will fail the job. + +In version 1.38.x, the Bacula code partially gets around this problem -- at +least in the initial open of the drive. However, functions like Polling +the drive do not work correctly if there is no tape in the drive. +Providing you do not use {\bf Offline on Unmount = yes}, you should not +experience job failures as mentioned above. If you do experience such +failures, you can also increase the {\bf Maximum Open Wait} time interval, +which will give you more time to mount the next tape before the job is +failed. + +\subsection{Specifying the Configuration File} +\index[general]{File!Specifying the Configuration} +\index[general]{Specifying the Configuration File} + +Starting with version 1.27, each of the tape utility programs including the +{\bf btape} program requires a valid Storage daemon configuration file +(actually, the only part of the configuration file that {\bf btape} needs is +the {\bf Device} resource definitions). This permits {\bf btape} to find the +configuration parameters for your archive device (generally a tape drive). +Without those parameters, the testing and utility programs do not know how to +properly read and write your drive. By default, they use {\bf bacula-sd.conf} +in the current directory, but you may specify a different configuration file +using the {\bf -c} option. + +\subsection{Specifying a Device Name For a Tape} +\index[general]{Tape!Specifying a Device Name For a} +\index[general]{Specifying a Device Name For a Tape} + +{\bf btape} {\bf device-name} where the Volume can be found. In the case of a +tape, this is the physical device name such as {\bf /dev/nst0} or {\bf +/dev/rmt/0ubn} depending on your system that you specify on the Archive Device +directive. For the program to work, it must find the identical name in the +Device resource of the configuration file. If the name is not found in the +list of physical names, the utility program will compare the name you entered +to the Device names (rather than the Archive device names). + +When specifying a tape device, it is preferable that the "non-rewind" +variant of the device file name be given. In addition, on systems such as +Sun, which have multiple tape access methods, you must be sure to specify +to use Berkeley I/O conventions with the device. The +{\bf b} in the Solaris (Sun) archive specification {\bf /dev/rmt/0mbn} is +what is needed in this case. Bacula does not support SysV tape drive +behavior. + +See below for specifying Volume names. + +\subsection{Specifying a Device Name For a File} +\index[general]{File!Specifying a Device Name For a} +\index[general]{Specifying a Device Name For a File} + +If you are attempting to read or write an archive file rather than a tape, the +{\bf device-name} should be the full path to the archive location including +the filename. The filename (last part of the specification) will be stripped +and used as the Volume name, and the path (first part before the filename) +must have the same entry in the configuration file. So, the path is equivalent +to the archive device name, and the filename is equivalent to the volume name. + + +\section{btape} +\label{btape1} +\index[general]{Btape} + +This program permits a number of elementary tape operations via a tty command +interface. The {\bf test} command, described below, can be very useful for +testing tape drive compatibility problems. Aside from initial testing of tape +drive compatibility with {\bf Bacula}, {\bf btape} will be mostly used by +developers writing new tape drivers. + +{\bf btape} can be dangerous to use with existing {\bf Bacula} tapes because +it will relabel a tape or write on the tape if so requested regardless of +whether or not the tape contains valuable data, so please be careful and use +it only on blank tapes. + +To work properly, {\bf btape} needs to read the Storage daemon's configuration +file. As a default, it will look for {\bf bacula-sd.conf} in the current +directory. If your configuration file is elsewhere, please use the {\bf -c} +option to specify where. + +The physical device name or the Device resource name must be specified on the +command line, and this same device name must be present in the Storage +daemon's configuration file read by {\bf btape} + +\footnotesize +\begin{verbatim} +Usage: btape [options] device_name + -b specify bootstrap file + -c set configuration file to file + -d set debug level to nn + -p proceed inspite of I/O errors + -s turn off signals + -v be verbose + -? print this message. +\end{verbatim} +\normalsize + +\subsection{Using btape to Verify your Tape Drive} +\index[general]{Using btape to Verify your Tape Drive} +\index[general]{Drive!Using btape to Verify your Tape} + +An important reason for this program is to ensure that a Storage daemon +configuration file is defined so that Bacula will correctly read and write +tapes. + +It is highly recommended that you run the {\bf test} command before running +your first Bacula job to ensure that the parameters you have defined for your +storage device (tape drive) will permit {\bf Bacula} to function properly. You +only need to mount a blank tape, enter the command, and the output should be +reasonably self explanatory. For example: + +\footnotesize +\begin{verbatim} +(ensure that Bacula is not running) +./btape -c /usr/bin/bacula/bacula-sd.conf /dev/nst0 +\end{verbatim} +\normalsize + +The output will be: + +\footnotesize +\begin{verbatim} +Tape block granularity is 1024 bytes. +btape: btape.c:376 Using device: /dev/nst0 +* +\end{verbatim} +\normalsize + +Enter the test command: + +\footnotesize +\begin{verbatim} +test +\end{verbatim} +\normalsize + +The output produced should be something similar to the following: I've cut the +listing short because it is frequently updated to have new tests. + +\footnotesize +\begin{verbatim} +=== Append files test === +This test is essential to Bacula. +I'm going to write one record in file 0, + two records in file 1, + and three records in file 2 +btape: btape.c:387 Rewound /dev/nst0 +btape: btape.c:855 Wrote one record of 64412 bytes. +btape: btape.c:857 Wrote block to device. +btape: btape.c:410 Wrote EOF to /dev/nst0 +btape: btape.c:855 Wrote one record of 64412 bytes. +btape: btape.c:857 Wrote block to device. +btape: btape.c:855 Wrote one record of 64412 bytes. +btape: btape.c:857 Wrote block to device. +btape: btape.c:410 Wrote EOF to /dev/nst0 +btape: btape.c:855 Wrote one record of 64412 bytes. +btape: btape.c:857 Wrote block to device. +btape: btape.c:855 Wrote one record of 64412 bytes. +btape: btape.c:857 Wrote block to device. +btape: btape.c:855 Wrote one record of 64412 bytes. +btape: btape.c:857 Wrote block to device. +btape: btape.c:410 Wrote EOF to /dev/nst0 +btape: btape.c:387 Rewound /dev/nst0 +btape: btape.c:693 Now moving to end of media. +btape: btape.c:427 Moved to end of media +We should be in file 3. I am at file 3. This is correct! +Now the important part, I am going to attempt to append to the tape. +... +=== End Append files test === +\end{verbatim} +\normalsize + +If you do not successfully complete the above test, please resolve the +problem(s) before attempting to use {\bf Bacula}. Depending on your tape +drive, the test may recommend that you add certain records to your +configuration. We strongly recommend that you do so and then re-run the above +test to insure it works the first time. + +Some of the suggestions it provides for resolving the problems may or may not +be useful. If at all possible avoid using fixed blocking. If the test suddenly +starts to print a long series of: + +\footnotesize +\begin{verbatim} +Got EOF on tape. +Got EOF on tape. +... +\end{verbatim} +\normalsize + +then almost certainly, you are running your drive in fixed block mode rather +than variable block mode. See below for more help of resolving fix +versus variable block problems. + +It is also possible that you have your drive +set in SysV tape drive mode. The drive must use BSD tape conventions. +See the section above on setting your {\bf Archive device} correctly. + +For FreeBSD users, please see the notes below for doing further testing of +your tape drive. + +\subsection{Testing tape drive speed} +\label{sec:btapespeed} + +To determine the best configuration of your tape drive, you can run the +\texttt{speed} command available in the \texttt{btape} program. + +This command can have the following arguments: +\begin{itemize} +\item[\texttt{file\_size=n}] Specify the Maximum File Size for this test + (between 1 and 5GB). This counter is in GB. +\item[\texttt{nb\_file=n}] Specify the number of file to be written. The amount + of data should be greater than your memory ($file\_size*nb\_file$). +\item[\texttt{skip\_zero}] This flag permits to skip tests with constant + data. +\item[\texttt{skip\_random}] This flag permits to skip tests with random + data. +\item[\texttt{skip\_raw}] This flag permits to skip tests with raw access. +\item[\texttt{skip\_block}] This flag permits to skip tests with Bacula block + access. +\end{itemize} + +\begin{verbatim} +*speed file_size=3 skip_raw +btape.c:1078 Test with zero data and bacula block structure. +btape.c:956 Begin writing 3 files of 3.221 GB with blocks of 129024 bytes. +++++++++++++++++++++++++++++++++++++++++++ +btape.c:604 Wrote 1 EOF to "Drive-0" (/dev/nst0) +btape.c:406 Volume bytes=3.221 GB. Write rate = 44.128 MB/s +... +btape.c:383 Total Volume bytes=9.664 GB. Total Write rate = 43.531 MB/s + +btape.c:1090 Test with random data, should give the minimum throughput. +btape.c:956 Begin writing 3 files of 3.221 GB with blocks of 129024 bytes. ++++++++++++++++++++++++++++++++++++++++++++ +btape.c:604 Wrote 1 EOF to "Drive-0" (/dev/nst0) +btape.c:406 Volume bytes=3.221 GB. Write rate = 7.271 MB/s ++++++++++++++++++++++++++++++++++++++++++++ +... +btape.c:383 Total Volume bytes=9.664 GB. Total Write rate = 7.365 MB/s + +\end{verbatim} + +When using compression, the random test will give your the minimum throughput +of your drive . The test using constant string will give you the maximum speed +of your hardware chain. (cpu, memory, scsi card, cable, drive, tape). + +You can change the block size in the Storage Daemon configuration file. + +\label{SCSITricks} +\subsection{Linux SCSI Tricks} +\index[general]{Tricks!Linux SCSI} +\index[general]{Linux SCSI Tricks} + +You can find out what SCSI devices you have by doing: + +\footnotesize +\begin{verbatim} +lsscsi +\end{verbatim} +\normalsize + +Typical output is: + +\footnotesize +\begin{verbatim} +[0:0:0:0] disk ATA ST3160812AS 3.AD /dev/sda +[2:0:4:0] tape HP Ultrium 2-SCSI F6CH /dev/st0 +[2:0:5:0] tape HP Ultrium 2-SCSI F6CH /dev/st1 +[2:0:6:0] mediumx OVERLAND LXB 0107 - +[2:0:9:0] tape HP Ultrium 1-SCSI E50H /dev/st2 +[2:0:10:0] mediumx OVERLAND LXB 0107 - +\end{verbatim} +\normalsize + +There are two drives in one autochanger: /dev/st0 and /dev/st1 +and a third tape drive at /dev/st2. For using them with Bacula, one +would normally reference them as /dev/nst0 ... /dev/nst2. Not also, +there are two different autochangers identified as "mediumx OVERLAND LXB". +They can be addressed via their /dev/sgN designation, which can be +obtained by counting from the beginning as 0 to each changer. In the +above case, the two changers are located on /dev/sg3 and /dev/sg5. The one +at /dev/sg3, controls drives /dev/nst0 and /dev/nst1; and the one at +/dev/sg5 controles drive /dev/nst2. + +If you do not have the {\bf lsscsi} command, you can obtain the same +information as follows: + +\footnotesize +\begin{verbatim} +cat /proc/scsi/scsi +\end{verbatim} +\normalsize + +For the above example with the three drives and two autochangers, +I get: + +\footnotesize +\begin{verbatim} +Attached devices: +Host: scsi0 Channel: 00 Id: 00 Lun: 00 + Vendor: ATA Model: ST3160812AS Rev: 3.AD + Type: Direct-Access ANSI SCSI revision: 05 +Host: scsi2 Channel: 00 Id: 04 Lun: 00 + Vendor: HP Model: Ultrium 2-SCSI Rev: F6CH + Type: Sequential-Access ANSI SCSI revision: 03 +Host: scsi2 Channel: 00 Id: 05 Lun: 00 + Vendor: HP Model: Ultrium 2-SCSI Rev: F6CH + Type: Sequential-Access ANSI SCSI revision: 03 +Host: scsi2 Channel: 00 Id: 06 Lun: 00 + Vendor: OVERLAND Model: LXB Rev: 0107 + Type: Medium Changer ANSI SCSI revision: 02 +Host: scsi2 Channel: 00 Id: 09 Lun: 00 + Vendor: HP Model: Ultrium 1-SCSI Rev: E50H + Type: Sequential-Access ANSI SCSI revision: 03 +Host: scsi2 Channel: 00 Id: 10 Lun: 00 + Vendor: OVERLAND Model: LXB Rev: 0107 + Type: Medium Changer ANSI SCSI revision: 02 +\end{verbatim} +\normalsize + + +As an additional example, I get the following (on a different machine from the +above example): + +\footnotesize +\begin{verbatim} +Attached devices: +Host: scsi2 Channel: 00 Id: 01 Lun: 00 + Vendor: HP Model: C5713A Rev: H107 + Type: Sequential-Access ANSI SCSI revision: 02 +Host: scsi2 Channel: 00 Id: 04 Lun: 00 + Vendor: SONY Model: SDT-10000 Rev: 0110 + Type: Sequential-Access ANSI SCSI revision: 02 +\end{verbatim} +\normalsize + +The above represents first an autochanger and second a simple +tape drive. The HP changer (the first entry) uses the same SCSI channel +for data and for control, so in Bacula, you would use: +\footnotesize +\begin{verbatim} +Archive Device = /dev/nst0 +Changer Device = /dev/sg0 +\end{verbatim} +\normalsize + +If you want to remove the SDT-10000 device, you can do so as root with: + +\footnotesize +\begin{verbatim} +echo "scsi remove-single-device 2 0 4 0">/proc/scsi/scsi +\end{verbatim} +\normalsize + +and you can put add it back with: + +\footnotesize +\begin{verbatim} +echo "scsi add-single-device 2 0 4 0">/proc/scsi/scsi +\end{verbatim} +\normalsize + +where the 2 0 4 0 are the Host, Channel, Id, and Lun as seen on the output +from {\bf cat /proc/scsi/scsi}. Note, the Channel must be specified as +numeric. + +Below is a slightly more complicated output, which is a single autochanger +with two drives, and which operates the changer on a different channel +from from the drives: + +\footnotesize +\begin{verbatim} +Attached devices: +Host: scsi0 Channel: 00 Id: 00 Lun: 00 + Vendor: ATA Model: WDC WD1600JD-75H Rev: 08.0 + Type: Direct-Access ANSI SCSI revision: 05 +Host: scsi2 Channel: 00 Id: 04 Lun: 00 + Vendor: HP Model: Ultrium 2-SCSI Rev: F6CH + Type: Sequential-Access ANSI SCSI revision: 03 +Host: scsi2 Channel: 00 Id: 05 Lun: 00 + Vendor: HP Model: Ultrium 2-SCSI Rev: F6CH + Type: Sequential-Access ANSI SCSI revision: 03 +Host: scsi2 Channel: 00 Id: 06 Lun: 00 + Vendor: OVERLAND Model: LXB Rev: 0106 + Type: Medium Changer ANSI SCSI revision: 02 +\end{verbatim} +\normalsize + +The above tape drives are accessed on /dev/nst0 and /dev/nst1, while +the control channel for those two drives is /dev/sg3. + + + +\label{problems1} +\section{Tips for Resolving Problems} +\index[general]{Problems!Tips for Resolving} +\index[general]{Tips for Resolving Problems} + +\label{CannotRestore} +\subsection{Bacula Saves But Cannot Restore Files} +\index[general]{Files!Bacula Saves But Cannot Restore} +\index[general]{Bacula Saves But Cannot Restore Files} + +If you are getting error messages such as: + +\footnotesize +\begin{verbatim} +Volume data error at 0:1! Wanted block-id: "BB02", got "". Buffer discarded +\end{verbatim} +\normalsize + +It is very likely that Bacula has tried to do block positioning and ended up +at an invalid block. This can happen if your tape drive is in fixed block mode +while Bacula's default is variable blocks. Note that in such cases, Bacula is +perfectly able to write to your Volumes (tapes), but cannot position to read +them. + +There are two possible solutions. + +\begin{enumerate} +\item The first and best is to always ensure that your drive is in variable + block mode. Note, it can switch back to fixed block mode on a reboot or if + another program uses the drive. So on such systems you need to modify the + Bacula startup files to explicitly set: + +\footnotesize +\begin{verbatim} +mt -f /dev/nst0 defblksize 0 +\end{verbatim} +\normalsize + +or whatever is appropriate on your system. Note, if you are running a Linux +system, and the above command does not work, it is most likely because you +have not loaded the appropriate {\bf mt} package, which is often called +{\bf mt\_st}, but may differ according to your distribution. + +\item The second possibility, especially, if Bacula wrote while the drive was + in fixed block mode, is to turn off block positioning in Bacula. This is done + by adding: + +\footnotesize +\begin{verbatim} +Block Positioning = no +\end{verbatim} +\normalsize + +to the Device resource. This is not the recommended procedure because it can +enormously slow down recovery of files, but it may help where all else +fails. This directive is available in version 1.35.5 or later (and not yet +tested). +\end{enumerate} + +If you are getting error messages such as: +\footnotesize +\begin{verbatim} +Volume data error at 0:0! +Block checksum mismatch in block=0 len=32625 calc=345678 blk=123456 +\end{verbatim} +\normalsize + +You are getting tape read errors, and this is most likely due to +one of the following things: +\begin{enumerate} +\item An old or bad tape. +\item A dirty drive that needs cleaning (particularly for DDS drives). +\item A loose SCSI cable. +\item Old firmware in your drive. Make sure you have the latest firmware + loaded. +\item Computer memory errors. +\item Over-clocking your CPU. +\item A bad SCSI card. +\end{enumerate} + + +\label{opendevice} +\subsection{Bacula Cannot Open the Device} +\index[general]{Device!Bacula Cannot Open the} +\index[general]{Bacula Cannot Open the Device} + +If you get an error message such as: + +\footnotesize +\begin{verbatim} +dev open failed: dev.c:265 stored: unable to open +device /dev/nst0:> ERR=No such device or address +\end{verbatim} +\normalsize + +the first time you run a job, it is most likely due to the fact that you +specified the incorrect device name on your {\bf Archive Device}. + +If Bacula works fine with your drive, then all off a sudden you get error +messages similar to the one shown above, it is quite possible that your driver +module is being removed because the kernel deems it idle. This is done via +{\bf crontab} with the use of {\bf rmmod -a}. To fix the problem, you can +remove this entry from {\bf crontab}, or you can manually {\bf modprob} your +driver module (or add it to the local startup script). Thanks to Alan Brown +for this tip. +\label{IncorrectFiles} + +\subsection{Incorrect File Number} +\index[general]{Number!Incorrect File} +\index[general]{Incorrect File Number} + +When Bacula moves to the end of the medium, it normally uses the {\bf +ioctl(MTEOM)} function. Then Bacula uses the {\bf ioctl(MTIOCGET)} function to +retrieve the current file position from the {\bf mt\_fileno} field. Some SCSI +tape drivers will use a fast means of seeking to the end of the medium and in +doing so, they will not know the current file position and hence return a {\bf +-1}. As a consequence, if you get {\bf "This is NOT correct!"} in the +positioning tests, this may be the cause. You must correct this condition in +order for Bacula to work. + +There are two possible solutions to the above problem of incorrect file +number: + +\begin{itemize} +\item Figure out how to configure your SCSI driver to keep track of the file + position during the MTEOM request. This is the preferred solution. +\item Modify the {\bf Device} resource of your {\bf bacula-sd.conf} file to + include: + +\footnotesize +\begin{verbatim} +Hardware End of File = no +\end{verbatim} +\normalsize + +This will cause Bacula to use the MTFSF request to seek to the end of the +medium, and Bacula will keep track of the file number itself. +\end{itemize} + +\label{IncorrectBlocks} +\subsection{Incorrect Number of Blocks or Positioning Errors} +\index[general]{Testing!Incorrect Number of Blocks or Positioning Errors} +\index[general]{Incorrect Number of Blocks or Positioning Errors} + +{\bf Bacula's} preferred method of working with tape drives (sequential +devices) is to run in variable block mode, and this is what is set by default. +You should first ensure that your tape drive is set for variable block mode +(see below). + +If your tape drive is in fixed block mode and you have told Bacula to use +different fixed block sizes or variable block sizes (default), you will get +errors when Bacula attempts to forward space to the correct block (the kernel +driver's idea of tape blocks will not correspond to Bacula's). + +All modern tape drives support variable tape blocks, but some older drives (in +particular the QIC drives) as well as the ATAPI ide-scsi driver run only in +fixed block mode. The Travan tape drives also apparently must run in fixed +block mode (to be confirmed). + +Even in variable block mode, with the exception of the first record on the +second or subsequent volume of a multi-volume backup, Bacula will write blocks +of a fixed size. However, in reading a tape, Bacula will assume that for each +read request, exactly one block from the tape will be transferred. This the +most common way that tape drives work and is well supported by {\bf Bacula}. + +Drives that run in fixed block mode can cause serious problems for Bacula if +the drive's block size does not correspond exactly to {\bf Bacula's} block +size. In fixed block size mode, drivers may transmit a partial block or +multiple blocks for a single read request. From {\bf Bacula's} point of view, +this destroys the concept of tape blocks. It is much better to run in variable +block mode, and almost all modern drives (the OnStream is an exception) run in +variable block mode. In order for Bacula to run in fixed block mode, you must +include the following records in the Storage daemon's Device resource +definition: + +\footnotesize +\begin{verbatim} +Minimum Block Size = nnn +Maximum Block Size = nnn +\end{verbatim} +\normalsize + +where {\bf nnn} must be the same for both records and must be identical to the +driver's fixed block size. + +We recommend that you avoid this configuration if at all possible by using +variable block sizes. + +If you must run with fixed size blocks, make sure they are not 512 bytes. This +is too small and the overhead that Bacula has with each record will become +excessive. If at all possible set any fixed block size to something like +64,512 bytes or possibly 32,768 if 64,512 is too large for your drive. See +below for the details on checking and setting the default drive block size. + +To recover files from tapes written in fixed block mode, see below. + +\label{TapeModes} +\subsection{Ensuring that the Tape Modes Are Properly Set -- {\bf Linux +Only}} +\index[general]{Ensuring that the Tape Modes Are Properly Set -- Linux Only} + +If you have a modern SCSI tape drive and you are having problems with the {\bf +test} command as noted above, it may be that some program has set one or more +of your SCSI driver's options to non-default values. For example, if your +driver is set to work in SysV manner, Bacula will not work correctly because +it expects BSD behavior. To reset your tape drive to the default values, you +can try the following, but {\bf ONLY} if you have a SCSI tape drive on a {\bf +Linux} system: + +\footnotesize +\begin{verbatim} +become super user +mt -f /dev/nst0 rewind +mt -f /dev/nst0 stoptions buffer-writes async-writes read-ahead +\end{verbatim} +\normalsize + +The above commands will clear all options and then set those specified. None +of the specified options are required by Bacula, but a number of other options +such as SysV behavior must not be set. Bacula does not support SysV tape +behavior. On systems other than Linux, you will need to consult your {\bf mt} +man pages or documentation to figure out how to do the same thing. This should +not really be necessary though -- for example, on both Linux and Solaris +systems, the default tape driver options are compatible with Bacula. +On Solaris systems, you must take care to specify the correct device +name on the {\bf Archive device} directive. See above for more details. + +You may also want to ensure that no prior program has set the default block +size, as happened to one user, by explicitly turning it off with: + +\footnotesize +\begin{verbatim} +mt -f /dev/nst0 defblksize 0 +\end{verbatim} +\normalsize + +If you are running a Linux +system, and the above command does not work, it is most likely because you +have not loaded the appropriate {\bf mt} package, which is often called +{\bf mt\_st}, but may differ according to your distribution. + +If you would like to know what options you have set before making any of the +changes noted above, you can now view them on Linux systems, thanks to a tip +provided by Willem Riede. Do the following: + +\footnotesize +\begin{verbatim} +become super user +mt -f /dev/nst0 stsetoptions 0 +grep st0 /var/log/messages +\end{verbatim} +\normalsize + +and you will get output that looks something like the following: + +\footnotesize +\begin{verbatim} +kernel: st0: Mode 0 options: buffer writes: 1, async writes: 1, read ahead: 1 +kernel: st0: can bsr: 0, two FMs: 0, fast mteom: 0, auto lock: 0, +kernel: st0: defs for wr: 0, no block limits: 0, partitions: 0, s2 log: 0 +kernel: st0: sysv: 0 nowait: 0 +\end{verbatim} +\normalsize + +Note, I have chopped off the beginning of the line with the date and machine +name for presentation purposes. + +Some people find that the above settings only last until the next reboot, so +please check this otherwise you may have unexpected problems. + +Beginning with Bacula version 1.35.8, if Bacula detects that you are running +in variable block mode, it will attempt to set your drive appropriately. All +OSes permit setting variable block mode, but some OSes do not permit setting +the other modes that Bacula needs to function properly. + +\label{compression} +\subsection{Tape Hardware Compression and Blocking Size} +\index[general]{Tape Hardware Compression and Blocking Size} +\index[general]{Size!Tape Hardware Compression and Blocking Size} + +You should be able to verify the tape compression status with sysfs on Linux. +\begin{verbatim} +cat /sys/class/scsi_tape/nst0/default_compression +\end{verbatim} + +You can, turn it on by using (on Linux): + +\footnotesize +\begin{verbatim} +become super user +mt -f /dev/nst0 defcompression 1 +\end{verbatim} +\normalsize + +and of course, if you use a zero instead of the one at the end, you will turn +it off. + +If you have built the {\bf mtx} program in the {\bf depkgs} package, you can +use tapeinfo to get quite a bit of information about your tape drive even if +it is not an autochanger. This program is called using the SCSI control +device. On Linux for tape drive /dev/nst0, this is usually /dev/sg0, while on +FreeBSD for /dev/nsa0, the control device is often /dev/pass2. For example on +my DDS-4 drive (/dev/nst0), I get the following: + +\footnotesize +\begin{verbatim} +tapeinfo -f /dev/sg0 +Product Type: Tape Drive +Vendor ID: 'HP ' +Product ID: 'C5713A ' +Revision: 'H107' +Attached Changer: No +MinBlock:1 +MaxBlock:16777215 +SCSI ID: 5 +SCSI LUN: 0 +Ready: yes +BufferedMode: yes +Medium Type: Not Loaded +Density Code: 0x26 +BlockSize: 0 +\end{verbatim} +\normalsize + +where the {\bf DataCompEnabled: yes} means that tape hardware compression is +turned on. You can turn it on and off (yes|no) by using the {\bf mt} +commands given above. Also, this output will tell you if the {\bf BlockSize} +is non-zero and hence set for a particular block size. Bacula is not likely to +work in such a situation because it will normally attempt to write blocks of +64,512 bytes, except the last block of the job which will generally be +shorter. The first thing to try is setting the default block size to zero +using the {\bf mt -f /dev/nst0 defblksize 0} command as shown above. +On FreeBSD, this would be something like: {\bf mt -f /dev/nsa0 blocksize 0}. + +On some operating systems with some tape drives, the amount of data that +can be written to the tape and whether or not compression is enabled is +determined by the density usually the {\bf mt -f /dev/nst0 setdensity xxx} command. +Often {\bf mt -f /dev/nst0 status} will print out the current +density code that is used with the drive. Most systems, but unfortunately +not all, set the density to the maximum by default. On some systems, you +can also get a list of all available density codes with: +{\bf mt -f /dev/nst0 densities} or a similar {\bf mt} command. +Note, for DLT and SDLT devices, no-compression versus compression is very +often controlled by the density code. On FreeBSD systems, the compression +mode is set using {\bf mt -f /dev/nsa0 comp xxx} where xxx is the +mode you want. In general, see {\bf man mt} for the options available on +your system. + +Note, some of the above {\bf mt} commands may not be persistent depending +on your system configuration. That is they may be reset if a program +other than Bacula uses the drive or, as is frequently the case, on reboot +of your system. + +If your tape drive requires fixed block sizes (very unusual), you can use the +following records: + +\footnotesize +\begin{verbatim} +Minimum Block Size = nnn +Maximum Block Size = nnn +\end{verbatim} +\normalsize + +in your Storage daemon's Device resource to force Bacula to write fixed size +blocks (where you sent nnn to be the same for both of the above records). This +should be done only if your drive does not support variable block sizes, or +you have some other strong reasons for using fixed block sizes. As mentioned +above, a small fixed block size of 512 or 1024 bytes will be very inefficient. +Try to set any fixed block size to something like 64,512 bytes or larger if +your drive will support it. + +Also, note that the {\bf Medium Type} field of the output of {\bf tapeinfo} +reports {\bf Not Loaded}, which is not correct. As a consequence, you should +ignore that field as well as the {\bf Attached Changer} field. + +To recover files from tapes written in fixed block mode, see below. +\label{FreeBSDTapes} + +\subsection{Tape Modes on FreeBSD} +\index[general]{FreeBSD!Tape Modes on} +\index[general]{Tape Modes on FreeBSD} + +On most FreeBSD systems such as 4.9 and most tape drives, Bacula should run +with: + +\footnotesize +\begin{verbatim} +mt -f /dev/nsa0 seteotmodel 2 +mt -f /dev/nsa0 blocksize 0 +mt -f /dev/nsa0 comp enable +\end{verbatim} +\normalsize + +You might want to put those commands in a startup script to make sure your +tape driver is properly initialized before running Bacula, because +depending on your system configuration, these modes may be reset if a +program other than Bacula uses the drive or when your system is rebooted. + +Then according to what the {\bf btape test} command returns, you will probably +need to set the following (see below for an alternative): + +\footnotesize +\begin{verbatim} + Hardware End of Medium = no + BSF at EOM = yes + Backward Space Record = no + Backward Space File = no + Fast Forward Space File = no + TWO EOF = yes +\end{verbatim} +\normalsize + +Then be sure to run some append tests with Bacula where you start and stop +Bacula between appending to the tape, or use {\bf btape} version 1.35.1 or +greater, which includes simulation of stopping/restarting Bacula. + +Please see the file {\bf platforms/freebsd/pthreads-fix.txt} in the main +Bacula directory concerning {\bf important} information concerning +compatibility of Bacula and your system. A much more optimal Device +configuration is shown below, but does not work with all tape drives. Please +test carefully before putting either into production. + +Note, for FreeBSD 4.10-RELEASE, using a Sony TSL11000 L100 DDS4 with an +autochanger set to variable block size and DCLZ compression, Brian McDonald +reports that to get Bacula to append correctly between Bacula executions, +the correct values to use are: + +\footnotesize +\begin{verbatim} +mt -f /dev/nsa0 seteotmodel 1 +mt -f /dev/nsa0 blocksize 0 +mt -f /dev/nsa0 comp enable +\end{verbatim} +\normalsize + +and + +\footnotesize +\begin{verbatim} + Hardware End of Medium = no + BSF at EOM = no + Backward Space Record = no + Backward Space File = no + Fast Forward Space File = yes + TWO EOF = no +\end{verbatim} +\normalsize + +This has been confirmed by several other people using different hardware. This +configuration is the preferred one because it uses one EOF and no backspacing +at the end of the tape, which works much more efficiently and reliably with +modern tape drives. + +Finally, here is a Device configuration that Danny Butroyd reports to work +correctly with the Overland Powerloader tape library using LT0-2 and +FreeBSD 5.4-Stable: + +\footnotesize +\begin{verbatim} +# Overland Powerloader LT02 - 17 slots single drive +Device { + Name = Powerloader + Media Type = LT0-2 + Archive Device = /dev/nsa0 + AutomaticMount = yes; + AlwaysOpen = yes; + RemovableMedia = yes; + RandomAccess = no; + Changer Command = "/usr/local/sbin/mtx-changer %c %o %S %a %d" + Changer Device = /dev/pass2 + AutoChanger = yes + Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'" + + # FreeBSD Specific Settings + Offline On Unmount = no + Hardware End of Medium = no + BSF at EOM = yes + Backward Space Record = no + Fast Forward Space File = no + TWO EOF = yes +} + +The following Device resource works fine with Dell PowerVault 110T and +120T devices on both FreeBSD 5.3 and on NetBSD 3.0. It also works +with Sony AIT-2 drives on FreeBSD. +\footnotesize +\begin{verbatim} +Device { + ... + # FreeBSD/NetBSD Specific Settings + Hardware End of Medium = no + BSF at EOM = yes + Backward Space Record = no + Fast Forward Space File = yes + TWO EOF = yes +} +\end{verbatim} +\normalsize + +On FreeBSD version 6.0, it is reported that you can even set +Backward Space Record = yes. + + + +\subsection{Finding your Tape Drives and Autochangers on FreeBSD} +\index[general]{FreeBSD!Finding Tape Drives and Autochangers} +\index[general]{Finding Tape Drives and Autochangers on FreeBSD} + +On FreeBSD, you can do a {\bf camcontrol devlist} as root to determine what +drives and autochangers you have. For example, + +\footnotesize +\begin{verbatim} +undef# camcontrol devlist + at scbus0 target 2 lun 0 (pass0,sa0) + at scbus0 target 4 lun 0 (pass1,sa1) + at scbus0 target 4 lun 1 (pass2) +\end{verbatim} +\normalsize + +from the above, you can determine that there is a tape drive on {\bf /dev/sa0} +and another on {\bf /dev/sa1} in addition since there is a second line for the +drive on {\bf /dev/sa1}, you know can assume that it is the control device for +the autochanger (i.e. {\bf /dev/pass2}). It is also the control device name to +use when invoking the tapeinfo program. E.g. + +\footnotesize +\begin{verbatim} +tapeinfo -f /dev/pass2 +\end{verbatim} +\normalsize + +\label{onstream} + +\subsection{Using the OnStream driver on Linux Systems} +\index[general]{Using the OnStream driver on Linux Systems} +\index[general]{Systems!Using the OnStream driver on Linux} + +Bacula version 1.33 (not 1.32x) is now working and ready for testing with the +OnStream kernel osst driver version 0.9.14 or above. Osst is available from: +\elink{http://sourceforge.net/projects/osst/} +{http://sourceforge.net/projects/osst/}. + +To make Bacula work you must first load the new driver then, as root, do: + +\footnotesize +\begin{verbatim} + mt -f /dev/nosst0 defblksize 32768 +\end{verbatim} +\normalsize + +Also you must add the following to your Device resource in your Storage +daemon's conf file: + +\footnotesize +\begin{verbatim} + Minimum Block Size = 32768 + Maximum Block Size = 32768 +\end{verbatim} +\normalsize + +Here is a Device specification provided by Michel Meyers that is known to +work: + +\footnotesize +\begin{verbatim} +Device { + Name = "Onstream DI-30" + Media Type = "ADR-30" + Archive Device = /dev/nosst0 + Minimum Block Size = 32768 + Maximum Block Size = 32768 + Hardware End of Medium = yes + BSF at EOM = no + Backward Space File = yes + Fast Forward Space File = yes + Two EOF = no + AutomaticMount = yes + AlwaysOpen = yes + Removable Media = yes +} +\end{verbatim} +\normalsize + +\section{Hardware Compression on EXB-8900} +\index[general]{Hardware Compression on EXB-8900} +\index[general]{EXB-8900!Hardware Compression} + +To active, check, or disable the hardware compression feature +on an EXB-8900, use the exabyte MammothTool. You can get it here: +\elink{http://www.exabyte.com/support/online/downloads/index.cfm} +{http://www.exabyte.com/support/online/downloads/index.cfm}. +There is a Solaris version of this tool. With option -C 0 or 1 you +can disable or activate compression. Start this tool without any +options for a small reference. + +\label{fill} +\subsection{Using btape to Simulate Filling a Tape} +\index[general]{Using btape to Simulate Filling a Tape} +\index[general]{Tape!Using btape to Simulate Filling} + +Because there are often problems with certain tape drives or systems when end +of tape conditions occur, {\bf btape} has a special command {\bf fill} that +causes it to write random data to a tape until the tape fills. It then writes +at least one more Bacula block to a second tape. Finally, it reads back both +tapes to ensure that the data has been written in a way that Bacula can +recover it. Note, there is also a single tape option as noted below, which you +should use rather than the two tape test. See below for more details. + +This can be an extremely time consuming process (here it is about 6 hours) to +fill a full tape. Note, that btape writes random data to the tape when it is +filling it. This has two consequences: 1. it takes a bit longer to generate +the data, especially on slow CPUs. 2. the total amount of data is +approximately the real physical capacity of your tape, regardless of whether +or not the tape drive compression is on or off. This is because random data +does not compress very much. + +To begin this test, you enter the {\bf fill} command and follow the +instructions. There are two options: the simple single tape option and the +multiple tape option. Please use only the simple single tape option because +the multiple tape option still doesn't work totally correctly. If the single +tape option does not succeed, you should correct the problem before using +Bacula. +\label{RecoveringFiles} + +\section{Recovering Files Written With Fixed Block Sizes} +\index[general]{Recovering Files Written With Fixed Block Sizes} + +If you have been previously running your tape drive in fixed block mode +(default 512) and Bacula with variable blocks (default), then in version +1.32f-x and 1.34 and above, Bacula will fail to recover files because it does +block spacing, and because the block sizes don't agree between your tape drive +and Bacula it will not work. + +The long term solution is to run your drive in variable block mode as +described above. However, if you have written tapes using fixed block sizes, +this can be a bit of a pain. The solution to the problem is: while you are +doing a restore command using a tape written in fixed block size, ensure that +your drive is set to the fixed block size used while the tape was written. +Then when doing the {\bf restore} command in the Console program, do not +answer the prompt {\bf yes/mod/no}. Instead, edit the bootstrap file (the +location is listed in the prompt) using any ASCII editor. Remove all {\bf +VolBlock} lines in the file. When the file is re-written, answer the question, +and Bacula will run without using block positioning, and it should recover +your files. + +\label{BlockModes} +\section{Tape Blocking Modes} +\index[general]{Modes!Tape Blocking} +\index[general]{Tape Blocking Modes} + +SCSI tapes may either be written in {\bf variable} or {\bf fixed} block sizes. +Newer drives support both modes, but some drives such as the QIC devices +always use fixed block sizes. Bacula attempts to fill and write complete +blocks (default 65K), so that in normal mode (variable block size), Bacula +will always write blocks of the same size except the last block of a Job. If +Bacula is configured to write fixed block sizes, it will pad the last block of +the Job to the correct size. Bacula expects variable tape block size drives to +behave as follows: Each write to the drive results in a single record being +written to the tape. Each read returns a single record. If you request less +bytes than are in the record, only those number of bytes will be returned, but +the entire logical record will have been read (the next read will retrieve the +next record). Thus data from a single write is always returned in a single +read, and sequentially written records are returned by sequential reads. + +Bacula expects fixed block size tape drives to behave as follows: If a write +length is greater than the physical block size of the drive, the write will be +written as two blocks each of the fixed physical size. This single write may +become multiple physical records on the tape. (This is not a good situation). +According to the documentation, one may never write an amount of data that is +not the exact multiple of the blocksize (it is not specified if an error +occurs or if the the last record is padded). When reading, it is my +understanding that each read request reads one physical record from the tape. +Due to the complications of fixed block size tape drives, you should avoid +them if possible with Bacula, or you must be ABSOLUTELY certain that you use +fixed block sizes within Bacula that correspond to the physical block size of +the tape drive. This will ensure that Bacula has a one to one correspondence +between what it writes and the physical record on the tape. + +Please note that Bacula will not function correctly if it writes a block and +that block is split into two or more physical records on the tape. Bacula +assumes that each write causes a single record to be written, and that it can +sequentially recover each of the blocks it has written by using the same +number of sequential reads as it had written. + +\section{Details of Tape Modes} +\index[general]{Modes!Details} +\index[general]{Details of Tape Modes} +Rudolf Cejka has provided the following information concerning +certain tape modes and MTEOM. + +\begin{description} +\item[Tape level] + It is always possible to position filemarks or blocks, whereas + positioning to the end-of-data is only optional feature, however it is + implemented very often. SCSI specification also talks about optional + sequential filemarks, setmarks and sequential setmarks, but these are not + implemented so often. Modern tape drives keep track of file positions in + built-in chip (AIT, LTO) or at the beginning of the tape (SDLT), so there + is not any speed difference, if end-of-data or filemarks is used (I have + heard, that LTO-1 from all 3 manufacturers do not use its chip for file + locations, but a tape as in SDLT case, and I'm not sure about LTO-2 and + LTO-3 case). However there is a big difference, that end-of-data ignores + file position, whereas filemarks returns the real number of skipped + files, so OS can track current file number just in filemarks case. + +\item[OS level] + Solaris does use just SCSI SPACE Filemarks, it does not support SCSI + SPACE End-of-data. When MTEOM is called, Solaris does use SCSI SPACE + Filemarks with count = 1048576 for fast mode, and combination of SCSI + SPACE Filemarks with count = 1 with SCSI SPACE Blocks with count = 1 for + slow mode, so EOD mark on the tape on some older tape drives is not + skipped. File number is always tracked for MTEOM. + + Linux does support both SCSI SPACE Filemarks and End-of-data: When MTEOM + is called in MT\_ST\_FAST\_MTEOM mode, SCSI SPACE End-of-data is used. + In the other case, SCSI SPACE Filemarks with count = + 8388607 is used. + There is no real slow mode like in Solaris - I just expect, that for + older tape drives Filemarks may be slower than End-of-data, but not so + much as in Solaris slow mode. File number is tracked for MTEOM just + without MT\_ST\_FAST\_MTEOM - when MT\_ST\_FAST\_MTEOM is used, it is not. + + FreeBSD does support both SCSI SPACE Filemarks and End-of-data, but when + MTEOD (MTEOM) is called, SCSI SPACE End-of-data is always used. FreeBSD + never use SCSI SPACE Filemarks for MTEOD. File number is never tracked + for MTEOD. + +\item[Bacula level] + When {\bf Hardware End of Medium = Yes} is used, MTEOM is called, but it + does not mean, that hardware End-of-data must be used. When Hardware End + of Medium = No, if Fast Forward Space File = Yes, MTFSF with count = + 32767 is used, else Block Read with count = 1 with Forward Space File + with count = 1 is used, which is really very slow. + +\item [Hardware End of Medium = Yes|No] + The name of this option is misleading and is the source of confusion, + because it is not the hardware EOM, what is really switched here. + + If I use Yes, OS must not use SCSI SPACE End-of-data, because Bacula + expects, that there is tracked file number, which is not supported by + SCSI specification. Instead, the OS have to use SCSI SPACE Filemarks. + + If I use No, an action depends on Fast Forward Space File. + + When I set {\bf Hardware End of Medium = no} + and {\bf Fast Forward Space File = no} + file positioning was very slow + on my LTO-3 (about ten to 100 minutes), but + + with {\bf Hardware End of Medium = no} and +{\bf Fast Forward Space File = yes}, the time is ten to +100 times faster (about one to two minutes). + +\end{description} + +\section{Tape Performance Problems} +\index[general]{Tape Performance} +If you have LTO-3 or LTO-4 drives, you should be able to +fairly good transfer rates; from 60 to 150 MB/second, providing +you have fast disks; GigaBit Ethernet connections (probably 2); you are +running multiple simultaneous jobs; you have Bacula data spooling +enabled; your tape block size is set to 131072 or 262144; and +you have set {\bf Maximum File Size = 5G}. + +If you are not getting good performance, consider some of the following +suggestions from the Allen Balck on the Bacula Users email list: + +\begin{enumerate} +\item You are using an old HBA (i.e. SCSI-1, which only does 5 MB/s) + +\item There are other, slower, devices on the SCSI bus. The HBA will + negotiate the speed of every device down to the speed of the + slowest. + +\item There is a termination problem on the bus (either too much or + too little termination). The HBA will drop the bus speed in an + attempt to increase the reliability of the bus. + +\item Loose or damaged cabling - this will probably make the HBA "think" + you have a termination problem and it will react as in 3 above. +\end{enumerate} + +See if /var/adm/messages (or /var/log/messages) tells you what the sync +rate of the SCSI devices/bus are. Also, the next time you reboot, the +BIOS may be able to tell you what the rate of each device is. + + +\section{Autochanger Errors} +\index[general]{Errors!Autochanger} +\index[general]{Autochanger Errors} + +If you are getting errors such as: + +\footnotesize +\begin{verbatim} +3992 Bad autochanger "load slot 1, drive 1": ERR=Child exited with code 1. +\end{verbatim} +\normalsize + +and you are running your Storage daemon as non-root, then most likely +you are having permissions problems with the control channel. Running +as root, set permissions on /dev/sgX so that the userid and group of +your Storage daemon can access the device. You need to ensure that you +all access to the proper control device, and if you don't have any +SCSI disk drives (including SATA drives), you might want to change +the permissions on /dev/sg*. + +\section{Syslog Errors} +\index[general]{Errors!Syslog} +\index[general]{Syslog Errors} + +If you are getting errors such as: + +\footnotesize +\begin{verbatim} +: kernel: st0: MTSETDRVBUFFER only allowed for root +\end{verbatim} +\normalsize + +you are most likely running your Storage daemon as non-root, and +Bacula is attempting to set the correct OS buffering to correspond +to your Device resource. Most OSes allow only root to issue this +ioctl command. In general, the message can be ignored providing +you are sure that your OS parameters are properly configured as +described earlier in this manual. If you are running your Storage daemon +as root, you should not be getting these system log messages, and if +you are, something is probably wrong. diff --git a/docs/manuals/fr/problems/tapetesting.tex b/docs/manuals/fr/problems/tapetesting.tex deleted file mode 100644 index 710f90e7..00000000 --- a/docs/manuals/fr/problems/tapetesting.tex +++ /dev/null @@ -1,1376 +0,0 @@ -%% -%% - -\chapter{Testing Your Tape Drive With Bacula} -\label{TapeTestingChapter} -\index[general]{Testing Your Tape Drive With Bacula} - -This chapter is concerned with testing and configuring your tape drive to make -sure that it will work properly with Bacula using the {\bf btape} program. -\label{summary} - -\section{Get Your Tape Drive Working} - -In general, you should follow the following steps to get your tape drive to -work with Bacula. Start with a tape mounted in your drive. If you have an -autochanger, load a tape into the drive. We use {\bf /dev/nst0} as the tape -drive name, you will need to adapt it according to your system. - -Do not proceed to the next item until you have succeeded with the previous -one. - -\begin{enumerate} -\item Make sure that Bacula (the Storage daemon) is not running - or that you have {\bf unmount}ed the drive you will use - for testing. - -\item Use tar to write to, then read from your drive: - - \footnotesize -\begin{verbatim} - mt -f /dev/nst0 rewind - tar cvf /dev/nst0 . - mt -f /dev/nst0 rewind - tar tvf /dev/nst0 - -\end{verbatim} -\normalsize - -\item Make sure you have a valid and correct Device resource corresponding - to your drive. For Linux users, generally, the default one works. For - FreeBSD users, there are two possible Device configurations (see below). - For other drives and/or OSes, you will need to first ensure that your - system tape modes are properly setup (see below), then possibly modify - you Device resource depending on the output from the btape program (next - item). When doing this, you should consult the \ilink{Storage Daemon - Configuration}{StoredConfChapter} of this manual. - -\item If you are using a Fibre Channel to connect your tape drive to - Bacula, please be sure to disable any caching in the NSR (network - storage router, which is a Fibre Channel to SCSI converter). - -\item Run the btape {\bf test} command: - - \footnotesize -\begin{verbatim} - ./btape -c bacula-sd.conf /dev/nst0 - test - -\end{verbatim} -\normalsize - - It isn't necessary to run the autochanger part of the test at this time, - but do not go past this point until the basic test succeeds. If you do - have an autochanger, please be sure to read the \ilink{Autochanger - chapter}{AutochangersChapter} of this manual. - -\item Run the btape {\bf fill} command, preferably with two volumes. This - can take a long time. If you have an autochanger and it is configured, Bacula - will automatically use it. If you do not have it configured, you can manually - issue the appropriate {\bf mtx} command, or press the autochanger buttons to - change the tape when requested to do so. - -\item FreeBSD users, if you have a pre-5.0 system run the {\bf tapetest} - program, and make sure your system is patched if necessary. The tapetest - program can be found in the platform/freebsd directory. The instructions - for its use are at the top of the file. - -\item Run Bacula, and backup a reasonably small directory, say 60 - Megabytes. Do three successive backups of this directory. - -\item Stop Bacula, then restart it. Do another full backup of the same - directory. Then stop and restart Bacula. - -\item Do a restore of the directory backed up, by entering the following - restore command, being careful to restore it to an alternate location: - - -\footnotesize -\begin{verbatim} - restore select all done - yes - -\end{verbatim} -\normalsize - - Do a {\bf diff} on the restored directory to ensure it is identical to the - original directory. If you are going to backup multiple different systems - (Linux, Windows, Mac, Solaris, FreeBSD, ...), be sure you test the restore - on each system type. - -\item If you have an autochanger, you should now go back to the btape program - and run the autochanger test: - -\footnotesize -\begin{verbatim} - ./btape -c bacula-sd.conf /dev/nst0 - auto - -\end{verbatim} -\normalsize - - Adjust your autochanger as necessary to ensure that it works correctly. See - the Autochanger chapter of this manual for a complete discussion of testing - your autochanger. - -\item We strongly recommend that you use a dedicated SCSI - controller for your tape drives. Scanners are known to induce - serious problems with the SCSI bus, causing it to reset. If the - SCSI bus is reset while Bacula has the tape drive open, it will - most likely be fatal to your tape since the drive will rewind. - These kinds of problems show up in the system log. For example, - the following was most likely caused by a scanner: - -\footnotesize -\begin{verbatim} -Feb 14 17:29:55 epohost kernel: (scsi0:A:2:0): No or incomplete CDB sent to device. -Feb 14 17:29:55 epohost kernel: scsi0: Issued Channel A Bus Reset. 1 SCBs aborted -\end{verbatim} -\normalsize - -\end{enumerate} - -If you have reached this point, you stand a good chance of having everything -work. If you get into trouble at any point, {\bf carefully} read the -documentation given below. If you cannot get past some point, ask the {\bf -bacula-users} email list, but specify which of the steps you have successfully -completed. In particular, you may want to look at the -\ilink{ Tips for Resolving Problems}{problems1} section below. - - -\label{NoTapeInDrive} -\subsection{Problems When no Tape in Drive} -\index[general]{Problems When no Tape in Drive} -When Bacula was first written the Linux 2.4 kernel permitted opening the -drive whether or not there was a tape in the drive. Thus the Bacula code is -based on the concept that if the drive cannot be opened, there is a serious -problem, and the job is failed. - -With version 2.6 of the Linux kernel, if there is no tape in the drive, the -OS will wait two minutes (default) and then return a failure, and consequently, -Bacula version 1.36 and below will fail the job. This is important to keep -in mind, because if you use an option such as {\bf Offline on Unmount = -yes}, there will be a point when there is no tape in the drive, and if -another job starts or if Bacula asks the operator to mount a tape, when -Bacula attempts to open the drive (about a 20 minute delay), it will fail -and Bacula will fail the job. - -In version 1.38.x, the Bacula code partially gets around this problem -- at -least in the initial open of the drive. However, functions like Polling -the drive do not work correctly if there is no tape in the drive. -Providing you do not use {\bf Offline on Unmount = yes}, you should not -experience job failures as mentioned above. If you do experience such -failures, you can also increase the {\bf Maximum Open Wait} time interval, -which will give you more time to mount the next tape before the job is -failed. - -\subsection{Specifying the Configuration File} -\index[general]{File!Specifying the Configuration} -\index[general]{Specifying the Configuration File} - -Starting with version 1.27, each of the tape utility programs including the -{\bf btape} program requires a valid Storage daemon configuration file -(actually, the only part of the configuration file that {\bf btape} needs is -the {\bf Device} resource definitions). This permits {\bf btape} to find the -configuration parameters for your archive device (generally a tape drive). -Without those parameters, the testing and utility programs do not know how to -properly read and write your drive. By default, they use {\bf bacula-sd.conf} -in the current directory, but you may specify a different configuration file -using the {\bf -c} option. - -\subsection{Specifying a Device Name For a Tape} -\index[general]{Tape!Specifying a Device Name For a} -\index[general]{Specifying a Device Name For a Tape} - -{\bf btape} {\bf device-name} where the Volume can be found. In the case of a -tape, this is the physical device name such as {\bf /dev/nst0} or {\bf -/dev/rmt/0ubn} depending on your system that you specify on the Archive Device -directive. For the program to work, it must find the identical name in the -Device resource of the configuration file. If the name is not found in the -list of physical names, the utility program will compare the name you entered -to the Device names (rather than the Archive device names). - -When specifying a tape device, it is preferable that the "non-rewind" -variant of the device file name be given. In addition, on systems such as -Sun, which have multiple tape access methods, you must be sure to specify -to use Berkeley I/O conventions with the device. The -{\bf b} in the Solaris (Sun) archive specification {\bf /dev/rmt/0mbn} is -what is needed in this case. Bacula does not support SysV tape drive -behavior. - -See below for specifying Volume names. - -\subsection{Specifying a Device Name For a File} -\index[general]{File!Specifying a Device Name For a} -\index[general]{Specifying a Device Name For a File} - -If you are attempting to read or write an archive file rather than a tape, the -{\bf device-name} should be the full path to the archive location including -the filename. The filename (last part of the specification) will be stripped -and used as the Volume name, and the path (first part before the filename) -must have the same entry in the configuration file. So, the path is equivalent -to the archive device name, and the filename is equivalent to the volume name. - - -\section{btape} -\label{btape1} -\index[general]{Btape} - -This program permits a number of elementary tape operations via a tty command -interface. The {\bf test} command, described below, can be very useful for -testing tape drive compatibility problems. Aside from initial testing of tape -drive compatibility with {\bf Bacula}, {\bf btape} will be mostly used by -developers writing new tape drivers. - -{\bf btape} can be dangerous to use with existing {\bf Bacula} tapes because -it will relabel a tape or write on the tape if so requested regardless of -whether or not the tape contains valuable data, so please be careful and use -it only on blank tapes. - -To work properly, {\bf btape} needs to read the Storage daemon's configuration -file. As a default, it will look for {\bf bacula-sd.conf} in the current -directory. If your configuration file is elsewhere, please use the {\bf -c} -option to specify where. - -The physical device name or the Device resource name must be specified on the -command line, and this same device name must be present in the Storage -daemon's configuration file read by {\bf btape} - -\footnotesize -\begin{verbatim} -Usage: btape [options] device_name - -b specify bootstrap file - -c set configuration file to file - -d set debug level to nn - -p proceed inspite of I/O errors - -s turn off signals - -v be verbose - -? print this message. -\end{verbatim} -\normalsize - -\subsection{Using btape to Verify your Tape Drive} -\index[general]{Using btape to Verify your Tape Drive} -\index[general]{Drive!Using btape to Verify your Tape} - -An important reason for this program is to ensure that a Storage daemon -configuration file is defined so that Bacula will correctly read and write -tapes. - -It is highly recommended that you run the {\bf test} command before running -your first Bacula job to ensure that the parameters you have defined for your -storage device (tape drive) will permit {\bf Bacula} to function properly. You -only need to mount a blank tape, enter the command, and the output should be -reasonably self explanatory. For example: - -\footnotesize -\begin{verbatim} -(ensure that Bacula is not running) -./btape -c /usr/bin/bacula/bacula-sd.conf /dev/nst0 -\end{verbatim} -\normalsize - -The output will be: - -\footnotesize -\begin{verbatim} -Tape block granularity is 1024 bytes. -btape: btape.c:376 Using device: /dev/nst0 -* -\end{verbatim} -\normalsize - -Enter the test command: - -\footnotesize -\begin{verbatim} -test -\end{verbatim} -\normalsize - -The output produced should be something similar to the following: I've cut the -listing short because it is frequently updated to have new tests. - -\footnotesize -\begin{verbatim} -=== Append files test === -This test is essential to Bacula. -I'm going to write one record in file 0, - two records in file 1, - and three records in file 2 -btape: btape.c:387 Rewound /dev/nst0 -btape: btape.c:855 Wrote one record of 64412 bytes. -btape: btape.c:857 Wrote block to device. -btape: btape.c:410 Wrote EOF to /dev/nst0 -btape: btape.c:855 Wrote one record of 64412 bytes. -btape: btape.c:857 Wrote block to device. -btape: btape.c:855 Wrote one record of 64412 bytes. -btape: btape.c:857 Wrote block to device. -btape: btape.c:410 Wrote EOF to /dev/nst0 -btape: btape.c:855 Wrote one record of 64412 bytes. -btape: btape.c:857 Wrote block to device. -btape: btape.c:855 Wrote one record of 64412 bytes. -btape: btape.c:857 Wrote block to device. -btape: btape.c:855 Wrote one record of 64412 bytes. -btape: btape.c:857 Wrote block to device. -btape: btape.c:410 Wrote EOF to /dev/nst0 -btape: btape.c:387 Rewound /dev/nst0 -btape: btape.c:693 Now moving to end of media. -btape: btape.c:427 Moved to end of media -We should be in file 3. I am at file 3. This is correct! -Now the important part, I am going to attempt to append to the tape. -... -=== End Append files test === -\end{verbatim} -\normalsize - -If you do not successfully complete the above test, please resolve the -problem(s) before attempting to use {\bf Bacula}. Depending on your tape -drive, the test may recommend that you add certain records to your -configuration. We strongly recommend that you do so and then re-run the above -test to insure it works the first time. - -Some of the suggestions it provides for resolving the problems may or may not -be useful. If at all possible avoid using fixed blocking. If the test suddenly -starts to print a long series of: - -\footnotesize -\begin{verbatim} -Got EOF on tape. -Got EOF on tape. -... -\end{verbatim} -\normalsize - -then almost certainly, you are running your drive in fixed block mode rather -than variable block mode. See below for more help of resolving fix -versus variable block problems. - -It is also possible that you have your drive -set in SysV tape drive mode. The drive must use BSD tape conventions. -See the section above on setting your {\bf Archive device} correctly. - -For FreeBSD users, please see the notes below for doing further testing of -your tape drive. - -\subsection{Testing tape drive speed} -\label{sec:btapespeed} - -To determine the best configuration of your tape drive, you can run the -\texttt{speed} command available in the \texttt{btape} program. - -This command can have the following arguments: -\begin{itemize} -\item[\texttt{file\_size=n}] Specify the Maximum File Size for this test - (between 1 and 5GB). This counter is in GB. -\item[\texttt{nb\_file=n}] Specify the number of file to be written. The amount - of data should be greater than your memory ($file\_size*nb\_file$). -\item[\texttt{skip\_zero}] This flag permits to skip tests with constant - data. -\item[\texttt{skip\_random}] This flag permits to skip tests with random - data. -\item[\texttt{skip\_raw}] This flag permits to skip tests with raw access. -\item[\texttt{skip\_block}] This flag permits to skip tests with Bacula block - access. -\end{itemize} - -\begin{verbatim} -*speed file_size=3 skip_raw -btape.c:1078 Test with zero data and bacula block structure. -btape.c:956 Begin writing 3 files of 3.221 GB with blocks of 129024 bytes. -++++++++++++++++++++++++++++++++++++++++++ -btape.c:604 Wrote 1 EOF to "Drive-0" (/dev/nst0) -btape.c:406 Volume bytes=3.221 GB. Write rate = 44.128 MB/s -... -btape.c:383 Total Volume bytes=9.664 GB. Total Write rate = 43.531 MB/s - -btape.c:1090 Test with random data, should give the minimum throughput. -btape.c:956 Begin writing 3 files of 3.221 GB with blocks of 129024 bytes. -+++++++++++++++++++++++++++++++++++++++++++ -btape.c:604 Wrote 1 EOF to "Drive-0" (/dev/nst0) -btape.c:406 Volume bytes=3.221 GB. Write rate = 7.271 MB/s -+++++++++++++++++++++++++++++++++++++++++++ -... -btape.c:383 Total Volume bytes=9.664 GB. Total Write rate = 7.365 MB/s - -\end{verbatim} - -When using compression, the random test will give your the minimum throughput -of your drive . The test using constant string will give you the maximum speed -of your hardware chain. (cpu, memory, scsi card, cable, drive, tape). - -You can change the block size in the Storage Daemon configuration file. - -\label{SCSITricks} -\subsection{Linux SCSI Tricks} -\index[general]{Tricks!Linux SCSI} -\index[general]{Linux SCSI Tricks} - -You can find out what SCSI devices you have by doing: - -\footnotesize -\begin{verbatim} -lsscsi -\end{verbatim} -\normalsize - -Typical output is: - -\footnotesize -\begin{verbatim} -[0:0:0:0] disk ATA ST3160812AS 3.AD /dev/sda -[2:0:4:0] tape HP Ultrium 2-SCSI F6CH /dev/st0 -[2:0:5:0] tape HP Ultrium 2-SCSI F6CH /dev/st1 -[2:0:6:0] mediumx OVERLAND LXB 0107 - -[2:0:9:0] tape HP Ultrium 1-SCSI E50H /dev/st2 -[2:0:10:0] mediumx OVERLAND LXB 0107 - -\end{verbatim} -\normalsize - -There are two drives in one autochanger: /dev/st0 and /dev/st1 -and a third tape drive at /dev/st2. For using them with Bacula, one -would normally reference them as /dev/nst0 ... /dev/nst2. Not also, -there are two different autochangers identified as "mediumx OVERLAND LXB". -They can be addressed via their /dev/sgN designation, which can be -obtained by counting from the beginning as 0 to each changer. In the -above case, the two changers are located on /dev/sg3 and /dev/sg5. The one -at /dev/sg3, controls drives /dev/nst0 and /dev/nst1; and the one at -/dev/sg5 controles drive /dev/nst2. - -If you do not have the {\bf lsscsi} command, you can obtain the same -information as follows: - -\footnotesize -\begin{verbatim} -cat /proc/scsi/scsi -\end{verbatim} -\normalsize - -For the above example with the three drives and two autochangers, -I get: - -\footnotesize -\begin{verbatim} -Attached devices: -Host: scsi0 Channel: 00 Id: 00 Lun: 00 - Vendor: ATA Model: ST3160812AS Rev: 3.AD - Type: Direct-Access ANSI SCSI revision: 05 -Host: scsi2 Channel: 00 Id: 04 Lun: 00 - Vendor: HP Model: Ultrium 2-SCSI Rev: F6CH - Type: Sequential-Access ANSI SCSI revision: 03 -Host: scsi2 Channel: 00 Id: 05 Lun: 00 - Vendor: HP Model: Ultrium 2-SCSI Rev: F6CH - Type: Sequential-Access ANSI SCSI revision: 03 -Host: scsi2 Channel: 00 Id: 06 Lun: 00 - Vendor: OVERLAND Model: LXB Rev: 0107 - Type: Medium Changer ANSI SCSI revision: 02 -Host: scsi2 Channel: 00 Id: 09 Lun: 00 - Vendor: HP Model: Ultrium 1-SCSI Rev: E50H - Type: Sequential-Access ANSI SCSI revision: 03 -Host: scsi2 Channel: 00 Id: 10 Lun: 00 - Vendor: OVERLAND Model: LXB Rev: 0107 - Type: Medium Changer ANSI SCSI revision: 02 -\end{verbatim} -\normalsize - - -As an additional example, I get the following (on a different machine from the -above example): - -\footnotesize -\begin{verbatim} -Attached devices: -Host: scsi2 Channel: 00 Id: 01 Lun: 00 - Vendor: HP Model: C5713A Rev: H107 - Type: Sequential-Access ANSI SCSI revision: 02 -Host: scsi2 Channel: 00 Id: 04 Lun: 00 - Vendor: SONY Model: SDT-10000 Rev: 0110 - Type: Sequential-Access ANSI SCSI revision: 02 -\end{verbatim} -\normalsize - -The above represents first an autochanger and second a simple -tape drive. The HP changer (the first entry) uses the same SCSI channel -for data and for control, so in Bacula, you would use: -\footnotesize -\begin{verbatim} -Archive Device = /dev/nst0 -Changer Device = /dev/sg0 -\end{verbatim} -\normalsize - -If you want to remove the SDT-10000 device, you can do so as root with: - -\footnotesize -\begin{verbatim} -echo "scsi remove-single-device 2 0 4 0">/proc/scsi/scsi -\end{verbatim} -\normalsize - -and you can put add it back with: - -\footnotesize -\begin{verbatim} -echo "scsi add-single-device 2 0 4 0">/proc/scsi/scsi -\end{verbatim} -\normalsize - -where the 2 0 4 0 are the Host, Channel, Id, and Lun as seen on the output -from {\bf cat /proc/scsi/scsi}. Note, the Channel must be specified as -numeric. - -Below is a slightly more complicated output, which is a single autochanger -with two drives, and which operates the changer on a different channel -from from the drives: - -\footnotesize -\begin{verbatim} -Attached devices: -Host: scsi0 Channel: 00 Id: 00 Lun: 00 - Vendor: ATA Model: WDC WD1600JD-75H Rev: 08.0 - Type: Direct-Access ANSI SCSI revision: 05 -Host: scsi2 Channel: 00 Id: 04 Lun: 00 - Vendor: HP Model: Ultrium 2-SCSI Rev: F6CH - Type: Sequential-Access ANSI SCSI revision: 03 -Host: scsi2 Channel: 00 Id: 05 Lun: 00 - Vendor: HP Model: Ultrium 2-SCSI Rev: F6CH - Type: Sequential-Access ANSI SCSI revision: 03 -Host: scsi2 Channel: 00 Id: 06 Lun: 00 - Vendor: OVERLAND Model: LXB Rev: 0106 - Type: Medium Changer ANSI SCSI revision: 02 -\end{verbatim} -\normalsize - -The above tape drives are accessed on /dev/nst0 and /dev/nst1, while -the control channel for those two drives is /dev/sg3. - - - -\label{problems1} -\section{Tips for Resolving Problems} -\index[general]{Problems!Tips for Resolving} -\index[general]{Tips for Resolving Problems} - -\label{CannotRestore} -\subsection{Bacula Saves But Cannot Restore Files} -\index[general]{Files!Bacula Saves But Cannot Restore} -\index[general]{Bacula Saves But Cannot Restore Files} - -If you are getting error messages such as: - -\footnotesize -\begin{verbatim} -Volume data error at 0:1! Wanted block-id: "BB02", got "". Buffer discarded -\end{verbatim} -\normalsize - -It is very likely that Bacula has tried to do block positioning and ended up -at an invalid block. This can happen if your tape drive is in fixed block mode -while Bacula's default is variable blocks. Note that in such cases, Bacula is -perfectly able to write to your Volumes (tapes), but cannot position to read -them. - -There are two possible solutions. - -\begin{enumerate} -\item The first and best is to always ensure that your drive is in variable - block mode. Note, it can switch back to fixed block mode on a reboot or if - another program uses the drive. So on such systems you need to modify the - Bacula startup files to explicitly set: - -\footnotesize -\begin{verbatim} -mt -f /dev/nst0 defblksize 0 -\end{verbatim} -\normalsize - -or whatever is appropriate on your system. Note, if you are running a Linux -system, and the above command does not work, it is most likely because you -have not loaded the appropriate {\bf mt} package, which is often called -{\bf mt\_st}, but may differ according to your distribution. - -\item The second possibility, especially, if Bacula wrote while the drive was - in fixed block mode, is to turn off block positioning in Bacula. This is done - by adding: - -\footnotesize -\begin{verbatim} -Block Positioning = no -\end{verbatim} -\normalsize - -to the Device resource. This is not the recommended procedure because it can -enormously slow down recovery of files, but it may help where all else -fails. This directive is available in version 1.35.5 or later (and not yet -tested). -\end{enumerate} - -If you are getting error messages such as: -\footnotesize -\begin{verbatim} -Volume data error at 0:0! -Block checksum mismatch in block=0 len=32625 calc=345678 blk=123456 -\end{verbatim} -\normalsize - -You are getting tape read errors, and this is most likely due to -one of the following things: -\begin{enumerate} -\item An old or bad tape. -\item A dirty drive that needs cleaning (particularly for DDS drives). -\item A loose SCSI cable. -\item Old firmware in your drive. Make sure you have the latest firmware - loaded. -\item Computer memory errors. -\item Over-clocking your CPU. -\item A bad SCSI card. -\end{enumerate} - - -\label{opendevice} -\subsection{Bacula Cannot Open the Device} -\index[general]{Device!Bacula Cannot Open the} -\index[general]{Bacula Cannot Open the Device} - -If you get an error message such as: - -\footnotesize -\begin{verbatim} -dev open failed: dev.c:265 stored: unable to open -device /dev/nst0:> ERR=No such device or address -\end{verbatim} -\normalsize - -the first time you run a job, it is most likely due to the fact that you -specified the incorrect device name on your {\bf Archive Device}. - -If Bacula works fine with your drive, then all off a sudden you get error -messages similar to the one shown above, it is quite possible that your driver -module is being removed because the kernel deems it idle. This is done via -{\bf crontab} with the use of {\bf rmmod -a}. To fix the problem, you can -remove this entry from {\bf crontab}, or you can manually {\bf modprob} your -driver module (or add it to the local startup script). Thanks to Alan Brown -for this tip. -\label{IncorrectFiles} - -\subsection{Incorrect File Number} -\index[general]{Number!Incorrect File} -\index[general]{Incorrect File Number} - -When Bacula moves to the end of the medium, it normally uses the {\bf -ioctl(MTEOM)} function. Then Bacula uses the {\bf ioctl(MTIOCGET)} function to -retrieve the current file position from the {\bf mt\_fileno} field. Some SCSI -tape drivers will use a fast means of seeking to the end of the medium and in -doing so, they will not know the current file position and hence return a {\bf --1}. As a consequence, if you get {\bf "This is NOT correct!"} in the -positioning tests, this may be the cause. You must correct this condition in -order for Bacula to work. - -There are two possible solutions to the above problem of incorrect file -number: - -\begin{itemize} -\item Figure out how to configure your SCSI driver to keep track of the file - position during the MTEOM request. This is the preferred solution. -\item Modify the {\bf Device} resource of your {\bf bacula-sd.conf} file to - include: - -\footnotesize -\begin{verbatim} -Hardware End of File = no -\end{verbatim} -\normalsize - -This will cause Bacula to use the MTFSF request to seek to the end of the -medium, and Bacula will keep track of the file number itself. -\end{itemize} - -\label{IncorrectBlocks} -\subsection{Incorrect Number of Blocks or Positioning Errors} -\index[general]{Testing!Incorrect Number of Blocks or Positioning Errors} -\index[general]{Incorrect Number of Blocks or Positioning Errors} - -{\bf Bacula's} preferred method of working with tape drives (sequential -devices) is to run in variable block mode, and this is what is set by default. -You should first ensure that your tape drive is set for variable block mode -(see below). - -If your tape drive is in fixed block mode and you have told Bacula to use -different fixed block sizes or variable block sizes (default), you will get -errors when Bacula attempts to forward space to the correct block (the kernel -driver's idea of tape blocks will not correspond to Bacula's). - -All modern tape drives support variable tape blocks, but some older drives (in -particular the QIC drives) as well as the ATAPI ide-scsi driver run only in -fixed block mode. The Travan tape drives also apparently must run in fixed -block mode (to be confirmed). - -Even in variable block mode, with the exception of the first record on the -second or subsequent volume of a multi-volume backup, Bacula will write blocks -of a fixed size. However, in reading a tape, Bacula will assume that for each -read request, exactly one block from the tape will be transferred. This the -most common way that tape drives work and is well supported by {\bf Bacula}. - -Drives that run in fixed block mode can cause serious problems for Bacula if -the drive's block size does not correspond exactly to {\bf Bacula's} block -size. In fixed block size mode, drivers may transmit a partial block or -multiple blocks for a single read request. From {\bf Bacula's} point of view, -this destroys the concept of tape blocks. It is much better to run in variable -block mode, and almost all modern drives (the OnStream is an exception) run in -variable block mode. In order for Bacula to run in fixed block mode, you must -include the following records in the Storage daemon's Device resource -definition: - -\footnotesize -\begin{verbatim} -Minimum Block Size = nnn -Maximum Block Size = nnn -\end{verbatim} -\normalsize - -where {\bf nnn} must be the same for both records and must be identical to the -driver's fixed block size. - -We recommend that you avoid this configuration if at all possible by using -variable block sizes. - -If you must run with fixed size blocks, make sure they are not 512 bytes. This -is too small and the overhead that Bacula has with each record will become -excessive. If at all possible set any fixed block size to something like -64,512 bytes or possibly 32,768 if 64,512 is too large for your drive. See -below for the details on checking and setting the default drive block size. - -To recover files from tapes written in fixed block mode, see below. - -\label{TapeModes} -\subsection{Ensuring that the Tape Modes Are Properly Set -- {\bf Linux -Only}} -\index[general]{Ensuring that the Tape Modes Are Properly Set -- Linux Only} - -If you have a modern SCSI tape drive and you are having problems with the {\bf -test} command as noted above, it may be that some program has set one or more -of your SCSI driver's options to non-default values. For example, if your -driver is set to work in SysV manner, Bacula will not work correctly because -it expects BSD behavior. To reset your tape drive to the default values, you -can try the following, but {\bf ONLY} if you have a SCSI tape drive on a {\bf -Linux} system: - -\footnotesize -\begin{verbatim} -become super user -mt -f /dev/nst0 rewind -mt -f /dev/nst0 stoptions buffer-writes async-writes read-ahead -\end{verbatim} -\normalsize - -The above commands will clear all options and then set those specified. None -of the specified options are required by Bacula, but a number of other options -such as SysV behavior must not be set. Bacula does not support SysV tape -behavior. On systems other than Linux, you will need to consult your {\bf mt} -man pages or documentation to figure out how to do the same thing. This should -not really be necessary though -- for example, on both Linux and Solaris -systems, the default tape driver options are compatible with Bacula. -On Solaris systems, you must take care to specify the correct device -name on the {\bf Archive device} directive. See above for more details. - -You may also want to ensure that no prior program has set the default block -size, as happened to one user, by explicitly turning it off with: - -\footnotesize -\begin{verbatim} -mt -f /dev/nst0 defblksize 0 -\end{verbatim} -\normalsize - -If you are running a Linux -system, and the above command does not work, it is most likely because you -have not loaded the appropriate {\bf mt} package, which is often called -{\bf mt\_st}, but may differ according to your distribution. - -If you would like to know what options you have set before making any of the -changes noted above, you can now view them on Linux systems, thanks to a tip -provided by Willem Riede. Do the following: - -\footnotesize -\begin{verbatim} -become super user -mt -f /dev/nst0 stsetoptions 0 -grep st0 /var/log/messages -\end{verbatim} -\normalsize - -and you will get output that looks something like the following: - -\footnotesize -\begin{verbatim} -kernel: st0: Mode 0 options: buffer writes: 1, async writes: 1, read ahead: 1 -kernel: st0: can bsr: 0, two FMs: 0, fast mteom: 0, auto lock: 0, -kernel: st0: defs for wr: 0, no block limits: 0, partitions: 0, s2 log: 0 -kernel: st0: sysv: 0 nowait: 0 -\end{verbatim} -\normalsize - -Note, I have chopped off the beginning of the line with the date and machine -name for presentation purposes. - -Some people find that the above settings only last until the next reboot, so -please check this otherwise you may have unexpected problems. - -Beginning with Bacula version 1.35.8, if Bacula detects that you are running -in variable block mode, it will attempt to set your drive appropriately. All -OSes permit setting variable block mode, but some OSes do not permit setting -the other modes that Bacula needs to function properly. - -\label{compression} -\subsection{Tape Hardware Compression and Blocking Size} -\index[general]{Tape Hardware Compression and Blocking Size} -\index[general]{Size!Tape Hardware Compression and Blocking Size} - -You should be able to verify the tape compression status with sysfs on Linux. -\begin{verbatim} -cat /sys/class/scsi_tape/nst0/default_compression -\end{verbatim} - -You can, turn it on by using (on Linux): - -\footnotesize -\begin{verbatim} -become super user -mt -f /dev/nst0 defcompression 1 -\end{verbatim} -\normalsize - -and of course, if you use a zero instead of the one at the end, you will turn -it off. - -If you have built the {\bf mtx} program in the {\bf depkgs} package, you can -use tapeinfo to get quite a bit of information about your tape drive even if -it is not an autochanger. This program is called using the SCSI control -device. On Linux for tape drive /dev/nst0, this is usually /dev/sg0, while on -FreeBSD for /dev/nsa0, the control device is often /dev/pass2. For example on -my DDS-4 drive (/dev/nst0), I get the following: - -\footnotesize -\begin{verbatim} -tapeinfo -f /dev/sg0 -Product Type: Tape Drive -Vendor ID: 'HP ' -Product ID: 'C5713A ' -Revision: 'H107' -Attached Changer: No -MinBlock:1 -MaxBlock:16777215 -SCSI ID: 5 -SCSI LUN: 0 -Ready: yes -BufferedMode: yes -Medium Type: Not Loaded -Density Code: 0x26 -BlockSize: 0 -\end{verbatim} -\normalsize - -where the {\bf DataCompEnabled: yes} means that tape hardware compression is -turned on. You can turn it on and off (yes|no) by using the {\bf mt} -commands given above. Also, this output will tell you if the {\bf BlockSize} -is non-zero and hence set for a particular block size. Bacula is not likely to -work in such a situation because it will normally attempt to write blocks of -64,512 bytes, except the last block of the job which will generally be -shorter. The first thing to try is setting the default block size to zero -using the {\bf mt -f /dev/nst0 defblksize 0} command as shown above. -On FreeBSD, this would be something like: {\bf mt -f /dev/nsa0 blocksize 0}. - -On some operating systems with some tape drives, the amount of data that -can be written to the tape and whether or not compression is enabled is -determined by the density usually the {\bf mt -f /dev/nst0 setdensity xxx} command. -Often {\bf mt -f /dev/nst0 status} will print out the current -density code that is used with the drive. Most systems, but unfortunately -not all, set the density to the maximum by default. On some systems, you -can also get a list of all available density codes with: -{\bf mt -f /dev/nst0 densities} or a similar {\bf mt} command. -Note, for DLT and SDLT devices, no-compression versus compression is very -often controlled by the density code. On FreeBSD systems, the compression -mode is set using {\bf mt -f /dev/nsa0 comp xxx} where xxx is the -mode you want. In general, see {\bf man mt} for the options available on -your system. - -Note, some of the above {\bf mt} commands may not be persistent depending -on your system configuration. That is they may be reset if a program -other than Bacula uses the drive or, as is frequently the case, on reboot -of your system. - -If your tape drive requires fixed block sizes (very unusual), you can use the -following records: - -\footnotesize -\begin{verbatim} -Minimum Block Size = nnn -Maximum Block Size = nnn -\end{verbatim} -\normalsize - -in your Storage daemon's Device resource to force Bacula to write fixed size -blocks (where you sent nnn to be the same for both of the above records). This -should be done only if your drive does not support variable block sizes, or -you have some other strong reasons for using fixed block sizes. As mentioned -above, a small fixed block size of 512 or 1024 bytes will be very inefficient. -Try to set any fixed block size to something like 64,512 bytes or larger if -your drive will support it. - -Also, note that the {\bf Medium Type} field of the output of {\bf tapeinfo} -reports {\bf Not Loaded}, which is not correct. As a consequence, you should -ignore that field as well as the {\bf Attached Changer} field. - -To recover files from tapes written in fixed block mode, see below. -\label{FreeBSDTapes} - -\subsection{Tape Modes on FreeBSD} -\index[general]{FreeBSD!Tape Modes on} -\index[general]{Tape Modes on FreeBSD} - -On most FreeBSD systems such as 4.9 and most tape drives, Bacula should run -with: - -\footnotesize -\begin{verbatim} -mt -f /dev/nsa0 seteotmodel 2 -mt -f /dev/nsa0 blocksize 0 -mt -f /dev/nsa0 comp enable -\end{verbatim} -\normalsize - -You might want to put those commands in a startup script to make sure your -tape driver is properly initialized before running Bacula, because -depending on your system configuration, these modes may be reset if a -program other than Bacula uses the drive or when your system is rebooted. - -Then according to what the {\bf btape test} command returns, you will probably -need to set the following (see below for an alternative): - -\footnotesize -\begin{verbatim} - Hardware End of Medium = no - BSF at EOM = yes - Backward Space Record = no - Backward Space File = no - Fast Forward Space File = no - TWO EOF = yes -\end{verbatim} -\normalsize - -Then be sure to run some append tests with Bacula where you start and stop -Bacula between appending to the tape, or use {\bf btape} version 1.35.1 or -greater, which includes simulation of stopping/restarting Bacula. - -Please see the file {\bf platforms/freebsd/pthreads-fix.txt} in the main -Bacula directory concerning {\bf important} information concerning -compatibility of Bacula and your system. A much more optimal Device -configuration is shown below, but does not work with all tape drives. Please -test carefully before putting either into production. - -Note, for FreeBSD 4.10-RELEASE, using a Sony TSL11000 L100 DDS4 with an -autochanger set to variable block size and DCLZ compression, Brian McDonald -reports that to get Bacula to append correctly between Bacula executions, -the correct values to use are: - -\footnotesize -\begin{verbatim} -mt -f /dev/nsa0 seteotmodel 1 -mt -f /dev/nsa0 blocksize 0 -mt -f /dev/nsa0 comp enable -\end{verbatim} -\normalsize - -and - -\footnotesize -\begin{verbatim} - Hardware End of Medium = no - BSF at EOM = no - Backward Space Record = no - Backward Space File = no - Fast Forward Space File = yes - TWO EOF = no -\end{verbatim} -\normalsize - -This has been confirmed by several other people using different hardware. This -configuration is the preferred one because it uses one EOF and no backspacing -at the end of the tape, which works much more efficiently and reliably with -modern tape drives. - -Finally, here is a Device configuration that Danny Butroyd reports to work -correctly with the Overland Powerloader tape library using LT0-2 and -FreeBSD 5.4-Stable: - -\footnotesize -\begin{verbatim} -# Overland Powerloader LT02 - 17 slots single drive -Device { - Name = Powerloader - Media Type = LT0-2 - Archive Device = /dev/nsa0 - AutomaticMount = yes; - AlwaysOpen = yes; - RemovableMedia = yes; - RandomAccess = no; - Changer Command = "/usr/local/sbin/mtx-changer %c %o %S %a %d" - Changer Device = /dev/pass2 - AutoChanger = yes - Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'" - - # FreeBSD Specific Settings - Offline On Unmount = no - Hardware End of Medium = no - BSF at EOM = yes - Backward Space Record = no - Fast Forward Space File = no - TWO EOF = yes -} - -The following Device resource works fine with Dell PowerVault 110T and -120T devices on both FreeBSD 5.3 and on NetBSD 3.0. It also works -with Sony AIT-2 drives on FreeBSD. -\footnotesize -\begin{verbatim} -Device { - ... - # FreeBSD/NetBSD Specific Settings - Hardware End of Medium = no - BSF at EOM = yes - Backward Space Record = no - Fast Forward Space File = yes - TWO EOF = yes -} -\end{verbatim} -\normalsize - -On FreeBSD version 6.0, it is reported that you can even set -Backward Space Record = yes. - - - -\subsection{Finding your Tape Drives and Autochangers on FreeBSD} -\index[general]{FreeBSD!Finding Tape Drives and Autochangers} -\index[general]{Finding Tape Drives and Autochangers on FreeBSD} - -On FreeBSD, you can do a {\bf camcontrol devlist} as root to determine what -drives and autochangers you have. For example, - -\footnotesize -\begin{verbatim} -undef# camcontrol devlist - at scbus0 target 2 lun 0 (pass0,sa0) - at scbus0 target 4 lun 0 (pass1,sa1) - at scbus0 target 4 lun 1 (pass2) -\end{verbatim} -\normalsize - -from the above, you can determine that there is a tape drive on {\bf /dev/sa0} -and another on {\bf /dev/sa1} in addition since there is a second line for the -drive on {\bf /dev/sa1}, you know can assume that it is the control device for -the autochanger (i.e. {\bf /dev/pass2}). It is also the control device name to -use when invoking the tapeinfo program. E.g. - -\footnotesize -\begin{verbatim} -tapeinfo -f /dev/pass2 -\end{verbatim} -\normalsize - -\label{onstream} - -\subsection{Using the OnStream driver on Linux Systems} -\index[general]{Using the OnStream driver on Linux Systems} -\index[general]{Systems!Using the OnStream driver on Linux} - -Bacula version 1.33 (not 1.32x) is now working and ready for testing with the -OnStream kernel osst driver version 0.9.14 or above. Osst is available from: -\elink{http://sourceforge.net/projects/osst/} -{http://sourceforge.net/projects/osst/}. - -To make Bacula work you must first load the new driver then, as root, do: - -\footnotesize -\begin{verbatim} - mt -f /dev/nosst0 defblksize 32768 -\end{verbatim} -\normalsize - -Also you must add the following to your Device resource in your Storage -daemon's conf file: - -\footnotesize -\begin{verbatim} - Minimum Block Size = 32768 - Maximum Block Size = 32768 -\end{verbatim} -\normalsize - -Here is a Device specification provided by Michel Meyers that is known to -work: - -\footnotesize -\begin{verbatim} -Device { - Name = "Onstream DI-30" - Media Type = "ADR-30" - Archive Device = /dev/nosst0 - Minimum Block Size = 32768 - Maximum Block Size = 32768 - Hardware End of Medium = yes - BSF at EOM = no - Backward Space File = yes - Fast Forward Space File = yes - Two EOF = no - AutomaticMount = yes - AlwaysOpen = yes - Removable Media = yes -} -\end{verbatim} -\normalsize - -\section{Hardware Compression on EXB-8900} -\index[general]{Hardware Compression on EXB-8900} -\index[general]{EXB-8900!Hardware Compression} - -To active, check, or disable the hardware compression feature -on an EXB-8900, use the exabyte MammothTool. You can get it here: -\elink{http://www.exabyte.com/support/online/downloads/index.cfm} -{http://www.exabyte.com/support/online/downloads/index.cfm}. -There is a Solaris version of this tool. With option -C 0 or 1 you -can disable or activate compression. Start this tool without any -options for a small reference. - -\label{fill} -\subsection{Using btape to Simulate Filling a Tape} -\index[general]{Using btape to Simulate Filling a Tape} -\index[general]{Tape!Using btape to Simulate Filling} - -Because there are often problems with certain tape drives or systems when end -of tape conditions occur, {\bf btape} has a special command {\bf fill} that -causes it to write random data to a tape until the tape fills. It then writes -at least one more Bacula block to a second tape. Finally, it reads back both -tapes to ensure that the data has been written in a way that Bacula can -recover it. Note, there is also a single tape option as noted below, which you -should use rather than the two tape test. See below for more details. - -This can be an extremely time consuming process (here it is about 6 hours) to -fill a full tape. Note, that btape writes random data to the tape when it is -filling it. This has two consequences: 1. it takes a bit longer to generate -the data, especially on slow CPUs. 2. the total amount of data is -approximately the real physical capacity of your tape, regardless of whether -or not the tape drive compression is on or off. This is because random data -does not compress very much. - -To begin this test, you enter the {\bf fill} command and follow the -instructions. There are two options: the simple single tape option and the -multiple tape option. Please use only the simple single tape option because -the multiple tape option still doesn't work totally correctly. If the single -tape option does not succeed, you should correct the problem before using -Bacula. -\label{RecoveringFiles} - -\section{Recovering Files Written With Fixed Block Sizes} -\index[general]{Recovering Files Written With Fixed Block Sizes} - -If you have been previously running your tape drive in fixed block mode -(default 512) and Bacula with variable blocks (default), then in version -1.32f-x and 1.34 and above, Bacula will fail to recover files because it does -block spacing, and because the block sizes don't agree between your tape drive -and Bacula it will not work. - -The long term solution is to run your drive in variable block mode as -described above. However, if you have written tapes using fixed block sizes, -this can be a bit of a pain. The solution to the problem is: while you are -doing a restore command using a tape written in fixed block size, ensure that -your drive is set to the fixed block size used while the tape was written. -Then when doing the {\bf restore} command in the Console program, do not -answer the prompt {\bf yes/mod/no}. Instead, edit the bootstrap file (the -location is listed in the prompt) using any ASCII editor. Remove all {\bf -VolBlock} lines in the file. When the file is re-written, answer the question, -and Bacula will run without using block positioning, and it should recover -your files. - -\label{BlockModes} -\section{Tape Blocking Modes} -\index[general]{Modes!Tape Blocking} -\index[general]{Tape Blocking Modes} - -SCSI tapes may either be written in {\bf variable} or {\bf fixed} block sizes. -Newer drives support both modes, but some drives such as the QIC devices -always use fixed block sizes. Bacula attempts to fill and write complete -blocks (default 65K), so that in normal mode (variable block size), Bacula -will always write blocks of the same size except the last block of a Job. If -Bacula is configured to write fixed block sizes, it will pad the last block of -the Job to the correct size. Bacula expects variable tape block size drives to -behave as follows: Each write to the drive results in a single record being -written to the tape. Each read returns a single record. If you request less -bytes than are in the record, only those number of bytes will be returned, but -the entire logical record will have been read (the next read will retrieve the -next record). Thus data from a single write is always returned in a single -read, and sequentially written records are returned by sequential reads. - -Bacula expects fixed block size tape drives to behave as follows: If a write -length is greater than the physical block size of the drive, the write will be -written as two blocks each of the fixed physical size. This single write may -become multiple physical records on the tape. (This is not a good situation). -According to the documentation, one may never write an amount of data that is -not the exact multiple of the blocksize (it is not specified if an error -occurs or if the the last record is padded). When reading, it is my -understanding that each read request reads one physical record from the tape. -Due to the complications of fixed block size tape drives, you should avoid -them if possible with Bacula, or you must be ABSOLUTELY certain that you use -fixed block sizes within Bacula that correspond to the physical block size of -the tape drive. This will ensure that Bacula has a one to one correspondence -between what it writes and the physical record on the tape. - -Please note that Bacula will not function correctly if it writes a block and -that block is split into two or more physical records on the tape. Bacula -assumes that each write causes a single record to be written, and that it can -sequentially recover each of the blocks it has written by using the same -number of sequential reads as it had written. - -\section{Details of Tape Modes} -\index[general]{Modes!Details} -\index[general]{Details of Tape Modes} -Rudolf Cejka has provided the following information concerning -certain tape modes and MTEOM. - -\begin{description} -\item[Tape level] - It is always possible to position filemarks or blocks, whereas - positioning to the end-of-data is only optional feature, however it is - implemented very often. SCSI specification also talks about optional - sequential filemarks, setmarks and sequential setmarks, but these are not - implemented so often. Modern tape drives keep track of file positions in - built-in chip (AIT, LTO) or at the beginning of the tape (SDLT), so there - is not any speed difference, if end-of-data or filemarks is used (I have - heard, that LTO-1 from all 3 manufacturers do not use its chip for file - locations, but a tape as in SDLT case, and I'm not sure about LTO-2 and - LTO-3 case). However there is a big difference, that end-of-data ignores - file position, whereas filemarks returns the real number of skipped - files, so OS can track current file number just in filemarks case. - -\item[OS level] - Solaris does use just SCSI SPACE Filemarks, it does not support SCSI - SPACE End-of-data. When MTEOM is called, Solaris does use SCSI SPACE - Filemarks with count = 1048576 for fast mode, and combination of SCSI - SPACE Filemarks with count = 1 with SCSI SPACE Blocks with count = 1 for - slow mode, so EOD mark on the tape on some older tape drives is not - skipped. File number is always tracked for MTEOM. - - Linux does support both SCSI SPACE Filemarks and End-of-data: When MTEOM - is called in MT\_ST\_FAST\_MTEOM mode, SCSI SPACE End-of-data is used. - In the other case, SCSI SPACE Filemarks with count = - 8388607 is used. - There is no real slow mode like in Solaris - I just expect, that for - older tape drives Filemarks may be slower than End-of-data, but not so - much as in Solaris slow mode. File number is tracked for MTEOM just - without MT\_ST\_FAST\_MTEOM - when MT\_ST\_FAST\_MTEOM is used, it is not. - - FreeBSD does support both SCSI SPACE Filemarks and End-of-data, but when - MTEOD (MTEOM) is called, SCSI SPACE End-of-data is always used. FreeBSD - never use SCSI SPACE Filemarks for MTEOD. File number is never tracked - for MTEOD. - -\item[Bacula level] - When {\bf Hardware End of Medium = Yes} is used, MTEOM is called, but it - does not mean, that hardware End-of-data must be used. When Hardware End - of Medium = No, if Fast Forward Space File = Yes, MTFSF with count = - 32767 is used, else Block Read with count = 1 with Forward Space File - with count = 1 is used, which is really very slow. - -\item [Hardware End of Medium = Yes|No] - The name of this option is misleading and is the source of confusion, - because it is not the hardware EOM, what is really switched here. - - If I use Yes, OS must not use SCSI SPACE End-of-data, because Bacula - expects, that there is tracked file number, which is not supported by - SCSI specification. Instead, the OS have to use SCSI SPACE Filemarks. - - If I use No, an action depends on Fast Forward Space File. - - When I set {\bf Hardware End of Medium = no} - and {\bf Fast Forward Space File = no} - file positioning was very slow - on my LTO-3 (about ten to 100 minutes), but - - with {\bf Hardware End of Medium = no} and -{\bf Fast Forward Space File = yes}, the time is ten to -100 times faster (about one to two minutes). - -\end{description} - -\section{Tape Performance Problems} -\index[general]{Tape Performance} -If you have LTO-3 or LTO-4 drives, you should be able to -fairly good transfer rates; from 60 to 150 MB/second, providing -you have fast disks; GigaBit Ethernet connections (probably 2); you are -running multiple simultaneous jobs; you have Bacula data spooling -enabled; your tape block size is set to 131072 or 262144; and -you have set {\bf Maximum File Size = 5G}. - -If you are not getting good performance, consider some of the following -suggestions from the Allen Balck on the Bacula Users email list: - -\begin{enumerate} -\item You are using an old HBA (i.e. SCSI-1, which only does 5 MB/s) - -\item There are other, slower, devices on the SCSI bus. The HBA will - negotiate the speed of every device down to the speed of the - slowest. - -\item There is a termination problem on the bus (either too much or - too little termination). The HBA will drop the bus speed in an - attempt to increase the reliability of the bus. - -\item Loose or damaged cabling - this will probably make the HBA "think" - you have a termination problem and it will react as in 3 above. -\end{enumerate} - -See if /var/adm/messages (or /var/log/messages) tells you what the sync -rate of the SCSI devices/bus are. Also, the next time you reboot, the -BIOS may be able to tell you what the rate of each device is. - - -\section{Autochanger Errors} -\index[general]{Errors!Autochanger} -\index[general]{Autochanger Errors} - -If you are getting errors such as: - -\footnotesize -\begin{verbatim} -3992 Bad autochanger "load slot 1, drive 1": ERR=Child exited with code 1. -\end{verbatim} -\normalsize - -and you are running your Storage daemon as non-root, then most likely -you are having permissions problems with the control channel. Running -as root, set permissions on /dev/sgX so that the userid and group of -your Storage daemon can access the device. You need to ensure that you -all access to the proper control device, and if you don't have any -SCSI disk drives (including SATA drives), you might want to change -the permissions on /dev/sg*. - -\section{Syslog Errors} -\index[general]{Errors!Syslog} -\index[general]{Syslog Errors} - -If you are getting errors such as: - -\footnotesize -\begin{verbatim} -: kernel: st0: MTSETDRVBUFFER only allowed for root -\end{verbatim} -\normalsize - -you are most likely running your Storage daemon as non-root, and -Bacula is attempting to set the correct OS buffering to correspond -to your Device resource. Most OSes allow only root to issue this -ioctl command. In general, the message can be ignored providing -you are sure that your OS parameters are properly configured as -described earlier in this manual. If you are running your Storage daemon -as root, you should not be getting these system log messages, and if -you are, something is probably wrong. diff --git a/docs/manuals/fr/problems/tips-en.tex b/docs/manuals/fr/problems/tips-en.tex new file mode 100644 index 00000000..f13da7a0 --- /dev/null +++ b/docs/manuals/fr/problems/tips-en.tex @@ -0,0 +1,1045 @@ +%% +%% + +\chapter{Tips and Suggestions} +\label{TipsChapter} +\index[general]{Tips and Suggestions } +\index[general]{Suggestions!Tips and } +\label{examples} +\index[general]{Examples } + +There are a number of example scripts for various things that can be found in +the {\bf example} subdirectory and its subdirectories of the Bacula source +distribution. + +For additional tips, please see the \elink{Bacula +wiki}{http://wiki.bacula.org}. + +\section{Upgrading Bacula Versions} +\label{upgrading} +\index[general]{Upgrading Bacula Versions } +\index[general]{Versions!Upgrading Bacula } +\index[general]{Upgrading} + +The first thing to do before upgrading from one version to another is to +ensure that you don't overwrite or delete your production (current) version +of Bacula until you have tested that the new version works. + +If you have installed Bacula into a single directory, this is simple: simply +make a copy of your Bacula directory. + +If you have done a more typical Unix installation where the binaries are +placed in one directory and the configuration files are placed in another, +then the simplest way is to configure your new Bacula to go into a single +file. Alternatively, make copies of all your binaries and especially your +conf files. + +Whatever your situation may be (one of the two just described), you should +probably start with the {\bf defaultconf} script that can be found in the {\bf +examples} subdirectory. Copy this script to the main Bacula directory, modify +it as necessary (there should not need to be many modifications), configure +Bacula, build it, install it, then stop your production Bacula, copy all the +{\bf *.conf} files from your production Bacula directory to the test Bacula +directory, start the test version, and run a few test backups. If all seems +good, then you can proceed to install the new Bacula in place of or possibly +over the old Bacula. + +When installing a new Bacula you need not worry about losing the changes you +made to your configuration files as the installation process will not +overwrite them providing that you do not do a {\bf make uninstall}. + +If the new version of Bacula requires an upgrade to the database, +you can upgrade it with the script {\bf update\_bacula\_tables}, which +will be installed in your scripts directory (default {\bf /etc/bacula}), +or alternatively, you can find it in the +{\bf \lt{}bacula-source\gt{}/src/cats} directory. + +\section{Getting Notified of Job Completion} +\label{notification} +\index[general]{Getting Notified of Job Completion } +\index[general]{Completion!Getting Notified of Job } + +One of the first things you should do is to ensure that you are being properly +notified of the status of each Job run by Bacula, or at a minimum of each Job +that terminates with an error. + +Until you are completely comfortable with {\bf Bacula}, we recommend that you +send an email to yourself for each Job that is run. This is most easily +accomplished by adding an email notification address in the {\bf Messages} +resource of your Director's configuration file. An email is automatically +configured in the default configuration files, but you must ensure that the +default {\bf root} address is replaced by your email address. + +For additional examples of how to configure a Bacula, please take a look at the +{\bf .conf} files found in the {\bf examples} sub-directory. We recommend the +following configuration (where you change the paths and email address to +correspond to your setup). Note, the {\bf mailcommand} and {\bf +operatorcommand} should be on a single line. They were split here for +presentation: + +\footnotesize +\begin{verbatim} +Messages { + Name = Standard + mailcommand = "/home/bacula/bin/bsmtp -h localhost + -f \"\(Bacula\) %r\" + -s \"Bacula: %t %e of %c %l\" %r" + operatorcommand = "/home/bacula/bin/bsmtp -h localhost + -f \"\(Bacula\) %r\" + -s \"Bacula: Intervention needed for %j\" %r" + Mail = your-email-address = all, !skipped, !terminate + append = "/home/bacula/bin/log" = all, !skipped, !terminate + operator = your-email-address = mount + console = all, !skipped, !saved +} +\end{verbatim} +\normalsize + +You will need to ensure that the {\bf /home/bacula/bin} path on the {\bf +mailcommand} and the {\bf operatorcommand} lines point to your {\bf Bacula} +binary directory where the {\bf bsmtp} program will be installed. You will +also want to ensure that the {\bf your-email-address} is replaced by your +email address, and finally, you will also need to ensure that the {\bf +/home/bacula/bin/log} points to the file where you want to log all messages. + +With the above Messages resource, you will be notified by email of every Job +that ran, all the output will be appended to the {\bf log} file you specify, +all output will be directed to the console program, and all mount messages +will be emailed to you. Note, some messages will be sent to multiple +destinations. + +The form of the mailcommand is a bit complicated, but it allows you to +distinguish whether the Job terminated in error or terminated normally. Please +see the +\ilink{Mail Command}{mailcommand} section of the Messages +Resource chapter of this manual for the details of the substitution characters +used above. + +Once you are totally comfortable with Bacula as I am, or if you have a large +number of nightly Jobs as I do (eight), you will probably want to change the +{\bf Mail} command to {\bf Mail On Error} which will generate an email message +only if the Job terminates in error. If the Job terminates normally, no email +message will be sent, but the output will still be appended to the log file as +well as sent to the Console program. + +\section{Getting Email Notification to Work} +\label{email} +\index[general]{Work!Getting Email Notification to } +\index[general]{Getting Email Notification to Work } + +The section above describes how to get email notification of job status. +Occasionally, however, users have problems receiving any email at all. In that +case, the things to check are the following: + +\begin{itemize} +\item Ensure that you have a valid email address specified on your {\bf Mail} + record in the Director's Messages resource. The email address should be fully + qualified. Simply using {\bf root} generally will not work, rather you should +use {\bf root@localhost} or better yet your full domain. +\item Ensure that you do not have a {\bf Mail} record in the Storage daemon's + or File daemon's configuration files. The only record you should have is {\bf + director}: + +\footnotesize +\begin{verbatim} + director = director-name = all + +\end{verbatim} +\normalsize + +\item If all else fails, try replacing the {\bf mailcommand} with + + \footnotesize +\begin{verbatim} +mailcommand = "mail -s test your@domain.com" +\end{verbatim} +\normalsize + +\item Once the above is working, assuming you want to use {\bf bsmtp}, submit + the desired bsmtp command by hand and ensure that the email is delivered, + then put that command into {\bf Bacula}. Small differences in things such as +the parenthesis around the word Bacula can make a big difference to some +bsmtp programs. For example, you might start simply by using: + +\footnotesize +\begin{verbatim} +mailcommand = "/home/bacula/bin/bsmtp -f \"root@localhost\" %r" +\end{verbatim} +\normalsize + +\end{itemize} + +\section{Getting Notified that Bacula is Running} +\label{JobNotification} +\index[general]{Running!Getting Notified that Bacula is } +\index[general]{Getting Notified that Bacula is Running } + +If like me, you have setup Bacula so that email is sent only when a Job has +errors, as described in the previous section of this chapter, inevitably, one +day, something will go wrong and {\bf Bacula} can stall. This could be because +Bacula crashes, which is vary rare, or more likely the network has caused {\bf +Bacula} to {\bf hang} for some unknown reason. + +To avoid this, you can use the {\bf RunAfterJob} command in the Job resource +to schedule a Job nightly, or weekly that simply emails you a message saying +that Bacula is still running. For example, I have setup the following Job in +my Director's configuration file: + +\footnotesize +\begin{verbatim} +Schedule { + Name = "Watchdog" + Run = Level=Full sun-sat at 6:05 +} +Job { + Name = "Watchdog" + Type = Admin + Client=Watchdog + FileSet="Verify Set" + Messages = Standard + Storage = DLTDrive + Pool = Default + Schedule = "Watchdog" + RunAfterJob = "/home/kern/bacula/bin/watchdog %c %d" +} +Client { + Name = Watchdog + Address = rufus + FDPort = 9102 + Catalog = Verify + Password = "" + File Retention = 1day + Job Retention = 1 month + AutoPrune = yes +} +\end{verbatim} +\normalsize + +Where I established a schedule to run the Job nightly. The Job itself is type +{\bf Admin} which means that it doesn't actually do anything, and I've defined +a FileSet, Pool, Storage, and Client, all of which are not really used (and +probably don't need to be specified). The key aspect of this Job is the +command: + +\footnotesize +\begin{verbatim} + RunAfterJob = "/home/kern/bacula/bin/watchdog %c %d" +\end{verbatim} +\normalsize + +which runs my "watchdog" script. As an example, I have added the Job codes +\%c and \%d which will cause the Client name and the Director's name to be +passed to the script. For example, if the Client's name is {\bf Watchdog} and +the Director's name is {\bf main-dir} then referencing \$1 in the script would +get {\bf Watchdog} and referencing \$2 would get {\bf main-dir}. In this case, +having the script know the Client and Director's name is not really useful, +but in other situations it may be. + +You can put anything in the watchdog script. In my case, I like to monitor the +size of my catalog to be sure that {\bf Bacula} is really pruning it. The +following is my watchdog script: + +\footnotesize +\begin{verbatim} +#!/bin/sh +cd /home/kern/mysql/var/bacula +du . * | +/home/kern/bacula/bin/bsmtp \ + -f "\(Bacula\) abuse@whitehouse.com" -h mail.yyyy.com \ + -s "Bacula running" abuse@whitehouse.com +\end{verbatim} +\normalsize + +If you just wish to send yourself a message, you can do it with: + +\footnotesize +\begin{verbatim} +#!/bin/sh +cd /home/kern/mysql/var/bacula +/home/kern/bacula/bin/bsmtp \ + -f "\(Bacula\) abuse@whitehouse.com" -h mail.yyyy.com \ + -s "Bacula running" abuse@whitehouse.com </volume-list + exit 0 +\end{verbatim} +\normalsize + +so that the whole case looks like: + +\footnotesize +\begin{verbatim} + list) +# +# commented out lines + cat /volume-list + exit 0 + ;; +\end{verbatim} +\normalsize + +where you replace \lt{}absolute-path\gt{} with the full path to the +volume-list file. Then using the console, you enter the following command: + +\footnotesize +\begin{verbatim} + label barcodes +\end{verbatim} +\normalsize + +and Bacula will proceed to mount the autochanger Volumes in the list and label +them with the Volume names you have supplied. Bacula will think that the list +was provided by the autochanger barcodes, but in reality, it was you who +supplied the \lt{}barcodes\gt{}. + +If it seems to work, when it finishes, enter: + +\footnotesize +\begin{verbatim} + list volumes +\end{verbatim} +\normalsize + +and you should see all the volumes nicely created. + +\section{Backing Up Portables Using DHCP} +\label{DNS} +\index[general]{DHCP!Backing Up Portables Using } +\index[general]{Backing Up Portables Using DHCP } + +You may want to backup laptops or portables that are not always connected to +the network. If you are using DHCP to assign an IP address to those machines +when they connect, you will need to use the Dynamic Update capability of DNS +to assign a name to those machines that can be used in the Address field of +the Client resource in the Director's conf file. + +\section{Going on Vacation} +\label{Vacation} +\index[general]{Vacation!Going on } +\index[general]{Going on Vacation } + +At some point, you may want to be absent for a week or two and you want to +make sure Bacula has enough tape left so that the backups will complete. You +start by doing a {\bf list volumes} in the Console program: + +\footnotesize +\begin{verbatim} +list volumes + +Using default Catalog name=BackupDB DB=bacula +Pool: Default ++---------+---------------+-----------+-----------+----------------+- +| MediaId | VolumeName | MediaType | VolStatus | VolBytes | ++---------+---------------+-----------+-----------+----------------+- +| 23 | DLT-30Nov02 | DLT8000 | Full | 54,739,278,128 | +| 24 | DLT-21Dec02 | DLT8000 | Full | 56,331,524,629 | +| 25 | DLT-11Jan03 | DLT8000 | Full | 67,863,514,895 | +| 26 | DLT-02Feb03 | DLT8000 | Full | 63,439,314,216 | +| 27 | DLT-03Mar03 | DLT8000 | Full | 66,022,754,598 | +| 28 | DLT-04Apr03 | DLT8000 | Full | 60,792,559,924 | +| 29 | DLT-28Apr03 | DLT8000 | Full | 62,072,494,063 | +| 30 | DLT-17May03 | DLT8000 | Full | 65,901,767,839 | +| 31 | DLT-07Jun03 | DLT8000 | Used | 56,558,490,015 | +| 32 | DLT-28Jun03 | DLT8000 | Full | 64,274,871,265 | +| 33 | DLT-19Jul03 | DLT8000 | Full | 64,648,749,480 | +| 34 | DLT-08Aug03 | DLT8000 | Full | 64,293,941,255 | +| 35 | DLT-24Aug03 | DLT8000 | Append | 9,999,216,782 | ++---------+---------------+-----------+-----------+----------------+ +\end{verbatim} +\normalsize + +Note, I have truncated the output for presentation purposes. What is +significant, is that I can see that my current tape has almost 10 Gbytes of +data, and that the average amount of data I get on my tapes is about 60 +Gbytes. So if I go on vacation now, I don't need to worry about tape capacity +(at least not for short absences). + +Equally significant is the fact that I did go on vacation the 28th of June +2003, and when I did the {\bf list volumes} command, my current tape at that +time, DLT-07Jun03 MediaId 31, had 56.5 Gbytes written. I could see that the +tape would fill shortly. Consequently, I manually marked it as {\bf Used} and +replaced it with a fresh tape that I labeled as DLT-28Jun03, thus assuring +myself that the backups would all complete without my intervention. + +\section{Exclude Files on Windows Regardless of Case} +\label{Case} +\index[general]{Exclude Files on Windows Regardless of Case} +% TODO: should this be put in the win32 chapter? +% TODO: should all these tips be placed in other chapters? + +This tip was submitted by Marc Brueckner who wasn't sure of the case of some +of his files on Win32, which is case insensitive. The problem is that Bacula +thinks that {\bf /UNIMPORTANT FILES} is different from {\bf /Unimportant +Files}. Marc was aware that the file exclusion permits wild-cards. So, he +specified: + +\footnotesize +\begin{verbatim} +"/[Uu][Nn][Ii][Mm][Pp][Oo][Rr][Tt][Aa][Nn][Tt] [Ff][Ii][Ll][Ee][Ss]" +\end{verbatim} +\normalsize + +As a consequence, the above exclude works for files of any case. + +Please note that this works only in Bacula Exclude statement and not in +Include. + +\section{Executing Scripts on a Remote Machine} +\label{RemoteExecution} +\index[general]{Machine!Executing Scripts on a Remote } +\index[general]{Executing Scripts on a Remote Machine } + +This tip also comes from Marc Brueckner. (Note, this tip is probably outdated +by the addition of {\bf ClientRunBeforJob} and {\bf ClientRunAfterJob} Job +records, but the technique still could be useful.) First I thought the "Run +Before Job" statement in the Job-resource is for executing a script on the +remote machine (the machine to be backed up). (Note, this is possible as mentioned +above by using {\bf ClientRunBeforJob} and {\bf ClientRunAfterJob}). +It could be useful to execute +scripts on the remote machine e.g. for stopping databases or other services +while doing the backup. (Of course I have to start the services again when the +backup has finished) I found the following solution: Bacula could execute +scripts on the remote machine by using ssh. The authentication is done +automatically using a private key. First you have to generate a keypair. I've +done this by: + +\footnotesize +\begin{verbatim} +ssh-keygen -b 4096 -t dsa -f Bacula_key +\end{verbatim} +\normalsize + +This statement may take a little time to run. It creates a public/private key +pair with no passphrase. You could save the keys in /etc/bacula. Now you have +two new files : Bacula\_key which contains the private key and Bacula\_key.pub +which contains the public key. + +Now you have to append the Bacula\_key.pub file to the file authorized\_keys +in the \textbackslash{}root\textbackslash{}.ssh directory of the remote +machine. Then you have to add (or uncomment) the line + +\footnotesize +\begin{verbatim} +AuthorizedKeysFile %h/.ssh/authorized_keys +\end{verbatim} +\normalsize + +to the sshd\_config file on the remote machine. Where the \%h stands for the +home-directory of the user (root in this case). + +Assuming that your sshd is already running on the remote machine, you can now +enter the following on the machine where Bacula runs: + +\footnotesize +\begin{verbatim} +ssh -i Bacula_key -l root "ls -la" +\end{verbatim} +\normalsize + +This should execute the "ls -la" command on the remote machine. + +Now you could add lines like the following to your Director's conf file: + +\footnotesize +\begin{verbatim} +... +Run Before Job = ssh -i /etc/bacula/Bacula_key 192.168.1.1 \ + "/etc/init.d/database stop" +Run After Job = ssh -i /etc/bacula/Bacula_key 192.168.1.1 \ + "/etc/init.d/database start" +... +\end{verbatim} +\normalsize + +Even though Bacula version 1.32 and later has a ClientRunBeforeJob, the ssh method still +could be useful for updating all the Bacula clients on several remote machines +in a single script. + +\section{Recycling All Your Volumes} +\label{recycle} +\index[general]{Recycling All Your Volumes } +\index[general]{Volumes!Recycling All Your } + +This tip comes from Phil Stracchino. + +If you decide to blow away your catalog and start over, the simplest way to +re-add all your prelabeled tapes with a minimum of fuss (provided you don't +care about the data on the tapes) is to add the tape labels using the console +{\bf add} command, then go into the catalog and manually set the VolStatus of +every tape to {\bf Recycle}. + +The SQL command to do this is very simple, either use your vendor's +command line interface (mysql, postgres, sqlite, ...) or use the sql +command in the Bacula console: + +\footnotesize +\begin{verbatim} +update Media set VolStatus='Recycle'; +\end{verbatim} +\normalsize + +Bacula will then ignore the data already stored on the tapes and just re-use +each tape without further objection. + +\section{Backing up ACLs on ext3 or XFS filesystems} +\label{ACLs} +\index[general]{Filesystems!Backing up ACLs on ext3 or XFS } +\index[general]{Backing up ACLs on ext3 or XFS filesystems } + +This tip comes from Volker Sauer. + +Note, this tip was given prior to implementation of ACLs in Bacula (version +1.34.5). It is left here because dumping/displaying ACLs can still be useful +in testing/verifying that Bacula is backing up and restoring your ACLs +properly. Please see the +\ilink{aclsupport}{ACLSupport} FileSet option in the +configuration chapter of this manual. + +For example, you could dump the ACLs to a file with a script similar to the +following: + +\footnotesize +\begin{verbatim} +#!/bin/sh +BACKUP_DIRS="/foo /bar" +STORE_ACL=/root/acl-backup +umask 077 +for i in $BACKUP_DIRS; do + cd $i /usr/bin/getfacl -R --skip-base .>$STORE_ACL/${i//\//_} +done +\end{verbatim} +\normalsize + +Then use Bacula to backup {\bf /root/acl-backup}. + +The ACLs could be restored using Bacula to the {\bf /root/acl-backup} file, +then restored to your system using: + +\footnotesize +\begin{verbatim} +setfacl --restore/root/acl-backup +\end{verbatim} +\normalsize + +\section{Total Automation of Bacula Tape Handling} +\label{automate} +\index[general]{Handling!Total Automation of Bacula Tape } +\index[general]{Total Automation of Bacula Tape Handling } + +This tip was provided by Alexander Kuehn. + +\elink{Bacula}{http://www.bacula.org/} is a really nice backup program except +that the manual tape changing requires user interaction with the bacula +console. + +Fortunately I can fix this. +NOTE!!! This suggestion applies for people who do *NOT* have tape autochangers +and must change tapes manually.!!!!! + +Bacula supports a variety of tape changers through the use of mtx-changer +scripts/programs. This highly flexible approach allowed me to create +\elink{this shell script}{http://www.bacula.org/en/rel-manual/mtx-changer.txt} which does the following: +% TODO: We need to include this in book appendix and point to it. +% TODO: +Whenever a new tape is required it sends a mail to the operator to insert the +new tape. Then it waits until a tape has been inserted, sends a mail again to +say thank you and let's bacula continue its backup. +So you can schedule and run backups without ever having to log on or see the +console. +To make the whole thing work you need to create a Device resource which looks +something like this ("Archive Device", "Maximum Changer Wait", "Media +Type" and "Label media" may have different values): + +\footnotesize +\begin{verbatim} +Device { + Name=DDS3 + Archive Device = # use yours not mine! ;)/dev/nsa0 + Changer Device = # not really required/dev/nsa0 + Changer Command = "# use this (maybe change the path)! + /usr/local/bin/mtx-changer %o %a %S" + Maximum Changer Wait = 3d # 3 days in seconds + AutomaticMount = yes; # mount on start + AlwaysOpen = yes; # keep device locked + Media Type = DDS3 # it's just a name + RemovableMedia = yes; # + Offline On Unmount = Yes; # keep this too + Label media = Yes; # +} +\end{verbatim} +\normalsize + +As the script has to emulate the complete wisdom of a mtx-changer it has an +internal "database" containing where which tape is stored, you can see this on +the following line: + +\footnotesize +\begin{verbatim} +labels="VOL-0001 VOL-0002 VOL-0003 VOL-0004 VOL-0005 VOL-0006 +VOL-0007 VOL-0008 VOL-0009 VOL-0010 VOL-0011 VOL-0012" +\end{verbatim} +\normalsize + +The above should be all on one line, and it effectively tells Bacula that +volume "VOL-0001" is located in slot 1 (which is our lowest slot), that +volume "VOL-0002" is located in slot 2 and so on.. +The script also maintains a logfile (/var/log/mtx.log) where you can monitor +its operation. + +\section{Running Concurrent Jobs} +\label{ConcurrentJobs} +\index[general]{Jobs!Running Concurrent} +\index[general]{Running Concurrent Jobs} +\index[general]{Concurrent Jobs} + +Bacula can run multiple concurrent jobs, but the default configuration files +do not enable it. Using the {\bf Maximum Concurrent Jobs} directive, you +can configure how many and which jobs can be run simultaneously. +The Director's default value for {\bf Maximum Concurrent Jobs} is "1". + +To initially setup concurrent jobs you need to define {\bf Maximum Concurrent Jobs} in +the Director's configuration file (bacula-dir.conf) in the +Director, Job, Client, and Storage resources. + +Additionally the File daemon, and the Storage daemon each have their own +{\bf Maximum Concurrent Jobs} directive that sets the overall maximum +number of concurrent jobs the daemon will run. The default for both the +File daemon and the Storage daemon is "20". + +For example, if you want two different jobs to run simultaneously backing up +the same Client to the same Storage device, they will run concurrently only if +you have set {\bf Maximum Concurrent Jobs} greater than one in the Director +resource, the Client resource, and the Storage resource in bacula-dir.conf. + +We recommend that you read the \ilink{Data +Spooling}{SpoolingChapter} of this manual first, then test your multiple +concurrent backup including restore testing before you put it into +production. + +Below is a super stripped down bacula-dir.conf file showing you the four +places where the the file must be modified to allow the same job {\bf +NightlySave} to run up to four times concurrently. The change to the Job +resource is not necessary if you want different Jobs to run at the same time, +which is the normal case. + +\footnotesize +\begin{verbatim} +# +# Bacula Director Configuration file -- bacula-dir.conf +# +Director { + Name = rufus-dir + Maximum Concurrent Jobs = 4 + ... +} +Job { + Name = "NightlySave" + Maximum Concurrent Jobs = 4 + Client = rufus-fd + Storage = File + ... +} +Client { + Name = rufus-fd + Maximum Concurrent Jobs = 4 + ... +} +Storage { + Name = File + Maximum Concurrent Jobs = 4 + ... +} +\end{verbatim} +\normalsize diff --git a/docs/manuals/fr/problems/tips.tex b/docs/manuals/fr/problems/tips.tex deleted file mode 100644 index f13da7a0..00000000 --- a/docs/manuals/fr/problems/tips.tex +++ /dev/null @@ -1,1045 +0,0 @@ -%% -%% - -\chapter{Tips and Suggestions} -\label{TipsChapter} -\index[general]{Tips and Suggestions } -\index[general]{Suggestions!Tips and } -\label{examples} -\index[general]{Examples } - -There are a number of example scripts for various things that can be found in -the {\bf example} subdirectory and its subdirectories of the Bacula source -distribution. - -For additional tips, please see the \elink{Bacula -wiki}{http://wiki.bacula.org}. - -\section{Upgrading Bacula Versions} -\label{upgrading} -\index[general]{Upgrading Bacula Versions } -\index[general]{Versions!Upgrading Bacula } -\index[general]{Upgrading} - -The first thing to do before upgrading from one version to another is to -ensure that you don't overwrite or delete your production (current) version -of Bacula until you have tested that the new version works. - -If you have installed Bacula into a single directory, this is simple: simply -make a copy of your Bacula directory. - -If you have done a more typical Unix installation where the binaries are -placed in one directory and the configuration files are placed in another, -then the simplest way is to configure your new Bacula to go into a single -file. Alternatively, make copies of all your binaries and especially your -conf files. - -Whatever your situation may be (one of the two just described), you should -probably start with the {\bf defaultconf} script that can be found in the {\bf -examples} subdirectory. Copy this script to the main Bacula directory, modify -it as necessary (there should not need to be many modifications), configure -Bacula, build it, install it, then stop your production Bacula, copy all the -{\bf *.conf} files from your production Bacula directory to the test Bacula -directory, start the test version, and run a few test backups. If all seems -good, then you can proceed to install the new Bacula in place of or possibly -over the old Bacula. - -When installing a new Bacula you need not worry about losing the changes you -made to your configuration files as the installation process will not -overwrite them providing that you do not do a {\bf make uninstall}. - -If the new version of Bacula requires an upgrade to the database, -you can upgrade it with the script {\bf update\_bacula\_tables}, which -will be installed in your scripts directory (default {\bf /etc/bacula}), -or alternatively, you can find it in the -{\bf \lt{}bacula-source\gt{}/src/cats} directory. - -\section{Getting Notified of Job Completion} -\label{notification} -\index[general]{Getting Notified of Job Completion } -\index[general]{Completion!Getting Notified of Job } - -One of the first things you should do is to ensure that you are being properly -notified of the status of each Job run by Bacula, or at a minimum of each Job -that terminates with an error. - -Until you are completely comfortable with {\bf Bacula}, we recommend that you -send an email to yourself for each Job that is run. This is most easily -accomplished by adding an email notification address in the {\bf Messages} -resource of your Director's configuration file. An email is automatically -configured in the default configuration files, but you must ensure that the -default {\bf root} address is replaced by your email address. - -For additional examples of how to configure a Bacula, please take a look at the -{\bf .conf} files found in the {\bf examples} sub-directory. We recommend the -following configuration (where you change the paths and email address to -correspond to your setup). Note, the {\bf mailcommand} and {\bf -operatorcommand} should be on a single line. They were split here for -presentation: - -\footnotesize -\begin{verbatim} -Messages { - Name = Standard - mailcommand = "/home/bacula/bin/bsmtp -h localhost - -f \"\(Bacula\) %r\" - -s \"Bacula: %t %e of %c %l\" %r" - operatorcommand = "/home/bacula/bin/bsmtp -h localhost - -f \"\(Bacula\) %r\" - -s \"Bacula: Intervention needed for %j\" %r" - Mail = your-email-address = all, !skipped, !terminate - append = "/home/bacula/bin/log" = all, !skipped, !terminate - operator = your-email-address = mount - console = all, !skipped, !saved -} -\end{verbatim} -\normalsize - -You will need to ensure that the {\bf /home/bacula/bin} path on the {\bf -mailcommand} and the {\bf operatorcommand} lines point to your {\bf Bacula} -binary directory where the {\bf bsmtp} program will be installed. You will -also want to ensure that the {\bf your-email-address} is replaced by your -email address, and finally, you will also need to ensure that the {\bf -/home/bacula/bin/log} points to the file where you want to log all messages. - -With the above Messages resource, you will be notified by email of every Job -that ran, all the output will be appended to the {\bf log} file you specify, -all output will be directed to the console program, and all mount messages -will be emailed to you. Note, some messages will be sent to multiple -destinations. - -The form of the mailcommand is a bit complicated, but it allows you to -distinguish whether the Job terminated in error or terminated normally. Please -see the -\ilink{Mail Command}{mailcommand} section of the Messages -Resource chapter of this manual for the details of the substitution characters -used above. - -Once you are totally comfortable with Bacula as I am, or if you have a large -number of nightly Jobs as I do (eight), you will probably want to change the -{\bf Mail} command to {\bf Mail On Error} which will generate an email message -only if the Job terminates in error. If the Job terminates normally, no email -message will be sent, but the output will still be appended to the log file as -well as sent to the Console program. - -\section{Getting Email Notification to Work} -\label{email} -\index[general]{Work!Getting Email Notification to } -\index[general]{Getting Email Notification to Work } - -The section above describes how to get email notification of job status. -Occasionally, however, users have problems receiving any email at all. In that -case, the things to check are the following: - -\begin{itemize} -\item Ensure that you have a valid email address specified on your {\bf Mail} - record in the Director's Messages resource. The email address should be fully - qualified. Simply using {\bf root} generally will not work, rather you should -use {\bf root@localhost} or better yet your full domain. -\item Ensure that you do not have a {\bf Mail} record in the Storage daemon's - or File daemon's configuration files. The only record you should have is {\bf - director}: - -\footnotesize -\begin{verbatim} - director = director-name = all - -\end{verbatim} -\normalsize - -\item If all else fails, try replacing the {\bf mailcommand} with - - \footnotesize -\begin{verbatim} -mailcommand = "mail -s test your@domain.com" -\end{verbatim} -\normalsize - -\item Once the above is working, assuming you want to use {\bf bsmtp}, submit - the desired bsmtp command by hand and ensure that the email is delivered, - then put that command into {\bf Bacula}. Small differences in things such as -the parenthesis around the word Bacula can make a big difference to some -bsmtp programs. For example, you might start simply by using: - -\footnotesize -\begin{verbatim} -mailcommand = "/home/bacula/bin/bsmtp -f \"root@localhost\" %r" -\end{verbatim} -\normalsize - -\end{itemize} - -\section{Getting Notified that Bacula is Running} -\label{JobNotification} -\index[general]{Running!Getting Notified that Bacula is } -\index[general]{Getting Notified that Bacula is Running } - -If like me, you have setup Bacula so that email is sent only when a Job has -errors, as described in the previous section of this chapter, inevitably, one -day, something will go wrong and {\bf Bacula} can stall. This could be because -Bacula crashes, which is vary rare, or more likely the network has caused {\bf -Bacula} to {\bf hang} for some unknown reason. - -To avoid this, you can use the {\bf RunAfterJob} command in the Job resource -to schedule a Job nightly, or weekly that simply emails you a message saying -that Bacula is still running. For example, I have setup the following Job in -my Director's configuration file: - -\footnotesize -\begin{verbatim} -Schedule { - Name = "Watchdog" - Run = Level=Full sun-sat at 6:05 -} -Job { - Name = "Watchdog" - Type = Admin - Client=Watchdog - FileSet="Verify Set" - Messages = Standard - Storage = DLTDrive - Pool = Default - Schedule = "Watchdog" - RunAfterJob = "/home/kern/bacula/bin/watchdog %c %d" -} -Client { - Name = Watchdog - Address = rufus - FDPort = 9102 - Catalog = Verify - Password = "" - File Retention = 1day - Job Retention = 1 month - AutoPrune = yes -} -\end{verbatim} -\normalsize - -Where I established a schedule to run the Job nightly. The Job itself is type -{\bf Admin} which means that it doesn't actually do anything, and I've defined -a FileSet, Pool, Storage, and Client, all of which are not really used (and -probably don't need to be specified). The key aspect of this Job is the -command: - -\footnotesize -\begin{verbatim} - RunAfterJob = "/home/kern/bacula/bin/watchdog %c %d" -\end{verbatim} -\normalsize - -which runs my "watchdog" script. As an example, I have added the Job codes -\%c and \%d which will cause the Client name and the Director's name to be -passed to the script. For example, if the Client's name is {\bf Watchdog} and -the Director's name is {\bf main-dir} then referencing \$1 in the script would -get {\bf Watchdog} and referencing \$2 would get {\bf main-dir}. In this case, -having the script know the Client and Director's name is not really useful, -but in other situations it may be. - -You can put anything in the watchdog script. In my case, I like to monitor the -size of my catalog to be sure that {\bf Bacula} is really pruning it. The -following is my watchdog script: - -\footnotesize -\begin{verbatim} -#!/bin/sh -cd /home/kern/mysql/var/bacula -du . * | -/home/kern/bacula/bin/bsmtp \ - -f "\(Bacula\) abuse@whitehouse.com" -h mail.yyyy.com \ - -s "Bacula running" abuse@whitehouse.com -\end{verbatim} -\normalsize - -If you just wish to send yourself a message, you can do it with: - -\footnotesize -\begin{verbatim} -#!/bin/sh -cd /home/kern/mysql/var/bacula -/home/kern/bacula/bin/bsmtp \ - -f "\(Bacula\) abuse@whitehouse.com" -h mail.yyyy.com \ - -s "Bacula running" abuse@whitehouse.com </volume-list - exit 0 -\end{verbatim} -\normalsize - -so that the whole case looks like: - -\footnotesize -\begin{verbatim} - list) -# -# commented out lines - cat /volume-list - exit 0 - ;; -\end{verbatim} -\normalsize - -where you replace \lt{}absolute-path\gt{} with the full path to the -volume-list file. Then using the console, you enter the following command: - -\footnotesize -\begin{verbatim} - label barcodes -\end{verbatim} -\normalsize - -and Bacula will proceed to mount the autochanger Volumes in the list and label -them with the Volume names you have supplied. Bacula will think that the list -was provided by the autochanger barcodes, but in reality, it was you who -supplied the \lt{}barcodes\gt{}. - -If it seems to work, when it finishes, enter: - -\footnotesize -\begin{verbatim} - list volumes -\end{verbatim} -\normalsize - -and you should see all the volumes nicely created. - -\section{Backing Up Portables Using DHCP} -\label{DNS} -\index[general]{DHCP!Backing Up Portables Using } -\index[general]{Backing Up Portables Using DHCP } - -You may want to backup laptops or portables that are not always connected to -the network. If you are using DHCP to assign an IP address to those machines -when they connect, you will need to use the Dynamic Update capability of DNS -to assign a name to those machines that can be used in the Address field of -the Client resource in the Director's conf file. - -\section{Going on Vacation} -\label{Vacation} -\index[general]{Vacation!Going on } -\index[general]{Going on Vacation } - -At some point, you may want to be absent for a week or two and you want to -make sure Bacula has enough tape left so that the backups will complete. You -start by doing a {\bf list volumes} in the Console program: - -\footnotesize -\begin{verbatim} -list volumes - -Using default Catalog name=BackupDB DB=bacula -Pool: Default -+---------+---------------+-----------+-----------+----------------+- -| MediaId | VolumeName | MediaType | VolStatus | VolBytes | -+---------+---------------+-----------+-----------+----------------+- -| 23 | DLT-30Nov02 | DLT8000 | Full | 54,739,278,128 | -| 24 | DLT-21Dec02 | DLT8000 | Full | 56,331,524,629 | -| 25 | DLT-11Jan03 | DLT8000 | Full | 67,863,514,895 | -| 26 | DLT-02Feb03 | DLT8000 | Full | 63,439,314,216 | -| 27 | DLT-03Mar03 | DLT8000 | Full | 66,022,754,598 | -| 28 | DLT-04Apr03 | DLT8000 | Full | 60,792,559,924 | -| 29 | DLT-28Apr03 | DLT8000 | Full | 62,072,494,063 | -| 30 | DLT-17May03 | DLT8000 | Full | 65,901,767,839 | -| 31 | DLT-07Jun03 | DLT8000 | Used | 56,558,490,015 | -| 32 | DLT-28Jun03 | DLT8000 | Full | 64,274,871,265 | -| 33 | DLT-19Jul03 | DLT8000 | Full | 64,648,749,480 | -| 34 | DLT-08Aug03 | DLT8000 | Full | 64,293,941,255 | -| 35 | DLT-24Aug03 | DLT8000 | Append | 9,999,216,782 | -+---------+---------------+-----------+-----------+----------------+ -\end{verbatim} -\normalsize - -Note, I have truncated the output for presentation purposes. What is -significant, is that I can see that my current tape has almost 10 Gbytes of -data, and that the average amount of data I get on my tapes is about 60 -Gbytes. So if I go on vacation now, I don't need to worry about tape capacity -(at least not for short absences). - -Equally significant is the fact that I did go on vacation the 28th of June -2003, and when I did the {\bf list volumes} command, my current tape at that -time, DLT-07Jun03 MediaId 31, had 56.5 Gbytes written. I could see that the -tape would fill shortly. Consequently, I manually marked it as {\bf Used} and -replaced it with a fresh tape that I labeled as DLT-28Jun03, thus assuring -myself that the backups would all complete without my intervention. - -\section{Exclude Files on Windows Regardless of Case} -\label{Case} -\index[general]{Exclude Files on Windows Regardless of Case} -% TODO: should this be put in the win32 chapter? -% TODO: should all these tips be placed in other chapters? - -This tip was submitted by Marc Brueckner who wasn't sure of the case of some -of his files on Win32, which is case insensitive. The problem is that Bacula -thinks that {\bf /UNIMPORTANT FILES} is different from {\bf /Unimportant -Files}. Marc was aware that the file exclusion permits wild-cards. So, he -specified: - -\footnotesize -\begin{verbatim} -"/[Uu][Nn][Ii][Mm][Pp][Oo][Rr][Tt][Aa][Nn][Tt] [Ff][Ii][Ll][Ee][Ss]" -\end{verbatim} -\normalsize - -As a consequence, the above exclude works for files of any case. - -Please note that this works only in Bacula Exclude statement and not in -Include. - -\section{Executing Scripts on a Remote Machine} -\label{RemoteExecution} -\index[general]{Machine!Executing Scripts on a Remote } -\index[general]{Executing Scripts on a Remote Machine } - -This tip also comes from Marc Brueckner. (Note, this tip is probably outdated -by the addition of {\bf ClientRunBeforJob} and {\bf ClientRunAfterJob} Job -records, but the technique still could be useful.) First I thought the "Run -Before Job" statement in the Job-resource is for executing a script on the -remote machine (the machine to be backed up). (Note, this is possible as mentioned -above by using {\bf ClientRunBeforJob} and {\bf ClientRunAfterJob}). -It could be useful to execute -scripts on the remote machine e.g. for stopping databases or other services -while doing the backup. (Of course I have to start the services again when the -backup has finished) I found the following solution: Bacula could execute -scripts on the remote machine by using ssh. The authentication is done -automatically using a private key. First you have to generate a keypair. I've -done this by: - -\footnotesize -\begin{verbatim} -ssh-keygen -b 4096 -t dsa -f Bacula_key -\end{verbatim} -\normalsize - -This statement may take a little time to run. It creates a public/private key -pair with no passphrase. You could save the keys in /etc/bacula. Now you have -two new files : Bacula\_key which contains the private key and Bacula\_key.pub -which contains the public key. - -Now you have to append the Bacula\_key.pub file to the file authorized\_keys -in the \textbackslash{}root\textbackslash{}.ssh directory of the remote -machine. Then you have to add (or uncomment) the line - -\footnotesize -\begin{verbatim} -AuthorizedKeysFile %h/.ssh/authorized_keys -\end{verbatim} -\normalsize - -to the sshd\_config file on the remote machine. Where the \%h stands for the -home-directory of the user (root in this case). - -Assuming that your sshd is already running on the remote machine, you can now -enter the following on the machine where Bacula runs: - -\footnotesize -\begin{verbatim} -ssh -i Bacula_key -l root "ls -la" -\end{verbatim} -\normalsize - -This should execute the "ls -la" command on the remote machine. - -Now you could add lines like the following to your Director's conf file: - -\footnotesize -\begin{verbatim} -... -Run Before Job = ssh -i /etc/bacula/Bacula_key 192.168.1.1 \ - "/etc/init.d/database stop" -Run After Job = ssh -i /etc/bacula/Bacula_key 192.168.1.1 \ - "/etc/init.d/database start" -... -\end{verbatim} -\normalsize - -Even though Bacula version 1.32 and later has a ClientRunBeforeJob, the ssh method still -could be useful for updating all the Bacula clients on several remote machines -in a single script. - -\section{Recycling All Your Volumes} -\label{recycle} -\index[general]{Recycling All Your Volumes } -\index[general]{Volumes!Recycling All Your } - -This tip comes from Phil Stracchino. - -If you decide to blow away your catalog and start over, the simplest way to -re-add all your prelabeled tapes with a minimum of fuss (provided you don't -care about the data on the tapes) is to add the tape labels using the console -{\bf add} command, then go into the catalog and manually set the VolStatus of -every tape to {\bf Recycle}. - -The SQL command to do this is very simple, either use your vendor's -command line interface (mysql, postgres, sqlite, ...) or use the sql -command in the Bacula console: - -\footnotesize -\begin{verbatim} -update Media set VolStatus='Recycle'; -\end{verbatim} -\normalsize - -Bacula will then ignore the data already stored on the tapes and just re-use -each tape without further objection. - -\section{Backing up ACLs on ext3 or XFS filesystems} -\label{ACLs} -\index[general]{Filesystems!Backing up ACLs on ext3 or XFS } -\index[general]{Backing up ACLs on ext3 or XFS filesystems } - -This tip comes from Volker Sauer. - -Note, this tip was given prior to implementation of ACLs in Bacula (version -1.34.5). It is left here because dumping/displaying ACLs can still be useful -in testing/verifying that Bacula is backing up and restoring your ACLs -properly. Please see the -\ilink{aclsupport}{ACLSupport} FileSet option in the -configuration chapter of this manual. - -For example, you could dump the ACLs to a file with a script similar to the -following: - -\footnotesize -\begin{verbatim} -#!/bin/sh -BACKUP_DIRS="/foo /bar" -STORE_ACL=/root/acl-backup -umask 077 -for i in $BACKUP_DIRS; do - cd $i /usr/bin/getfacl -R --skip-base .>$STORE_ACL/${i//\//_} -done -\end{verbatim} -\normalsize - -Then use Bacula to backup {\bf /root/acl-backup}. - -The ACLs could be restored using Bacula to the {\bf /root/acl-backup} file, -then restored to your system using: - -\footnotesize -\begin{verbatim} -setfacl --restore/root/acl-backup -\end{verbatim} -\normalsize - -\section{Total Automation of Bacula Tape Handling} -\label{automate} -\index[general]{Handling!Total Automation of Bacula Tape } -\index[general]{Total Automation of Bacula Tape Handling } - -This tip was provided by Alexander Kuehn. - -\elink{Bacula}{http://www.bacula.org/} is a really nice backup program except -that the manual tape changing requires user interaction with the bacula -console. - -Fortunately I can fix this. -NOTE!!! This suggestion applies for people who do *NOT* have tape autochangers -and must change tapes manually.!!!!! - -Bacula supports a variety of tape changers through the use of mtx-changer -scripts/programs. This highly flexible approach allowed me to create -\elink{this shell script}{http://www.bacula.org/en/rel-manual/mtx-changer.txt} which does the following: -% TODO: We need to include this in book appendix and point to it. -% TODO: -Whenever a new tape is required it sends a mail to the operator to insert the -new tape. Then it waits until a tape has been inserted, sends a mail again to -say thank you and let's bacula continue its backup. -So you can schedule and run backups without ever having to log on or see the -console. -To make the whole thing work you need to create a Device resource which looks -something like this ("Archive Device", "Maximum Changer Wait", "Media -Type" and "Label media" may have different values): - -\footnotesize -\begin{verbatim} -Device { - Name=DDS3 - Archive Device = # use yours not mine! ;)/dev/nsa0 - Changer Device = # not really required/dev/nsa0 - Changer Command = "# use this (maybe change the path)! - /usr/local/bin/mtx-changer %o %a %S" - Maximum Changer Wait = 3d # 3 days in seconds - AutomaticMount = yes; # mount on start - AlwaysOpen = yes; # keep device locked - Media Type = DDS3 # it's just a name - RemovableMedia = yes; # - Offline On Unmount = Yes; # keep this too - Label media = Yes; # -} -\end{verbatim} -\normalsize - -As the script has to emulate the complete wisdom of a mtx-changer it has an -internal "database" containing where which tape is stored, you can see this on -the following line: - -\footnotesize -\begin{verbatim} -labels="VOL-0001 VOL-0002 VOL-0003 VOL-0004 VOL-0005 VOL-0006 -VOL-0007 VOL-0008 VOL-0009 VOL-0010 VOL-0011 VOL-0012" -\end{verbatim} -\normalsize - -The above should be all on one line, and it effectively tells Bacula that -volume "VOL-0001" is located in slot 1 (which is our lowest slot), that -volume "VOL-0002" is located in slot 2 and so on.. -The script also maintains a logfile (/var/log/mtx.log) where you can monitor -its operation. - -\section{Running Concurrent Jobs} -\label{ConcurrentJobs} -\index[general]{Jobs!Running Concurrent} -\index[general]{Running Concurrent Jobs} -\index[general]{Concurrent Jobs} - -Bacula can run multiple concurrent jobs, but the default configuration files -do not enable it. Using the {\bf Maximum Concurrent Jobs} directive, you -can configure how many and which jobs can be run simultaneously. -The Director's default value for {\bf Maximum Concurrent Jobs} is "1". - -To initially setup concurrent jobs you need to define {\bf Maximum Concurrent Jobs} in -the Director's configuration file (bacula-dir.conf) in the -Director, Job, Client, and Storage resources. - -Additionally the File daemon, and the Storage daemon each have their own -{\bf Maximum Concurrent Jobs} directive that sets the overall maximum -number of concurrent jobs the daemon will run. The default for both the -File daemon and the Storage daemon is "20". - -For example, if you want two different jobs to run simultaneously backing up -the same Client to the same Storage device, they will run concurrently only if -you have set {\bf Maximum Concurrent Jobs} greater than one in the Director -resource, the Client resource, and the Storage resource in bacula-dir.conf. - -We recommend that you read the \ilink{Data -Spooling}{SpoolingChapter} of this manual first, then test your multiple -concurrent backup including restore testing before you put it into -production. - -Below is a super stripped down bacula-dir.conf file showing you the four -places where the the file must be modified to allow the same job {\bf -NightlySave} to run up to four times concurrently. The change to the Job -resource is not necessary if you want different Jobs to run at the same time, -which is the normal case. - -\footnotesize -\begin{verbatim} -# -# Bacula Director Configuration file -- bacula-dir.conf -# -Director { - Name = rufus-dir - Maximum Concurrent Jobs = 4 - ... -} -Job { - Name = "NightlySave" - Maximum Concurrent Jobs = 4 - Client = rufus-fd - Storage = File - ... -} -Client { - Name = rufus-fd - Maximum Concurrent Jobs = 4 - ... -} -Storage { - Name = File - Maximum Concurrent Jobs = 4 - ... -} -\end{verbatim} -\normalsize