manuals/en/developers manuals/en/install manuals/en/problems \
manuals/en/utility
+fr_dirs = manuals/fr/catalog manuals/fr/concepts manuals/fr/console \
+ manuals/fr/developers manuals/fr/install manuals/fr/problems \
+ manuals/fr/utility
+
+
DIST = Makefile.in
#-------------------------------------------------------------------------
(cd bacula-web; make)
@echo "All manuals built ..."
+french:
+ @for I in ${fr_dirs}; \
+ do (cd $$I; echo "==>Entering directory `pwd`"; \
+ $(MAKE) $@ || (echo ""; echo ""; echo " ====== Error in `pwd` ======"; \
+ echo ""; echo "";)); \
+ done
configure: autoconf/configure.in autoconf/aclocal.m4 autoconf/acconfig.h
cd $(srcdir);
clean:
$(RMF) *~ 1 2 3 bacula-doc*.tar.gz
(cd manual-de; make clean)
- (cd manual-fr; make clean)
(cd bacula-web; make clean)
- @for I in ${en_dirs}; \
+ @for I in ${en_dirs} ${fr_dirs}; \
do (cd $$I; echo "==>Entering directory `pwd`"; ${MAKE} $@ || exit 1); done
$(RMF) -rf autom4te.cache bacula-doc-* config.log config.out
$(RMF) -f config.status kernsconfig
(cd manual-de; make distclean)
- (cd manual-fr; make distclean)
(cd bacula-web; make distclean)
- @for I in ${en_dirs}; \
+ @for I in ${en_dirs} ${fr_dirs}; \
do (cd $$I; echo "==>Entering directory `pwd`"; ${MAKE} $@ || exit 1); done
manuals/en/utility/Makefile \
manuals/en/utility/update_version \
manuals/en/utility/version.tex \
+ manuals/fr/catalog/Makefile \
+ manuals/fr/catalog/update_version \
+ manuals/fr/catalog/version.tex \
+ manuals/fr/concepts/Makefile \
+ manuals/fr/concepts/update_version \
+ manuals/fr/concepts/version.tex \
+ manuals/fr/console/Makefile \
+ manuals/fr/console/update_version \
+ manuals/fr/console/version.tex \
+ manuals/fr/developers/Makefile \
+ manuals/fr/developers/update_version \
+ manuals/fr/developers/version.tex \
+ manuals/fr/install/Makefile \
+ manuals/fr/install/update_version \
+ manuals/fr/install/version.tex \
+ manuals/fr/problems/Makefile \
+ manuals/fr/problems/update_version \
+ manuals/fr/problems/version.tex \
+ manuals/fr/utility/Makefile \
+ manuals/fr/utility/update_version \
+ manuals/fr/utility/version.tex \
manual-de/Makefile \
manual-de/version.tex \
manual-de/update_version \
- manual-fr/Makefile \
- manual-fr/version.tex \
- manual-fr/update_version \
bacula-web/Makefile \
bacula-web/version.tex \
$PFILES ],
chmod 766 manuals/en/install/update_version
chmod 766 manuals/en/problems/update_version
chmod 766 manuals/en/utility/update_version
-chmod 766 manual-fr/update_version
+chmod 766 manuals/fr/catalog/update_version
+chmod 766 manuals/fr/concepts/update_version
+chmod 766 manuals/fr/console/update_version
+chmod 766 manuals/fr/developers/update_version
+chmod 766 manuals/fr/install/update_version
+chmod 766 manuals/fr/problems/update_version
+chmod 766 manuals/fr/utility/update_version
chmod 766 manual-de/update_version
echo "
- ac_config_files="$ac_config_files autoconf/Make.common Makefile manuals/en/catalog/Makefile manuals/en/catalog/update_version manuals/en/catalog/version.tex manuals/en/concepts/Makefile manuals/en/concepts/update_version manuals/en/concepts/version.tex manuals/en/console/Makefile manuals/en/console/update_version manuals/en/console/version.tex manuals/en/developers/Makefile manuals/en/developers/update_version manuals/en/developers/version.tex manuals/en/install/Makefile manuals/en/install/update_version manuals/en/install/version.tex manuals/en/problems/Makefile manuals/en/problems/update_version manuals/en/problems/version.tex manuals/en/utility/Makefile manuals/en/utility/update_version manuals/en/utility/version.tex manual-de/Makefile manual-de/version.tex manual-de/update_version manual-fr/Makefile manual-fr/version.tex manual-fr/update_version bacula-web/Makefile bacula-web/version.tex $PFILES"
+ ac_config_files="$ac_config_files autoconf/Make.common Makefile manuals/en/catalog/Makefile manuals/en/catalog/update_version manuals/en/catalog/version.tex manuals/en/concepts/Makefile manuals/en/concepts/update_version manuals/en/concepts/version.tex manuals/en/console/Makefile manuals/en/console/update_version manuals/en/console/version.tex manuals/en/developers/Makefile manuals/en/developers/update_version manuals/en/developers/version.tex manuals/en/install/Makefile manuals/en/install/update_version manuals/en/install/version.tex manuals/en/problems/Makefile manuals/en/problems/update_version manuals/en/problems/version.tex manuals/en/utility/Makefile manuals/en/utility/update_version manuals/en/utility/version.tex manuals/fr/catalog/Makefile manuals/fr/catalog/update_version manuals/fr/catalog/version.tex manuals/fr/concepts/Makefile manuals/fr/concepts/update_version manuals/fr/concepts/version.tex manuals/fr/console/Makefile manuals/fr/console/update_version manuals/fr/console/version.tex manuals/fr/developers/Makefile manuals/fr/developers/update_version manuals/fr/developers/version.tex manuals/fr/install/Makefile manuals/fr/install/update_version manuals/fr/install/version.tex manuals/fr/problems/Makefile manuals/fr/problems/update_version manuals/fr/problems/version.tex manuals/fr/utility/Makefile manuals/fr/utility/update_version manuals/fr/utility/version.tex manual-de/Makefile manual-de/version.tex manual-de/update_version bacula-web/Makefile bacula-web/version.tex $PFILES"
ac_config_commands="$ac_config_commands default"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
"manuals/en/utility/Makefile" ) CONFIG_FILES="$CONFIG_FILES manuals/en/utility/Makefile" ;;
"manuals/en/utility/update_version" ) CONFIG_FILES="$CONFIG_FILES manuals/en/utility/update_version" ;;
"manuals/en/utility/version.tex" ) CONFIG_FILES="$CONFIG_FILES manuals/en/utility/version.tex" ;;
+ "manuals/fr/catalog/Makefile" ) CONFIG_FILES="$CONFIG_FILES manuals/fr/catalog/Makefile" ;;
+ "manuals/fr/catalog/update_version" ) CONFIG_FILES="$CONFIG_FILES manuals/fr/catalog/update_version" ;;
+ "manuals/fr/catalog/version.tex" ) CONFIG_FILES="$CONFIG_FILES manuals/fr/catalog/version.tex" ;;
+ "manuals/fr/concepts/Makefile" ) CONFIG_FILES="$CONFIG_FILES manuals/fr/concepts/Makefile" ;;
+ "manuals/fr/concepts/update_version" ) CONFIG_FILES="$CONFIG_FILES manuals/fr/concepts/update_version" ;;
+ "manuals/fr/concepts/version.tex" ) CONFIG_FILES="$CONFIG_FILES manuals/fr/concepts/version.tex" ;;
+ "manuals/fr/console/Makefile" ) CONFIG_FILES="$CONFIG_FILES manuals/fr/console/Makefile" ;;
+ "manuals/fr/console/update_version" ) CONFIG_FILES="$CONFIG_FILES manuals/fr/console/update_version" ;;
+ "manuals/fr/console/version.tex" ) CONFIG_FILES="$CONFIG_FILES manuals/fr/console/version.tex" ;;
+ "manuals/fr/developers/Makefile" ) CONFIG_FILES="$CONFIG_FILES manuals/fr/developers/Makefile" ;;
+ "manuals/fr/developers/update_version" ) CONFIG_FILES="$CONFIG_FILES manuals/fr/developers/update_version" ;;
+ "manuals/fr/developers/version.tex" ) CONFIG_FILES="$CONFIG_FILES manuals/fr/developers/version.tex" ;;
+ "manuals/fr/install/Makefile" ) CONFIG_FILES="$CONFIG_FILES manuals/fr/install/Makefile" ;;
+ "manuals/fr/install/update_version" ) CONFIG_FILES="$CONFIG_FILES manuals/fr/install/update_version" ;;
+ "manuals/fr/install/version.tex" ) CONFIG_FILES="$CONFIG_FILES manuals/fr/install/version.tex" ;;
+ "manuals/fr/problems/Makefile" ) CONFIG_FILES="$CONFIG_FILES manuals/fr/problems/Makefile" ;;
+ "manuals/fr/problems/update_version" ) CONFIG_FILES="$CONFIG_FILES manuals/fr/problems/update_version" ;;
+ "manuals/fr/problems/version.tex" ) CONFIG_FILES="$CONFIG_FILES manuals/fr/problems/version.tex" ;;
+ "manuals/fr/utility/Makefile" ) CONFIG_FILES="$CONFIG_FILES manuals/fr/utility/Makefile" ;;
+ "manuals/fr/utility/update_version" ) CONFIG_FILES="$CONFIG_FILES manuals/fr/utility/update_version" ;;
+ "manuals/fr/utility/version.tex" ) CONFIG_FILES="$CONFIG_FILES manuals/fr/utility/version.tex" ;;
"manual-de/Makefile" ) CONFIG_FILES="$CONFIG_FILES manual-de/Makefile" ;;
"manual-de/version.tex" ) CONFIG_FILES="$CONFIG_FILES manual-de/version.tex" ;;
"manual-de/update_version" ) CONFIG_FILES="$CONFIG_FILES manual-de/update_version" ;;
- "manual-fr/Makefile" ) CONFIG_FILES="$CONFIG_FILES manual-fr/Makefile" ;;
- "manual-fr/version.tex" ) CONFIG_FILES="$CONFIG_FILES manual-fr/version.tex" ;;
- "manual-fr/update_version" ) CONFIG_FILES="$CONFIG_FILES manual-fr/update_version" ;;
"bacula-web/Makefile" ) CONFIG_FILES="$CONFIG_FILES bacula-web/Makefile" ;;
"bacula-web/version.tex" ) CONFIG_FILES="$CONFIG_FILES bacula-web/version.tex" ;;
"$PFILES" ) CONFIG_FILES="$CONFIG_FILES $PFILES" ;;
chmod 766 manuals/en/install/update_version
chmod 766 manuals/en/problems/update_version
chmod 766 manuals/en/utility/update_version
-chmod 766 manual-fr/update_version
+chmod 766 manuals/fr/catalog/update_version
+chmod 766 manuals/fr/concepts/update_version
+chmod 766 manuals/fr/console/update_version
+chmod 766 manuals/fr/developers/update_version
+chmod 766 manuals/fr/install/update_version
+chmod 766 manuals/fr/problems/update_version
+chmod 766 manuals/fr/utility/update_version
chmod 766 manual-de/update_version
echo "
+++ /dev/null
-Bonjour,
-
- Je regroupe ici quelques conseils pour les personnes qui souhaitent
- participer a la traduction de la documentation.
-
- * Pour obtenir un acces au CVS, contactez Kern : kern@sibbald.com.
- * Si vous ne connaissez pas CVS, documentez-vous. Ce tutoriel vous
- permettra de demarrer rapidement :
- http://www.gentoo.org/doc/fr/cvs-tutorial.xml
- * IMPORTANT : PAS DE COMMIT EN DEHORS DU REPERTOIRE LATEX-FR !!!
- * Choisissez un fichier du repertoire
- docs/manual-fr correspondant a un chapitre que
- vous avez envie de traduire, verifiez sur cette liste qu'il n'est
- pas affecte a quelqu'un d'autre, et annoncez sur cette liste que
- vous en commencez la traduction.
- * Faites une mise a jour de votre repertoire
- docs/manual-fr en vous placant dans celui-ci et
- en utilisant cvs update.
- * Traduisez directement le fichier .tex, sans vous preoccuper du
- fichier .html correspondant.
- * Vous pouvez a tout moment voir le resultat de votre traduction :
- - le plus rapide : make tex puis xdvi bacula ;
- - pour avoir tout le manuel dans un seul grand fichier html :
- make tex html. Ouvrez le fichier bacula.html avec un navigateur.
- - pour avoir le manuel tel que sur le site web : make tex web,
- puis ouvrez index.html avec un navigateur.
- Il est important de relire votre travail de cette facon avant
- publication pour voir les defauts qui vous ont echappe.
- * Refaites une mise a jour cvs update.
- * Publiez avec commit.
-
- Lorque vous avez un doute sur un point de traduction, n'hesitez pas a
- faire appel a cette liste. Je ne sais pas quelle est la meilleure
- methode pour demander de l'aide, mais je vais essayer ce qui suit :
-
- * Insertion d'un lien interne a la page a l'emplacement du probleme
- rencontre : <p<A NAME="question-1"<bquestion 1</b</A
- * Envoi du lien a la liste : fichier.html#question-1 avec le fichier
- .html attache
-
- Toute relecture commentee est une aide precieuse. Pour etre un document
- de travail utile, la traduction doit etre fidele et agreable a lire, ce
- qui implique relecture, correction des contresens, amelioration des
- tournures, correction orthographiques voire typographiques...
-
- Pour les mots ou expressions dont nous ne trouvons pas d'equivalent
- satisfaisant en francais (exemple : "from bare metal" ou "daemon"),
- le choix est, pour l'instant, de les laisser en anglais en italique.
-
- Les conventions suivantes concernant les relectures et corrections me
- paraissent raisonnables :
-
- * Les corrections orthographiques et typographiques peuvent etre
- faites directement. Il est toutefois courtois d'envoyer un mail au
- traducteur pour lui annoncer les corrections.
- * Les corrections plus profondes : tournures, choix des mots, sens,
- etc doivent faire l'objet d'une conversation avec le traducteur.
-
- Si vous n'avez pas le temps, l'envie, etc d'utiliser cvs et wml, vous
- pouvez malgre tout contribuer en postant vos traduction sur cette liste,
- je me chargerai de les publier.
-
- Si vous avez d'autres idees ou questions, n'hesitez pas...
-
- Cordialement,
- Ludovic Strappazon.
+++ /dev/null
-#
-#
-# Makefile for LaTeX
-#
-# To build everything do
-# make tex
-# make web
-# make html
-# make dvipdf
-#
-# or simply
-#
-# make
-#
-# for rapid development do:
-# make tex
-# make show
-#
-
-IMAGES=../images
-
-first_rule: bacula
-
-bacula: tex web html dvipdf mini-clean
-
-.SUFFIXES: .tex .html
-.PHONY:
-.DONTCARE:
-
-
-tex:
- @./update_version
- @echo "Making version `cat version.tex`"
- @cp -fp ${IMAGES}/hires/*.eps .
- @touch baculai-dir.tex baculai-fd.tex baculai-sd.tex \
- baculai-console.tex baculai-general.tex
- -latex -interaction=batchmode bacula.tex
- makeindex bacula.idx -o bacula.ind 2>/dev/null
- makeindex bacula.ddx -o bacula.dnd >/dev/null 2>/dev/null
- makeindex bacula.fdx -o bacula.fnd >/dev/null 2>/dev/null
- makeindex bacula.sdx -o bacula.snd >/dev/null 2>/dev/null
- makeindex bacula.cdx -o bacula.cnd >/dev/null 2>/dev/null
- -latex -interaction=batchmode bacula.tex
- -latex -interaction=batchmode bimagemgr.tex
-
-pdf:
- @echo "Making pdfm"
- @cp -fp ${IMAGES}/hires/*.eps .
- dvipdfm -p a4 bacula.dvi
- dvipdfm -p a4 bimagemgr.dvi
-
-dvipdf:
- @echo "Making dvi to pdf"
- @cp -fp ${IMAGES}/hires/*.eps .
- dvipdf bacula.dvi bacula.pdf
- dvipdf bimagemgr.dvi bimagemgr.pdf
-
-html:
- @echo " "
- @echo "Making html"
- @cp -fp ${IMAGES}/*.eps .
- @rm -f next.eps next.png prev.eps prev.png up.eps up.png
- @(if [ -f imagename_translations ] ; then \
- ./translate_images.pl --from_meaningful_names bacula.html; \
- fi)
- latex2html -white -no_subdir -split 0 -toc_stars -white -notransparent \
- -init_file latex2html-init.pl bacula >tex.out 2>&1
- ./translate_images.pl --to_meaningful_names bacula.html
- @echo "Done making html"
-
-web:
- @echo "Making web"
- @mkdir -p bacula
- @cp -fp ${IMAGES}/*.eps .
- @rm -f next.eps next.png prev.eps prev.png up.eps up.png
- @cp -fp ${IMAGES}/*.eps *.txt bacula
- @cp -fp ${IMAGES}/*.eps *.txt ${IMAGES}/*.png bacula
- @rm -f bacula/xp-*.png
- @rm -f bacula/next.eps bacula/next.png bacula/prev.eps bacula/prev.png bacula/up.eps bacula/up.png
- @rm -rf bacula/*.html
- latex2html -split 4 -local_icons -t "Bacula User's Guide" -long_titles 4 \
- -toc_stars -contents_in_nav -init_file latex2html-init.pl -white -notransparent bacula >tex.out 2>&1
- ./translate_images.pl --to_meaningful_names bacula/Bacula_Users_Guide.html
- cp -f bacula/Bacula_Freque_Asked_Questi.html bacula/faq.html
- @echo "Done making web"
-show:
- xdvi bacula
-
-texcheck:
- ./check_tex.pl bacula.tex
-
-main_configs:
- pic2graph -density 100 <main_configs.pic >main_configs.png
-
-mini-clean:
- @rm -f 1 2 3 *.tex~
- @rm -f *.gif *.jpg *.eps
- @rm -f *.aux *.cp *.fn *.ky *.log *.pg
- @rm -f *.backup *.ilg *.lof *.lot
- @rm -f *.cdx *.cnd *.ddx *.ddn *.fdx *.fnd *.ind *.sdx *.snd
- @rm -f *.dnd *.old *.out
- @rm -f bacula/*.gif bacula/*.jpg bacula/*.eps
- @rm -f bacula/*.aux bacula/*.cp bacula/*.fn bacula/*.ky bacula/*.log bacula/*.pg
- @rm -f bacula/*.backup bacula/*.ilg bacula/*.lof bacula/*.lot
- @rm -f bacula/*.cdx bacula/*.cnd bacula/*.ddx bacula/*.ddn bacula/*.fdx bacula/*.fnd bacula/*.ind bacula/*.sdx bacula/*.snd
- @rm -f bacula/*.dnd bacula/*.old bacula/*.out
- @rm -f bacula/WARNINGS
-
-
-clean:
- @rm -f 1 2 3 *.tex~
- @rm -f *.png *.gif *.jpg *.eps
- @rm -f *.pdf *.aux *.cp *.fn *.ky *.log *.pg
- @rm -f *.html *.backup *.ps *.dvi *.ilg *.lof *.lot
- @rm -f *.cdx *.cnd *.ddx *.ddn *.fdx *.fnd *.ind *.sdx *.snd
- @rm -f *.dnd imagename_translations
- @rm -f *.old WARNINGS *.out *.toc *.idx
- @rm -f baculai-dir.tex baculai-fd.tex baculai-sd.tex \
- baculai-console.tex baculai-general.tex images.tex
-
-
-distclean:
- @rm -f 1 2 3 *.tex~
- @rm -f *.gif *.jpg *.eps
- @rm -f *.aux *.cp *.fn *.ky *.log *.pg
- @rm -f *.backup *.ps *.dvi *.ilg *.lof *.lot
- @rm -f *.cdx *.cnd *.ddx *.ddn *.fdx *.fnd *.ind *.sdx *.snd
- @rm -f *.dnd imagename_translations
- @rm -f *.old WARNINGS *.out *.toc *.idx
- @rm -f images.pl labels.pl internals.pl
- @rm -f baculai-dir.tex baculai-fd.tex baculai-sd.tex \
- baculai-console.tex baculai-general.tex images.tex
+++ /dev/null
-
-\section*{ANSI and IBM Tape Labels}
-\label{_ChapterStart62}
-\index[general]{ANSI and IBM Tape Labels}
-\index[general]{Labels!Tape}
-\addcontentsline{toc}{section}{ANSI and IBM Tape Labels}
-
-Bacula supports ANSI or IBM tape labels as long as you
-enable it. In fact, with the proper configuration, you can
-force Bacula to require ANSI or IBM labels.
-
-Bacula can create an ANSI or IBM label, but if Check Labels is
-enabled (see below), Bacula will look for an existing label, and
-if it is found, it will keep the label. Consequently, you
-can label the tapes with programs other than Bacula, and Bacula
-will recognize and support them.
-
-Even though Bacula will recognize and write ANSI and IBM labels,
-it always writes its own tape labels as well.
-
-When using ANSI or IBM tape labeling, you must restrict your Volume
-names to a maximum of 6 characters.
-
-If you have labeled your Volumes outside of Bacula, then the
-ANSI/IBM label will be recognized by Bacula only if you have created
-the HDR1 label with {\bf BACULA.DATA} in the Filename field (starting
-with character 5). If Bacula writes the labels, it will use
-this information to recognize the tape as a Bacula tape. This allows
-ANSI/IBM labeled tapes to be used at sites with multiple machines
-and multiple backup programs.
-
-
-\subsection*{Director Pool Directive}
-\addcontentsline{toc}{section}{Director Pool Directive}
-
-\begin{description}
-\item [ Label Type = ANSI | IBM | Bacula]
- This directive is implemented in the Director Pool resource and in the SD Device
- resource. If it is specified in the SD Device resource, it will take
- precedence over the value passed from the Director to the SD. The default
- is Label Type = Bacula.
-\end{description}
-
-\subsection*{Storage Daemon Device Directives}
-\addcontentsline{toc}{section}{Storage Daemon Device Directives}
-
-\begin{description}
-\item [ Label Type = ANSI | IBM | Bacula]
- This directive is implemented in the Director Pool resource and in the SD Device
- resource. If it is specified in the the SD Device resource, it will take
- precedence over the value passed from the Director to the SD.
-
-\item [Check Labels = yes | no]
- This directive is implemented in the the SD Device resource. If you intend
- to read ANSI or IBM labels, this *must* be set. Even if the volume is
- not ANSI labeled, you can set this to yes, and Bacula will check the
- label type. Without this directive set to yes, Bacula will assume that
- labels are of Bacula type and will not check for ANSI or IBM labels.
- In other words, if there is a possibility of Bacula encountering an
- ANSI/IBM label, you must set this to yes.
-\end{description}
+++ /dev/null
-\chapter*{La ressource Autochanger}
-\label{Autochangerres}
-\index[sd]{Autochanger Ressource }
-\index[sd]{Ressource!Autochanger }
-
-La ressource Autochanger supporte les librairies \`a un ou plusieurs
-lecteurs en regroupant une ou plusieurs ressources Device en une
-unit\'e nomm\'ee Autochanger dans Bacula (souvent d\'esign\'ee en tant que
-librairie de bandes par les constructeurs). Si vous poss\'edez une
-librairie, et si vous voulez qu'elle fonctionne correctement, vous
-{\bf devez} avoir une ressource Autochanger dans le fichier de
-configuration de votre Storage Daemon, et les directives Storage
-de votre Director {\bf doivent} se r\'ef\'erer au nom de la ressource
-Autochanger si elles sont suppos\'ees utiliser la librairie. Dans les
-versions ant\'erieures \`a 1.38.0, les directives Storage du Director
-se r\'ef\'eraient directement aux ressources Device qui \'etaient des
-librairies. D\'esormais, ce type de r\'ef\'erence directe ne fonctionne
-plus avec les librairies.
-
-\begin{description}
-\item [Name = \lt{}Autochanger-Name\gt{}]
- \index[sd]{Name}
- Sp\'ecifie le nom de la librairie. Ce nom est utilis\'e dans la
- la d\'efinition de ressource Storage du Director afin de d\'esigner
- la librairie. Cette directive est requise.
-
-\item [Device = \lt{}Device-name1, device-name2, ...\gt{}]
- Sp\'ecifie le nom de la (ou des) ressource(s) Device associ\'ees \`a la
- librairie. Si votre librairie contient plusieurs lecteurs, vous
- devez sp\'ecifier plusieurs noms de ressources Device, chacun d\'esignant
- une ressource Device distincte qui comporte un
- Drive Index correspondant au num\'ero de lecteur. Vous pouvez sp\'ecifier
- plusieurs noms en une seule ligne s\'epar\'es par des virgules ou/et utiliser
- plusieurs fois la directive Device. Cette directive est requise.
-
-\item [Changer Device = {\it name-string}]
- \index[sd]{Changer Device}
- La cha\^ine {\bf name-string} sp\'ecifi\'ee indique le nom du fichier syst\`eme
- d\'esignant la librairie. S'il est sp\'ecifi\'e dans cette ressource, ce nom
- n'est pas requis dans la ressource Device. Le nom \'eventuellement sp\'ecifi\'e
- dans la ressource Device prend le pas sur celui sp\'ecifi\'e dans la ressource
- Autochanger.
-
-\item [Changer Command = {\it name-string}]
- \index[sd]{Changer Command }
- La cha\^ine {\bf name-string} sp\'ecifie un programme externe appel\'e pour
- changer de volume automatiquement \`a la demande de Bacula. La plupart du
- temps, vous renseignerez ce champ avec le script fourni {\bf mtx-changer}
- comme suit. Si cette commande est sp\'ecifi\'ee ici, elle n'a pas besoin de
- l'\^etre dans la ressource Device. Dans le cas o\`u elle le serait dans les deux
- ressources, la sp\'ecification de la ressource Device prendrait le pas sur celle
- de la ressource Autochanger.
-
-\end{description}
-
-Voici un exemple de d\'efinition de ressource Autochanger valide :
-
-\footnotesize
-\begin{verbatim}
-Autochanger {
- Name = "DDS-4-changer"
- Device = DDS-4-1, DDS-4-2, DDS-4-3
- Changer Device = /dev/sg0
- Changer Command = "/etc/bacula/mtx-changer %c %o %S %a %d"
-}
-Device {
- Name = "DDS-4-1"
- Drive Index = 0
- Autochanger = yes
- ...
-}
-Device {
- Name = "DDS-4-2"
- Drive Index = 1
- Autochanger = yes
- ...
-Device {
- Name = "DDS-4-3"
- Drive Index = 2
- Autochanger = yes
- Autoselect = no
- ...
-}
-\end{verbatim}
-\normalsize
-
-Notez l'importance de la directive {\bf Autochanger = yes} dans chaque d\'efinition
-de p\'eriph\'erique appartenant \`a une librairie. Un p\'eriph\'erique ne devrait pas \^etre
-d\'efini comme appartenant \`a plusieurs librairies. Aussi, votre directive Device
-dans la ressource Storage du Director devrait comporter le nom de la ressource
-Autochanger plut\^ot que le nom de l'un des lecteurs.
-
-Si vous avez un lecteur qui appartient physiquement \`a une librairie mais que
-vous ne souhaitez pas que Bacula puisse l'utiliser automatiquement (par exemple,
-si vous voulez le r\'eserver pour les restaurations) vous pouvez utiliser la
-directive :
-
-\footnotesize
-\begin{verbatim}
-Autoselect = no
-\end{verbatim}
-\normalsize
-
-\`a la ressource Device de ce lecteur. Dans ce cas, Bacula ne le s\'electionnera pas
-automatiquement en acc\'edant \`a la librairie. Vous pouvez encore utiliser le lecteur en
-le d\'esignant par son nom de ressource device plut\^ot que par celui de la ressource
-Autochanger. Un exemple d'une telle d\'efinition est montr\'e ci-dessus pour le
-lecteur DDS-4-3, qui ne sera pas s\'electionn\'e si le nom DDS-4-changer est utilis\'e
-dans une ressource Storage, mais le sera si DDS-4-3 est utilis\'e.
+++ /dev/null
-%%
-%%
-
-\chapter*{Support des librairies}
-\label{AutochangersChapter}
-\index[general]{Support!Librairies}
-\index[general]{Autochanger Support }
-\addcontentsline{toc}{section}{Support des librairies}
-
-Bacula supporte les librairies pour les op\'erations de lecture et \'ecriture.
-Plusieurs conditions sont requises pour que Bacula puisse utiliser une librairie.
-Celles-ci sont expliqu\'ees en d\'etail ci-dessous.
-Mais voyons d'abord la liste de ces conditions :
-
-\begin{itemize}
-\item Un script charg\'e de piloter la librairie en accord avec les commandes
- envoy\'ees par Bacula est requis. Nous fournissons un tel script pr\'evu pour fonctionner
- avec le programme {\bf mtx} disponible dans les paquets {\bf depkgs}. ce script ne
- fonctionne qu'avec les librairies \`a un seul lecteur.
-\item Chaque volume \`a utiliser doit \^etre d\'efini dans le catalogue et avoir
- un num\'ero de slot (NDT : emplacement dans la librairie) assign\'e, de sorte
- que Bacula puisse savoir o\`u se trouve le volume dans la librairie. Cet
- enregistrement se fait la plupart du temps gr\^ace \`a la commande {\bf label}.
- Voyez ci-dessous pour plus de d\'etails. Vous devez \'etiqueter manuellement
- vos cartouches avant de pouvoir les utiliser.
-\item Vous devez avoir modifi\'e le fichier de configuration de votre Storage
- Daemon afin que la ressource Device identifie votre p\'eriph\'erique en tant
- que librairie. Quelques autres param\`etres doivent \^etre d\'efinis.
-\item Vous devriez aussi modifier la d\'efinition de ressource Storage dans le
-fichier de configuration du Director en sorte que le slot vous soit automatiquement
-demand\'e lorque vous \'etiquetez un volume.
-\item Si vous n'ex\'ecutez pas le Storage Daemon en tant que root, vous devez
- vous assurer qu'il d\'etient les droits requis pour acc\'eder au lecteur et au
- bras robotis\'e de la librairie.
-\item Vous devez placer la directive {\bf Autochanger = yes} dans la
- ressource Storage de votre fichier bacula-dir.conf, de sorte que vous soyez
- interrog\'e au sujet du slot \`a chaque \'etiquetage de cartouche.
-\end{itemize}
-
-Dans les versions ult\'erieures \`a 1.37, la nouvelle directive
-\ilink{Autochanger resource}{AutochangerRes} permet de grouper les ressources
-Device pour cr\'eer des librairies avec plusieurs lecteurs. Si vous avez une
-librairie, vous devez utiliser cette ressource.
-
-Bacula utilise son propre script {\bf mtx-changer} pour interagir avec un
-programme qui effectue r\'eellement les changement de cartouches. Ainsi,
-{\bf mtx-changer} peut \^etre adapt\'e pour fonctionner avec n'importe quel
-programme de prise en chgarge de librairie. La version actuelle de
-{\bf mtx-changer} fonctionne avec le programme {\bf mtx} . Cependant,
-des utilisateurs de FreeBSD ont r\'ealis\'e un script, disponible dans
-le r\'epertoire {\bf examples/autochangers}, qui permet \`a Bacula de fonctionner
-avec le programme {\bf chio}.
-
-Bacula supporte aussi les librairies \'equip\'ees de lecteurs de codes barres.
-Ce support inclut deux commandes de la console Bacula : {\bf label barcodes}
-et {\bf update slots}. Pour plus de d\'etails au sujet de ces commandes,
-voyez la section "Support des lecteurs de codes barres" plus loin.
-
-Le support des librairies dans Bacula n'inclue pas, pour le moment, la gestion
-du nettoyage des lecteurs, ni celle des bacs de cartouches ou des silos.
-
-Le support des librairies \`a un ou plusieurs lecteurs requiert la ressource
-\ilink{Autochanger resource}{AutochangerRes}.
-
-En principe, si {\bf mtx} fonctionne correctement avec votre librairie, ce
-n'est qu'une question d'adaptation du script {\bf mtx-changer} pour que
-Bacula s'interface correctement avec la librairie. Vous pouvez trouver une
-liste des librairies support\'ees par {\bf mtx} en suivant le lien suivant :
-\elink{http://mtx.opensource-sw.net/compatibility.php}
-{http://mtx.opensource-sw.net/compatibility.php}.
-Le site officiel du projet {\bf mtx} se trouve ici :
-\elink{http://mtx.opensource-sw.net/}{http://mtx.opensource-sw.net/}.
-
-Si vous avez des difficult\'es, veuillez utiliser la commande {\bf auto} du
-programme {\bf btape} pour tester le fonctionnement de votre librairie
-avec Bacula. Lorsque Bacula fonctionne, souvenez vous que pour beaucoup de
-distributions (par exemple FreeBSD, Debian,...), le Storage Daemon est
-ex\'ecut\'e en tant que {\bf bacula.tape} plut\^ot que {\bf root.root}, aussi
-vous devrez vous assurer que le Storage Daemon dispose de droits suffisants pour
-acc\'eder \`a la librairie.
-
-\label{SCSI devices}
-\section*{D\'eterminer vos p\'eriph\'eriques SCSI}
-\index[general]{D\'eterminer!p\'eriph\'eriques SCSI}
-\index[general]{D\'eterminer vos p\'eriph\'eriques SCSI}
-\index[general]{P\'eriph\'eriques}
-\index[general]{p\'eriph\'eriques!SCSI}
-
-Sous Linux, vous pouvez lire le fichier /proc/scsi/scsi :
-
-\footnotesize
-\begin{verbatim}
-cat /proc/scsi/scsi
-\end{verbatim}
-\normalsize
-
-pour conna\^itre vos p\'eriph\'eriques SCSI. Vous pouvez aussi examiner les fichiers
-/proc/scsi/sg/device\_hdr et /proc/scsi/sg/devices :
-
-footnotesize
-\begin{verbatim}
-cat /proc/scsi/sg/device_hdr /proc/scsi/sg/devices
-\end{verbatim}
-\normalsize
-
-pour d\'eterminer comment sp\'ecifier leur nom de p\'eriph\'erique ({\bf /dev/sg0}
-pour le premier, {\bf /dev/sg1} pour le second, ...) au niveau de
-la directive {\bf Changer Device}
-
-Pour des informations plus d\'etaill\'ees sur le sujet, veuillez consulter la
-section \ilink{Linux SCSI Tricks}{SCSITricks} du chapitre sur les tests
-de lecteurs de ce manuel.
-
-Sous FreeBSD, vous disposez de la commande :
-
-\footnotesize
-\begin{verbatim}
-camcontrol devlist
-\end{verbatim}
-\normalsize
-
-pour afficher la liste des p\'eriph\'eriques SCSI ainsi que le {\bf /dev/passn}
-que vous utiliserez pour renseigner la directive {\bf Changer Device}
-
-Assurez-vous que votre Storage Daemon dispose bien des privil\`eges requis
-pour acc\'eder \`a ce p\'eriph\'erique.
-
-L'astuce suivante, destin\'ee aux utilisateurs de FreeBSD, provient de
-Danny Butroyd. Au red\'emarrage, Bacula n'aura PLUS les permissions
-requises pour contr\^oler le p\'eriph\'erique /dev/pass0. Pour vous
-affanchir de cette difficult\'e, \'editez le fichier /etc/devfs.conf et
-ajoutez lui ceci :
-
-\footnotesize
-\begin{verbatim}
-own pass0 root:bacula
-perm pass0 0666
-own nsa0.0 root:bacula
-perm nsa0.0 0666
-\end{verbatim}
-\normalsize
-
-Nous avons ainsi donn\'e au groupe Bacula la permission d'\'ecrire
-sur le p\'eriph\'erique nsa0.0. Pour activer ces modifications, ex\'ecutez :
-/etc/rc.d/devfs restart
-
-Vous n'aurez plus \`a modifier les permissions sur ces p\'eriph\'eriques
-pour que Bacula continue d'utiliser la librairie apr\`es un red\'emarrage.
-
-\label{scripts}
-
-\section{Exemples de scripts}
-\index[general]{Scripts!Exemples }
-\index[general]{Exemples de scripts }
-
-Veuillez lire les sections ci-dessous pour bien comprendre comment
-les librairies fonctionnent avec Bacula. Bien que nous fournissions
-un script {\bf mtx-changer} par d\'efaut, il se peut que votre librairie
-n\'ecessite quelques am\'enagements de ce script. Si vous voulez voir des
-exemples de fichiers de configuration et de scripts, jetez un oeil
-au r\'epertoire \lt{}bacula-src\gt{}/examples/devices o\`u vous
-trouverez un exemple de ressource Device Bacula : {\bf HP-autoloader.conf}
-ainsi que plusieurs scripts {\bf mtx-changer} modifi\'es pour fonctionner
-avec diverses librairies.
-
-\label{Slots}
-
-\section*{Slots}
-\index[general]{Slots }
-
-Pour utiliser convenablement une librairie, Bacula doit savoir quel volume
-se trouve dans quel {\bf slot} de la librairie. Les slots sont les
-emplacements o\`u sont rang\'ees les cartouches lorsqu'elles ne sont pas dans un
-lecteur. Bacula num\'erote ces slots de un jusqu'au nombre de cartouches
-contenues dans la librairie.
-
-Bacula n'utilisera pas automatiquement une cartouche pr\'esente dans la librairie
-si elle ne porte pas d'\'etiquette (label) Bacula et si son num\'ero de slot n'est pas
-r\'ef\'erenc\'e dans le catalogue. Vous devez, \`a l'aide de la console, assigner un
-slot \`a chaque cartouche pr\'esente dans la librairie. Cette information est
-conserv\'ee dans le catalogue avec les autres donn\'ees relatives au volume.
-Si le slot n'est pas pr\'ecis\'e, ou s'il est \'egal \`a z\'ero, alors Bacula ne tentera
-pas d'utiliser la librairie, m\^eme si tous les enregistrements de configuration
-sont pr\'esents. De m\^eme, la commande {\bf mount} de la console Bacula ne
-provoque pas non plus l'utilisation de la librairie, mais se contente d'ordonner
-\`a Bacula de lire toute cartouche \'eventuellement pr\'esente dans le lecteur.
-
-Vous pouvez contr\^oler le num\'ero de slot et le drapeau InChanger avec la commande :
-
-\begin{verbatim}
-list Volumes
-\end{verbatim}
-
-dans la console.
-
-\label{mult}
-\section*{Lecteurs multiples}
-\index[general]{Lecteurs!Multiples }
-\index[general]{Lecteurs ultiples}
-
-Certaines librairies comportent plusieurs p\'eriph\'eriques de lecture/\'ectriture
-(lecteurs). La nouvelle \ilink{ressource Autochanger}{AutochangerRes}
-apparue avec la version 1.37 vous permet de grouper des ressources Devices
-(repr\'esentant chacune un lecteur). Le Director est toujours en mesure
-d'adresser directement un lecteur, mais ce faisant, il outrepasse
-le fonctionnement propre aux groupements de lecteurs. Il est pr\'ef\'erable
-que la Ressource Storage du Director d\'efinisse une ressource
-Autochanger, permettant ainsi au Storage Daemon de s'assurer qu'un seul
-lecteur \`a la fois utilise le script mtx-changer, et que deux lecteurs ne tentent
-pas de lire le m\^eme volume.
-
-Les librairies \`a lecteurs multiples n\'ecessitent d'utiliser la directive
-{\bf Drive Index} dans la ressource Device du Storage Daemon. Les
-lecteurs sont num\'erot\'es \`a partir de z\'ero, ce qui constitue la valeur par
-d\'efaut. Pour utiliser un deuxi\`eme lecteur dans une librairie, vous devez
-d\'efinir une seconde ressource Device et lui attribuer le Drive Index 1.
-En g\'en\'eral, le second p\'eriph\'erique aura le m\^eme {\bf Changer Device}
-(canal de contr\^ole) que le premier, mais une {\bf Archive Device} diff\'erente.
-
-Par d\'efaut, les jobs Bacula pr\'ef\`erent \'ecrire sur un volume d\'ej\`a mont\'e.
-Si vous avez une librairie avec plusieurs lecteurs, et si vous souhaitez que
-Bacula \'ecrive sur plusieurs volumes du m\^eme pool en m\^eme temps, vous devez
-d\'esactiver la directive \ilink{Prefer Mounted Volumes} {PreferMountedVolumes}
-dans la ressource Job du Director. Ainsi le Storage Daemon pourra maximiser
-l'usage des lecteurs.
-
-\label{ConfigRecords}
-\subsection*{Directives de la ressource Device}
-\index[general]{Directives!ressource Device}
-\index[general]{Directives de la ressource Device}
-
-La configuration des librairies s'effectue dans Bacula au niveau de le ressource
-Device du Storage Daemon. Quatre directives permettent de d\'efinir l'usage de
-la librairie par Bacula : {\bf Autochanger}, {\bf Changer Device},
-{\bf Changer Command} et {\bf Maximum Changer Wait}
-
-Ces quatre directives sont d\'ecrites en d\'etail ci-dessous. Notez cependant
-que les directives {\bf Changer Device} et {\bf Changer Command} ne sont pas
-requises dans la ressource Device si elles figurent dans la ressource
-{\bf Autochanger}.
-
-\begin{description}
-
-\item [Autochanger = {\it Yes|No} ]
- \index[sd]{Autochanger}
- La directive {\bf Autochanger} stipule que le p\'eriph\'erique ainsi d\'efini est, ou
- n'est pas, une librairie. La valeur par d\'efaut est {\bf no}.
-
-\item [Changer Device = \lt{}device-name\gt{}]
- \index[sd]{Changer Device}
- En plus du nom d'Archive Device, vous devez sp\'ecifier un nom de
- librairie {\bf Changer Device}, ceci parce que la plupart des librairies
- sont control\'ees via un pseudo-fichier diff\'erent de celui utilis\'e pour
- lire et \'ecrire sur les cartouches. Par exemple, sur les syst\`emes Linux,
- on utilise g\'en\'eralement l'interface SCSI g\'en\'erique pour contr\^oler le bras
- de la librairie, soit {\bf Changer Device = /dev/sg0} et l'interface SCSI
- standard pour lire et \'ecrire sur les bandes, soit {\bf Archive Device = /dev/nst0}.
- Notez que certaines librairies \'evolu\'ees localiseront le bras sur
- {\bf /dev/sg1}. De telles librairies ont souvent plusieurs lecteurs et un
- nombre important de cartouches.
-
- Sur FreeBSD, on sp\'ecifiera typiquement {\bf Changer Device = /dev/pass0} ou
- {\bf Changer Device = /dev/passn}.
-
- Sur Solaris, ce sera {\bf Changer Device = /dev/rdsk}.
-
- Assurez vous que votre Storage Daemon poss\`ede les permissions d'acc\'eder \`a
- ce p\'eriph\'erique.
-
-\item [Changer Command = \lt{}command\gt{}]
- \index[sd]{Changer Command }
- Cette directive est utilis\'ee pour sp\'ecifier le programme externe \`a appeler
- et les arguments \`a lui fournir. La commande est suppos\'ee \^etre un programme
- ou un script shell standard qui peut \^etre ex\'ecut\'e par le syst\`eme. cette
- commande est invoqu\'ee chaque fois que Bacula manipule le bras de la librairie.
- Les substitutions suivantes sont effectu\'ees dans la ligne {\bf command}
- avant qu'elle ne soit envoy\'ee au syst\`eme d'exploitation pour ex\'ecution.
-
-\footnotesize
-\begin{verbatim}
- %% = %
- %a = archive device name
- %c = changer device name
- %d = changer drive index base 0
- %f = Client's name
- %j = Job name
- %o = command (loaded, load, or unload)
- %s = Slot base 0
- %S = Slot base 1
- %v = Volume name
-\end{verbatim}
-\normalsize
-
-Voici un exemple d'utilisation de {\bf mtx} avec le script {\bf mtx-changer} :
-
-\footnotesize
-\begin{verbatim}
-Changer Command = "/etc/bacula/mtx-changer %c %o %S %a %d"
-\end{verbatim}
-\normalsize
-
-O\`u vous devrez adapter le chemin {\bf /etc/bacula} pour qu'il co\''incide \`a
-la r\'ealit\'e de votre installation. Les d\'etails des trois commandes (loaded,
-load, unload) utilis\'ees par Bacula ainsi que la sortie qui en est attendue
-sont donn\'es dans la section {\bf Interface entre Bacula et les librairies}
-ci-dessous.
-
-\item [Maximum Changer Wait = \lt{}time\gt{}]
- \index[sd]{Maximum Changer Wait}
- Cette directive sert \`a d\'efinir le d\'elai maximal durant lequel Bacula
- attendra la r\'eponse d'une librairie \`a une commande (par exemple, load).
- La valeur par d\'efaut est 120 secondes. Si votre librairie est lente, vous
- pouvez avoir int\'er\^et \`a allonger ce d\'elai.
-
- Au del\`a de ce d\'elai, le programme de chargement est tu\'e et Bacula
- sollicite l'intervention d'un op\'erateur.
-
-\item [Drive Index = \lt{}number\gt{}]
- \index[sd]{Drive Index}
- Cette directive vous permet d'indiquer \`a Bacula d'utiliser le second
- lecteur et les \'eventuels suivants dans une librairie qui en contient
- plusieurs. Etant donn\'e que les lecteurs sont num\'erot\'es \`a partir de
- z\'ero, le second est d\'efini par :
-
-\footnotesize
-\begin{verbatim}
-Device Index = 1
-\end{verbatim}
-\normalsize
-
-Pour utiliser le second lecteur, vous devez avoir une seconde d\'efinition
-de ressource Device dans le fichier bacula-sd.conf. Voyez la section
-concernant les lecteurs multiples plus haut dans ce chapitre pour plus
-de plus amples informations.
-\end{description}
-
-De plus, pour un fonctionnement correct de la librairie, vous devez d\'efinir
-une ressource Autochanger.
-\input{autochangerres}
-
-\label{example}
-\section{Un exemple de fichier de configuration}
-\index[general]{exemple fichier configuration}
-\index[general]{fichier!exemple configuration}
-
-Les deux ressource suivantes impl\'ementent une librairie :
-
-\footnotesize
-\begin{verbatim}
-Autochanger {
- Name = "Autochanger"
- Device = DDS-4
- Changer Device = /dev/sg0
- Changer Command = "/etc/bacula/mtx-changer %c %o %S %a %d"
-}
-
-Device {
- Name = DDS-4
- Media Type = DDS-4
- Archive Device = /dev/nst0 # Normal archive device
- Autochanger = yes
- LabelMedia = no;
- AutomaticMount = yes;
- AlwaysOpen = yes;
-}
-\end{verbatim}
-\normalsize
-
-o\`u vous adapterez les directives {\bf Archive Device}, {\bf Changer Device} et
-{\bf Changer Command} pour qu'elles conviennent \`a votre syst\`eme.
-
-\section{Un exemple de fichier de configuration multi-lecteurs}
-\index[general]{Multi-lecteurs exemple fichier de configuration}
-
-Les ressources suivantes impl\'ementent une librairie multi-lecteurs :
-
-\footnotesize
-\begin{verbatim}
-Autochanger {
- Name = "Autochanger"
- Device = Drive-1, Drive-2
- Changer Device = /dev/sg0
- Changer Command = "/etc/bacula/mtx-changer %c %o %S %a %d"
-}
-
-Device {
- Name = Drive-1
- Drive Index = 0
- Media Type = DDS-4
- Archive Device = /dev/nst0 # Normal archive device
- Autochanger = yes
- LabelMedia = no;
- AutomaticMount = yes;
- AlwaysOpen = yes;
-}
-
-Device {
- Name = Drive-2
- Drive Index = 1
- Media Type = DDS-4
- Archive Device = /dev/nst1 # Normal archive device
- Autochanger = yes
- LabelMedia = no;
- AutomaticMount = yes;
- AlwaysOpen = yes;
-}
-
-\end{verbatim}
-\normalsize
-
-o\`u vous adapterez les directives {\bf Archive Device}, {\bf Changer Device} et
-{\bf Changer Command} pour qu'elles conviennent \`a votre syst\`eme.
-
-\label{SpecifyingSlots}
-\section{Sp\'ecifier des slots lors de l'\'etiquetage}
-\index[general]{Sp\'ecifier des slots lors de l'\'etiquetage}
-\index[general]{Etiquetage!Sp\'ecifier des slots lors de}
-
-Si vous utilisez la directive {\bf Autochanger = yes} \`a la ressource Storage
-du fichier de configuration de votre Director, la console Bacula vous
-demandera automatiquement le num\'ero de slot lors de l'utilisation des
-commandes {\bf add} ou {\bf label} pour ce p\'eriph\'erique de stockage. Si
-votre script {\bf mtx-changer} est correctement install\'e, Bacula
-chargera la bonne cartouche \`a l'ex\'ecution de la commande {\bf label}.
-
-Vous devez aussi sp\'ecifier {\bf Autochanger = yes} dans la ressource
-Device du Storage Daemon ainsi que nous l'avons d\'ecrit plus haut pour
-que la librairie soit utilis\'ee. Veuillez consulter la section
-\ilink{Ressource Storage}{Autochanger1} dans le chapitre sur la configuration
-du Director pour plus de d\'etails sur ce sujet.
-
-Ainsi, toutes les phases de l'utilisation des cartouches peuvent \^etre
-int\'egralement automatis\'ees. Il est aussi possible de param\'etrer ou
-modifier la valeur du slot en utilisant le sous-menu {\bf Volume Parameters}
-de la commande {\bf update} de la console.
-
-M\^eme si tous les param\`etres ci-dessus sont correctement sp\'ecifi\'es, Bacula ne
-tentera d'acc\'eder \`a la librairie que s'il existe un {\bf slot} non-nul parmi
-les volumes enregistr\'es dans le catalogue.
-
-Si votre librairie est \'equip\'ee d'un lecteur de codes barres, vous pouvez
-\'etiqueter vos volumes l'un apr\`es l'autre en utilisant la commande
-{\bf label barcodes}. Bacula montera et \'etiquettera chaque cartouche porteuse
-d'un code barres contenue dans la librairie avec le nom sp\'ecifi\'e par le
-code barres. L'enregistrement apropri\'e sera aussi cr\'e\'e dans le catalogue.
-Toute cartouche dont le code barres commence par les caract\`eres sp\'ecifi\'es par
-la directive {\bf Cleaning Prefix} est consid\'er\'ee comme une cartouche de
-nettoyage, et ne sera pas \'etiquet\'ee. Par exemple, avec :
-
-\footnotesize
-\begin{verbatim}
-Pool {
- Name ...
- Cleaning Prefix = "CLN"
-}
-\end{verbatim}
-\normalsize
-
-toute cartouche de code barres CLNxxxx sera trait\'ee en tant que cartouche de
-nettoyage, et ne sera pas mont\'ee.
-
-\section{Changer des cartouches}
-\index[general]{Changer des cartouches}
-Si vous voulez ins\'erer ou retirer des cartouches de votre librairie, ou encore
-ex\'ecuter manuellement le programme {\bf mtx}, vous devez "informer" Bacula de ces op\'erations :
-
-\footnotesize
-\begin{verbatim}
-unmount
-(changez vos cartouches et/ou ex\'ecutez mtx)
-mount
-\end{verbatim}
-\normalsize
-
-Si vous omettez de faire "unmount" avant de telles changements, Bacula ne saura plus
-ce qui est dans la librairie, et ce qui n'y est pas, et peut m\^eme cesser de fonctionner
-parce qu'il s'attend \`a avoir le contr\^ole exclusif de la librairie tandis quie le lecteur
-est mont\'e.
-
-Notez que les volumes doivent \^etre pr\'e-\'etiquet\'es pour pouvoir \^etre utilis\'es
-automatiquement dans la librairie lors d'une sauvegarde. Si vous ne disposez
-pas d'un lecteur de code barres, ceci se fait manuellement, ou \`a l'aide d'un
-script.
-
-\label{Magazines}
-\section{Travailler avec plusieurs magasins}
-\index[general]{Travailler avec plusieurs magasins}
-\index[general]{magasins!Travailler avec plusieurs}
-
-Si vous avez plusieurs magasins ou si vous ins\'erez ou retirez des
-cartouches d'un magasin, vous devriez en informer Bacula. Ainsi, Bacula
-sera en mesure d'utiliser pr\'ef\'erentiellement des cartouches qu'il sait \^etre
-dans la librairie, pr\'evenant ainsi des interventions humaines inutiles.
-
-Si votre librairie est \'equip\'ee d'un lecteur de codes barres, il est ais\'e
-de tenir Bacula inform\'e : chaque fois que vous changez un magasin, ajoutez
-ou pr\'elevez une cartouche, faites simplement :
-
-\footnotesize
-\begin{verbatim}
-unmount
-(remove magazine)
-(insert new magazine)
-update slots
-mount
-\end{verbatim}
-\normalsize
-
-dans la console. Avec cette commande, Bacula se renseigne aupr\`es de la librairie
-pour conna\^itre les volumes qu'elle contient. Ceci ne n\'ecessite pas d'acc\'eder
-aux volumes car la librairie se charge de faire son inventaire lors de sa
-mise sous tension. Bacula s'assure alors que tout volume pr\'esent dans la
-librairie est marqu\'e pr\'esent dans le catalogue et que tout volume absent de la
-librairie est marqu\'e absent dans le catalogue. En outre, les num\'eros de slots
-des volumes sont corrig\'es dans le catalogue s'ils sont inexacts.
-
-Si vous ne disposez pas d'un lecteur de codes barres, vous avez plusieurs alternatives :
-
-\begin{enumerate}
-\item Vous pouvez attribuer manuellement les num\'eros de slots et les drapeaux
- InChanger \`a l'aide de la commande {\bf update volume} dans la console. Cette
- m\'ethode est assez p\'enible.
-
-\item Vous pouvez lancer la commande
-
-\footnotesize
-\begin{verbatim}
-update slots scan
-\end{verbatim}
-\normalsize
-
- qui ordonne \`a Bacula de lire l'\'etiquette (label) de chacune des cartouches
- dans la librairie par montage successif, et de mettre \`a jour les informations
- (Slot, drapeau InChanger) dans le catalogue. Cette m\'ethode est efficace, mais
- prend du temps pour charger chaque cartouche et en lire l'\'etiquette.
-
-\item Vous pouvez modifier le script mtx-changer en sorte qu'il simule une
- librairie \'equip\'ee d'un lecteur de codes barres. Voyez ce qui suit pour plus de
- d\'etails
-\end{enumerate}
-
-\label{simulating}
-\section{Simuler un lecteur de codes barres dans votre librairie}
-\index[general]{Librairie!Simuler un lecteur de codes barres dans votre}
-\index[general]{Simuler un lecteur de codes barres dans votre}
-
-Vous pouvez simuler un lecteur de codes barres dans votre librairie en faisant
-en sorte que le script {\bf mtx-changer} retourne les informations que
-retournerait une librairie avec lecteur de codes barres. Pour cela, commentez
-la ligne ci-dessous dans le "case" aux alentours de la ligne 99 :
-
-\footnotesize
-\begin{verbatim}
- ${MTX} -f $ctl status | grep " *Storage Element [0-9]*:.*Full" | awk "{print \$3 \$4}" | sed "s/Full *\(:VolumeTag=\)*//"
-\end{verbatim}
-\normalsize
-
-en ajoutant un \# au d\'ebut de cette ligne (vous pouvez aussi supprimer la ligne).
-A sa place, ajoutez une nouvelle ligne dont le r\^ole est d'imprimer le contenu
-d'un fichier. Par exemple :
-
-\footnotesize
-\begin{verbatim}
-cat /etc/bacula/changer.volumes
-\end{verbatim}
-\normalsize
-
-Le nom du fichier est libre, mais assurez vous d'utiliser un chemin absolu.
-Le contenu du fichier doit avoir le format :
-
-\footnotesize
-\begin{verbatim}
-1:Volume1
-2:Volume2
-3:Volume3
-...
-\end{verbatim}
-\normalsize
-
-O\`u 1, 2, 3 sont les num\'eros de slots et Volume1, Volume2, Volume3 sont les
-noms de volumes dans ces slots. Vous pouvez utiliser plusieurs fichiers
-repr\'esentant les contenus de plusieurs magasins, ainsi, lorsque vous
-changez de magasin, contentez vous de copier le contenu du fichier associ\'e
-dans le fichier {\bf /etc/bacula/changer.volumes}. Il n'est pas utile de
-stopper et red\'emarrer Bacula lors d'un changement de magasins, mettez simplement
-les bonnes valeurs dans le fichier avant de lancer la commande {\bf update slots}.
-Votre librairie appara\^itra \`a Bacula comme \'equip\'ee d'un lecteur de codes barres.
-
-\label{updateslots}
-
-\section{La forme compl\`ete de la commande Update Slots}
-\index[general]{La forme compl\`ete de la commande Update Slots}
-\index[general]{Command!La forme compl\`ete de la commande Update Slots}
-
-Si vous ne changez qu'une cartouche, vous ne voulez peut-\^etre pas passer au crible
-tous vos volumes, c'est pourquoi la commande {\bf update slots} (de m\^eme que la
-commande {\bf update slots scan}) poss\`ede la forme additionnelle :
-
-\footnotesize
-\begin{verbatim}
-update slots=n1,n2,n3-n4, ...
-\end{verbatim}
-\normalsize
-
-o\`u le mot-clef {\bf scan} peut \'eventuellement \^etre ajout\'e. n1, n2, n3-n4
-repr\'esentent respectivement les num\'eros et la plage de slots que vous souhaitez
-mettre \`a jour.
-
-Cette forme est particuli\`erement utile si vous voulez utiliser "scan" (couteux en temps)
-en restrignant l'op\'eration \`a quelques slots.
-
-Par exemple, si vous lancez la commande :
-
-\footnotesize
-\begin{verbatim}
-update slots=1,6 scan
-\end{verbatim}
-\normalsize
-
-Bacula va charger le volume du slot 6, lire son \'etiquette logicielle (label) et
-mettre \`a jour le catalogue, avant de faire de m\^eme avec la cartouche du slot 6.
-Avec la commande :
-
-\footnotesize
-\begin{verbatim}
-update slots=1-3,6
-\end{verbatim}
-\normalsize
-
-il va lire les codes barres des volumes dans les slots 1,2,3 et 6, et faire les
-mises \`a jour approri\'ees dans le catalogue. Si vous n'avez pas de lecteur de
-codes barres, ni n'en simulez comme d\'ecrit plus haut, la commande ci-dessus
-ne trouvera aucun nom de volume et ne fera donc rien.
-
-\label{FreeBSD}
-
-\section{Sp\'ecificit\'es FreeBSD}
-\index[general]{Sp\'ecificit\'es!FreeBSD }
-\index[general]{Sp\'ecificit\'es FreeBSD}
-
-Si vous rencontrez des probl\`emes sur FreeBSD lorsque Bacula tente de s\'electionner
-une cartouche, et si le message est {\bf Device not configured}, c'est
-parce que FreeBSD a fait dispara\^itre le fichier de p\'eriph\'erique {\bf /dev/nsa1}
-lorsqu'il n'y avait plus de cartouche mont\'ee dans le lecteur. Par cons\'equent,
-Bacula ne peut ouvrir le p\'eriph\'erique. Une solution consiste \`a charger une
-cartouche avant le lancement de Bacula. Ce probl\`eme est corrig\'e dans les
-versions de Bacula ult\'erieures \`a 1.32f-5.
-
-Veuillez consulter le chapitre
-\ilink{Tester votre lecteur}{FreeBSDTapes} de ce manuel pour d'{\bf importantes}
-informations sur votre lecteur avant de passer au test de la librairie.
-\label{AutochangerTesting}
-
-\section{Tester la librairie et adapter le script mtx-changer}
-\index[general]{Tester la librairie et adapter le script mtx-changer}
-\index[general]{Script!Tester la librairie et adapter le script mtx-changer}
-
-Avant d'essayer d'utiliser une librairie avec Bacula, il est pr\'ef\'erable de v\'erifier
-"\`a la main" que le bras robotis\'e fonctionne. Pour ce faire, utilisez les commandes
-suivantes (\`a supposer que le script {\bf mtx-changer} est install\'e dans
-{\bf /etc/bacula/mtx-changer}) :
-
-\begin{description}
-
-\item [Assurez vous que Bacula est stopp\'e]
-
-\item [/etc/bacula/mtx-changer \ /dev/sg0 \ list \ 0 \ /dev/nst0 \ 0]
-\index[sd]{mtx-changer list}
-
-Cette commande devrait afficher :
-
-\footnotesize
-\begin{verbatim}
- 1:
- 2:
- 3:
- ...
-
-\end{verbatim}
-\normalsize
-
-soit un num\'ero suivi de deux points pour chacun des slots occup\'e dans la librairie.
-Si votre librairie a un lecteur de codes barres, celui-ci sera affich\'e apr\`es les
-deux points. Si un message d'erreur s'affiche, vous devez r\'esoudre le probl\`eme
-(par exemple, essayez un autre nom de p\'eriph\'erique si {\bf /dev/sg0} n'est pas
-le bon. PAr exemple, sur FreeBSD c'est g\'en\'eralement {\bf /dev/pass2}).
-
-\item [/etc/bacula/mtx-changer \ /dev/sg0 \ slots \ 0 \ /dev/nst0 \ 0]
-\index[sd]{mtx-changer slots}
-
-Cette commande devrait retourner le nombre de slots de votre librairie.
-
-\item [/etc/bacula/mtx-changer \ /dev/sg0 \ unload \ ]
-\index[sd]{mtx-changer unload}
-
-Si une cartouche est charg\'ee, cette commande devrait la d\'echarger.
-
-\item [/etc/bacula/mtx-changer \ /dev/sg0 \ load \ 3 \ /dev/nst0 \ 0 ]
-\index[sd]{mtx-changer load}
-
-Si vous avez une cartouche dans le slot 3, elle sera charg\'ee dans le slot
-de lecture (0).
-
-\item [/etc/bacula/mtx-changer \ /dev/sg0 \ loaded \ 0 \ /dev/nst0 \ 0]
-\index[sd]{mtx-changer loaded}
-
-devrait afficher "3"
-
-\item [/etc/bacula/mtx-changer \ /dev/sg0 \ unload]
-\end{description}
-
-Une fois que toutes les commandes ci-dessus fonctionnent correctement, Bacula
-devrait \^etre capable d'utiliser la librairie, pourvu que votre configuration
-comporte la bonne commande {\bf Changer Command}. A ce stade, il ne peut subsister
-qu'un probl\`eme : si votre librairie requiert un certain d\'elai pour charger la cartouche
-apr\`es l'ex\'ecution de la commande. Imm\'ediatement apr\`es avoir obtenu le retour
-du script {\bf mtx-changer}, Bacula commande le rembobinage et la lecture de la bande.
-S'il obtient une erreur I/O, vous devriez probablement ins\'erer une pause ({\bf sleep 20})
-apr\`es la commande {\bf mtx}, mais prenez soin de terminer le script avec un
-code de sortie 0 en ajoutant {\bf exit 0} apr\`es toute commande que vous ajoutez
-au script, car Bacula contr\^ole le code de sortie du script qui devrait \^etre 0 si
-tout s'est bien pass\'e.
-
-Vous pouvez tester si vous avez ou non besoin d'une telle pause en
-ex\'ecutant le script suivant :
-
-\footnotesize
-\begin{verbatim}
-#!/bin/sh
-/etc/bacula/mtx-changer /dev/sg0 unload
-/etc/bacula/mtx-changer /dev/sg0 load 3
-mt -f /dev/st0 rewind
-mt -f /dev/st0 weof
-\end{verbatim}
-\normalsize
-
-S'il fonctionne correctement, vous n'\^etes sans doute pas concern\'e par ce
-probl\`eme. Sinon, commencez par ajouter {\bf sleep 30} voire {\bf sleep 60}
-juste apr\`es la commande "/etc/bacula/mtx-changer /dev/sg0 load 3". Si
-\c{c}a marche, vous pouvez alors int\'egrer cette pause dans le script
-{\bf mtx-changer} afin qu'elle soit effective lorsque Bacula est ex\'ecut\'e.
-
-Quelques rares librairies exigent l'\'ejection de la cartouche avant de pouvoir
-la d\'echarger. Dan ce cas, la commande /etc/bacula/mtx-changer /dev/sg0 load 3
-ne fonctionne jamais, quel que soit la dur\'ee de la pause. Si vous pensez
-avoir ce probl\`eme, ins\'erez une commande "eject" juste avant la commande
-/etc/bacula/mtx-changer /dev/sg0 unload :
-
-\footnotesize
-\begin{verbatim}
-#!/bin/sh
-/etc/bacula/mtx-changer /dev/sg0 unload
-mt -f /dev/st0 offline
-/etc/bacula/mtx-changer /dev/sg0 load 3
-mt -f /dev/st0 rewind
-mt -f /dev/st0 weof
-\end{verbatim}
-\normalsize
-
-Naturellement, si vous avez besoin de la commande {\bf offline}, vous devriez
-l'int\'egrer au script mtx-changer, en n'oubliant pas de pr\'eserver le code de
-sortie du script par l'ajout de {\bf exit 0}.
-
-Comme indiqu\'e pr\'ec\'edemment, plusieurs scripts qui impl\'ementent ces fonctions
-sont regroup\'es dans {\bf \lt{}bacula-source\gt{}/examples/devices}, ils
-peuvent vous inspirer pour faire en sorte que le votre fonctionne.
-
-Si Bacula affiche "Rewind error on /dev/nst0. ERR=Input/output error." vous
-avez probablement besoin d'accro\^itre la pause dans le script {\bf mtx-changer}
-
-\label{using}
-
-\section{Utiliser la librairie}
-\index[general]{Utiliser la librairie}
-\index[general]{Librairie!Utiliser la }
-
-Supposons que vous ayez convenablement d\'efini les directives Device du
-Storage Daemon, et que vous ayez ajout\'e la directive {\bf Autochanger = yes}
-dans la ressource Storage de votre fichier bacula-dir.conf.
-
-Maintenant, alimentez votre librairie avec quelques cartouches vierges.
-
-Que faire pour que Bacula acc\`ede \`a ces cartouches ?
-
-Une strat\'egie consiste \`a pr\'e-\'etiqueter chacune des cartouches. Pour cela,
-d\'emarrez Bacula, puis utilisez la commande {\bf label} dans la console :
-
-\footnotesize
-\begin{verbatim}
-./console
-Connecting to Director rufus:8101
-1000 OK: rufus-dir Version: 1.26 (4 October 2002)
-*label
-\end{verbatim}
-\normalsize
-
-l'affichage devrait \^etre :
-
-\footnotesize
-\begin{verbatim}
-Using default Catalog name=BackupDB DB=bacula
-The defined Storage resources are:
- 1: Autochanger
- 2: File
-Select Storage resource (1-2): 1
-\end{verbatim}
-\normalsize
-
-Choisissez la librairie (choix 1), vous obtenez :
-
-\footnotesize
-\begin{verbatim}
-Enter new Volume name: TestVolume1
-Enter slot (0 for none): 1
-\end{verbatim}
-\normalsize
-
-Ici saisissez {\bf TestVolume1} en guise de nom, et {\bf 1} pour le slot.
-On vous demande alors :
-
-\footnotesize
-\begin{verbatim}
-Defined Pools:
- 1: Default
- 2: File
-Select the Pool (1-2): 1
-\end{verbatim}
-\normalsize
-
-S\'electionnez le pool Default (ce qui est fait automatiquement si vous
-n'avez que celui-l\`a). Bacula poursuit en d\'echargeant toute cartouche
-charg\'ee, en chargeant celle du slot 1 et en l'\'etiquetant. Dans cet exemple,
-le lecteur \'etait vide, il en r\'esulte l'affichage :
-
-\footnotesize
-\begin{verbatim}
-Connecting to Storage daemon Autochanger at localhost:9103 ...
-Sending label command ...
-3903 Issuing autochanger "load slot 1" command.
-3000 OK label. Volume=TestVolume1 Device=/dev/nst0
-Media record for Volume=TestVolume1 successfully created.
-Requesting mount Autochanger ...
-3001 Device /dev/nst0 is mounted with Volume TestVolume1
-You have messages.
-*
-\end{verbatim}
-\normalsize
-
-Vous pouvez continuer \`a \'etiqueter les autres volumes, les messages
-changeront l\'eg\`erement du fait qu'il y aura cette fois une cartouche
-\`a d\'echarger avant de charger la suivante.
-
-Une fois que tous vos volumes sont \'etiquet\'es, Bacula est en mesure de les
-charger lorsqu'il en a besoin.
-
-Pour "voir" votre \'etiquetage, saisissez la commande {\bf list volumes} dans
-la console, vous devriez obtenir quelque chose comme :
-
-\footnotesize
-\begin{verbatim}
-*{\bf list volumes}
-Using default Catalog name=BackupDB DB=bacula
-Defined Pools:
- 1: Default
- 2: File
-Select the Pool (1-2): 1
-+-------+----------+--------+---------+-------+--------+----------+-------+------+
-| MedId | VolName | MedTyp | VolStat | Bites | LstWrt | VolReten | Recyc | Slot |
-+-------+----------+--------+---------+-------+--------+----------+-------+------+
-| 1 | TestVol1 | DDS-4 | Append | 0 | 0 | 30672000 | 0 | 1 |
-| 2 | TestVol2 | DDS-4 | Append | 0 | 0 | 30672000 | 0 | 2 |
-| 3 | TestVol3 | DDS-4 | Append | 0 | 0 | 30672000 | 0 | 3 |
-| ... |
-+-------+----------+--------+---------+-------+--------+----------+-------+------+
-\end{verbatim}
-\normalsize
-
-\label{Barcodes}
-
-\section{Support des codes barres}
-\index[general]{Support!codes barres}
-\index[general]{Support des codes barres}
-
-Bacula utilise les codes barres \`a travers deux commandes de la console :
-{\bf label barcodes} et {\bf update slots}.
-
-La commande {\bf label barcodes} ordonne \`a Bacula de lire tous les codes
-barres de toutes les cartouches pr\'esentes dans la librairie \`a l'aide de la
-commande {\bf mtx-changer} {\bf list}. Les cartouches sont ensuite mont\'ees
-l'une apr\`es l'autre pour \^etre \'etiquet\'e du nom de leur code barres.
-
-La commande {\bf update slots} commence par obtenir du script {\bf mtx-changer}
-la liste des cartouches et de leurs codes barres. Ensuite, il confronte
-chacune des valeurs du catalogues \`a cette liste afin de le mettre \`a jour.
-Notez que si un volume ne figure pas dans le catalogue, il n'y a rien a faire.
-Cette commande est utile pour synchroniser Bacula avec le contenu de la librairie
-si vous avez chang\'e de magasin ou d\'eplac\'e des cartouches.
-
-La directive {\bf Cleaning Prefix} peut \^etre utilis\'ee dans la ressource Pool pour
-d\'efinir un pr\'efixe de nom de volume qui, s'il correspond au code barres d'un volume
-conf\`ere \`a ce volume le statut (VolStatus) {\bf Cleaning}. Ceci \'evite que Bacula
-tente d'\'ecrire sur une cartouche de nettoyage.
-
-\label{interface}
-
-\section{Interface entre Bacula et les librairies}
-\index[general]{Interface!Bacula et les librairies}
-\index[general]{Interface entre Bacula et les librairies}
-
-Bacula appelle le script mtx-changer que vous sp\'ecifiez au niveau de la
-directive {\bf Changer Command}. En principe, ce sera le script {\bf mtx-changer}
-que nous fournissons, mais ce pourrait \^etre n'importe quel programme
-qui impl\'emente les commandes {\bf loaded}, {\bf load}, {\bf unload}, {\bf list},
-et {\bf slots} qu'utilise Bacula. Voici le format sous lequel ces commandes
-doivent retourner les informations :
-
-\footnotesize
-\begin{verbatim}
-- Currently the changer commands used are:
- loaded -- retourne le num\'ero du slot d'origine de la cartouche charg\'ee,
- avec pour base 1 et 0 pour le lecteur.
- load -- charge la cartouche du slot sp\'ecifi\'e dans le lecteur.(notez que certains
- mat\'eriels requi\`erent une pause de 30 secondes apr\`es cette commande)
- unload -- d\'echarge le lecteur (la cartouche retourne dans son slot d'origine).
- list -- retourne une ligne par cartouche pr\'esente dans la librairie
- au format <slot>:<barcode> o\`u {\bf slot} est un entier non-nul
- repr\'esentant le num\'ero du slot, et {\bf barcode} est le code barres,
- s'il existe et si la librairie le prend en charge, associ\'e \`a la cartouche
- (dans le cas contraire, le champ "barcode" est laiss\'e blanc.
- slots -- retourne le nombre total de slots dans la librairie.
-\end{verbatim}
-\normalsize
-
-Bacula contr\^ole le code de sortie du programme appel\'e. Si ce code est 0, les
-informations sont accept\'ees. Dans le cas contraire, elles sont ignor\'ees
-et le lecteur est trait\'e comme s'il n'\'etait pas dans une librairie.
+++ /dev/null
-%%
-%%
-%% The following characters must be preceded by a backslash
-%% to be entered as printable characters:
-%%
-%% # $ % & ~ _ ^ \ { }
-%%
-
-\subsection*{bimagemgr}
-\label{bimagemgr}
-\index[general]{Bimagemgr }
-\addcontentsline{toc}{subsection}{bimagemgr}
-
-{\bf bimagemgr} is a utility for those who backup to disk volumes in order to
-commit them to CDR disk, rather than tapes. It is a web based interface
-written in Perl and is used to monitor when a volume file needs to be burned to
-disk. It requires:
-
-\begin{itemize}
-\item A web server running on the bacula server
-\item A CD recorder installed and configured on the bacula server
-\item The cdrtools package installed on the bacula server.
-\item perl, perl-DBI module, and either DBD-MySQL DBD-SQLite or DBD-PostgreSQL modules
- \end{itemize}
-
-DVD burning is not supported by {\bf bimagemgr} at this
-time, but both are planned for future releases.
-
-\subsubsection*{bimagemgr installation}
-\index[general]{bimagemgr!Installation }
-\index[general]{bimagemgr Installation }
-\addcontentsline{toc}{subsubsection}{bimagemgr Installation}
-
-Installation from tarball:
-1. Examine the Makefile and adjust it to your configuration if needed.
-2. Edit config.pm to fit your configuration.
-3. Do 'make install' as root.
-4. Edit httpd.conf and change the Timeout value. The web server must not time
-out and close the connection before the burn process is finished. The exact
-value needed may vary depending upon your cd recorder speed and whether you are
-burning on the bacula server on on another machine across your network. In my
-case I set it to 1000 seconds. Restart httpd.
-5. Make sure that cdrecord is setuid root.
-
-Installation from rpm package:
-1. Install the rpm package for your platform.
-2. Edit /cgi-bin/config.pm to fit your configuration.
-3. Edit httpd.conf and change the Timeout value. The web server must not time
-out and close the connection before the burn process is finished. The exact
-value needed may vary depending upon your cd recorder speed and whether you are
-burning on the bacula server on on another machine across your network. In my
-case I set it to 1000 seconds. Restart httpd.
-4. Make sure that cdrecord is setuid root.
-
-For bacula systems less than 1.36:
-1. Edit the configuration section of config.pm to fit your configuration.
-2. Run /etc/bacula/create\_cdimage\_table.pl from a console on your bacula
-server (as root) to add the CDImage table to your bacula database.
-
-Accessing the Volume files:
-The Volume files by default have permissions 640 and can only be read by root.
-The recommended approach to this is as follows (and only works if bimagemgr and
-apache are running on the same host as bacula.
-
-For bacula-1.34 or 1.36 installed from tarball -
-1. Create a new user group bacula and add the user apache to the group for
-Red Hat or Mandrake systems. For SuSE systems add the user wwwrun to the
-bacula group.
-2. Change ownership of all of your Volume files to root.bacula
-3. Edit the /etc/bacula/bacula startup script and set SD\_USER=root and
-SD\_GROUP=bacula. Restart bacula.
-
-Note: step 3 should also be done in /etc/init.d/bacula-sd but released versions
-of this file prior to 1.36 do not support it. In that case it would be necessary after
-a reboot of the server to execute '/etc/bacula/bacula restart'.
-
-For bacula-1.38 installed from tarball -
-1. Your configure statement should include:
- --with-dir-user=bacula
- --with-dir-group=bacula
- --with-sd-user=bacula
- --with-sd-group=disk
- --with-fd-user=root
- --with-fd-group=bacula
-2. Add the user apache to the bacula group for Red Hat or Mandrake systems.
-For SuSE systems add the user wwwrun to the bacula group.
-3. Check/change ownership of all of your Volume files to root.bacula
-
-For bacula-1.36 or bacula-1.38 installed from rpm -
-1. Add the user apache to the group bacula for Red Hat or Mandrake systems.
-For SuSE systems add the user wwwrun to the bacula group.
-2. Check/change ownership of all of your Volume files to root.bacula
-
-bimagemgr installed from rpm > 1.38.9 will add the web server user to the
-bacula group in a post install script. Be sure to edit the configuration
-information in config.pm after installation of rpm package.
-
-bimagemgr will now be able to read the Volume files but they are still not
-world readable.
-
-If you are running bimagemgr on another host (not recommended) then you will
-need to change the permissions on all of your backup volume files to 644 in
-order to access them via nfs share or other means. This approach should only
-be taken if you are sure of the security of your environment as it exposes
-the backup Volume files to world read.
-
-\subsubsection*{bimagemgr usage}
-\index[general]{bimagemgr!Usage }
-\index[general]{bimagemgr Usage }
-\addcontentsline{toc}{subsubsection}{bimagemgr Usage}
-
-Calling the program in your web browser, e.g. {\tt
-http://localhost/cgi-bin/bimagemgr.pl} will produce a display as shown below
-in Figure 1. The program will query the bacula database and display all volume
-files with the date last written and the date last burned to disk. If a volume
-needs to be burned (last written is newer than last burn date) a "Burn"
-button will be displayed in the rightmost column.
-
-\addcontentsline{lof}{figure}{Bacula CD Image Manager}
-\includegraphics{./bimagemgr1.eps} \\Figure 1
-
-Place a blank CDR disk in your recorder and click the "Burn" button. This will
-cause a pop up window as shown in Figure 2 to display the burn progress.
-
-\addcontentsline{lof}{figure}{Bacula CD Image Burn Progress Window}
-\includegraphics{./bimagemgr2.eps} \\Figure 2
-
-When the burn finishes the pop up window will display the results of cdrecord
-as shown in Figure 3. Close the pop up window and refresh the main window. The
-last burn date will be updated and the "Burn" button for that volume will
-disappear. Should you have a failed burn you can reset the last burn date of
-that volume by clicking its "Reset" link.
-
-\addcontentsline{lof}{figure}{Bacula CD Image Burn Results}
-\includegraphics{./bimagemgr3.eps} \\Figure 3
-
-In the bottom row of the main display window are two more buttons labeled
-"Burn Catalog" and "Blank CDRW". "Burn Catalog" will place a copy of
-your bacula catalog on a disk. If you use CDRW disks rather than CDR then
-"Blank CDRW" allows you to erase the disk before re-burning it. Regularly
-committing your backup volume files and your catalog to disk with {\bf
-bimagemgr} ensures that you can rebuild easily in the event of some disaster
-on the bacula server itself.
+++ /dev/null
-%%
-%%
-
-\section*{The Bootstrap File}
-\label{_ChapterStart43}
-\index[general]{File!Bootstrap }
-\index[general]{Bootstrap File }
-\addcontentsline{toc}{section}{Bootstrap File}
-
-The information in this chapter is provided so that you may either create your
-own bootstrap files, or so that you can edit a bootstrap file produced by {\bf
-Bacula}. However, normally the bootstrap file will be automatically created
-for you during the
-\ilink{restore}{_ChapterStart13} command in the Console program, or
-by using a
-\ilink{ Write Bootstrap}{writebootstrap} record in your Backup
-Jobs, and thus you will never need to know the details of this file.
-
-The {\bf bootstrap} file contains ASCII information that permits precise
-specification of what files should be restored. It is a relatively compact
-form of specifying the information, is human readable, and can be edited with
-any text editor.
-
-\subsection*{File Format}
-\index[general]{Format!File }
-\index[general]{File Format }
-\addcontentsline{toc}{subsection}{File Format}
-
-The general format of a {\bf bootstrap} file is:
-
-{\bf \lt{}keyword\gt{}= \lt{}value\gt{}}
-
-Where each {\bf keyword} and the {\bf value} specify which files to restore.
-More precisely the {\bf keyword} and their {\bf values} serve to limit which
-files will be restored and thus act as a filter. The absence of a keyword
-means that all records will be accepted.
-
-Blank lines and lines beginning with a pound sign (\#) in the bootstrap file
-are ignored.
-
-There are keywords which permit filtering by Volume, Client, Job, FileIndex,
-Session Id, Session Time, ...
-
-The more keywords that are specified, the more selective the specification of
-which files to restore will be. In fact, each keyword is {\bf AND}ed with
-other keywords that may be present.
-
-For example,
-
-\footnotesize
-\begin{verbatim}
-Volume = Test-001
-VolSessionId = 1
-VolSessionTime = 108927638
-\end{verbatim}
-\normalsize
-
-directs the Storage daemon (or the {\bf bextract} program) to restore only
-those files on Volume Test-001 {\bf AND} having VolumeSessionId equal to one
-{\bf AND} having VolumeSession time equal to 108927638.
-
-The full set of permitted keywords presented in the order in which they are
-matched against the Volume records are:
-
-\begin{description}
-
-\item [Volume]
- \index[fd]{Volume }
- The value field specifies what Volume the following commands apply to. Each
-Volume specification becomes the current Volume, to which all the following
-commands apply until a new current Volume (if any) is specified. If the
-Volume name contains spaces, it should be enclosed in quotes.
-
-\item [Count]
- \index[fd]{Count }
- The value is the total number of files that will be restored for this Volume.
-This allows the Storage daemon to know when to stop reading the Volume.
-
-\item [VolFile]
- \index[fd]{VolFile }
- The value is a file number, a list of file numbers, or a range of file
-numbers to match on the current Volume. The file number represents
-the physical file on the Volume where the data is stored. For a tape volume,
-this record is used to position to the correct starting file, and once the
-tape is past the last specified file, reading will stop.
-
-\item [VolBlock]
- \index[fd]{VolBlock }
- The value is a block number, a list of block numbers, or a range of block
-numbers to match on the current Volume. The block number represents
-the physical block on the Volume where the data is stored. This record is
-currently not used.
-
-\item [VolSessionTime]
- \index[fd]{VolSessionTime }
- The value specifies a Volume Session Time to be matched from the current
-volume.
-
-\item [VolSessionId]
- \index[fd]{VolSessionId }
- The value specifies a VolSessionId, a list of volume session ids, or a range
-of volume session ids to be matched from the current Volume. Each
-VolSessionId and VolSessionTime pair corresponds to a unique Job that is
-backed up on the Volume.
-
-\item [JobId]
- \index[fd]{JobId }
- The value specifies a JobId, list of JobIds, or range of JobIds to be
-selected from the current Volume. Note, the JobId may not be unique if you
-have multiple Directors, or if you have reinitialized your database. The
-JobId filter works only if you do not run multiple simultaneous jobs.
-
-\item [Job]
- \index[fd]{Job }
- The value specifies a Job name or list of Job names to be matched on the
-current Volume. The Job corresponds to a unique VolSessionId and
-VolSessionTime pair. However, the Job is perhaps a bit more readable by
-humans. Standard regular expressions (wildcards) may be used to match Job
-names. The Job filter works only if you do not run multiple simultaneous
-jobs.
-
-\item [Client]
- \index[fd]{Client }
- The value specifies a Client name or list of Clients to will be matched on
-the current Volume. Standard regular expressions (wildcards) may be used to
-match Client names. The Client filter works only if you do not run multiple
-simultaneous jobs.
-
-\item [FileIndex]
- \index[fd]{FileIndex }
- The value specifies a FileIndex, list of FileIndexes, or range of FileIndexes
-to be selected from the current Volume. Each file (data) stored on a Volume
-within a Session has a unique FileIndex. For each Session, the first file
-written is assigned FileIndex equal to one and incremented for each file
-backed up.
-
-This for a given Volume, the triple VolSessionId, VolSessionTime, and
-FileIndex uniquely identifies a file stored on the Volume. Multiple copies of
-the same file may be stored on the same Volume, but for each file, the triple
-VolSessionId, VolSessionTime, and FileIndex will be unique. This triple is
-stored in the Catalog database for each file.
-
-\item [Slot]
- \index[fd]{Slot }
- The value specifies the autochanger slot. There may be only a single {\bf
-Slot} specification for each Volume.
-
-\item [Stream]
- \index[fd]{Stream }
- The value specifies a Stream, a list of Streams, or a range of Streams to be
-selected from the current Volume. Unless you really know what you are doing
-(the internals of {\bf Bacula}, you should avoid this specification.
-
-\item [*JobType]
- \index[fd]{*JobType }
- Not yet implemented.
-
-\item [*JobLevel]
- \index[fd]{*JobLevel }
- Not yet implemented.
-\end{description}
-
-The {\bf Volume} record is a bit special in that it must be the first record.
-The other keyword records may appear in any order and any number following a
-Volume record.
-
-Multiple Volume records may be specified in the same bootstrap file, but each
-one starts a new set of filter criteria for the Volume.
-
-In processing the bootstrap file within the current Volume, each filter
-specified by a keyword is {\bf AND}ed with the next. Thus,
-
-\footnotesize
-\begin{verbatim}
-Volume = Test-01
-Client = "My machine"
-FileIndex = 1
-\end{verbatim}
-\normalsize
-
-will match records on Volume {\bf Test-01} {\bf AND} Client records for {\bf
-My machine} {\bf AND} FileIndex equal to {\bf one}.
-
-Multiple occurrences of the same record are {\bf OR}ed together. Thus,
-
-\footnotesize
-\begin{verbatim}
-Volume = Test-01
-Client = "My machine"
-Client = "Backup machine"
-FileIndex = 1
-\end{verbatim}
-\normalsize
-
-will match records on Volume {\bf Test-01} {\bf AND} (Client records for {\bf
-My machine} {\bf OR} {\bf Backup machine}) {\bf AND} FileIndex equal to {\bf
-one}.
-
-For integer values, you may supply a range or a list, and for all other values
-except Volumes, you may specify a list. A list is equivalent to multiple
-records of the same keyword. For example,
-
-\footnotesize
-\begin{verbatim}
-Volume = Test-01
-Client = "My machine", "Backup machine"
-FileIndex = 1-20, 35
-\end{verbatim}
-\normalsize
-
-will match records on Volume {\bf Test-01} {\bf AND} {\bf (}Client records for
-{\bf My machine} {\bf OR} {\bf Backup machine}{\bf )} {\bf AND} {\bf
-(}FileIndex 1 {\bf OR} 2 {\bf OR} 3 ... {\bf OR} 20 {\bf OR} 35{\bf )}.
-
-As previously mentioned above, there may be multiple Volume records in the
-same bootstrap file. Each new Volume definition begins a new set of filter
-conditions that apply to that Volume and will be {\bf OR}ed with any other
-Volume definitions.
-
-As an example, suppose we query for the current set of tapes to restore all
-files on Client {\bf Rufus} using the {\bf query} command in the console
-program:
-
-\footnotesize
-\begin{verbatim}
-Using default Catalog name=MySQL DB=bacula
-*query
-Available queries:
- 1: List Job totals:
- 2: List where a file is saved:
- 3: List where the most recent copies of a file are saved:
- 4: List total files/bytes by Job:
- 5: List total files/bytes by Volume:
- 6: List last 10 Full Backups for a Client:
- 7: List Volumes used by selected JobId:
- 8: List Volumes to Restore All Files:
-Choose a query (1-8): 8
-Enter Client Name: Rufus
-+-------+------------------+------------+-----------+----------+------------+
-| JobId | StartTime | VolumeName | StartFile | VolSesId | VolSesTime |
-+-------+------------------+------------+-----------+----------+------------+
-| 154 | 2002-05-30 12:08 | test-02 | 0 | 1 | 1022753312 |
-| 202 | 2002-06-15 10:16 | test-02 | 0 | 2 | 1024128917 |
-| 203 | 2002-06-15 11:12 | test-02 | 3 | 1 | 1024132350 |
-| 204 | 2002-06-18 08:11 | test-02 | 4 | 1 | 1024380678 |
-+-------+------------------+------------+-----------+----------+------------+
-\end{verbatim}
-\normalsize
-
-The output shows us that there are four Jobs that must be restored. The first
-one is a Full backup, and the following three are all Incremental backups.
-
-The following bootstrap file will restore those files:
-
-\footnotesize
-\begin{verbatim}
-Volume=test-02
-VolSessionId=1
-VolSessionTime=1022753312
-Volume=test-02
-VolSessionId=2
-VolSessionTime=1024128917
-Volume=test-02
-VolSessionId=1
-VolSessionTime=1024132350
-Volume=test-02
-VolSessionId=1
-VolSessionTime=1024380678
-\end{verbatim}
-\normalsize
-
-As a final example, assume that the initial Full save spanned two Volumes. The
-output from {\bf query} might look like:
-
-\footnotesize
-\begin{verbatim}
-+-------+------------------+------------+-----------+----------+------------+
-| JobId | StartTime | VolumeName | StartFile | VolSesId | VolSesTime |
-+-------+------------------+------------+-----------+----------+------------+
-| 242 | 2002-06-25 16:50 | File0003 | 0 | 1 | 1025016612 |
-| 242 | 2002-06-25 16:50 | File0004 | 0 | 1 | 1025016612 |
-| 243 | 2002-06-25 16:52 | File0005 | 0 | 2 | 1025016612 |
-| 246 | 2002-06-25 19:19 | File0006 | 0 | 2 | 1025025494 |
-+-------+------------------+------------+-----------+----------+------------+
-\end{verbatim}
-\normalsize
-
-and the following bootstrap file would restore those files:
-
-\footnotesize
-\begin{verbatim}
-Volume=File0003
-VolSessionId=1
-VolSessionTime=1025016612
-Volume=File0004
-VolSessionId=1
-VolSessionTime=1025016612
-Volume=File0005
-VolSessionId=2
-VolSessionTime=1025016612
-Volume=File0006
-VolSessionId=2
-VolSessionTime=1025025494
-\end{verbatim}
-\normalsize
-
-\subsection*{Automatic Generation of Bootstrap Files}
-\index[general]{Files!Automatic Generation of Bootstrap }
-\index[general]{Automatic Generation of Bootstrap Files }
-\addcontentsline{toc}{subsection}{Automatic Generation of Bootstrap Files}
-
-One thing that is probably worth knowing: the bootstrap files that are
-generated automatically at the end of the job are not as optimized as those
-generated by the restore command. This is because the ones created at the end
-of the file, contain all files written to the Volume for that job. As a
-consequence, all the files saved to an Incremental or Differential job will be
-restored first by the Full save, then by any Incremental or Differential
-saves.
-
-When the bootstrap file is generated for the restore command, only one copy
-(the most recent) of each file is restored.
-
-So if you have spare cycles on your machine, you could optimize the bootstrap
-files by doing the following:
-
-\footnotesize
-\begin{verbatim}
- ./console
- restore client=xxx select all
- no
- quit
- Backup bootstrap file.
-\end{verbatim}
-\normalsize
-
-The above will not work if you have multiple FileSets because that will be an
-extra prompt. However, the {\bf restore client=xxx select all} builds the
-in-memory tree, selecting everything and creates the bootstrap file.
-
-The {\bf no} answers the {\bf Do you want to run this (yes/mod/no)} question.
-
-\subsection*{A Final Example}
-\index[general]{Example!Final }
-\index[general]{Final Example }
-\addcontentsline{toc}{subsection}{Final Example}
-
-If you want to extract or copy a single Job, you can do it by selecting by
-JobId (code not tested) or better yet, if you know the VolSessionTime and the
-VolSessionId (printed on Job report and in Catalog), specifying this is by far
-the best. Using the VolSessionTime and VolSessionId is the way Bacula does
-restores. A bsr file might look like the following:
-
-\footnotesize
-\begin{verbatim}
-Volume="Vol001"
-VolSessionId=10
-VolSessionTime=1080847820
-\end{verbatim}
-\normalsize
-
-If you know how many files are backed up (on the job report), you can
-enormously speed up the selection by adding (let's assume there are 157
-files):
-
-\footnotesize
-\begin{verbatim}
-FileIndex=1-157
-Count=157
-\end{verbatim}
-\normalsize
-
-Finally, if you know the File number where the Job starts, you can also cause
-bcopy to forward space to the right file without reading every record:
-
-\footnotesize
-\begin{verbatim}
-VolFile=20
-\end{verbatim}
-\normalsize
-
-There is nothing magic or complicated about a BSR file. Parsing it and
-properly applying it within Bacula *is* magic, but you don't need to worry
-about that.
-
-If you want to see a *real* bsr file, simply fire up the {\bf restore} command
-in the console program, select something, then answer no when it prompts to
-run the job. Then look at the file {\bf restore.bsr} in your working
-directory.
+++ /dev/null
-%%
-%%
-
-\section{Bacula Bugs}
-\label{BugsChapter}
-\index[general]{Bacula Bugs }
-\index[general]{Bugs!Bacula }
-
-Well fortunately there are not too many bugs, but thanks to Dan Langille, we
-have a
-\elink{bugs database}{http://bugs.bacula.org} where bugs are reported.
-Generally, when a bug is fixed, a patch for the currently released version will
-be attached to the bug report.
-
-The directory {\bf patches} in the current SVN always contains a list of
-the patches that have been created for the previously released version
-of Bacula. In addition, the file {\bf patches-version-number} in the
-{\bf patches} directory contains a summary of each of the patches.
-
-A "raw" list of the current task list and known issues can be found in {\bf
-kernstodo} in the main Bacula source directory.
+++ /dev/null
-%%
-%%
-
-\section*{Catalog Services}
-\label{_ChapterStart30}
-\index[general]{Services!Catalog }
-\index[general]{Catalog Services }
-\addcontentsline{toc}{section}{Catalog Services}
-
-\subsection*{General}
-\index[general]{General }
-\addcontentsline{toc}{subsection}{General}
-
-This chapter is intended to be a technical discussion of the Catalog services
-and as such is not targeted at end users but rather at developers and system
-administrators that want or need to know more of the working details of {\bf
-Bacula}.
-
-The {\bf Bacula Catalog} services consist of the programs that provide the SQL
-database engine for storage and retrieval of all information concerning files
-that were backed up and their locations on the storage media.
-
-We have investigated the possibility of using the following SQL engines for
-Bacula: Beagle, mSQL, GNU SQL, PostgreSQL, SQLite, Oracle, and MySQL. Each
-presents certain problems with either licensing or maturity. At present, we
-have chosen for development purposes to use MySQL, PostgreSQL and SQLite.
-MySQL was chosen because it is fast, proven to be reliable, widely used, and
-actively being developed. MySQL is released under the GNU GPL license.
-PostgreSQL was chosen because it is a full-featured, very mature database, and
-because Dan Langille did the Bacula driver for it. PostgreSQL is distributed
-under the BSD license. SQLite was chosen because it is small, efficient, and
-can be directly embedded in {\bf Bacula} thus requiring much less effort from
-the system administrator or person building {\bf Bacula}. In our testing
-SQLite has performed very well, and for the functions that we use, it has
-never encountered any errors except that it does not appear to handle
-databases larger than 2GBytes.
-
-The Bacula SQL code has been written in a manner that will allow it to be
-easily modified to support any of the current SQL database systems on the
-market (for example: mSQL, iODBC, unixODBC, Solid, OpenLink ODBC, EasySoft
-ODBC, InterBase, Oracle8, Oracle7, and DB2).
-
-If you do not specify either {\bf \verb{--{with-mysql} or {\bf \verb{--{with-postgresql} or
-{\bf \verb{--{with-sqlite} on the ./configure line, Bacula will use its minimalist
-internal database. This database is kept for build reasons but is no longer
-supported. Bacula {\bf requires} one of the three databases (MySQL,
-PostgreSQL, or SQLite) to run.
-
-\subsubsection*{Filenames and Maximum Filename Length}
-\index[general]{Filenames and Maximum Filename Length }
-\index[general]{Length!Filenames and Maximum Filename }
-\addcontentsline{toc}{subsubsection}{Filenames and Maximum Filename Length}
-
-In general, either MySQL, PostgreSQL or SQLite permit storing arbitrary long
-path names and file names in the catalog database. In practice, there still
-may be one or two places in the Catalog interface code that restrict the
-maximum path length to 512 characters and the maximum file name length to 512
-characters. These restrictions are believed to have been removed. Please note,
-these restrictions apply only to the Catalog database and thus to your ability
-to list online the files saved during any job. All information received and
-stored by the Storage daemon (normally on tape) allows and handles arbitrarily
-long path and filenames.
-
-\subsubsection*{Installing and Configuring MySQL}
-\index[general]{MySQL!Installing and Configuring }
-\index[general]{Installing and Configuring MySQL }
-\addcontentsline{toc}{subsubsection}{Installing and Configuring MySQL}
-
-For the details of installing and configuring MySQL, please see the
-\ilink{Installing and Configuring MySQL}{_ChapterStart} chapter of
-this manual.
-
-\subsubsection*{Installing and Configuring PostgreSQL}
-\index[general]{PostgreSQL!Installing and Configuring }
-\index[general]{Installing and Configuring PostgreSQL }
-\addcontentsline{toc}{subsubsection}{Installing and Configuring PostgreSQL}
-
-For the details of installing and configuring PostgreSQL, please see the
-\ilink{Installing and Configuring PostgreSQL}{_ChapterStart10}
-chapter of this manual.
-
-\subsubsection*{Installing and Configuring SQLite}
-\index[general]{Installing and Configuring SQLite }
-\index[general]{SQLite!Installing and Configuring }
-\addcontentsline{toc}{subsubsection}{Installing and Configuring SQLite}
-
-For the details of installing and configuring SQLite, please see the
-\ilink{Installing and Configuring SQLite}{_ChapterStart33} chapter of
-this manual.
-
-\subsubsection*{Internal Bacula Catalog}
-\index[general]{Catalog!Internal Bacula }
-\index[general]{Internal Bacula Catalog }
-\addcontentsline{toc}{subsubsection}{Internal Bacula Catalog}
-
-Please see the
-\ilink{Internal Bacula Database}{_ChapterStart42} chapter of this
-manual for more details.
-
-\subsubsection*{Database Table Design}
-\index[general]{Design!Database Table }
-\index[general]{Database Table Design }
-\addcontentsline{toc}{subsubsection}{Database Table Design}
-
-All discussions that follow pertain to the MySQL database. The details for the
-PostgreSQL and SQLite databases are essentially identical except for that all
-fields in the SQLite database are stored as ASCII text and some of the
-database creation statements are a bit different. The details of the internal
-Bacula catalog are not discussed here.
-
-Because the Catalog database may contain very large amounts of data for large
-sites, we have made a modest attempt to normalize the data tables to reduce
-redundant information. While reducing the size of the database significantly,
-it does, unfortunately, add some complications to the structures.
-
-In simple terms, the Catalog database must contain a record of all Jobs run by
-Bacula, and for each Job, it must maintain a list of all files saved, with
-their File Attributes (permissions, create date, ...), and the location and
-Media on which the file is stored. This is seemingly a simple task, but it
-represents a huge amount interlinked data. Note: the list of files and their
-attributes is not maintained when using the internal Bacula database. The data
-stored in the File records, which allows the user or administrator to obtain a
-list of all files backed up during a job, is by far the largest volume of
-information put into the Catalog database.
-
-Although the Catalog database has been designed to handle backup data for
-multiple clients, some users may want to maintain multiple databases, one for
-each machine to be backed up. This reduces the risk of confusion of accidental
-restoring a file to the wrong machine as well as reducing the amount of data
-in a single database, thus increasing efficiency and reducing the impact of a
-lost or damaged database.
-
-\subsection*{Sequence of Creation of Records for a Save Job}
-\index[general]{Sequence of Creation of Records for a Save Job }
-\index[general]{Job!Sequence of Creation of Records for a Save }
-\addcontentsline{toc}{subsection}{Sequence of Creation of Records for a Save
-Job}
-
-Start with StartDate, ClientName, Filename, Path, Attributes, MediaName,
-MediaCoordinates. (PartNumber, NumParts). In the steps below, ``Create new''
-means to create a new record whether or not it is unique. ``Create unique''
-means each record in the database should be unique. Thus, one must first
-search to see if the record exists, and only if not should a new one be
-created, otherwise the existing RecordId should be used.
-
-\begin{enumerate}
-\item Create new Job record with StartDate; save JobId
-\item Create unique Media record; save MediaId
-\item Create unique Client record; save ClientId
-\item Create unique Filename record; save FilenameId
-\item Create unique Path record; save PathId
-\item Create unique Attribute record; save AttributeId
- store ClientId, FilenameId, PathId, and Attributes
-\item Create new File record
- store JobId, AttributeId, MediaCoordinates, etc
-\item Repeat steps 4 through 8 for each file
-\item Create a JobMedia record; save MediaId
-\item Update Job record filling in EndDate and other Job statistics
- \end{enumerate}
-
-\subsection*{Database Tables}
-\index[general]{Database Tables }
-\index[general]{Tables!Database }
-\addcontentsline{toc}{subsection}{Database Tables}
-
-\addcontentsline{lot}{table}{Filename Table Layout}
-\begin{longtable}{|l|l|l|}
- \hline
-\multicolumn{3}{|l| }{\bf Filename } \\
- \hline
-\multicolumn{1}{|c| }{\bf Column Name } & \multicolumn{1}{l| }{\bf Data Type }
-& \multicolumn{1}{l| }{\bf Remark } \\
- \hline
-{FilenameId } & {integer } & {Primary Key } \\
- \hline
-{Name } & {Blob } & {Filename }
-\\ \hline
-
-\end{longtable}
-
-The {\bf Filename} table shown above contains the name of each file backed up
-with the path removed. If different directories or machines contain the same
-filename, only one copy will be saved in this table.
-
-\
-
-\addcontentsline{lot}{table}{Path Table Layout}
-\begin{longtable}{|l|l|l|}
- \hline
-\multicolumn{3}{|l| }{\bf Path } \\
- \hline
-\multicolumn{1}{|c| }{\bf Column Name } & \multicolumn{1}{c| }{\bf Data Type
-} & \multicolumn{1}{c| }{\bf Remark } \\
- \hline
-{PathId } & {integer } & {Primary Key } \\
- \hline
-{Path } & {Blob } & {Full Path }
-\\ \hline
-
-\end{longtable}
-
-The {\bf Path} table contains shown above the path or directory names of all
-directories on the system or systems. The filename and any MSDOS disk name are
-stripped off. As with the filename, only one copy of each directory name is
-kept regardless of how many machines or drives have the same directory. These
-path names should be stored in Unix path name format.
-
-Some simple testing on a Linux file system indicates that separating the
-filename and the path may be more complication than is warranted by the space
-savings. For example, this system has a total of 89,097 files, 60,467 of which
-have unique filenames, and there are 4,374 unique paths.
-
-Finding all those files and doing two stats() per file takes an average wall
-clock time of 1 min 35 seconds on a 400MHz machine running RedHat 6.1 Linux.
-
-Finding all those files and putting them directly into a MySQL database with
-the path and filename defined as TEXT, which is variable length up to 65,535
-characters takes 19 mins 31 seconds and creates a 27.6 MByte database.
-
-Doing the same thing, but inserting them into Blob fields with the filename
-indexed on the first 30 characters and the path name indexed on the 255 (max)
-characters takes 5 mins 18 seconds and creates a 5.24 MB database. Rerunning
-the job (with the database already created) takes about 2 mins 50 seconds.
-
-Running the same as the last one (Path and Filename Blob), but Filename
-indexed on the first 30 characters and the Path on the first 50 characters
-(linear search done there after) takes 5 mins on the average and creates a 3.4
-MB database. Rerunning with the data already in the DB takes 3 mins 35
-seconds.
-
-Finally, saving only the full path name rather than splitting the path and the
-file, and indexing it on the first 50 characters takes 6 mins 43 seconds and
-creates a 7.35 MB database.
-
-\
-
-\addcontentsline{lot}{table}{File Table Layout}
-\begin{longtable}{|l|l|l|}
- \hline
-\multicolumn{3}{|l| }{\bf File } \\
- \hline
-\multicolumn{1}{|c| }{\bf Column Name } & \multicolumn{1}{c| }{\bf Data Type
-} & \multicolumn{1}{c| }{\bf Remark } \\
- \hline
-{FileId } & {integer } & {Primary Key } \\
- \hline
-{FileIndex } & {integer } & {The sequential file number in the Job } \\
- \hline
-{JobId } & {integer } & {Link to Job Record } \\
- \hline
-{PathId } & {integer } & {Link to Path Record } \\
- \hline
-{FilenameId } & {integer } & {Link to Filename Record } \\
- \hline
-{MarkId } & {integer } & {Used to mark files during Verify Jobs } \\
- \hline
-{LStat } & {tinyblob } & {File attributes in base64 encoding } \\
- \hline
-{MD5 } & {tinyblob } & {MD5 signature in base64 encoding }
-\\ \hline
-
-\end{longtable}
-
-The {\bf File} table shown above contains one entry for each file backed up by
-Bacula. Thus a file that is backed up multiple times (as is normal) will have
-multiple entries in the File table. This will probably be the table with the
-most number of records. Consequently, it is essential to keep the size of this
-record to an absolute minimum. At the same time, this table must contain all
-the information (or pointers to the information) about the file and where it
-is backed up. Since a file may be backed up many times without having changed,
-the path and filename are stored in separate tables.
-
-This table contains by far the largest amount of information in the Catalog
-database, both from the stand point of number of records, and the stand point
-of total database size. As a consequence, the user must take care to
-periodically reduce the number of File records using the {\bf retention}
-command in the Console program.
-
-\
-
-\addcontentsline{lot}{table}{Job Table Layout}
-\begin{longtable}{|l|l|p{2.5in}|}
- \hline
-\multicolumn{3}{|l| }{\bf Job } \\
- \hline
-\multicolumn{1}{|c| }{\bf Column Name } & \multicolumn{1}{c| }{\bf Data Type
-} & \multicolumn{1}{c| }{\bf Remark } \\
- \hline
-{JobId } & {integer } & {Primary Key } \\
- \hline
-{Job } & {tinyblob } & {Unique Job Name } \\
- \hline
-{Name } & {tinyblob } & {Job Name } \\
- \hline
-{PurgedFiles } & {tinyint } & {Used by Bacula for purging/retention periods
-} \\
- \hline
-{Type } & {binary(1) } & {Job Type: Backup, Copy, Clone, Archive, Migration
-} \\
- \hline
-{Level } & {binary(1) } & {Job Level } \\
- \hline
-{ClientId } & {integer } & {Client index } \\
- \hline
-{JobStatus } & {binary(1) } & {Job Termination Status } \\
- \hline
-{SchedTime } & {datetime } & {Time/date when Job scheduled } \\
- \hline
-{StartTime } & {datetime } & {Time/date when Job started } \\
- \hline
-{EndTime } & {datetime } & {Time/date when Job ended } \\
- \hline
-{JobTDate } & {bigint } & {Start day in Unix format but 64 bits; used for
-Retention period. } \\
- \hline
-{VolSessionId } & {integer } & {Unique Volume Session ID } \\
- \hline
-{VolSessionTime } & {integer } & {Unique Volume Session Time } \\
- \hline
-{JobFiles } & {integer } & {Number of files saved in Job } \\
- \hline
-{JobBytes } & {bigint } & {Number of bytes saved in Job } \\
- \hline
-{JobErrors } & {integer } & {Number of errors during Job } \\
- \hline
-{JobMissingFiles } & {integer } & {Number of files not saved (not yet used) }
-\\
- \hline
-{PoolId } & {integer } & {Link to Pool Record } \\
- \hline
-{FileSetId } & {integer } & {Link to FileSet Record } \\
- \hline
-{PurgedFiles } & {tiny integer } & {Set when all File records purged } \\
- \hline
-{HasBase } & {tiny integer } & {Set when Base Job run }
-\\ \hline
-
-\end{longtable}
-
-The {\bf Job} table contains one record for each Job run by Bacula. Thus
-normally, there will be one per day per machine added to the database. Note,
-the JobId is used to index Job records in the database, and it often is shown
-to the user in the Console program. However, care must be taken with its use
-as it is not unique from database to database. For example, the user may have
-a database for Client data saved on machine Rufus and another database for
-Client data saved on machine Roxie. In this case, the two database will each
-have JobIds that match those in another database. For a unique reference to a
-Job, see Job below.
-
-The Name field of the Job record corresponds to the Name resource record given
-in the Director's configuration file. Thus it is a generic name, and it will
-be normal to find many Jobs (or even all Jobs) with the same Name.
-
-The Job field contains a combination of the Name and the schedule time of the
-Job by the Director. Thus for a given Director, even with multiple Catalog
-databases, the Job will contain a unique name that represents the Job.
-
-For a given Storage daemon, the VolSessionId and VolSessionTime form a unique
-identification of the Job. This will be the case even if multiple Directors
-are using the same Storage daemon.
-
-The Job Type (or simply Type) can have one of the following values:
-
-\addcontentsline{lot}{table}{Job Types}
-\begin{longtable}{|l|l|}
- \hline
-\multicolumn{1}{|c| }{\bf Value } & \multicolumn{1}{c| }{\bf Meaning } \\
- \hline
-{B } & {Backup Job } \\
- \hline
-{V } & {Verify Job } \\
- \hline
-{R } & {Restore Job } \\
- \hline
-{C } & {Console program (not in database) } \\
- \hline
-{D } & {Admin Job } \\
- \hline
-{A } & {Archive Job (not implemented) }
-\\ \hline
-
-\end{longtable}
-
-The JobStatus field specifies how the job terminated, and can be one of the
-following:
-
-\addcontentsline{lot}{table}{Job Statuses}
-\begin{longtable}{|l|l|}
- \hline
-\multicolumn{1}{|c| }{\bf Value } & \multicolumn{1}{c| }{\bf Meaning } \\
- \hline
-{C } & {Created but not yet running } \\
- \hline
-{R } & {Running } \\
- \hline
-{B } & {Blocked } \\
- \hline
-{T } & {Terminated normally } \\
- \hline
-{E } & {Terminated in Error } \\
- \hline
-{e } & {Non-fatal error } \\
- \hline
-{f } & {Fatal error } \\
- \hline
-{D } & {Verify Differences } \\
- \hline
-{A } & {Canceled by the user } \\
- \hline
-{F } & {Waiting on the File daemon } \\
- \hline
-{S } & {Waiting on the Storage daemon } \\
- \hline
-{m } & {Waiting for a new Volume to be mounted } \\
- \hline
-{M } & {Waiting for a Mount } \\
- \hline
-{s } & {Waiting for Storage resource } \\
- \hline
-{j } & {Waiting for Job resource } \\
- \hline
-{c } & {Waiting for Client resource } \\
- \hline
-{d } & {Wating for Maximum jobs } \\
- \hline
-{t } & {Waiting for Start Time } \\
- \hline
-{p } & {Waiting for higher priority job to finish }
-\\ \hline
-
-\end{longtable}
-
-\
-
-\addcontentsline{lot}{table}{File Sets Table Layout}
-\begin{longtable}{|l|l|l|}
- \hline
-\multicolumn{3}{|l| }{\bf FileSet } \\
- \hline
-\multicolumn{1}{|c| }{\bf Column Name } & \multicolumn{1}{c| }{\bf Data Type\
-\ \ } & \multicolumn{1}{c| }{\bf Remark } \\
- \hline
-{FileSetId } & {integer } & {Primary Key } \\
- \hline
-{FileSet } & {tinyblob } & {FileSet name } \\
- \hline
-{MD5 } & {tinyblob } & {MD5 checksum of FileSet } \\
- \hline
-{CreateTime } & {datetime } & {Time and date Fileset created }
-\\ \hline
-
-\end{longtable}
-
-The {\bf FileSet} table contains one entry for each FileSet that is used. The
-MD5 signature is kept to ensure that if the user changes anything inside the
-FileSet, it will be detected and the new FileSet will be used. This is
-particularly important when doing an incremental update. If the user deletes a
-file or adds a file, we need to ensure that a Full backup is done prior to the
-next incremental.
-
-\
-
-\addcontentsline{lot}{table}{JobMedia Table Layout}
-\begin{longtable}{|l|l|p{2.5in}|}
- \hline
-\multicolumn{3}{|l| }{\bf JobMedia } \\
- \hline
-\multicolumn{1}{|c| }{\bf Column Name } & \multicolumn{1}{c| }{\bf Data Type\
-\ \ } & \multicolumn{1}{c| }{\bf Remark } \\
- \hline
-{JobMediaId } & {integer } & {Primary Key } \\
- \hline
-{JobId } & {integer } & {Link to Job Record } \\
- \hline
-{MediaId } & {integer } & {Link to Media Record } \\
- \hline
-{FirstIndex } & {integer } & {The index (sequence number) of the first file
-written for this Job to the Media } \\
- \hline
-{LastIndex } & {integer } & {The index of the last file written for this
-Job to the Media } \\
- \hline
-{StartFile } & {integer } & {The physical media (tape) file number of the
-first block written for this Job } \\
- \hline
-{EndFile } & {integer } & {The physical media (tape) file number of the
-last block written for this Job } \\
- \hline
-{StartBlock } & {integer } & {The number of the first block written for
-this Job } \\
- \hline
-{EndBlock } & {integer } & {The number of the last block written for this
-Job } \\
- \hline
-{VolIndex } & {integer } & {The Volume use sequence number within the Job }
-\\ \hline
-
-\end{longtable}
-
-The {\bf JobMedia} table contains one entry for each volume written for the
-current Job. If the Job spans 3 tapes, there will be three JobMedia records,
-each containing the information to find all the files for the given JobId on
-the tape.
-
-\
-
-\addcontentsline{lot}{table}{Media Table Layout}
-\begin{longtable}{|l|l|p{2.4in}|}
- \hline
-\multicolumn{3}{|l| }{\bf Media } \\
- \hline
-\multicolumn{1}{|c| }{\bf Column Name } & \multicolumn{1}{c| }{\bf Data Type\
-\ \ } & \multicolumn{1}{c| }{\bf Remark } \\
- \hline
-{MediaId } & {integer } & {Primary Key } \\
- \hline
-{VolumeName } & {tinyblob } & {Volume name } \\
- \hline
-{Slot } & {integer } & {Autochanger Slot number or zero } \\
- \hline
-{PoolId } & {integer } & {Link to Pool Record } \\
- \hline
-{MediaType } & {tinyblob } & {The MediaType supplied by the user } \\
- \hline
-{FirstWritten } & {datetime } & {Time/date when first written } \\
- \hline
-{LastWritten } & {datetime } & {Time/date when last written } \\
- \hline
-{LabelDate } & {datetime } & {Time/date when tape labeled } \\
- \hline
-{VolJobs } & {integer } & {Number of jobs written to this media } \\
- \hline
-{VolFiles } & {integer } & {Number of files written to this media } \\
- \hline
-{VolBlocks } & {integer } & {Number of blocks written to this media } \\
- \hline
-{VolMounts } & {integer } & {Number of time media mounted } \\
- \hline
-{VolBytes } & {bigint } & {Number of bytes saved in Job } \\
- \hline
-{VolErrors } & {integer } & {Number of errors during Job } \\
- \hline
-{VolWrites } & {integer } & {Number of writes to media } \\
- \hline
-{MaxVolBytes } & {bigint } & {Maximum bytes to put on this media } \\
- \hline
-{VolCapacityBytes } & {bigint } & {Capacity estimate for this volume } \\
- \hline
-{VolStatus } & {enum } & {Status of media: Full, Archive, Append, Recycle,
-Read-Only, Disabled, Error, Busy } \\
- \hline
-{Recycle } & {tinyint } & {Whether or not Bacula can recycle the Volumes:
-Yes, No } \\
- \hline
-{VolRetention } & {bigint } & {64 bit seconds until expiration } \\
- \hline
-{VolUseDuration } & {bigint } & {64 bit seconds volume can be used } \\
- \hline
-{MaxVolJobs } & {integer } & {maximum jobs to put on Volume } \\
- \hline
-{MaxVolFiles } & {integer } & {maximume EOF marks to put on Volume }
-\\ \hline
-
-\end{longtable}
-
-The {\bf Volume} table (internally referred to as the Media table) contains
-one entry for each volume, that is each tape, cassette (8mm, DLT, DAT, ...),
-or file on which information is or was backed up. There is one Volume record
-created for each of the NumVols specified in the Pool resource record.
-
-\
-
-\addcontentsline{lot}{table}{Pool Table Layout}
-\begin{longtable}{|l|l|p{2.4in}|}
- \hline
-\multicolumn{3}{|l| }{\bf Pool } \\
- \hline
-\multicolumn{1}{|c| }{\bf Column Name } & \multicolumn{1}{c| }{\bf Data Type
-} & \multicolumn{1}{c| }{\bf Remark } \\
- \hline
-{PoolId } & {integer } & {Primary Key } \\
- \hline
-{Name } & {Tinyblob } & {Pool Name } \\
- \hline
-{NumVols } & {Integer } & {Number of Volumes in the Pool } \\
- \hline
-{MaxVols } & {Integer } & {Maximum Volumes in the Pool } \\
- \hline
-{UseOnce } & {tinyint } & {Use volume once } \\
- \hline
-{UseCatalog } & {tinyint } & {Set to use catalog } \\
- \hline
-{AcceptAnyVolume } & {tinyint } & {Accept any volume from Pool } \\
- \hline
-{VolRetention } & {bigint } & {64 bit seconds to retain volume } \\
- \hline
-{VolUseDuration } & {bigint } & {64 bit seconds volume can be used } \\
- \hline
-{MaxVolJobs } & {integer } & {max jobs on volume } \\
- \hline
-{MaxVolFiles } & {integer } & {max EOF marks to put on Volume } \\
- \hline
-{MaxVolBytes } & {bigint } & {max bytes to write on Volume } \\
- \hline
-{AutoPrune } & {tinyint } & {yes|no for autopruning } \\
- \hline
-{Recycle } & {tinyint } & {yes|no for allowing auto recycling of Volume }
-\\
- \hline
-{PoolType } & {enum } & {Backup, Copy, Cloned, Archive, Migration } \\
- \hline
-{LabelFormat } & {Tinyblob } & {Label format }
-\\ \hline
-
-\end{longtable}
-
-The {\bf Pool} table contains one entry for each media pool controlled by
-Bacula in this database. One media record exists for each of the NumVols
-contained in the Pool. The PoolType is a Bacula defined keyword. The MediaType
-is defined by the administrator, and corresponds to the MediaType specified in
-the Director's Storage definition record. The CurrentVol is the sequence
-number of the Media record for the current volume.
-
-\
-
-\addcontentsline{lot}{table}{Client Table Layout}
-\begin{longtable}{|l|l|l|}
- \hline
-\multicolumn{3}{|l| }{\bf Client } \\
- \hline
-\multicolumn{1}{|c| }{\bf Column Name } & \multicolumn{1}{c| }{\bf Data Type
-} & \multicolumn{1}{c| }{\bf Remark } \\
- \hline
-{ClientId } & {integer } & {Primary Key } \\
- \hline
-{Name } & {TinyBlob } & {File Services Name } \\
- \hline
-{UName } & {TinyBlob } & {uname -a from Client (not yet used) } \\
- \hline
-{AutoPrune } & {tinyint } & {yes|no for autopruning } \\
- \hline
-{FileRetention } & {bigint } & {64 bit seconds to retain Files } \\
- \hline
-{JobRetention } & {bigint } & {64 bit seconds to retain Job }
-\\ \hline
-
-\end{longtable}
-
-The {\bf Client} table contains one entry for each machine backed up by Bacula
-in this database. Normally the Name is a fully qualified domain name.
-
-\
-
-\addcontentsline{lot}{table}{Unsaved Files Table Layout}
-\begin{longtable}{|l|l|l|}
- \hline
-\multicolumn{3}{|l| }{\bf UnsavedFiles } \\
- \hline
-\multicolumn{1}{|c| }{\bf Column Name } & \multicolumn{1}{c| }{\bf Data Type
-} & \multicolumn{1}{c| }{\bf Remark } \\
- \hline
-{UnsavedId } & {integer } & {Primary Key } \\
- \hline
-{JobId } & {integer } & {JobId corresponding to this record } \\
- \hline
-{PathId } & {integer } & {Id of path } \\
- \hline
-{FilenameId } & {integer } & {Id of filename }
-\\ \hline
-
-\end{longtable}
-
-The {\bf UnsavedFiles} table contains one entry for each file that was not
-saved. Note! This record is not yet implemented.
-
-\
-
-\addcontentsline{lot}{table}{Counter Table Layout}
-\begin{longtable}{|l|l|l|}
- \hline
-\multicolumn{3}{|l| }{\bf Counter } \\
- \hline
-\multicolumn{1}{|c| }{\bf Column Name } & \multicolumn{1}{c| }{\bf Data Type
-} & \multicolumn{1}{c| }{\bf Remark } \\
- \hline
-{Counter } & {tinyblob } & {Counter name } \\
- \hline
-{MinValue } & {integer } & {Start/Min value for counter } \\
- \hline
-{MaxValue } & {integer } & {Max value for counter } \\
- \hline
-{CurrentValue } & {integer } & {Current counter value } \\
- \hline
-{WrapCounter } & {tinyblob } & {Name of another counter }
-\\ \hline
-
-\end{longtable}
-
-The {\bf Counter} table contains one entry for each permanent counter defined
-by the user.
-
-\
-
-\addcontentsline{lot}{table}{Version Table Layout}
-\begin{longtable}{|l|l|l|}
- \hline
-\multicolumn{3}{|l| }{\bf Version } \\
- \hline
-\multicolumn{1}{|c| }{\bf Column Name } & \multicolumn{1}{c| }{\bf Data Type
-} & \multicolumn{1}{c| }{\bf Remark } \\
- \hline
-{VersionId } & {integer } & {Primary Key }
-\\ \hline
-
-\end{longtable}
-
-The {\bf Version} table defines the Bacula database version number. Bacula
-checks this number before reading the database to ensure that it is compatible
-with the Bacula binary file.
-
-\
-
-\addcontentsline{lot}{table}{Base Files Table Layout}
-\begin{longtable}{|l|l|l|}
- \hline
-\multicolumn{3}{|l| }{\bf BaseFiles } \\
- \hline
-\multicolumn{1}{|c| }{\bf Column Name } & \multicolumn{1}{c| }{\bf Data Type
-} & \multicolumn{1}{c| }{\bf Remark } \\
- \hline
-{BaseId } & {integer } & {Primary Key } \\
- \hline
-{BaseJobId } & {integer } & {JobId of Base Job } \\
- \hline
-{JobId } & {integer } & {Reference to Job } \\
- \hline
-{FileId } & {integer } & {Reference to File } \\
- \hline
-{FileIndex } & {integer } & {File Index number }
-\\ \hline
-
-\end{longtable}
-
-The {\bf BaseFiles} table contains all the File references for a particular
-JobId that point to a Base file -- i.e. they were previously saved and hence
-were not saved in the current JobId but in BaseJobId under FileId. FileIndex
-is the index of the file, and is used for optimization of Restore jobs to
-prevent the need to read the FileId record when creating the in memory tree.
-This record is not yet implemented.
-
-\
-
-\subsubsection*{MySQL Table Definition}
-\index[general]{MySQL Table Definition }
-\index[general]{Definition!MySQL Table }
-\addcontentsline{toc}{subsubsection}{MySQL Table Definition}
-
-The commands used to create the MySQL tables are as follows:
-
-\footnotesize
-\begin{verbatim}
-USE bacula;
-CREATE TABLE Filename (
- FilenameId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
- Name BLOB NOT NULL,
- PRIMARY KEY(FilenameId),
- INDEX (Name(30))
- );
-CREATE TABLE Path (
- PathId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
- Path BLOB NOT NULL,
- PRIMARY KEY(PathId),
- INDEX (Path(50))
- );
-CREATE TABLE File (
- FileId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
- FileIndex INTEGER UNSIGNED NOT NULL DEFAULT 0,
- JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
- PathId INTEGER UNSIGNED NOT NULL REFERENCES Path,
- FilenameId INTEGER UNSIGNED NOT NULL REFERENCES Filename,
- MarkId INTEGER UNSIGNED NOT NULL DEFAULT 0,
- LStat TINYBLOB NOT NULL,
- MD5 TINYBLOB NOT NULL,
- PRIMARY KEY(FileId),
- INDEX (JobId),
- INDEX (PathId),
- INDEX (FilenameId)
- );
-CREATE TABLE Job (
- JobId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
- Job TINYBLOB NOT NULL,
- Name TINYBLOB NOT NULL,
- Type BINARY(1) NOT NULL,
- Level BINARY(1) NOT NULL,
- ClientId INTEGER NOT NULL REFERENCES Client,
- JobStatus BINARY(1) NOT NULL,
- SchedTime DATETIME NOT NULL,
- StartTime DATETIME NOT NULL,
- EndTime DATETIME NOT NULL,
- JobTDate BIGINT UNSIGNED NOT NULL,
- VolSessionId INTEGER UNSIGNED NOT NULL DEFAULT 0,
- VolSessionTime INTEGER UNSIGNED NOT NULL DEFAULT 0,
- JobFiles INTEGER UNSIGNED NOT NULL DEFAULT 0,
- JobBytes BIGINT UNSIGNED NOT NULL,
- JobErrors INTEGER UNSIGNED NOT NULL DEFAULT 0,
- JobMissingFiles INTEGER UNSIGNED NOT NULL DEFAULT 0,
- PoolId INTEGER UNSIGNED NOT NULL REFERENCES Pool,
- FileSetId INTEGER UNSIGNED NOT NULL REFERENCES FileSet,
- PurgedFiles TINYINT NOT NULL DEFAULT 0,
- HasBase TINYINT NOT NULL DEFAULT 0,
- PRIMARY KEY(JobId),
- INDEX (Name(128))
- );
-CREATE TABLE FileSet (
- FileSetId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
- FileSet TINYBLOB NOT NULL,
- MD5 TINYBLOB NOT NULL,
- CreateTime DATETIME NOT NULL,
- PRIMARY KEY(FileSetId)
- );
-CREATE TABLE JobMedia (
- JobMediaId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
- JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
- MediaId INTEGER UNSIGNED NOT NULL REFERENCES Media,
- FirstIndex INTEGER UNSIGNED NOT NULL DEFAULT 0,
- LastIndex INTEGER UNSIGNED NOT NULL DEFAULT 0,
- StartFile INTEGER UNSIGNED NOT NULL DEFAULT 0,
- EndFile INTEGER UNSIGNED NOT NULL DEFAULT 0,
- StartBlock INTEGER UNSIGNED NOT NULL DEFAULT 0,
- EndBlock INTEGER UNSIGNED NOT NULL DEFAULT 0,
- VolIndex INTEGER UNSIGNED NOT NULL DEFAULT 0,
- PRIMARY KEY(JobMediaId),
- INDEX (JobId, MediaId)
- );
-CREATE TABLE Media (
- MediaId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
- VolumeName TINYBLOB NOT NULL,
- Slot INTEGER NOT NULL DEFAULT 0,
- PoolId INTEGER UNSIGNED NOT NULL REFERENCES Pool,
- MediaType TINYBLOB NOT NULL,
- FirstWritten DATETIME NOT NULL,
- LastWritten DATETIME NOT NULL,
- LabelDate DATETIME NOT NULL,
- VolJobs INTEGER UNSIGNED NOT NULL DEFAULT 0,
- VolFiles INTEGER UNSIGNED NOT NULL DEFAULT 0,
- VolBlocks INTEGER UNSIGNED NOT NULL DEFAULT 0,
- VolMounts INTEGER UNSIGNED NOT NULL DEFAULT 0,
- VolBytes BIGINT UNSIGNED NOT NULL DEFAULT 0,
- VolErrors INTEGER UNSIGNED NOT NULL DEFAULT 0,
- VolWrites INTEGER UNSIGNED NOT NULL DEFAULT 0,
- VolCapacityBytes BIGINT UNSIGNED NOT NULL,
- VolStatus ENUM('Full', 'Archive', 'Append', 'Recycle', 'Purged',
- 'Read-Only', 'Disabled', 'Error', 'Busy', 'Used', 'Cleaning') NOT NULL,
- Recycle TINYINT NOT NULL DEFAULT 0,
- VolRetention BIGINT UNSIGNED NOT NULL DEFAULT 0,
- VolUseDuration BIGINT UNSIGNED NOT NULL DEFAULT 0,
- MaxVolJobs INTEGER UNSIGNED NOT NULL DEFAULT 0,
- MaxVolFiles INTEGER UNSIGNED NOT NULL DEFAULT 0,
- MaxVolBytes BIGINT UNSIGNED NOT NULL DEFAULT 0,
- InChanger TINYINT NOT NULL DEFAULT 0,
- MediaAddressing TINYINT NOT NULL DEFAULT 0,
- VolReadTime BIGINT UNSIGNED NOT NULL DEFAULT 0,
- VolWriteTime BIGINT UNSIGNED NOT NULL DEFAULT 0,
- PRIMARY KEY(MediaId),
- INDEX (PoolId)
- );
-CREATE TABLE Pool (
- PoolId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
- Name TINYBLOB NOT NULL,
- NumVols INTEGER UNSIGNED NOT NULL DEFAULT 0,
- MaxVols INTEGER UNSIGNED NOT NULL DEFAULT 0,
- UseOnce TINYINT NOT NULL,
- UseCatalog TINYINT NOT NULL,
- AcceptAnyVolume TINYINT DEFAULT 0,
- VolRetention BIGINT UNSIGNED NOT NULL,
- VolUseDuration BIGINT UNSIGNED NOT NULL,
- MaxVolJobs INTEGER UNSIGNED NOT NULL DEFAULT 0,
- MaxVolFiles INTEGER UNSIGNED NOT NULL DEFAULT 0,
- MaxVolBytes BIGINT UNSIGNED NOT NULL,
- AutoPrune TINYINT DEFAULT 0,
- Recycle TINYINT DEFAULT 0,
- PoolType ENUM('Backup', 'Copy', 'Cloned', 'Archive', 'Migration', 'Scratch') NOT NULL,
- LabelFormat TINYBLOB,
- Enabled TINYINT DEFAULT 1,
- ScratchPoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,
- RecyclePoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,
- UNIQUE (Name(128)),
- PRIMARY KEY (PoolId)
- );
-CREATE TABLE Client (
- ClientId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
- Name TINYBLOB NOT NULL,
- Uname TINYBLOB NOT NULL, /* full uname -a of client */
- AutoPrune TINYINT DEFAULT 0,
- FileRetention BIGINT UNSIGNED NOT NULL,
- JobRetention BIGINT UNSIGNED NOT NULL,
- UNIQUE (Name(128)),
- PRIMARY KEY(ClientId)
- );
-CREATE TABLE BaseFiles (
- BaseId INTEGER UNSIGNED AUTO_INCREMENT,
- BaseJobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
- JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
- FileId INTEGER UNSIGNED NOT NULL REFERENCES File,
- FileIndex INTEGER UNSIGNED,
- PRIMARY KEY(BaseId)
- );
-CREATE TABLE UnsavedFiles (
- UnsavedId INTEGER UNSIGNED AUTO_INCREMENT,
- JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
- PathId INTEGER UNSIGNED NOT NULL REFERENCES Path,
- FilenameId INTEGER UNSIGNED NOT NULL REFERENCES Filename,
- PRIMARY KEY (UnsavedId)
- );
-CREATE TABLE Version (
- VersionId INTEGER UNSIGNED NOT NULL
- );
--- Initialize Version
-INSERT INTO Version (VersionId) VALUES (7);
-CREATE TABLE Counters (
- Counter TINYBLOB NOT NULL,
- MinValue INTEGER,
- MaxValue INTEGER,
- CurrentValue INTEGER,
- WrapCounter TINYBLOB NOT NULL,
- PRIMARY KEY (Counter(128))
- );
-\end{verbatim}
-\normalsize
+++ /dev/null
-%%
-%%
-
-\section*{Catalog Maintenance}
-\label{_ChapterStart12}
-\index[general]{Maintenance!Catalog }
-\index[general]{Catalog Maintenance }
-\addcontentsline{toc}{section}{Catalog Maintenance}
-
-Without proper setup and maintenance, your Catalog may continue to grow
-indefinitely as you run Jobs and backup Files. How fast the size of your
-Catalog grows depends on the number of Jobs you run and how many files they
-backup. By deleting records within the database, you can make space available
-for the new records that will be added during the next Job. By constantly
-deleting old expired records (dates older than the Retention period), your
-database size will remain constant.
-
-If you started with the default configuration files, they already contain
-reasonable defaults for a small number of machines (less than 5), so if you
-fall into that case, catalog maintenance will not be urgent if you have a few
-hundred megabytes of disk space free. Whatever the case may be, some knowledge
-of retention periods will be useful.
-\label{Retention}
-
-\subsection*{Setting Retention Periods}
-\index[general]{Setting Retention Periods }
-\index[general]{Periods!Setting Retention }
-\addcontentsline{toc}{subsection}{Setting Retention Periods}
-
-{\bf Bacula} uses three Retention periods: the {\bf File Retention} period,
-the {\bf Job Retention} period, and the {\bf Volume Retention} period. Of
-these three, the File Retention period is by far the most important in
-determining how large your database will become.
-
-The {\bf File Retention} and the {\bf Job Retention} are specified in each
-Client resource as is shown below. The {\bf Volume Retention} period is
-specified in the Pool resource, and the details are given in the next chapter
-of this manual.
-
-\begin{description}
-
-\item [File Retention = \lt{}time-period-specification\gt{}]
- \index[dir]{File Retention }
- The File Retention record defines the length of time that Bacula will keep
-File records in the Catalog database. When this time period expires, and if
-{\bf AutoPrune} is set to {\bf yes}, Bacula will prune (remove) File records
-that are older than the specified File Retention period. The pruning will
-occur at the end of a backup Job for the given Client. Note that the Client
-database record contains a copy of the File and Job retention periods, but
-Bacula uses the current values found in the Director's Client resource to do
-the pruning.
-
-Since File records in the database account for probably 80 percent of the
-size of the database, you should carefully determine exactly what File
-Retention period you need. Once the File records have been removed from
-the database, you will no longer be able to restore individual files
-in a Job. However, with Bacula version 1.37 and later, as long as the
-Job record still exists, you will be able to restore all files in the
-job.
-
-Retention periods are specified in seconds, but as a convenience, there are
-a number of modifiers that permit easy specification in terms of minutes,
-hours, days, weeks, months, quarters, or years on the record. See the
-\ilink{ Configuration chapter}{Time} of this manual for additional details
-of modifier specification.
-
-The default File retention period is 60 days.
-
-\item [Job Retention = \lt{}time-period-specification\gt{}]
- \index[dir]{Job Retention }
- The Job Retention record defines the length of time that {\bf Bacula}
-will keep Job records in the Catalog database. When this time period
-expires, and if {\bf AutoPrune} is set to {\bf yes} Bacula will prune
-(remove) Job records that are older than the specified Job Retention
-period. Note, if a Job record is selected for pruning, all associated File
-and JobMedia records will also be pruned regardless of the File Retention
-period set. As a consequence, you normally will set the File retention
-period to be less than the Job retention period.
-
-As mentioned above, once the File records are removed from the database,
-you will no longer be able to restore individual files from the Job.
-However, as long as the Job record remains in the database, you will be
-able to restore all the files backuped for the Job (on version 1.37 and
-later). As a consequence, it is generally a good idea to retain the Job
-records much longer than the File records.
-
-The retention period is specified in seconds, but as a convenience, there
-are a number of modifiers that permit easy specification in terms of
-minutes, hours, days, weeks, months, quarters, or years. See the \ilink{
-Configuration chapter}{Time} of this manual for additional details of
-modifier specification.
-
-The default Job Retention period is 180 days.
-
-\item [AutoPrune = \lt{}yes/no\gt{}]
- \index[dir]{AutoPrune }
- If AutoPrune is set to {\bf yes} (default), Bacula will automatically apply
-the File retention period and the Job retention period for the Client at the
-end of the Job.
-
-If you turn this off by setting it to {\bf no}, your Catalog will grow each
-time you run a Job.
-\end{description}
-
-\label{CompactingMySQL}
-
-\subsection*{Compacting Your MySQL Database}
-\index[general]{Database!Compacting Your MySQL }
-\index[general]{Compacting Your MySQL Database }
-\addcontentsline{toc}{subsection}{Compacting Your MySQL Database}
-
-Over time, as noted above, your database will tend to grow. I've noticed that
-even though Bacula regularly prunes files, {\bf MySQL} does not effectively
-use the space, and instead continues growing. To avoid this, from time to
-time, you must compact your database. Normally, large commercial database such
-as Oracle have commands that will compact a database to reclaim wasted file
-space. MySQL has the {\bf OPTIMIZE TABLE} command that you can use, and SQLite
-version 2.8.4 and greater has the {\bf VACUUM} command. We leave it to you to
-explore the utility of the {\bf OPTIMIZE TABLE} command in MySQL.
-
-All database programs have some means of writing the database out in ASCII
-format and then reloading it. Doing so will re-create the database from
-scratch producing a compacted result, so below, we show you how you can do
-this for MySQL, PostgreSQL and SQLite.
-
-For a {\bf MySQL} database, you could write the Bacula database as an ASCII
-file (bacula.sql) then reload it by doing the following:
-
-\footnotesize
-\begin{verbatim}
-mysqldump -f --opt bacula > bacula.sql
-mysql bacula < bacula.sql
-rm -f bacula.sql
-\end{verbatim}
-\normalsize
-
-Depending on the size of your database, this will take more or less time and a
-fair amount of disk space. For example, if I cd to the location of the MySQL
-Bacula database (typically /opt/mysql/var or something similar) and enter:
-
-\footnotesize
-\begin{verbatim}
-du bacula
-\end{verbatim}
-\normalsize
-
-I get {\bf 620,644} which means there are that many blocks containing 1024
-bytes each or approximately 635 MB of data. After doing the {\bf msqldump}, I
-had a bacula.sql file that had {\bf 174,356} blocks, and after doing the {\bf
-mysql} command to recreate the database, I ended up with a total of {\bf
-210,464} blocks rather than the original {\bf 629,644}. In other words, the
-compressed version of the database took approximately one third of the space
-of the database that had been in use for about a year.
-
-As a consequence, I suggest you monitor the size of your database and from
-time to time (once every 6 months or year), compress it.
-\label{RepairingMySQL}
-
-\subsection*{Repairing Your MySQL Database}
-\index[general]{Database!Repairing Your MySQL }
-\index[general]{Repairing Your MySQL Database }
-\addcontentsline{toc}{subsection}{Repairing Your MySQL Database}
-
-If you find that you are getting errors writing to your MySQL database, or
-Bacula hangs each time it tries to access the database, you should consider
-running MySQL's database check and repair routines. The program you need to
-run depends on the type of database indexing you are using. If you are using
-the default, you will probably want to use {\bf myisamchk}. For more details
-on how to do this, please consult the MySQL document at:
-\elink{
-http://www.mysql.com/doc/en/Repair.html}
-{http://www.mysql.com/doc/en/Repair.html}.
-
-If the errors you are getting are simply SQL warnings, then you might try
-running dbcheck before (or possibly after) using the MySQL database repair
-program. It can clean up many of the orphaned record problems, and certain
-other inconsistencies in the Bacula database.
-\label{RepairingPSQL}
-
-\subsection*{Repairing Your PostgreSQL Database}
-\index[general]{Database!Repairing Your PostgreSQL }
-\index[general]{Repairing Your PostgreSQL Database }
-\addcontentsline{toc}{subsection}{Repairing Your PostgreSQL Database}
-
-The same considerations apply that are indicated above for MySQL. That is,
-consult the PostgreSQL documents for how to repair the database, and also
-consider using Bacula's dbcheck program if the conditions are reasonable for
-using (see above).
-\label{CompactingPostgres}
-
-\subsection*{Performance Issues}
-\index[general]{Database Performance Issues}
-\index[general]{Performance!Database}
-\addcontentsline{toc}{subsection}{Database Performance Issues}
-
-There are a considerable number of ways each of the databases can be
-tuned to improve the performance. Going from an untuned database to one
-that is properly tuned can make a difference of a factor of 100 or more
-in the time to insert or search for records.
-
-For each of the databases, you may get significant improvements by adding
-additional indexes. The comments in the Bacula make\_xxx\_tables give some
-indications as to what indexes may be appropriate.
-
-For MySQL, what seems to be very important is to use the examine the
-my.cnf file. You may obtain significant performances by switching to
-the my-large.cnf or my-huge.cnf files that come with the MySQL source
-code.
-
-For SQLite3, one significant factor in improving the performance is
-to ensure that there is a "PRAGMA synchronous = NORMAL;" statement.
-This reduces the number of times that the database flushes the in memory
-cache to disk. There are other settings for this PRAGMA that can
-give even further performance improvements at the risk of a database
-corruption if your system crashes.
-
-For PostgreSQL, you might want to consider turning fsync off. Of course
-doing so can cause corrupted databases in the even of a machine crash.
-There are many different ways that you can tune PostgreSQL, the
-following document discusses a few of them:
-\elink{
-http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html}
-{http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html}.
-
-There is also a PostgreSQL FAQ question number 3.3 that may
-answer some of your questions about how to improve performance
-of the PostgreSQL engine:
-\elink{
-http://www.postgresql.org/docs/faqs.FAQ.html\#3.3}
-{http://www.postgresql.org/docs/faqs.FAQ.html\#3.3}.
-
-
-
-
-\subsection*{Compacting Your PostgreSQL Database}
-\index[general]{Database!Compacting Your PostgreSQL }
-\index[general]{Compacting Your PostgreSQL Database }
-\addcontentsline{toc}{subsection}{Compacting Your PostgreSQL Database}
-
-Over time, as noted above, your database will tend to grow. I've noticed that
-even though Bacula regularly prunes files, PostgreSQL has a {\bf VACUUM}
-command that will compact your database for you. Alternatively you may want to
-use the {\bf vacuumdb} command, which can be run from a cron job.
-
-All database programs have some means of writing the database out in ASCII
-format and then reloading it. Doing so will re-create the database from
-scratch producing a compacted result, so below, we show you how you can do
-this for PostgreSQL.
-
-For a {\bf PostgreSQL} database, you could write the Bacula database as an
-ASCII file (bacula.sql) then reload it by doing the following:
-
-\footnotesize
-\begin{verbatim}
-pg_dump bacula > bacula.sql
-cat bacula.sql | psql bacula
-rm -f bacula.sql
-\end{verbatim}
-\normalsize
-
-Depending on the size of your database, this will take more or less time and a
-fair amount of disk space. For example, you can {\bf cd} to the location of
-the Bacula database (typically /usr/local/pgsql/data or possible
-/var/lib/pgsql/data) and check the size.
-
-\subsection*{Compacting Your SQLite Database}
-\index[general]{Compacting Your SQLite Database }
-\index[general]{Database!Compacting Your SQLite }
-\addcontentsline{toc}{subsection}{Compacting Your SQLite Database}
-
-First please read the previous section that explains why it is necessary to
-compress a database. SQLite version 2.8.4 and greater have the {\bf Vacuum}
-command for compacting the database.
-
-\footnotesize
-\begin{verbatim}
-cd {\bf working-directory}
-echo 'vacuum;' | sqlite bacula.db
-\end{verbatim}
-\normalsize
-
-As an alternative, you can use the following commands, adapted to your system:
-
-
-\footnotesize
-\begin{verbatim}
-cd {\bf working-directory}
-echo '.dump' | sqlite bacula.db > bacula.sql
-rm -f bacula.db
-sqlite bacula.db < bacula.sql
-rm -f bacula.sql
-\end{verbatim}
-\normalsize
-
-Where {\bf working-directory} is the directory that you specified in the
-Director's configuration file. Note, in the case of SQLite, it is necessary to
-completely delete (rm) the old database before creating a new compressed
-version.
-
-\subsection*{Migrating from SQLite to MySQL}
-\index[general]{MySQL!Migrating from SQLite to }
-\index[general]{Migrating from SQLite to MySQL }
-\addcontentsline{toc}{subsection}{Migrating from SQLite to MySQL}
-
-You may begin using Bacula with SQLite then later find that you want to switch
-to MySQL for any of a number of reasons: SQLite tends to use more disk than
-MySQL, SQLite apparently does not handle database sizes greater than 2GBytes,
-... Several users have done so by first producing an ASCII "dump" of the
-SQLite database, then creating the MySQL tables with the {\bf
-create\_mysql\_tables} script that comes with Bacula, and finally feeding the
-SQLite dump into MySQL using the {\bf -f} command line option to continue past
-the errors that are generated by the DDL statements that SQLite's dump
-creates. Of course, you could edit the dump and remove the offending
-statements. Otherwise, MySQL accepts the SQL produced by SQLite.
-
-\label{BackingUpBacula}
-\subsection*{Backing Up Your Bacula Database}
-\index[general]{Backing Up Your Bacula Database }
-\index[general]{Database!Backing Up Your Bacula }
-\addcontentsline{toc}{subsection}{Backing Up Your Bacula Database}
-
-If ever the machine on which your Bacula database crashes, and you need to
-restore from backup tapes, one of your first priorities will probably be to
-recover the database. Although Bacula will happily backup your catalog
-database if it is specified in the FileSet, this is not a very good way to do
-it, because the database will be saved while Bacula is modifying it. Thus the
-database may be in an instable state. Worse yet, you will backup the database
-before all the Bacula updates have been applied.
-
-To resolve these problems, you need to backup the database after all the backup
-jobs have been run. In addition, you will want to make a copy while Bacula is
-not modifying it. To do so, you can use two scripts provided in the release
-{\bf make\_catalog\_backup} and {\bf delete\_catalog\_backup}. These files
-will be automatically generated along with all the other Bacula scripts. The
-first script will make an ASCII copy of your Bacula database into {\bf
-bacula.sql} in the working directory you specified in your configuration, and
-the second will delete the {\bf bacula.sql} file.
-
-The basic sequence of events to make this work correctly is as follows:
-
-\begin{itemize}
-\item Run all your nightly backups
-\item After running your nightly backups, run a Catalog backup Job
-\item The Catalog backup job must be scheduled after your last nightly backup
-
-\item You use {\bf RunBeforeJob} to create the ASCII backup file and {\bf
- RunAfterJob} to clean up
- \end{itemize}
-
-Assuming that you start all your nightly backup jobs at 1:05 am (and that they
-run one after another), you can do the catalog backup with the following
-additional Director configuration statements:
-
-\footnotesize
-\begin{verbatim}
-# Backup the catalog database (after the nightly save)
-Job {
- Name = "BackupCatalog"
- Type = Backup
- Client=rufus-fd
- FileSet="Catalog"
- Schedule = "WeeklyCycleAfterBackup"
- Storage = DLTDrive
- Messages = Standard
- Pool = Default
- RunBeforeJob = "/home/kern/bacula/bin/make_catalog_backup"
- RunAfterJob = "/home/kern/bacula/bin/delete_catalog_backup"
- Write Bootstrap = "/home/kern/bacula/working/BackupCatalog.bsr"
-}
-# This schedule does the catalog. It starts after the WeeklyCycle
-Schedule {
- Name = "WeeklyCycleAfterBackup
- Run = Full sun-sat at 1:10
-}
-# This is the backup of the catalog
-FileSet {
- Name = "Catalog"
- Include = signature=MD5 {
- @working_directory@/bacula.sql
- }
-}
-\end{verbatim}
-\normalsize
-
-Be sure to write a bootstrap file as in the above example. It is preferable
-to write or copy the bootstrap file to another computer. It will allow
-you to quickly recover the database backup should that be necessary. If
-you do not have a bootstrap file, it is still possible to recover your
-database backup, but it will be more work and take longer.
-
-\label{BackingUPOtherDBs}
-\subsection*{Backing Up Third Party Databases}
-\index[general]{Backing Up Third Party Databases }
-\index[general]{Databases!Backing Up Third Party }
-\addcontentsline{toc}{subsection}{Backing Up Third Party Databases}
-
-If you are running a database in production mode on your machine, Bacula will
-happily backup the files, but if the database is in use while Bacula is
-reading it, you may back it up in an unstable state.
-
-The best solution is to shutdown your database before backing it up, or use
-some tool specific to your database to make a valid live copy perhaps by
-dumping the database in ASCII format. I am not a database expert, so I cannot
-provide you advice on how to do this, but if you are unsure about how to
-backup your database, you might try visiting the Backup Central site, which
-has been renamed Storage Mountain (www.backupcentral.com). In particular,
-their
-\elink{ Free Backup and Recovery
-Software}{http://www.backupcentral.com/toc-free-backup-software.html} page has
-links to scripts that show you how to shutdown and backup most major
-databases.
-\label{Size}
-
-\subsection*{Database Size}
-\index[general]{Size!Database }
-\index[general]{Database Size }
-\addcontentsline{toc}{subsection}{Database Size}
-
-As mentioned above, if you do not do automatic pruning, your Catalog will grow
-each time you run a Job. Normally, you should decide how long you want File
-records to be maintained in the Catalog and set the {\bf File Retention}
-period to that time. Then you can either wait and see how big your Catalog
-gets or make a calculation assuming approximately 154 bytes for each File
-saved and knowing the number of Files that are saved during each backup and
-the number of Clients you backup.
-
-For example, suppose you do a backup of two systems, each with 100,000 files.
-Suppose further that you do a Full backup weekly and an Incremental every day,
-and that the Incremental backup typically saves 4,000 files. The size of your
-database after a month can roughly be calculated as:
-
-\footnotesize
-\begin{verbatim}
- Size = 154 * No. Systems * (100,000 * 4 + 10,000 * 26)
-\end{verbatim}
-\normalsize
-
-where we have assumed 4 weeks in a month and 26 incremental backups per month.
-This would give the following:
-
-\footnotesize
-\begin{verbatim}
- Size = 154 * 2 * (100,000 * 4 + 10,000 * 26)
-or
- Size = 308 * (400,000 + 260,000)
-or
- Size = 203,280,000 bytes
-\end{verbatim}
-\normalsize
-
-So for the above two systems, we should expect to have a database size of
-approximately 200 Megabytes. Of course, this will vary according to how many
-files are actually backed up.
-
-Below are some statistics for a MySQL database containing Job records for five
-Clients beginning September 2001 through May 2002 (8.5 months) and File
-records for the last 80 days. (Older File records have been pruned). For these
-systems, only the user files and system files that change are backed up. The
-core part of the system is assumed to be easily reloaded from the RedHat rpms.
-
-
-In the list below, the files (corresponding to Bacula Tables) with the
-extension .MYD contain the data records whereas files with the extension .MYI
-contain indexes.
-
-You will note that the File records (containing the file attributes) make up
-the large bulk of the number of records as well as the space used (459 Mega
-Bytes including the indexes). As a consequence, the most important Retention
-period will be the {\bf File Retention} period. A quick calculation shows that
-for each File that is saved, the database grows by approximately 150 bytes.
-
-\footnotesize
-\begin{verbatim}
- Size in
- Bytes Records File
- ============ ========= ===========
- 168 5 Client.MYD
- 3,072 Client.MYI
- 344,394,684 3,080,191 File.MYD
- 115,280,896 File.MYI
- 2,590,316 106,902 Filename.MYD
- 3,026,944 Filename.MYI
- 184 4 FileSet.MYD
- 2,048 FileSet.MYI
- 49,062 1,326 JobMedia.MYD
- 30,720 JobMedia.MYI
- 141,752 1,378 Job.MYD
- 13,312 Job.MYI
- 1,004 11 Media.MYD
- 3,072 Media.MYI
- 1,299,512 22,233 Path.MYD
- 581,632 Path.MYI
- 36 1 Pool.MYD
- 3,072 Pool.MYI
- 5 1 Version.MYD
- 1,024 Version.MYI
-\end{verbatim}
-\normalsize
-
-This database has a total size of approximately 450 Megabytes.
-
-If we were using SQLite, the determination of the total database size would be
-much easier since it is a single file, but we would have less insight to the
-size of the individual tables as we have in this case.
-
-Note, SQLite databases may be as much as 50\% larger than MySQL databases due
-to the fact that all data is stored as ASCII strings. That is even binary
-integers are stored as ASCII strings, and this seems to increase the space
-needed.
+++ /dev/null
-#!/usr/bin/perl -w
-# Finds multiple hyphens not inside a verbatim environment (or \verb).
-# Places these inside a \verb{} contruct so they will not be converted
-# to single hyphen by latex or latex2html.
-
-use strict;
-
-# The following builds the test string to identify and change multiple
-# hyphens in the tex files. Several constructs are identified but only
-# multiple hyphens are changed; the others are fed to the output
-# unchanged.
-my $b = '\\\\begin\\*?\\s*\\{\\s*'; # \begin{
-my $e = '\\\\end\\*?\\s*\\{\\s*'; # \end{
-my $c = '\\s*\\}'; # closing curly brace
-
-# This captures entire verbatim environments. These are passed to the output
-# file unchanged.
-my $verbatimenv = $b . "verbatim" . $c . ".*?" . $e . "verbatim" . $c;
-
-# This captures \verb{} constructs. They are passed to the output unchanged.
-my $verb = '\\\\verb\\*?(.).*?\\1';
-
-# This identifies multiple hyphens.
-my $hyphens = '\\-{2,}';
-
-# This builds the actual test string from the above strings.
-#my $teststr = "$verbatimenv|$verb|$tocentry|$hyphens";
-my $teststr = "$verbatimenv|$verb|$hyphens";
-
-
-sub get_includes {
- # Get a list of include files from the top-level tex file.
- my (@list,$file);
-
- while (my $filename = shift) {
- # Start with the top-level latex file so it gets checked too.
- push (@list,$filename);
-
- # Get a list of all the html files in the directory.
- open IF,"<$filename" or die "Cannot open input file $filename";
- while (<IF>) {
- chomp;
- push @list,"$1.tex" if (/\\include\{(.*?)\}/);
- }
-
- close IF;
- }
- return @list;
-}
-
-sub convert_hyphens {
- my (@files) = @_;
- my ($filedata,$out,$this,$thiscnt,$before,$verbenv,$cnt);
-
- # Build the test string to check for the various environments.
- # We only do the conversion if the multiple hyphens are outside of a
- # verbatim environment (either \begin{verbatim}...\end{verbatim} or
- # \verb{--}). Capture those environments and pass them to the output
- # unchanged.
-
- $cnt = 0;
- foreach my $file (@files) {
- # Open the file and load the whole thing into $filedata. A bit wasteful but
- # easier to deal with, and we don't have a problem with speed here.
- $filedata = "";
- open IF,"<$file" or die "Cannot open input file $file";
- while (<IF>) {
- $filedata .= $_;
- }
- close IF;
-
- # Set up to process the file data.
- $out = "";
- $verbenv = 0;
- $thiscnt = 0;
-
- # Go through the file data from beginning to end. For each match, save what
- # came before it and what matched. $filedata now becomes only what came
- # after the match.
- # Chech the match to see if it starts with a multiple-hyphen. If so
- # change it to \verb{--}. The other possible matches in the pattern
- # won't start with a hyphen, so we're ok with matching that.
- while ($filedata =~ /$teststr/os) {
- $this = $&;
- $before = $`;
- $filedata = $';
- # This is where the actual conversion is done.
-
- # Use this contruct for putting something in between each hyphen
- #$thiscnt += ($this =~ s/^\-+/do {join('\\,',split('',$&));}/e);
-
- # Use this construct for putting something around each hyphen.
- $thiscnt += ($this =~ s/^\-+/\\verb\{$&\{/);
-
- # Put what came before and our (possibly) changed string into
- # the output buffer.
- $out .= $before . $this;
- }
-
- # If any hyphens were converted, save the file.
- if ($thiscnt) {
- open OF,">$file" or die "Cannot open output file $file";
- print OF $out . $filedata;
- close OF;
- }
- $cnt += $thiscnt;
- }
- return $cnt;
-}
-##################################################################
-# MAIN ####
-##################################################################
-
-my (@includes);
-my $cnt;
-
-# Examine the file pointed to by the first argument to get a list of
-# includes to test.
-@includes = get_includes(@ARGV);
-
-$cnt = convert_hyphens(@includes);
-
-print "$cnt Multiple hyphen", ($cnt == 1) ? "" : "s"," Found\n";
+++ /dev/null
-#!/usr/bin/perl -w
-# Finds potential problems in tex files, and issues warnings to the console
-# about what it finds. Takes a list of files as its only arguments,
-# and does checks on all the files listed. The assumption is that these are
-# valid (or close to valid) LaTeX files. It follows \include statements
-# recursively to pick up any included tex files.
-#
-#
-#
-# Currently the following checks are made:
-#
-# -- Multiple hyphens not inside a verbatim environment (or \verb). These
-# should be placed inside a \verb{} contruct so they will not be converted
-# to single hyphen by latex and latex2html.
-
-
-# Original creation 3-8-05 by Karl Cunningham karlc -at- keckec -dot- com
-#
-#
-
-use strict;
-
-# The following builds the test string to identify and change multiple
-# hyphens in the tex files. Several constructs are identified but only
-# multiple hyphens are changed; the others are fed to the output
-# unchanged.
-my $b = '\\\\begin\\*?\\s*\\{\\s*'; # \begin{
-my $e = '\\\\end\\*?\\s*\\{\\s*'; # \end{
-my $c = '\\s*\\}'; # closing curly brace
-
-# This captures entire verbatim environments. These are passed to the output
-# file unchanged.
-my $verbatimenv = $b . "verbatim" . $c . ".*?" . $e . "verbatim" . $c;
-
-# This captures \verb{..{ constructs. They are passed to the output unchanged.
-my $verb = '\\\\verb\\*?(.).*?\\1';
-
-# This captures multiple hyphens with a leading and trailing space. These are not changed.
-my $hyphsp = '\\s\\-{2,}\\s';
-
-# This identifies other multiple hyphens.
-my $hyphens = '\\-{2,}';
-
-# This identifies \hyperpage{..} commands, which should be ignored.
-my $hyperpage = '\\\\hyperpage\\*?\\{.*?\\}';
-
-# This builds the actual test string from the above strings.
-#my $teststr = "$verbatimenv|$verb|$tocentry|$hyphens";
-my $teststr = "$verbatimenv|$verb|$hyphsp|$hyperpage|$hyphens";
-
-
-sub get_includes {
- # Get a list of include files from the top-level tex file. The first
- # argument is a pointer to the list of files found. The rest of the
- # arguments is a list of filenames to check for includes.
- my $files = shift;
- my ($fileline,$includefile,$includes);
-
- while (my $filename = shift) {
- # Get a list of all the html files in the directory.
- open my $if,"<$filename" or die "Cannot open input file $filename\n";
- $fileline = 0;
- $includes = 0;
- while (<$if>) {
- chomp;
- $fileline++;
- # If a file is found in an include, process it.
- if (($includefile) = /\\include\s*\{(.*?)\}/) {
- $includes++;
- # Append .tex to the filename
- $includefile .= '.tex';
-
- # If the include file has already been processed, issue a warning
- # and don't do it again.
- my $found = 0;
- foreach (@$files) {
- if ($_ eq $includefile) {
- $found = 1;
- last;
- }
- }
- if ($found) {
- print "$includefile found at line $fileline in $filename was previously included\n";
- } else {
- # The file has not been previously found. Save it and
- # recursively process it.
- push (@$files,$includefile);
- get_includes($files,$includefile);
- }
- }
- }
- close IF;
- }
-}
-
-
-sub check_hyphens {
- my (@files) = @_;
- my ($filedata,$this,$linecnt,$before);
-
- # Build the test string to check for the various environments.
- # We only do the conversion if the multiple hyphens are outside of a
- # verbatim environment (either \begin{verbatim}...\end{verbatim} or
- # \verb{--}). Capture those environments and pass them to the output
- # unchanged.
-
- foreach my $file (@files) {
- # Open the file and load the whole thing into $filedata. A bit wasteful but
- # easier to deal with, and we don't have a problem with speed here.
- $filedata = "";
- open IF,"<$file" or die "Cannot open input file $file";
- while (<IF>) {
- $filedata .= $_;
- }
- close IF;
-
- # Set up to process the file data.
- $linecnt = 1;
-
- # Go through the file data from beginning to end. For each match, save what
- # came before it and what matched. $filedata now becomes only what came
- # after the match.
- # Chech the match to see if it starts with a multiple-hyphen. If so
- # warn the user. Keep track of line numbers so they can be output
- # with the warning message.
- while ($filedata =~ /$teststr/os) {
- $this = $&;
- $before = $`;
- $filedata = $';
- $linecnt += $before =~ tr/\n/\n/;
-
- # Check if the multiple hyphen is present outside of one of the
- # acceptable constructs.
- if ($this =~ /^\-+/) {
- print "Possible unwanted multiple hyphen found in line ",
- "$linecnt of file $file\n";
- }
- $linecnt += $this =~ tr/\n/\n/;
- }
- }
-}
-##################################################################
-# MAIN ####
-##################################################################
-
-my (@includes,$cnt);
-
-# Examine the file pointed to by the first argument to get a list of
-# includes to test.
-get_includes(\@includes,@ARGV);
-
-check_hyphens(@includes);
+++ /dev/null
-%%
-%%
-
-\chapter{Adapter les fichiers de configuration}
-\label{_ChapterStart16}
-\index[general]{Adapter les fichiers de configuration }
-\index[general]{Configuration!Adapter les fichiers de }
-
-Lors de son d\'emarrage, chacun des programmes qui composent Bacula lit un
-fichier de configuration sp\'ecifi\'e sur la ligne de commande, ou par
-d\'efaut {\bf bacula-dir.conf}, {\bf bacula-fd.conf}, {\bf bacula-sd.conf}, ou
-{\bf console.conf} pour le Director Daemon, le File Daemon, le Storage Daemon,
-et le programme Console respectivement.
-
-Chaque service (Director, Client, Storage, Console) poss\`ede son propre
-fichier de configuration qui contient un groupe de directives. Dans la suite,
-nous d\'esignerons ces groupes de directives par le mot {\bf Ressource}. Les
-ressources son tr\`es similaires d'un service \`a l'autre, mais peuvent
-contenir des directives diff\'erentes selon les services. Par exemple, dans le
-fichier de configuration du Director, la ressource {\bf Director} d\'efinit le
-nom du Director, quelques param\`etres g\'en\'eraux du Director et son mot de
-passe. Dans le fichier de configuration du File Daemon, la ressource {\bf
-Director} sp\'ecifie les Directors autoris\'es \`a utiliser le File Daemon.
-
-Avant de lancer Bacula pour la premi\`ere fois, vous devez adapter chaque
-fichier de configuration. Des fichiers de configuration auront \'et\'e
-cr\'e\'es par le processus d'installation, mais il doivent \^etre modifi\'es
-pour correspondre \`a votre syst\`eme. Le sch\'ema suivant donne une vue
-globale des ressources.
-
-\includegraphics{./bacula-objects.eps}
-\\
-(Remerciements \`a Aristedes Maniatis pour ce sch\'ema.)
-\label{ResFormat}
-
-\section{Jeu de caract\`eres}
-\index[general]{Jeu de caract\`eres}
-Bacula est con\c{c}u pour prendre en charge la plupart des jeux de caract\`eres
-existant dans le monde : US ASCII, allemand, fran\c{c}ais, chinois...
-Cependant, ceci est r\'ealis\'e en encodant tout en UTF-8, et Bacula s'attend \`a
-ce que tous ses fichiers de configuration (y compris ceux r\'esidant sur les
-machines Win32) soient r\'edig\'es en UTF-8. UTF-8 est le format par d\'efaut sur
-la plupart des syst\`emes Linux, mais pas sur toutes les machines Unix, ni sur
-les machines Windows, aussi vous devez vous assurer que vos param\`etres
-locaux sont correctement r\'egl\'es avant d'utiliser Bacula.
-
-Vous pouvez v\'erifier que les fichiers de configuration sont lisibles, y compris
-les caract\`eres \'etrangers en examinant votre variable d'environnement {bf LANG}.
-Celle-ci doit se terminer par {\bf .UTF-8}. Par exemple {\bf en\_US.UTF-8}.
-La syntaxe exacte pour la d\'efinir peut varier fortement d'unsyst\`eme d'exploitation
-\`a l'autre.
-
-Bacula consid\`ere que tous les noms de fichiers sont au format UTF-8 sur les
-machines Unix et Linux. Sur les machines Windows, ils sont en UTF-16
-et sont automatiquement convertis en UTF-8.
-
-\section{Format des directives}
-\index[general]{Format des directives }
-\index[general]{Directives!Format des }
-
-Bien qu'il ne soit pas n\'ecessaire de conna\^itre le d\'etail de toutes
-les directives possibles, une connaissance basique des ressources Bacula est
-indispensable. Chaque directive contenue dans une ressource (entre accollades)
-est compos\'e d'un mot-clef suivi du signe "=", suivi d'une ou plusieurs
-valeurs. Le mot clef doit \^etre l'un de ceux connus par Bacula, et peut
-comporter des caract\`eres majuscules et minuscules ainsi que des espaces.
-
-Chaque d\'efinition de ressource {\bf doit} comporter la directive Name, et peut
-optionnellement comporter la directive Description. La directive Name est
-utilis\'ee pour identifier de fa\c {c}on unique la ressource. La directive
-Description sera utilis\'e lors de l'affichage pour offrir une identification
-plus ais\'ee de la ressource. Par exemple :
-
-\footnotesize
-\begin{verbatim}
-Director {
- Name = "MyDir"
- Description = "Main Bacula Director"
- WorkingDirectory = "$HOME/bacula/bin/working"
-}
-\end{verbatim}
-\normalsize
-
-D\'efinit la ressource Director avec le nom "MyDir'' et le r\'epertoire de
-travail \$HOME/bacula/bin/working. En g\'en\'eral, si vous voulez utiliser des
-espaces dans le nom \`a droite du signe "=", vous devez l'entourer de
-doubles quotes. Sinon, les quotes ne sont g\'en\'eralement pas requises car
-une fois d\'efinies, les cha\^ines quot\'ees et non quot\'ees sont toutes
-\'equivalentes.
-\label{Comments}
-
-\subsection{Commentaires}
-\index[general]{Commentaires }
-
-Lors de la lecture d'un fichier de configuration, les lignes blanches sont
-ignor\'ees, et tout ce qui suit le caract\`ere di\`ese (\#) jusqu'\`a la fin
-de la ligne est consid\'er\'e comme commentaire. Un point virgule (;) indique
-la fin logique d'une ligne et tout ce qui suit le point virgule est
-consid\'er\'e comme le param\`etre suivant. Un param\`etre qui appara{\^\i}t
-seul sur une ligne ne n\'ecessite pas de point virgule, vous ne verrez donc
-pas beaucoup de points virgule dans les exemples de ce manuel.
-\label{Case1}
-
-\subsection{Casse et espaces}
-\index[general]{Espaces!Casse et }
-\index[general]{Casse et espaces }
-
-La casse (majuscules/minuscules) et les espaces sont totalement ignor\'ees
-dans les mots-clef des directives des ressources (la partie \`a gauche du
-signe "='').
-
-A l'int\'erieur des mots-clef (\`a gauche du signe "=''), les espaces ne sont
-pas significatives. Ainsi, les mots-clef : {\bf name}, {\bf Name}, et {\bf N a
-m e} sont tous identiques.
-
-Les espaces apr\`es le signe "='' et avant le premier caract\`ere de la
-valeur son ignor\'ees.
-
-En g\'en\'eral, les espaces \`a l'int\'erieur d'une valeur sont significatives
-(non ignor\'ees), et si la valeur est un nom, vous devez l'encadrer de doubles
-quotes pour que l'espace soit accept\'ee. Les noms peuvent contenir jusqu'\`a
-127 caract\`eres. Actuellement, un nom peut contenir n'importe quel
-caract\`ere ASCII. A l'int\'erieur d'une cha{\^\i}ne quot\'ee, tout
-caract\`ere pr\'ec\'ed\'e d'un backslash (\textbackslash{}) est pris tel quel
-(utile pour ins\'erer des backslashes et doubles quotes (")).
-
-Veuillez cependant noter que les noms de ressource Bacula ainsi que certains
-autres noms (par exemple les noms de volumes) ne doivent contenir que des
-lettres (y compris accentu\'ees ISO), nombres, et une poign\'ee de
-caract\`eres sp\'eciaux (espace, soulign\'e, ...). Tous les
-autres carat\`eres et ponctuations sont prohib\'es.
-\label{Includes}
-
-\subsection{Inclure d'autres fichiers de configuration}
-\index[general]{Configuration!Inclure d'autres fichiers de }
-\index[general]{Inclure d'autres fichiers de configuration }
-\index[general]{Utiliser @ pour inclure d'autres fichiers de configuration}
-\index[general]{@{\bf nom de fichier}}
-
-Si vous souhaitez \'eclater votre fichier de configuration en fichiers plus
-petits, l'inclusion est possible avec la syntaxe @{\bf NomDeFichier} o\`u {\bf
-nom de fichier} est le chemin absolu vers un le fichier \`a inclure. Toute
-donn\'ee primitive peut \^etre remplac\'ee par une sp\'ecification
-@NomDeFichier. Par exemple
-
-Director \{ Name=@xxx est valide et substituera le fichier xxx \`a @xxx, mais
-Director \{ Name@xxx = something n'est pas valide puisque @xxx appara\^it
-au milieu d'un (???mot clef/directive/...???)
-\label{DataTypes}
-
-\subsection*{Types de donn\'ees primitives reconnus}
-\index[general]{Types de donn\'ees primitives reconnus }
-\index[general]{Reconnus!Types de donn\'ees primitives }
-
-Lorsqu'il parcourt les enregistrements de ressource, Bacula classe les
-donn\'ees selon les types enum\'er\'es ci-dessous. En premi\`ere lecture,
-cette liste peut vous para\^itre accablante, mais en r\'ealit\'e, tout y
-est d'une logique \'el\'egante et directe.
-
-\begin{description}
-
-\item [name]
- \index[console]{name }
- Un mot-clef ou un nom constitu\'e de caract\`eres alphanum\'eriques, incluant
- le trait d'union, underscore et dollar. Le premier caract\`ere d'un {\bf name}
- doit \^etre une lettre. La longueur d'un {\bf name} est actuellement limit\'ee
- \`a 127 caract\`eres. Typiquement, les mots-clef appara\^issent \`a gauche
- d'un signe "=". Les mots-clef ne peuvent \^etre quot\'es.
-
-\item [name-string]
- \index[console]{name-string }
- Une {\bf name-string} est similaire \`a un {\bf name} except\'e qu'elle peut
- \^etre quot\'ee et ainsi contenir des caract\`eres suppl\'ementaires. La
- longueur des {\bf name-strings} est limit\'ee \`a 127 caract\`eres.
- Typiquement, on les utilise \`a droite d'un signe ''=", (i.e. ce sont les
- valeurs \`a associer aux mots-clef).
-
-\item [string]
- \index[console]{string }
- Une cha{\^\i}ne quot\'ee contenant potentiellement n'importe quel caract\`ere,
- y compris les espaces, ou une cha\^ine non quot\'ee. Une {\bf string} peut
- avoir une longueur quelconque. Typiquement, les {\bf strings} sont les
- valeurs qui correspondent aux noms de fichiers, r\'epertoires, ou noms de
- commandes syst\`eme. Un {\it Backslash} (\textbackslash{}) change le prochain
- caract\`ere en lui m\^eme, de sorte que pour inclure une double quote dans une
- cha\^ine, vous devez la pr\'eceder d'un {\it Backslash}. Il en va de
- m\^eme pour inclure un {\it Backslash}.
-
-\item [directory]
- \index[dir]{directory }
- Un {\bf directory} (R\'epertoire) est une cha\^ine, quot\'ee ou non. Un
- {\bf directory} est transmis \`a votre shell standard pour expansion lorsqu'il
- est scann\'e. Ainsi, des constructions telles que {\bf \$HOME} sont
- interpr\'et\'ees correctement.
-
-\item [password]
- \index[dir]{password }
- Il s'agit d'un mot de passe Bacula. Il est stock\'e en interne sous un format
- brouill\'e par MD5.
-
-\item [integer]
- \index[dir]{integer }
- Une valeur enti\`ere relative (positive ou n\'egative) sur 32 bits.
-
-\item [positive integer]
- \index[dir]{positive integer }
- Une valeur enti\`ere positive sur 32 bits.
-
-\item [long integer]
- \index[dir]{long integer }
- Une valeur enti\`ere sur 64 bits. Typiquement, ce sont les valeurs telles que
-le nombre de bytes, qui peuvent d\'epasser 4 milliards et ainsi n\'ecessitent
-une valeur sur 64 bits.
-
-\item [yes|no]
- \index[dir]{yes or no }
- Soit {\bf yes}, soit {\bf no}.
-
-\item [
- \label{Size1}
- size]
-\index[dir]{a name }
-Une taille specifi\'ee en bytes. Typiquement, il s'agit d'une entr\'ee au
-format scientifique (avec virgule flottante) suivie d'un modificateur
-optionnel. L'entr\'ee est stock\'ee en tant qu'entier sur 64 bits. Si un
-modificateur est sp\'ecifi\'e, il doit suivre imm\'ediatement la valeur, sans
-espace. Les modificateurs suivants sont reconnus:
-
-\begin{description}
-
-\item [k]
- 1 024 (kilobytes)
-
-\item [kb]
- 1 000 (kilobytes)
-
-\item [m]
- 1 048 576 (megabytes)
-
-\item [mb]
- 1 000 000 (megabytes)
-
-\item [g]
- 1 073 741 824 (gigabytes)
-
-\item [gb]
- 1 000 000 000 (gigabytes)
- \end{description}
-
-\item {\bf
- \label{Time}
- time}
-\index[dir]{a name }
-Une heure, ou une dur\'ee sp\'ecifi\'ee en secondes. Une valeur {\bf time} est
-stock\'ee en interne en tant qu'entier sur 64 bits, mais il est sp\'ecifi\'e
-en deux parties: un nombre et un modificateur. Le nombre peut \^etre un entier
-ou un nombre \`a virgule flottante. S'il est sp\'ecifi\'e en virgule
-flottante, il sera arrondi \`a l'entier le plus proche. Le modificateur est
-obligatoire et suit le nombre avec ou sans espace intercal\'ee. Les
-modificateurs suivants sont reconnus:
-
-\begin{description}
-
-\item [seconds]
- \index[dir]{seconds }
- secondes
-
-\item [minutes]
- \index[dir]{minutes }
- minutes (60 secondes)
-
-\item [hours]
- \index[dir]{hours }
- heures (3600 secondes)
-
-\item [days]
- \index[dir]{days }
- jours (3600*24 secondes)
-
-\item [weeks]
- \index[dir]{weeks }
- semaines (3600*24*7 secondes)
-
-\item [months]
- \index[dir]{months }
- mois (3600*24*30 secondes)
-
-\item [quarters]
- \index[dir]{quarters }
- trimestres (3600*24*91 secondes)
-
-\item [years]
- \index[dir]{years }
- ann\'ees (3600*24*365 secondes)
-\end{description}
-
-Toute abbr\'eviation des ces modificateurs est aussi autoris\'ee (i.e. {\bf
-seconds} peut \^etre sp\'ecifi\'e par {\bf sec} ou {\bf s}. Une
-sp\'ecification {\bf m} sera interpr\'et\'ee en tant que mois.
-
-La sp\'ecification d'une dur\'ee peut comporter autant de couples
-nombre/modificateur que vous le souhaitez. Par exemple:
-
-\footnotesize
-\begin{verbatim}
-1 week 2 days 3 hours 10 mins
-1 month 2 days 30 sec
-
-\end{verbatim}
-\normalsize
-
-sont des sp\'ecifications valides (\`a partir de la version 1.35.1).
-
-Note! Dans les versions de Bacula ant\'erieures \`a 1.31, le modificateur
-\'etait optionnel. Il est d\'esormais obligatoire.
-\end{description}
-
-\label{ResTypes}
-
-\section{Types de Ressources}
-\index[general]{Types de Ressources }
-\index[general]{Ressources!Types de }
-
-La table suivante \'enum\`ere tous les types de ressource de la version
-courante de Bacula. Elle montre quelle ressource doit \^etre d\'efinie pour
-chaque service ({\it daemon}). Les fichiers de configuration par d\'efaut
-contiennent au moins un exemple de chaque ressource permise, aussi ne soyez
-pas angoiss\'e \`a l'id\'ee d'avoir \`a cr\'eer toutes ces directives {\it ex
-nihilo}.
-
-\begin{longtable}{|l|l|l|l|l|}
- \hline
-\multicolumn{1}{|c| }{\bf Resource } & \multicolumn{1}{c| }{\bf Director } &
-\multicolumn{1}{c| }{\bf Client } & \multicolumn{1}{c| }{\bf Storage } &
-\multicolumn{1}{c| }{\bf Console } \\
- \hline
- {Autochanger } & {No } & {No } & {Yes } & {No } \\
- \hline
- \hline
-{Catalog } & {Oui } & {Non } & {Non } & {Non } \\
- \hline
-{Client } & {Oui } & {Oui } & {Non } & {Non } \\
- \hline
-{Console } & {Oui } & {Non } & {Non } & {Oui } \\
- \hline
-{Device } & {Non } & {Non } & {Oui } & {Non } \\
- \hline
-{Director } & {Oui } & {Oui } & {Oui } & {Oui } \\
- \hline
-{FileSet } & {Oui } & {Non } & {Non } & {Non } \\
- \hline
-{Job } & {Oui } & {Non } & {Non } & {Non } \\
- \hline
-{JobDefs } & {Oui } & {Non } & {Non } & {Non } \\
- \hline
-{Message } & {Oui } & {Oui } & {Oui } & {Non } \\
- \hline
-{Pool } & {Oui } & {Non } & {Non } & {Non } \\
- \hline
-{Schedule } & {Oui } & {Non } & {Non } & {Non } \\
- \hline
-{Storage } & {Oui } & {Non } & {Oui } & {Non }
-\\ \hline
-
-\end{longtable}
-
-\section{Noms, mots de passe et autorisations}
-\label{Names}
-\index[general]{Autorisations!Noms mots de passe et }
-\index[general]{Noms, mots de passe et autorisations }
-\index[general]{Mots de passe}
-
-Pour qu'un {\it daemon} puisse en contacter un autre, il lui faut
-s'authentifier avec un mot de passe. Dans la plupart des cas, le mot de passe
-est associ\'e \`a un nom particulier, de sorte que nom et mot de passe doivent
-correspondre.
-
-Les fichiers de configuration par d\'efaut sont automatiquement d\'efinis avec
-des autorisations correctes et des mots de passe al\'eatoires. Si vous
-modifiez ces fichiers, vous devrez \^etre attentif \`a leur coh\'erence.
-
-Voici un sch\'ema des correspondances que doivent respecter les couples
-''nom/mot de passe" des diff\'erents fichiers de configurations.
-
-\includegraphics{./Conf-Diagram.eps}
-
-Dans la colonne de gauche, vous trouverez les ressources Director, Storage et
-Client, avec leurs noms et mots de passe -- ils sont tous dans le fichier {\bf
-bacula-dir.conf}. Dans la colonne de droite figurent les valeurs
-correspondantes dans les fichiers de configuration de la Console, du Storage
-Daemon (SD) et du File Daemon (FD).
-
-Veuillez noter que l'adresse {\bf fd-sd}, qui appara{\^\i}t dans la ressource
-Storage du Director, pr\'ec\'ed\'ee d'une at\'erisque est transmise au File
-Daemon sous forme symbolique. Le File Daemon la r\'esout alors en une adresse
-IP. Pour cette raison, vous devez utiliser soit une adresse IP, soit une
-adresse pleinement qualifi\'ee. Une adresse telle que {\bf localhost},
-n'\'etant pas pleinement qualifi\'ee, sera r\'esolue par le File Daemon en
-l'h\^ote local du File Daemon, ce qui n'est probablement pas le r\'esultat
-d\'esir\'e. Le mot de passe utilis\'e par le File Daemon pour autoriser la
-communication avec le Storage Daemon est temporaire et unique pour chaque {\it
-job}. Il n'est sp\'ecifi\'e dans aucun fichier de configuration.
-
-\section{Informations d\'etaill\'ees sur chaque {\it daemon}}
-\index[general]{Daemon!Informations d\'etaill\'ees sur chaque }
-\index[general]{Informations d\'etaill\'ees sur chaque daemon }
-
-
-Les d\'etails de chaque ressource et des directives permises sont d\'ecrits
-dans les chapitres suivants.
-
-Les fichiers de configuration suivants doivent \^etre d\'efinis:
-
-\begin{itemize}
-\item
- \ilink{Console}{ConsoleConfChapter} -- Pour d\'efinir les
- ressources pour le programme Console (interface utilisateur avec le Director).
-Ce fichier d\'efinit quels sont les Directors disponibles avec lesquels vous
-pouvez interagir.
-\item
- \ilink{Director}{DirectorChapter} -- Pour d\'efinir les ressources
- n\'ecessaires au Director. Vous y d\'efinissez tous les Clients et Storage
-Daemons que vous utilisez.
-\item
- \ilink{Client}{FiledConfChapter} -- Pour d\'efinir les ressources
- de chaque client \`a sauvegarder. Vous aurez un fichier de ressources Client
-pour chacune des machine qui ex\'ecute un File Daemon.
-\item
- \ilink{Storage}{StoredConfChapter} -- Pour d\'efinir les ressources
- utilis\'ees par chaque Storage Daemon. En principe, vous aurez un seul
-Storage Daemon qui contr\^olera votre (vos) lecteur(s). Quoi qu'il en soit, si
-vous avez des lecteurs sur plusieurs machines, vous aurez au moins un Storage
-Daemon par machine.
-\end{itemize}
+++ /dev/null
-%%
-%%
-
-\section*{La console Bacula}
-\label{_ConsoleChapter}
-\index[general]{Console!Bacula}
-\index[general]{La console Bacula}
-\index[console]{Console!Bacula}
-\index[console]{LA console Bacula}
-\addcontentsline{toc}{section}{La console Bacula}
-
-\subsection*{G\'en\'eralit\'es}
-\index[general]{G\'en\'eralit\'es}
-\addcontentsline{toc}{subsection}{G\'en\'eralit\'es}
-
-La {\bf console Bacula} (parfois d\'esign\'ee "Agent utilisateur") est un programme
-qui permet \`a l'utilisateur autoris\'e ou \`a l'administrateur syst\`eme d'interagir
-avec le Director.
-
-Actuellement, la console Bacula existe en deux versions : une interface shell
-(fa\c{c}on TTY), et une interface graphique GNOME. Avec la console Bacula, vous
-pouvez d\'eterminer l'\'etat d'un job particulier, examiner le contenu du
-catalogue et effectuer certaines manipulations de cartouches.
-
-Il existe d'autre part un programme nomm\'e bwx-console, b\^atie avec wxWidgets qui
-offre une interface graphique aux op\'erations de restauration.
-
-Etant donn\'e que la Console interagit avec le Director au travers du r\'eseau,
-il n'est pas n\'ecessaire que les deux programmes r\'esident sur la m\^eme machine.
-
-Bacula a besoin d'un minimum de retour de la Console afin de pouvoir utiliser plus
-d'une cartouche. En effet, lorsqu'il en r\'eclame une nouvelle, il attend jusqu'\`a
-ce qu'un op\'erateur lui indique, via la Console, qu'une nouvelle cartouche est mont\'ee.
-
-\subsection*{Configuration de la Console}
-\index[general]{Configuration de la Console}
-\index[general]{Configuration!Console}
-\index[console]{Configuration de la Console}
-\index[console]{Configuration!Console}
-\addcontentsline{toc}{subsection}{Configuration de la Console}
-
-Lors de son lancement, la Console lit le fichier de configuration standard
-nomm\'e {\bf bconsole.conf} (ou {\bf gnome-console.conf} dans le cas de la version
-GNOME) Ce fichier d\'efinit une configuration par d\'efaut de la Console et, \`a l'heure
-actuelle, la seule ressource d\'efinie est la ressource Director, qui informe
-la Console du nom et de l'adresse du Director. Pour plus d'informations sur la
-configuration de la Console, voyez le chapitre \ilink{Configurer la Console}{_ChapterStart36}
-de ce manuel.
-
-\subsection*{Utiliser la Console}
-\index[general]{Utiliser la Console}
-\index[general]{Console!Utiliser la}
-\index[console]{Utiliser la Console}
-\index[console]{Console!Utiliser la}
-\addcontentsline{toc}{subsection}{Utiliser la Console}
-
-Le programme Console admet les options suivantes :
-\footnotesize
-\begin{verbatim}
-Usage: bconsole [-s] [-c config_file] [-d debug_level]
- -c <file> set configuration file to file
- -dnn set debug level to nn
- -n no conio
- -s no signals
- -t test - read configuration and exit
- -? print this message.
-\end{verbatim}
-\normalsize
-
-Apr\`es son d\'emarrage, la Console est en attente de vos commandes, ce qui
-est indiqu\'e par une ast\'erisque (*) (ce n'est pas le cas dans la version
-GNOME o\`u vous saisissez vos commandes dans la boite texte en bas de l'\'ecran).
-Vous pouvez, pour toutes les commandes, vous contenter d'entrer le nom de la
-commande, la Console se chargera de vous demander les arguments n\'ecessaires,
-mais dans la plupart des cas, vous pouvez entrer les commandes suivies de leurs
-arguments. Le format g\'en\'eral est :
-
-\footnotesize
-\begin{verbatim}
- <command> <keyword1>[=<argument1>] <keyword2>[=<argument2>] ...
-\end{verbatim}
-\normalsize
-
-O\`u {\bf command} est l'une des commandes \'enum\'er\'ees ci-dessous, {\bf keyword}
-est l'un des mots-clef \'enum\'er\'es ci-dessous (usuellement suivi d'un argument),
-et {\bf argument} est la valeur du mot-clef. La commande peut \^etre abr\'eg\'ee
-jusqu'\`a sa plus courte abr\'eviation unique. Si deux commandes commencent
-par les m\^emes lettres, c'est celle qui appara\^it en t\^ete dans la liste fournie
-par la commande {\bf help} qui sera s\'electionn\'ee si votre abr\'eviation est
-ambig\"ue. Aucun des mots-clef suivant la commande ne peut \^etre abr\'eg\'e.
-
-Par exemple :
-
-\footnotesize
-\begin{verbatim}
-list files jobid=23
-\end{verbatim}
-\normalsize
-
-\'enum\`ere les fichiers sauvegard\'es par le job de JobId 23.
-
-Cette autre commande :
-
-\footnotesize
-\begin{verbatim}
-show pools
-\end{verbatim}
-\normalsize
-
-affiche toutes les ressources Pool.
-
-\subsection*{Quitter la Console}
-\index[general]{Console!Quitter}
-\index[general]{Quitter la Console}
-\index[console]{Console!Quitter}
-\index[console]{Quitter la Console}
-\addcontentsline{toc}{subsection}{Quitter la Console}
-
-Normalement, le programme Console se termine si vous saisissez {\bf quit}
-ou {\bf exit}. Cependant, il il attend jusq"\`a ce que le Director ait pris
-en compte la commande, ce qui peut prendre du temps si ce dernier est d\'ej\`a
-occup\'e \`a une t\^ache longue (par exemple, un \'elagage du catalogue). Si vous voulez
-quitter la Console imm\'ediatement, utilisez la commande {\bf .quit}.
-
-Il n'existe actuellement aucun moyen d'interrompre une commande de la Console
-une fois lanc\'ee (Ctrl-C ne marche pas). En revanche, \`a l'invite d'une commande
-vous demandant de choisir parmi plusieurs possibilit\'es, vous pouvez annuler
-la commande en entrant un point ({\bf .}), vous serez dans la plupart des cas
-ramen\'e \`a l'invite principal, ou \`a l'invite pr\'ec\'edente, dans le cas de choix
-imbriqu\'es. En quelques endroits, comme celui o\`u l'on vous demande un
-nom de volume, le point sera pris pour la r\'eponse (Bacula pensera que vous
-voulez nommer votre volume "."). Dans cette situation, vous serez la plupart
-du temps en mesure d'annuler \`a l'invite suivante.
-
-\label{keywords}
-\subsection*{Index des mots-clef de la Console}
-\index[general]{Mots-clef!Index Console}
-\index[general]{Index des mots-clef de la Console}
-\index[console]{Mots-clef!Index Console}
-\index[console]{Index des mots-clef de la Console}
-\addcontentsline{toc}{subsection}{Index des mots-clef de la Console}
-Sauf sp\'ecification contraire, chacun des mots-clef suivant admet un argument,
-qui est sp\'ecifi\'e apr\`es le mot-clef suivi du signe \'egale. Par exemple :
-
-\begin{verbatim}
-jobid=536
-\end{verbatim}
-
-Notez que cette liste est probablement incompl\`ete, car le processus de cr\'eation
-est toujours en cours. Il se peut aussi qu'elle ne soit pas dans l'ordre
-alphab\'etique.
-
-\begin{description}
-\item [restart]
- Permis dans la commande {\it python}, provoque le red\'emarrage de
- l'interpr\'eteur Python. Ne prend pas d'arguments.
-\item [all]
- Permis dans les commandes {\it status} et {\it show} pour sp\'ecifier, respectivement, tous les
- composants ou toutes les ressources.
-\item [before]
- Utilis\'e dans la commande {\it restore}.
-\item [bootstrap]
- Utilis\'e dans la commande {\it restore}.
-\item [catalog]
- Permis dans la commande {\it use} pour sp\'ecifier le nom de catalogue \`a utiliser.
-\item [catalogs]
- Utilis\'e dans la commande {\it show}. Ne prend pas d'arguments
-\item [client | fd]
-\item [clients]
- Utilis\'e dans les commandes {\it show}, {\it list}, et {\it llist}. ne prend pas d'arguments.
-\item [counters]
- Utilis\'e dans la commande {\it show}. Ne prend pas d'arguments.
-\item [current]
- Utilis\'e dans la commande {\it restore}. Ne prend pas d'arguments.
-\item [days]
- Utilisé pour définir le nombre de jours que la commande "list nextvol" doit
- prendre en compte dans son évaluation des prochains jobs à exécuter.
- Le mot-clef "day" peut aussi être utilisé avec la commande "status dir"
- afin qu'elle affiche les jobs planifiés pour la période spécifiés.
-\item [devices]
- Utilis\'e dans la commande {\it show}. Ne prend pas d'arguments.
-\item [dir | director]
-\item [directors]
- Utilis\'e dans la commande {\it show}. Ne prend pas d'arguments.
-\item [directory]
- Utilis\'e dans la commande {\it restore}. Son argument spécifie
- le répertoire à restaurer.
-\item [enabled]
- Ce mot-clef peut être utilisé avec la commande {\bf update volume} et admet
- l'un des arguments suivants : yes, true, no, false, archived, 0, 1, 2, où
- 0 correspond à "no" ou "false", 1 à "yes" ou "true" et 2 à "archived". Les volumes
- avec le statut "archived" ne seront pas utilisés, pas plus que ne seront élagués leurs
- enregistrements dans le catalogue. Les volumes qui n'ont pas le statut "enabled"
- ne seront pas utilisés pour des sauvegardes ou des restaurations.
-\item [done]
- Utilis\'e dans la commande {\it restore}. Ne prend pas d'arguments.
-\item [file]
- Utilis\'e dans la commande {\it restore}.
-\item [files]
- Utilis\'e dans les commandes {\it list}, et {\it llist}. ne prend pas d'arguments.
-\item [fileset]
-\item [filesets]
- Utilis\'e dans la commande {\it show}. Ne prend pas d'arguments.
-\item [help]
- Utilis\'e dans la commande {\it show}. Ne prend pas d'arguments.
-\item [jobs]
- Utilis\'e dans les commandes {\it show}, {\it list} et {\it llist}. Ne prend pas d'arguments.
-\item [jobmedia]
- Utilis\'e dans les commandes {\it list}, et {\it llist}. ne prend pas d'arguments.
-\item [jobtotals]
- Utilis\'e dans les commandes {\it list}, et {\it llist}. ne prend pas d'arguments.
-\item [jobid]
- Le JobId est le num\'ero de job qui est affich\'e dans le rapport de job.
- C'est l'index du catalogue pour le job donn\'e. Bien qu'il soit unique
- pour tous les jobs existant dans le catalogue, le m\^eme JobId peut
- \^etre r\'eutilis\'e une fois qu'un job a \'et\'e supprim\'e du catalogue.
- Vous d\'esignerez certainement les jobs sp\'ecifiques par leur JobId.
-\item [job | jobname]
- Le mot-clef Job ou Jobname se r\'ef\`ere au nom que vous avez sp\'ecifi\'e
- dans la ressource Job, et donc peut d\'esigner plusieurs jobs effectu\'es.
- C'est particuli\`erement utile lorsque vous voulez la liste des jobs
- execut\'es portant un nom particulier.
-\item [level]
-\item [listing]
- Permis dans la commande {\it estimate}. Ne prend pas d'arguments.
-\item [limit]
-\item [messages]
- Utilis\'e dans la commande {\it show}. Ne prend pas d'arguments.
-\item [media]
- Utilis\'e dans les commandes {\it list}, et {\it llist}. ne prend pas d'arguments.
-\item [nextvol | nextvolume]
- Utilis\'e dans les commandes {\it list}, et {\it llist}. ne prend pas d'arguments.
-\item [on]
- Ne prend pas d'arguments.
-\item [off]
- Ne prend pas d'arguments.
-\item [pool]
-\item [pools]
- Utilis\'e dans les commandes, {\it show}, {\it list}, et {\it llist}. ne prend pas d'arguments.
-\item [select]
- Utilis\'e dans la commande {\it restore}. Ne prend pas d'arguments.
-\item [storages]
- Utilis\'e dans la commande {\it show}. Ne prend pas d'arguments.
-\item [schedules]
- Utilis\'e dans la commande {\it show}. Ne prend pas d'arguments.
-\item [sd | store | storage]
-\item [ujobid]
- L'ujobid est un identificateur unique de job qui est affich\'e dans
- le rapport du job. Actuellement, il consiste en le nom du job
- (celui de la directive Name de ce job) suffix\'e de la date et de
- l'heure d'ex\'ecution du job. Ce mot-clef est utile si vous voulez
- identifier compl\`etement l'instance du job ex\'ecut\'e.
-\item [volume]
-\item [volumes]
- Utilis\'e dans les commandes {\it list}, et {\it llist}. ne prend pas d'arguments.
-\item [where]
- Utilis\'e dans la commande {\it restore}. Ne prend pas d'arguments.
-\item [yes]
- Utilis\'e dans la commande {\it restore}. Ne prend pas d'arguments.
-\end{description}
-
-\label{list}
-\subsection*{Index des commandes de la Console}
-\index[general]{Commandes!Index des commandes de la Console}
-\index[general]{Index des commandes de la Console}
-\index[console]{Commandes!Index des commandes de la Console}
-\index[console]{Index des commandes de la Console}
-\addcontentsline{toc}{subsection}{Index des commandes de la Console}
-
-Les commandes suivantes sont actuellement impl\'ement\'ees :
-
-\begin{description}
-\item [{add [pool=\lt{}pool-name\gt{} storage=\lt{}storage\gt{}
- jobid=\lt{}JobId\gt{}]} ]
- \index[console]{add}
-Cette commande sert \`a ajouter des volumes \`a un pool existant. Les noms des
-volumes saisis sont plac\'es dans le catalogue et deviennent ainsi disponibles
-pour les sauvegardes. Normalement, on pr\'ef\`er utiliser la commande {\bf label}
-qui remplit les m\^emes fonctions en plus d'apposer une \'etiquette logicielle
-(label) sur les bandes, par opposition \`a {\bf add} qui se contente de
-r\'ef\'erencer le volume dans le catalogue. Ainsi, si vous utilisez {\bf add},
-le volume doit pr\'eexister et \^etre d\'ej\`a \'etiquet\'e. Cette commande peut
-cependant \^etre utile si vous voulez ajouter plusieurs cartouches dans un
-pool en ne les \'etiquettant que plus tard. Elle peut aussi se r\'ev\'eler utile
-si vous importez des cartouches provenant d'un autre site. Consultez le
-paragraphe sur la commande {\bf label} pour conna\^itre la liste des
-caract\`eres autoris\'es dans un nom de volume.
-
-\item [autodisplay on/off]
- \index[console]{autodisplay on/off}
- Cette commande accepte les arguments {\bf on} ou {\bf off} et active ou
- d\'esactive l'affichage automatique des messages. La valeur par d\'efaut dans
- la Console est {\bf off}, ce qui signifie que les messages en attente
- vous sont notifi\'es, mais qu'ils ne sont pas automatiquement affich\'es.
- La valeur par d\'efaut pour la console GNOME est {\bf on}, ainsi les
- messages sont affich\'es lorqu'ils sont re\c{c}us (habituellement dans les 5 secondes
- apr\`es qu'ils aient \'et\'e g\'en\'er\'es).
-
- Lorsque l'affichage automatique est d\'esactiv\'e, vous devez explicitement
- en demander l'affichage avec la commande {\bf messages}.
-
-\item [automount on/off]
- \index[console]{automount on/off}
- Cette commande accepte les arguments {\bf on} ou {\bf off} et active ou
- d\'esactive le montage automatique de la cartouche apr\`es une commande {\bf label}.
- La valeur par d\'efaut est {\bf on}. Si le montage automatique est d\'esactiv\'e,
- vous devez explicitement monter la cartouche apr\`es avoir utilis\'e {\bf label}
- pour pouvoir \'ecrire dessus.
-
-\item [{cancel [jobid=\lt{}number\gt{} job=\lt{}job-name\gt{} ujobid=\lt{}unique-jobid\gt{}]}]
- \index[console]{cancel jobid}
- Cette commande sert \`a supprimer un job et admet les arguments {\bf jobid=nnn}
- ou {\bf job=xxx} o\`u nnn est \`a remplacer par le JobId et xxx par le nom de
- job. Si vous lancez cette commande sans arguments, la Console vous propose
- de choisir parmi les jobs actifs celui \`a supprimer.
-
- Une fois qu'un job est marqu\'e "A supprimer", il peut se passer quelques instants
- (en g\'en\'eral, moins d'une minute) avant qu'il se termine, en fonction des
- op\'erations en cours.
-
-\item [{ create [pool=\lt{}pool-name\gt{}]}]
- \index[console]{create pool}
- Cette commande sert \`a cr\'eer un enregistrement Pool dans le catalogue
- selon les ressources Pool d\'efinis dans le fichier de configuration
- du Director. En un sens, cette commande se content de transf\'erer
- l'information depuis la ressource Pool dans le fichier de configuration
- vers le catalogue. En principe, cete commande est automatiquement
- ex\'ecut\'ee au lancement du Director, pourvu que le pool soit r\'ef\'erenc\'e
- dans une ressource Job. Si vous utilisez cette commande sur un pool
- existant, elle met \`a jour le catalogue en foction des informations de
- la ressource Pool. Apr\`es avoir cr\'e\'e un pool, vous uiliserez
- probablement la commande {\bf label} pour \'etiqueter un ou plusieurs
- volumes et enregistrer leurs noms dans le catalogue.
-
- Si, au lancement d'un job, Bacula d\'etermine qu'il n'y a pas de pool
- enregistr\'e dans le catalogue, mais qu'il existe une ressource Pool pour
- le pool appropri\'e, alors il le cr\'e\'e pour vous. Si vous voulez le voir
- appara\^itre imm\'ediatement dans le catalogue, utilisez cette commande pour
- forcer sa cr\'eation imm\'ediate.
-
-\item [{ delete [volume=\lt{}vol-name\gt{} pool=\lt{}pool-name\gt{} job
- jobid=\lt{}id\gt{}]}]
- \index[console]{delete}
- Cette commande s'utilise pour supprimer un volume, un pool ou un job
- du catalogue, ainsi que tous les enregistrements du catalogue qui leur
- sont associ\'es. Cette commande op\`ere exclusivement sur le catalogue
- et n'a aucune r\'epercussion sur les donn\'ees \'ecrites sur les cartouches.
- Elle peut \^etre dangereuse, et nous vous recommandons fortement de ne
- pas l'utiliser si vous ne savez pas exactement ce que vous faites.
-
- Voici la forme compl\`ete de cette commande :
-
-\begin{verbatim}
-delete pool=\lt{}pool-name\gt{}
-\end{verbatim}
-
- supprime un pool du catalogue.
-
-\begin{verbatim}
-delete volume=\lt{}volume-name\gt{} pool=\lt{}pool-name\gt{}
-\end{verbatim}
-
- supprime du catalogue un volume du pool sp\'ecifi\'e.
-
-\begin{verbatim}
-delete JobId=\lt{}job-id\gt{} JobId=\lt{}job-id2\gt{} ...
-\end{verbatim}
-
- supprime du catalogue le job sp\'ecifi\'e.
-
-\begin{verbatim}
-delete Job JobId=n,m,o-r,t ...
-\end{verbatim}
-
- supprime les job de JobIds m,n,o,p,q,r et t (o\`u m,n,... sont, bien sur, des
- nombres). Ainsi, la commande "delete jobid" accepte les listes et les plages
- de jobids.
-
-\item [disable job\lt{}job-name\gt{}]
- \index[console]{enable}
- Cette commande vous permet de d\'esactiver un job normalement planifi\'e
- pour ex\'ecution. Le job peut avoir \'et\'e pr\'ealablement activ\'e par la
- directive {\bf Enabled} dans la ressource Job, ou avec la commande
- {\bf enable} dans la Console. Au prochain d\'emarrage du Director, ou
- si le fichier de configuration est recharg\'e, l'\'etat Enable/Disable sera
- r\'etabli \`a celui sp\'ecifi\'e dans la ressource Job (la valeur par d\'efaut
- est enabled).
-
-\item [enable job\lt{}job-name\gt{}]
- \index[console]{enable}
- Cette commande vous permet de d'activer un job planifi\'e
- pour ex\'ecution automatique. Le job peut avoir \'et\'e pr\'ealablement d\'esactiv\'e par la
- directive {\bf Disabled} dans la ressource Job, ou avec la commande
- {\bf disable} dans la Console. Au prochain d\'emarrage du Director, ou
- si le fichier de configuration est recharg\'e, l'\'etat Enable/Disable sera
- r\'etabli \`a celui sp\'ecifi\'e dans la ressource Job (la valeur par d\'efaut
- est enabled).
-
-\label{estimate}
-\item [estimate]
- \index[console]{estimate}
- Avec cette commande, vous pouvez vous faire une id\'ee du nombre de fichier
- seront sauvegard\'es. Vous pouvez aussi l'utiliser pour \'eprouver les
- param\`etres Include de vos FileSets sans passer par une sauvegarde
- r\'eelle. Par d\'efaut, l'estimation est faite pour une sauvegarde Full.
- Cependant, vous pouvez passer outre ce comportement en sp\'ecifiant
- {\bf level=Incremental} ou {\bf level=Differential} sur la ligne de
- commande. Un nom de job doit \^etre sp\'ecifi\'e, faute de quoi il vous sera
- demand\'e. Optionnellement, vous pouvez sp\'ecifier un client et un
- FileSet sur la ligne de commande. Bacula contacte alors le client
- et calcule le nombre de fichier et d'octets qui seraient
- sauvegard\'es. Notez qu'il s'agit d'une estimation calcul\'ee d'apr\`es
- le nombre de blocs dans les fichiers plut\^ot qu'en lisant le nombre
- effectif d'octets. Aussi, la taille estim\'ee est g\'en\'eralement plus
- importante que celle de la sauvegarde r\'eelle.
-
- Optionnellement, vous pouvez ajouter le mot-clef {\bf listing}, auquel cas
- tous les fichiers \`a sauvegarder seront affich\'es. Notez qu'un tel affichage
- peut prendre un certain temps s'il s'agit d'une grosse sauvegarde.
- Voici la forme compl\`ete de cette commande :
-
-\begin{verbatim}
-estimate job=\lt{}job-name\gt{} listing client=\lt{}client-name\gt{}
- fileset=\lt{}fileset-name\gt{} level=\lt{}level-name\gt{}
-\end{verbatim}
-
- La sp\'ecification du {\bf job} est suffisante, mais vous pouvez aussi
- passer outre le client, le FileSet et/ou le niveau en les
- sp\'ecifiant sur la ligne de commande.
-
- Par exemple, vous pourriez faire ceci :
-
-\footnotesize
-\begin{verbatim}
- @output /tmp/listing
- estimate job=NightlySave listing level=Incremental
- @output
-\end{verbatim}
-\normalsize
-
-ce qui produirait une liste compl\`ete de tous les fichiers \`a sauvegarder pour
-le job {\bf NightlySave} au cours d'une sauvegarde incr\'ementale, et qui
-consignerait cette liste dans le fichier {\bf /tmp/listing}. Notez que l'évaluation
-produite par cette commande se base sur les tailles de fichiers contenues dans
-l'objet "répertoire", aussi l'estimation peut être très éloignée de la réalité si vous
-avez des fichiers creux (NDT : sparse files) sur votre système. Ce type de fichiers se
-rencontre souvent sur les systèmes 64 bits avec certains systèmes de fichiers.
-Le volume obtenu par l'évaluation est celui que sauvegardera Bacula si l'option
-sparse est désactivée. Il n'y a actuellement aucun moyen d'évaluer le volume de
-ce qui serait sauvegardé avec l'option sparse activée.
-
-\item [help]
- \index[console]{help}
- Cette commande affiche la liste des commandes disponibles.
-
-\item [label]
- \index[console]{label}
- \index[console]{relabel}
- \index[general]{label}
- \index[general]{relabel}
- Cette commande est utilis\'ee pour \'etiqueter les volumes. La forme compl\`ete est :
-
-\begin{verbatim}
- label storage=\lt{}storage-name\gt{} volume=\lt{}volume-name\gt{}
- slot=\lt{}slot\gt{}
-\end{verbatim}
-
- Si vous omettez l'un quelconque des arguments, il vous sera r\'eclam\'e.
- Le type de m\'edia est automatiquement r\'ecup\'er\'e de la ressource Storage.
- Une fois que les informations requises sont r\'eunies, la Console
- contacte le Storage Daemon sp\'ecifi\'e et lui ordonne d'\'etiqueter la
- cartouche sp\'ecifi\'ee. Si l'\'etiquetage s'effectue correctement, la
- Console cr\'e\'e un nouvel enregistrement dans le catalogue pour le
- volume dans le pool appropri\'e.
-
- Les noms de volumes ne doivent contenir que des lettres, chiffres et
- les caract\`eres sp\'eciaux tiret ({\bf -}), sous-lign\'e ({\bf \_}), double-point
- ({\bf :}), et point ({\bf .}). Tous les autres caract\`eres, y compris l'espace,
- sont ill\'egaux. Cette restriction vise \`a assurer une bonne lisibilit\'e
- des noms de volumes pour r\'eduire le risque d'erreurs humaines.
-
- Notez que lors de l'\'etiquetage d'une cartouche vierge, Bacula obtient des
- erreurs {\bf read I/O error} lorqu'il tente de v\'erifier si la cartouche
- a d\'ej\`a un label. Si vous voulez \'eviter ce genre de message, placez un
- indicateur de fin de fichier sur votre cartouche avant son \'etiquetage :
-
-\footnotesize
-\begin{verbatim}
- mt rewind
- mt weof
-
-\end{verbatim}
-\normalsize
-
-La commande label peut \'echouer pour plusieurs raisons :
-
-
-\begin{enumerate}
-\item Le nom de volume que vous avez sp\'ecifi\'e figure d\'ej\`a dans le catalogue.
-\item Le Storage Daemon a d\'ej\`a une cartouche mont\'ee dans le lecteur. Dans ce cas,
- vous devez la d\'emonter ({\bf unmount}) et ins\'erer une cartouche vierge
- avant de lancer la commande {\bf label}.
-\item La cartouche dans le lecteur porte d\'ej\`a une \'etiquette Bacula.
- (Bacula ne r\'e-\'etiquette jamais une cartouche \`a moins qu'elle soit recycl\'ee
- et que vous utilisiez la commande {\bf relabel} ).
-\item Il n'y a pas de cartouche dans le lecteur.
-\end{enumerate}
-
-Il existe deux moyens pour r\'e-\'etiqueter un volume qui porte d\'ej\`a une
-\'etiquette Bacula. La m\'ethode brutale consiste \`a \'ecrire une marque de fin de
-fichier sur la cartouche vec la commande du syst\`eme d'exploitation {\bf mt},
-quelque chose dans ce style :
-
-\footnotesize
-\begin{verbatim}
- mt -f /dev/st0 rewind
- mt -f /dev/st0 weof
-\end{verbatim}
-\normalsize
-
-puis d'utiliser la commande {\bf label} pour ajouter une nouvelle \'etiquette.
-Cette m\'ethode peut cependant laisser des traces de l'ancien volume dans le
-catalogue.
-
-Il est pr\'ef\'erable d'utiliser la commande {\bf relabel} d\'ecrite ci-dessous sur
-un volume purg\'e (automatiquement ou avec la commande {\bf purge}).
-
-Si votre librairie comporte un lecteur de codes barres, vous pouvez
-\'etiqueter tous les volumes qu'elle contient en
-utilisant la commande {\bf label barcodes}. En effet, apr\`es le lancement de
-cette commande, Bacula monte chaque cartouche l'une apr\`es l'autre et
-l'\'etiquette du nom de son code barres. simultan\'ement, l'enregistrement
-appropri\'e est cr\'e\'e dans le catalogue. Toute cartouche dont le code barres
-commence par les m\^emes caract\`eres que ceux sp\'ecifi\'es par la directive
-"CleaningPrefix" de la ressource Pool du director est consid\'er\'ee comme
-une cartouche de nettoyage et ne re\c{c}oit donc pas d'\'etiquette, bien
-qu'une entr\'ee dans le catalogue lui soit d\'edi\'ee. Par exemple avec :
-
-\footnotesize
-\begin{verbatim}
- Pool {
- Name ...
- Cleaning Prefix = "CLN"
- }
-
-\end{verbatim}
-\normalsize
-
-tout slot contenant une cartouche de code barres CLNxxxxx sera trait\'ee en tant
-que cartouche de nettoyage et ne sera jamais mont\'ee. Notez que la forme
-compl\`ete de la commande est :
-
-\footnotesize
-\begin{verbatim}
-update storage=xxx pool=yyy slots=1-5,10 barcodes
-\end{verbatim}
-\normalsize
-
-\item [list]
- \index[console]{list}
- La commande {\bf list} extrait du catalogue les informations demand\'ees. Les
- diff\'erentes champs de chaque enregistrement sont \'enum\'er\'es sur une simple
- ligne. Voici les diff\'erentes formes de la commande :
-
-\footnotesize
-\begin{verbatim}
- list jobs
-
- list jobid=<id> (affiche le jobid id)
-
- list ujobid=<unique job name> (affiche le job dont le nom unique est <unique job name>)
-
- list job=<job-name> (Affiche tous les jobs dont le nom est "job-name")
-
- list jobname=<job-name> (voir ci-dessus)
-
- Dans cette commande, vous pouvez ajouter "limit=nn" pour limiter la sortie \`a nn jobs.
-
- list jobmedia
-
- list jobmedia jobid=<id>
-
- list jobmedia job=<job-name>
-
- list files jobid=<id>
-
- list files job=<job-name>
-
- list pools
-
- list clients
-
- list jobtotals
-
- list volumes
-
- list volumes jobid=<id>
-
- list volumes pool=<pool-name>
-
- list volumes job=<job-name>
-
- list volume=<volume-name>
-
- list nextvolume job=<job-name>
-
- list nextvol job=<job-name>
-
- list nextvol job=<job-name> days=nnn
-
-
-
-\end{verbatim}
-\normalsize
-
- Ce que font la plupart des commandes ci-dessus devrait \^etre plus ou moins \'evident.
- En g\'en\'eral, si vous ne sp\'ecifiez pas tous les arguments requis, la Console
- vous sollicitera pour les arguments manquants.
-
- La commande {\bf list nextvol} affiche le nom du volume qui dera utilis\'e par
- le job sp\'ecifi\'e. Soyez conscient que le prochain volume utilis\'e
- pour un job d\'epend de nombreux facteurs dont le temps, et les autres
- jobs qui seront ex\'ecut\'es avant celui sp\'ecifi\'e, qui peuvent remplir une
- cartouche qui \'etait vide au moment de l'ex\'ecution de {\bf list nextvol}.
- Aussi, consid\'erez la r\'eponse fournie par cette commande comme une bonne
- estimation plut\^ot que comme une r\'eponse d\'efinitive. De plus, cette commande
- a certains effets de bord : \'etant donn\'e qu'elle ex\'ecute le m\^eme algorithme
- qu'un job, elle est susceptible de purger ou recycler un volume. Par d\'efaut,
- le job sp\'ecifi\'e doit \^etre ex\'ecut\'e dans les deux jours ou aucun volume
- ne sera trouv\'e. Vous pouvez cependant sp\'ecifier jusqu'\`a 50 jours en avant
- avec la directive {\bf days=nnn}. Si, par exemple, un vendredi, vous voulez
- savoir quel volume sera requis lundi pour le job MyJob, utilisez
- {\bf list nextvol job=MyJob days=3}.
-
- Si vous souhaitez ajouter vos propres commandes pour interroger le
- catalogue, vous pouvez les placer dans le fichier {\bf query.sql}.
- Cela demande quelques connaissances du langage SQL. Voyez le
- paragraphe sur la commande {\bf query} ci-dessous pour plus
- d'informations. Voyez aussi le paragraphe sur la commande
- {\bf llist} qui permet l'affichage complet des informations du
- catalogue.
-
- Voici un exemple d'affichage produit par la commande {\bf list pools} :
-
-\footnotesize
-\begin{verbatim}
-+------+---------+---------+---------+----------+-------------+
-| PoId | Name | NumVols | MaxVols | PoolType | LabelFormat |
-+------+---------+---------+---------+----------+-------------+
-| 1 | Default | 0 | 0 | Backup | * |
-| 2 | Recycle | 0 | 8 | Backup | File |
-+------+---------+---------+---------+----------+-------------+
-\end{verbatim}
-\normalsize
-
- Comme mentionn\'e pr\'ec\'edemment, la commande {\bf list} affiche des
- informations du catalogue. Certais \'el\'ements sont ajout\'es dans le catalogue
- d\`es le d\'emarrage de Bacula, mais en g\'en\'eral, la plupart ne le sont que
- lorsqu'ils sont utilis\'es pour la premi\`ere fois. C'est le cas des clients,
- des jobs, etc.
-
- Bacula cr\'e\'e une entr\'ee relative \`a un nouveau client dans le catalogue
- la premi\`ere fois que vous ex\'ecut\'ez un job pour ce client. L'entr\'ee est
- cr\'e\'ee que le job aboutisse ou qu'il \'echoue, mais il doit au moins d\'emarrer.
- Lorsque le client est contact\'e, des informations suppl\'ementaires sont
- r\'ecup\'er\'ees du client (le r\'esultat d'un "uname -a") et ajout\'ees au
- catalogue. Un {\bf status} n'entra\^ine pas l'enregistrement dans le catalogue.
-
- Si vous voulez visualiser les ressources Client disponibles dans votre
- catalogue, utilisez la commande {\bf show clients}.
-
-\item [llist]
- \index[console]{llist}
- La commande {\bf llist} (pour "long list") admet les m\^emes arguments que la
- commande list d\'ecrite ci-dessus. La diff\'erence est que {\bf llist} affiche
- le contenu complet de chaque enregistrement du catalogue s\'electionn\'e.
- L'affichage des diff\'erents champs est produit verticalement, un champ par
- ligne. Cette commande peut \^etre tr\`es prolixe.
-
- Si, au lieu du {\bf list pools} de l'exemple pr\'ec\'edent, vous saisissez
- {\bf llist pools}, vous obtiendrez un affichage de ce genre :
-
-\footnotesize
-\begin{verbatim}
- PoolId: 1
- Name: Default
- NumVols: 0
- MaxVols: 0
- UseOnce: 0
- UseCatalog: 1
- AcceptAnyVolume: 1
- VolRetention: 1,296,000
- VolUseDuration: 86,400
- MaxVolJobs: 0
- MaxVolBytes: 0
- AutoPrune: 0
- Recycle: 1
- PoolType: Backup
- LabelFormat: *
-
- PoolId: 2
- Name: Recycle
- NumVols: 0
- MaxVols: 8
- UseOnce: 0
- UseCatalog: 1
- AcceptAnyVolume: 1
- VolRetention: 3,600
- VolUseDuration: 3,600
- MaxVolJobs: 1
- MaxVolBytes: 0
- AutoPrune: 0
- Recycle: 1
- PoolType: Backup
- LabelFormat: File
-
-\end{verbatim}
-\normalsize
-
-\item [messages]
- \index[console]{messages}
- Cette commande affiche imm\'ediatement tout message de la console en attente.
-
-
-\item [mount]
- \index[console]{mount}
-
- La commande {\bf mount} est utilis\'ee pour obtenir de Bacula qu'il lise
- un volume charg\'e dans un lecteur. C'est un moyen d'indiquer \`a Bacula
- que vous avez charg\'e une cartouche qu'il doit examiner. Cette commande
- n'est utilis\'ee que lorsque Bacula a demand\'e votre intervention pour
- charger un lecteur vide, ou lorsque vous avez explicitement d\'emont\'e
- un volume avec la commande {\bf unmount} dans la Console, ce qui
- provoque la fermeture du lecteur. Si vous avez une librairie, vous ne
- ferez pas op\'erer Bacula dessus avec la commande mount. Voici les
- diff\'erentes formes de cette commande :
-
-mount storage=\lt{}storage-name\gt{}
-
-mount [ jobid=\lt{}id\gt{} | job=\lt{}job-name\gt{} ]
-
- Si vous avez sp\'ecifi\'e {\bf Automatic Mount = yes} dans la ressource
- Device du Storage Daemon, Alors Bacula pourra acc\'eder automatiquement
- au volume, \`a moins que vous ne l'ayez explicitement d\'emont\'e ({\bf unmount})
- dans la Console.
-
-\item[python]
- \index[console]{python}
- La commande {\bf python} n'admet qu'un argument : {\bf restart}.
-
- La commande {\bf python} {\bf restart} r\'einitialise l'interpr\'eteur Python
- du Director. Ceci peut \^etre tr\`es utile pour effectuer des tests, car une
- fois que le Director est lanc\'e, et l'interpr\'eteur Python initialis\'e,
- il n'y a pas d'autre moyen de lui faire int\'egrer des modifications
- du script de d\'emarrage {\bf DirStartUp.py}. Pour plus de d\'etails sur
- l'\'ecriture de scripts Python, consultez le chapitre \ilink{Ecrire des
- scripts Python}{_ChapterStart60}.
-
-\label{ManualPruning}
-\item [prune]
- \index[console]{prune}
- La commande {\bf prune} permet d'\'elaguer en toute s\'ecurit\'e les
- enregistrements expir\'es du catalogue pour les jobs et les volumes.
- Cette commande n'affecte que le catalogue, et non les donn\'ees
- \'ecrites sur les volumes. Dans tous les cas, la commande {\bf prune}
- respecte les p\'eriodes de r\'etention des enregistrements sp\'ecifi\'es.
- Vous pouvez \'elaguer les jobs expir\'es, ainsi que les jobs et fichiers
- d'un volume sp\'ecifi\'e.
-
-prune files|jobs|volume client=\lt{}client-name\gt{}
-volume=\lt{}volume-name\gt{}
-
- Pour qu'un volume soit \'elagu\'e, son {\bf VolStatus} doit \^etre Full,
- Used, ou Append, faute de quoi l'\'elagage sera sans effet.
-
-\item [purge]
- \index[console]{purge}
- La commande {\bf purge} efface les enregistrements sp\'ecifi\'es du catalogue
- sans \'egards pour les p\'eriodes de r\'etention. {\bf Purge} n'affecte que le
- catalogue, et non les donn\'ees \'ecrites sur les volumes. Cette commande
- peut se r\'ev\'eler tr\`es dangereuse car vous pouvez parfaitement supprimer
- les enregistrements relatifs \`a des sauvegardes valides et r\'ecentes. Aussi,
- nous vous recommandons de ne pas l'utiliser \`a moins de savoir exactement
- ce que vous faites. Voici les diff\'erentes formes de la commande {\bf purge} :
-
-purge files jobid=\lt{}jobid\gt{}|job=\lt{}job-name\gt{}|client=\lt{}client-name\gt{}
-
-purge jobs client=\lt{}client-name\gt{} (of all jobs)
-
-purge volume|volume=\lt{}vol-name\gt{} (of all jobs)
-
-
- Pour qu'un volume puisse \^etre purg\'e, son {\bf VolStatus} doit \^etre Full,
- Used, ou Append, faute de quoi la purge sera sans effet.
-
-\item [relabel]
- \index[console]{relabel}
- \index[general]{relabel}
- Cette commande sert \`a r\'e-\'etiqueter physiquement un volume. En voici
- la forme compl\`ete :
-
-relabel storage=\lt{}storage-name\gt{} oldvolume=\lt{}old-volume-name\gt{}
- volume=\lt{}newvolume-name\gt{}
-
- Si vous omettez l'un quelconque des arguments, la console vous sollicitera
- pour obtenir les informations manquantes. Pour qu'un volume puisse \^etre
- r\'e-\'etiquet\'e, il doit figurer dans le catalogue, et avoir le statut
- {\bf Purged} ou {\bf Recycle}. Cette situation peut se pr\'esenter
- automatiquement par l'application des p\'eriodes de r\'etention, ou vous
- pouvez l'obtenir par une {\bf purge} explicite du volume.
-
- Une fois que le volume a \'et\'e physiquement r\'e-\'etiquet\'e, les donn\'ees
- qu'il contenait sont d\'efinitivement et irr\'em\'ediablement perdues.
-
-\item [release]
- \index[console]{release}
- Cette commande ordonne au Storage Daemon de rembobiner la cartouche
- dans le lecteur, et de relire son \'etiquette \`a la prochaine utilisation
- de la cartouche.
-
-release storage=\lt{}storage-name\gt{}
-
- Apr\`es cette commande, le lecteur est gard\'e \`a l'\'etat ouvert par Bacula
- (sauf si l'option Always Open est d\'esactiv\'ee dans la configuration
- du Storage Daemon), et il ne peut donc \^etre utilis\'e par un autre
- programme. Toutefois, il est possible, avec certains lecteurs, de
- changer la cartouche \`a ce stade. Lors du prochain job, Bacula saura
- relire l'\'etiquette de la cartouche pour savoir laquelle est mont\'ee.
- Si vous voulez \^etre en mesure d'utiliser le lecteur avec un autre
- programme, par exemple {\bf mt}, vous devez uiliser la commande
- {\bf unmount} pour que Bacula le lib\`ere compl\`etement.
-
-\item [reload]
- \index[console]{reload}
- Lorsqu'il re\c{c}oit la commande {\bf reload}, le Director relit ses fichiers
- de configuration et applique les \'eventuelles modifications. Celles-ci
- sont prises en compte imm\'ediatement, et donc effectives pour tous les
- jobs \`a venir. Notez cependant qu'en ce qui concerne les modifications
- apport\'ees aux Schedules, la prise en compte des nouvelles valeur peut
- \^etre report\'ee au del\`a de l'ex\'ecution des jobs d\'ej\`a planifi\'es pour
- les deux prochaines heures. Ceci est d\^u au planificateur qui pr\'evoit
- "pr\'e-planifie" jusqu'\`a deux heures \`a l'avance les jobs \`a ex\'ecuter.
- Ainsi, des jobs qui ont d\'ej\`a \'et\'e "pr\'e-planifi\'es" seront ex\'ecut\'es
- suivant les valeurs sp\'ecifi\'ees par la ressource Schedule avant sa
- modification. Les nouveaux jobs utiliseront les nouvelles valeurs.
- A chaque fois que vous utilisez la commande {\bf reload} alors que
- des jobs sont en cours d'ex\'ecution, les valeurs de la configuration
- pr\'ec\'edente demeurent en vigueur jusqu'\`a ce que les ces jobs se terminent.
- Le Director peut ainsi conserver jusqu'\`a 10 jeux de configurations
- ant\'erieures avant de refuser une nouvelle commande {\bf reload}.
- Une fois que l'un, au moins, des jeux de valeurs ant\'erieur a \'et\'e accept\'e,
- il peut \`a nouveau accepter de nouvelles commandes {\bf reload}.
-
- Bien qu'il soit possible de recharger la configuration du Director
- \`a la vol\'ee, alors m\^eme que des jobs sont en cours d'ex\'ecution, il faut
- garder \`a l'esprit que c'est une op\'eration complexe, qui n'est pas d\'enu\'ee
- d'effets de bords. C'est pourquoi il est recommand\'e, si vous \^etes amen\'e \`a
- utiliser la commande {\bf reload}, de red\'emarrer le Director d\`es que vous
- en aurez l'opportunit\'e.
-
-\label{restore_command}
-\item [restore]
- \index[console]{restore}
- La commande {\bf restore} vous permet de s\'electionner un ou plusieurs jobs
- (JobIds) \`a restaurer selon plusieurs m\'ethodes. Une fois que les JobIds ont
- \'et\'e s\'electionn\'es, les enregistrements de fichiers sont plac\'es dans une
- arborescence interne \`a Bacula, et la Console entre dans un mode de
- s\'election interactif qui vous permet de naviguer dans cette arborescence
- en s\'electionnant individuellement les fichiers ou r\'epertoires \`a restaurer.
- Ce mode est assez similaire au mode de s\'election interactif du programme
- Unix {\bf restore} standard.
-
-restore storage=\lt{}storage-name\gt{} client=\lt{}client-name\gt{}
- where=\lt{}path\gt{} pool=\lt{}pool-name\gt{} fileset=\lt{}fileset-name\gt{}
- select current all done
-
- O\`u l'option {\bf current}, si elle est sp\'ecifi\'ee, indique \`a la commande
- {\bf restore} de s\'electionner automatiquement la sauvegarde la plus
- r\'ecente (sinon, vous serez sollicit\'e \`a ce sujet). L'option {\bf all},
- si elle est sp\'ecifi\'ee, indique \`a la commande {\bf restore} de restaurer
- tous les fichiers (sinon, vous serez sollicit\'e \`a ce sujet). Pour plus de
- d\'etails concernant la commande {\bf restore}, consultez le chapitre
- \ilink{Restaurations avec Bacula}{_ChapterStart13}.
-
-\item [run]
- \index[console]{run}
- Cette commande vous permet d'ex\'ecuter imm\'ediatement vos jobs. Voici la forme
- compl\`ete de cette commande :
-
-run job=\lt{}job-name\gt{} client=\lt{}client-name\gt{}
- fileset=\lt{}FileSet-name\gt{} level=\lt{}level-keyword\gt{}
- storage=\lt{}storage-name\gt{} where=\lt{}directory-prefix\gt{}
- when=\lt{}universal-time-specification\gt{} yes
-
- Toute information omise quoique requise fait l'objet d'une liste de s\'election,
- et avant le lancement du job, un bilan des param\`etres vous est pr\'esent\'e avec
- options d'accord, refus et modification, \`a moins que vous ayez sp\'ecifi\'e
- {\bf yes}, auquel cas le job est imm\'ediatement envoy\'e vers le planificateur.
-
- Sur mon syst\`eme, j'obtiens ce qui suit lorsque je lance la commande run :
-
-\footnotesize
-\begin{verbatim}
-A job name must be specified.
-The defined Job resources are:
- 1: Matou
- 2: Polymatou
- 3: Rufus
- 4: Minimatou
- 5: Minou
- 6: PmatouVerify
- 7: MatouVerify
- 8: RufusVerify
- 9: Watchdog
-Select Job resource (1-9):
-
-\end{verbatim}
-\normalsize
-
-Si je choisis le num\'ero 5, j'obtiens :
-
-\footnotesize
-\begin{verbatim}
-Run Backup job
-JobName: Minou
-FileSet: Minou Full Set
-Level: Incremental
-Client: Minou
-Storage: DLTDrive
-Pool: Default
-When: 2003-04-23 17:08:18
-OK to run? (yes/mod/no):
-
-\end{verbatim}
-\normalsize
-
-Si maintenant j'entre {\bf yes}, le job est ex\'ecut\'e. Si je choisis {\bf mod},
-voici les otpions qui me sont propos\'ees :
-
-\footnotesize
-\begin{verbatim}
-Parameters to modify:
- 1: Level
- 2: Storage
- 3: Job
- 4: FileSet
- 5: Client
- 6: When
- 7: Pool
-Select parameter to modify (1-7):
-
-\end{verbatim}
-\normalsize
-
-Vous pouvez, si vous le souhaitez, d\'emarrer un job plus tard, en utilisant le
-param\`etre {\bf When}. Pour cela, faites le choix {\bf mod}, puis s\'electionnez
-{\bf When} (no. 6) et enfin, saisissez l'heure et le jour de lancement
-d\'esir\'es au format AAAA-MM-JJ HH:MM:SS.
-
-\item [setdebug]
- \index[console]{setdebug}
- \index[dir]{setdebug}
- \index[dir]{debuggage}
- \index[dir]{debuggage Win32}
- \index[dir]{Windows!debuggage}
-
- Cette commande est utilis\'ee pour param\'etrer le niveau de d\'ebuggage de chaque
- {\it daemon}. Voici la forme compl\`ete de cette commande.
-
-setdebug level=nn [trace=0/1 client=\lt{}client-name\gt{} | dir | director |
- storage=\lt{}storage-name\gt{} | all]
-
- Si le param\`etre de tra\c{c}age est actif (trace=1), alors le {\it daemon} est
- plac\'e en mode tra\c{c}age, ce qui signifie que toutes les informations de
- d\'ebuggage sont envoy\'ees vers le fichier {\bf bacula.trace} dans le
- r\'epertoire courant du {\it daemon}. En principe, ce n'est n\'ecessaire
- que pour le d\'ebuggage des clients Win32 o\`u les informations ne peuvent
- \^etre envoy\'ees vers un terminal ou redirig\'ees vers un fichier. en mode
- tra\c{c}age, chaque message de d\'ebuggage est ajout\'e au fichier, que vous devez
- supprimer explicitement lorsque vous avez fini.
-
-\item [show]
- \index[console]{show}
- \index[dir]{show}
- LA commande {\bf show} \'enum\`ere les directives des ressources du Director
- telles qu'ells sont d\'efinies dans son fichier de configuration.
- Cette commande est surtout utilis\'ee par les d\'eveloppeurs \`a des fins
- de d\'ebuggage. LEs mots-clef suivants sont accept\'es :
- catalogs, clients, counters, devices, directors,
- filesets, jobs, messages, pools, schedules, storages, all, help.
- Ne confondez pas cette commande ave la commande {\bf list}, qui affiche
- quand \`a elle le contenu du catalogue.
-
-\item [sqlquery]
- \index[console]{sqlquery}
- La commande {\bf sqlquery} place le programme Console en mode de
- requ\^etes SQL, dans lequel chaque ligne que vousq tapez est concat\'en\'ee
- \`a la pr\'ec\'edents jusqu'\`a ce qu'un point-virgule (;) soit rencontr\'e. Le
- point-virgule termine la commande qui est alors directement envoy\'e au moteur
- de base de donn\'ee SQL. Lorsque le r\'esultat issu de la base de donn\'ee SQL est
- affich\'e, la Console est pr\`ete \`a recevoir une nouvelle commande SQL.
- Pour sortir du mode {\bf sqlquery} et reevenir \`a l'invite de la Console,
- entrez un point (.).
-
- Cette commande vous permet d'interroger directement le catalogue. Notez
- que vous devriez savoir exactement ce que vous faites en utilisant cette
- commande, car vous pouvez endommager s\'erieusement votre catalogue.
- Consultez le paragraphe relatif \`a la commande {\bf query} qui offre un
- moyen \`a la fois plus simple et plus sur de saisir des requ\^etes SQL.
-
- En fonction du moteur de base de donn\'ees que vous utilisez (MySQL,
- PostgreSQL ou SQLite), vous disposerez de commandes quelque peu diff\'erentes.
- Pour plus de d\'etails, r\'ef\'erez-vous aux documentations de MySQL, PostgreSQL
- ou SQLite.
-
-\item [status]
- \index[dir]{status}
- Cette commande produit un \'etat des prochains jobs planifi\'es au cours des
- 24 prochanes heures, ainsi que l'\'etat des jobs en cours d'ex\'ecution. Voici
- la forme compl\`ete de cette commande :
-
-status [all | dir=\lt{}dir-name\gt{} | director |
- client=\lt{}client-name\gt{} | storage=\lt{}storage-name\gt{} |
- days=nnn]
-
- Si vous entrez {\bf status dir}, la Console \'enum\`ere tous les jobs en cours
- d'ex\'ecution, un r\'esum\'e des jobs planifi\'e pour ex\'ecution au cours des prochaines
- 24 heures incluant le volume qui sera probablement utilis\'e, et donne la liste
- des dix derniers jobs ex\'ecut\'es avec leurs \'etats. Gardez \`a l'esprit les deux
- \'el\'ements suivants :
- \begin{itemize}
- \item L'obtention du volume n\'ecessite d'appliquer le m\^eme algorithme que
- celui utilis\'e lors de l'ex\'ecution d'un job, ce qui peut r\'esulter en un \'elagage
- de cartouche.
- \item Le volume affich\'e est, au mieux, une bonne supposition. En effet le
- volume effectivement utilis\'e peut \^etre diff\'erent en raison du temps \'ecoul\'e
- entre le status et l'ex\'ecution du job, un autre job ayant pu, entre temps,
- remplir compl\`etement la cartouche.
- \end{itemize}
-
- Dans la liste des jobs en cours d'ex\'ecutions, vous pouvez trouver ce type
- d'informations :
-
-\footnotesize
-\begin{verbatim}
-2507 Catalog MatouVerify.2004-03-13_05.05.02 is waiting execution
-5349 Full CatalogBackup.2004-03-13_01.10.00 is waiting for higher
- priority jobs to finish
-5348 Differe Minou.2004-03-13_01.05.09 is waiting on max Storage jobs
-5343 Full Rufus.2004-03-13_01.05.04 is running
-\end{verbatim}
-\normalsize
-
- La liste ci-dessus indique que le job de JobId 5343 (Rufus) est en cours.
- Le job de JobId 5348 (Minou) est en attente de la fin du job 5343
- qui utilise la m\^eme ressource Storage, ce qui provoque le "waiting
- on max Storage jobs". Le job de JobId 5349 a une priorit\'e inf\'erieure
- \`a celle de tous les autres jobs, aussi, il est en attente de la fin de
- jobs de priorit\'es sup\'erieures. Finalement, le job de jobId 2508 (MatouVerify)
- est en attente ("waiting execution") car un seul job peut \^etre ex\'ecut\'e
- en m\^eme temps.
-
- Si vous faites un {\bf status dir}, Bacula affiche par d\'efaut les premi\`eres
- occurrences de tous les jobs pr\'evus pour ex\'ecution aujourd'hui et demain.
- Si vous voulez voir les jobs pr\'evus pour les trois prochains jours,
- (Si, par exemple vendredi, vous voulez voir les premi\`eres occurrences
- des cartouches \`a utiliser vendredi, samedi, dimanche et lundi), vous
- pouvez ajouter l'option {\bf days=3}. Notez, {\bf days=0} montre les
- premi\`eres occurrences des jobs planifi\'es pour \^etre ex\'ecut\'es aujourd'hui
- seulement. Si vous avez plusieurs ex\'ecutions planifi\'ees, pour chaque
- job, seule la premi\`ere occurrence sera affich\'e pour la p\'eriode sp\'ecifi\'ee.
-
- Si votre job para\^it bloqu\'e, vous pouvez avoir une id\'ee g\'en\'erale du probl\`eme
- en utilisant {\bf status dir}, et obtenir une information plus sp\'ecifique
- avec {\bf status storage=xxx}. Par exemple, si j'utilise cette derni\`ere
- commande sur un syst\`eme inoccup\'e, j'obtiens :
-
-\footnotesize
-\begin{verbatim}
-status storage=File
-Connecting to Storage daemon File at 192.168.68.112:8103
-
-rufus-sd Version: 1.39.6 (24 March 2006) i686-pc-linux-gnu redhat (Stentz)
-Daemon started 26-Mar-06 11:06, 0 Jobs run since started.
-
-Running Jobs:
-No Jobs running.
-====
-
-Jobs waiting to reserve a drive:
-====
-
-Terminated Jobs:
- JobId Level Files Bytes Status Finished Name
-======================================================================
- 59 Full 234 4,417,599 OK 15-Jan-06 11:54 kernsave
-====
-
-Device status:
-utochanger "DDS-4-changer" with devices:
- "DDS-4" (/dev/nst0)
-Device "DDS-4" (/dev/nst0) is mounted with Volume="TestVolume002"
-Pool="*unknown*"
- Slot 2 is loaded in drive 0.
- Total Bytes Read=0 Blocks Read=0 Bytes/block=0
- Positioned at File=0 Block=0
-Device "Dummy" is not open or does not exist.
-No DEVICE structure.
-
-Device "DVD-Writer" (/dev/hdc) is not open.
-Device "File" (/tmp) is not open.
-====
-
-In Use Volume status:
-====
-\end{verbatim}
-\normalsize
-
-Ce qui r\'ev\`ele qu'aucun job n'est en cours d'ex\'ecution, et qu'aucun des
-p\'eriph\'eriques n'est en cours d'utilisation. Si je d\'emonte la librairie
-({\bf unmount}), qui ne sera plus utilis\'ee dans cet exemple, et que je lance
-un job qui utilise le stockage File, le job se bloque. Si je demande \`a
-nouveau {\bf status storage=xxx}, j'obtiens :
-
-\footnotesize
-\begin{verbatim}
-status storage=File
-...
-Device status:
-Autochanger "DDS-4-changer" with devices:
- "DDS-4" (/dev/nst0)
-Device "DDS-4" (/dev/nst0) is not open.
- Device is BLOCKED. User unmounted.
- Drive 0 is not loaded.
-Device "Dummy" is not open or does not exist.
-No DEVICE structure.
-
-Device "DVD-Writer" (/dev/hdc) is not open.
-Device "File" (/tmp) is not open.
- Device is BLOCKED waiting for media.
-====
-...
-\end{verbatim}
-\normalsize
-
-Il devrait maintenant \^etre clair que si un job n\'ecessitant la librairie
-est ex\'ecut\'e, il bloquera en raison du d\'emontage de cette derni\`ere par
-l'utilisateur. Mais le probl\`eme pour le job que j'ai lanc\'e avec le
-p\'eriph\'erique "File" est que le p\'eriph\'erique est bloqu\'e en attente
-d'un media : Bacula a besoin que vous \'etiquetiez un volume.
-
-\item [unmount]
- \index[console]{unmount}
- Cette commande sert \`a ordonner au Storage Daemon de d\'emonter le p\'eriph\'erique
- sp\'ecifi\'e. Les formes de cette commande sont les m\^emes que celle de la commande
- mount :
-
-\footnotesize
-\begin{verbatim}
-unmount storage=<storage-name>
-
-unmount [ jobid=<id> | job=<job-name> ]
-\end{verbatim}
-\normalsize
-
-\label{UpdateCommand}
-\item [update]
- \index[console]{update}
- Cette commande met \`a jour le catalogue, que ce soit pour un pool sp\'ecifique,
- un enregistrement de volume, ou les slots d'une librairie dot\'ee d'un lecteur
- de codes barres. Dans le cas de la mise \`a jour d'un enregistrement de pool,
- la nouvelle configuration est automatiquement r\'ecup\'er\'ee de la ressource
- correspondante du fichier de configuration du Director. Cette commande peut
- notamment servir \`a augmenter le nombre maxial de volumes dans un pool. Les
- principaux mots-clef suivants peuvent \^etre utilis\'es :
-
-\footnotesize
-\begin{verbatim}
- media, volume, pool, slots
-\end{verbatim}
-\normalsize
-
-Dans le cas de la mise \`a jour d'un volume, vous serez interrog\'e sur le
-param\`etre que vous voulez modifier. Voici ces param\`etres :
-
-\footnotesize
-\begin{verbatim}
-
- Volume Status
- Volume Retention Period
- Volume Use Duration
- Maximum Volume Jobs
- Maximum Volume Files
- Maximum Volume Bytes
- Recycle Flag
- Slot
- InChanger Flag
- Pool
- Volume Files
- Volume from Pool
- All Volumes from Pool
-
-\end{verbatim}
-\normalsize
-
- Pour le param\`etre slot, {\bf update slots}, Bacula obtient une liste
- de tous les slots et de leurs codes barres du Storage Daemon,
- pour chaque code barres trouv\'e, le slot est mis \`a jour dans
- l'enregistrement Media du catalogue. C'est tr\`es pratique si vous
- d\'eplacez des cartouches dans la librairie, ou si vous changez des
- magasins de cartouches. Dans la foul\'ee, le drapeau InChanger est
- aussi mis \`a jour.Ceci permet \`a BAcula de savoir quels cartouches sont
- effectivement dans la librairie.
-
- Si vous n'avez pas de lecteur de codes barres, vous pouvez faire la
- m\^eme chose depuis la version 1.33 gr\^ace \`a la commande {\bf update slots scan}.
- Le mot-clef {\bf scan} ordonne \`a Bacula de monter physiquement chaque
- cartouche afin de lire son VolumeName.
-
- Pour le param\`etre Pool, {\bf update pool}, Bacula d\'eplace le volume de
- son pool courant vers le pool sp\'ecifi\'e.
-
- Pour les parm\`etres {\bf Volume from Pool} et {\bf All Volumes from Pool},
- les valeurs suivantes sont mises \`a jour depuis l'enregistrement
- de pool : Recycle, VolRetention, VolUseDuration, MaxVolJobs, MaxVolFiles,
- and MaxVolBytes.
-
- Voici la forme compl\`ete de la commande {\bf update} :
-
-\footnotesize
-\begin{verbatim}
- update volume=xxx pool=yyy slots volstatus=xxx VolRetention=ddd
- VolUse=ddd MaxVolJobs=nnn MaxVolBytes=nnn Recycle=yes|no
- slot=nnn enabled=n
-
-\end{verbatim}
-\normalsize
-
-\item [use]
- \index[console]{use}
- Cette commande vous perment de pr\'eciser le catalogue que vous voulez utiliser.
- En principe, vous n'utiliserez qu'un seul catalogue, aussi vous n'aurez pas
- besoin de faire ce choix. Sinon, utilisez cette commande pour passer de l'un
- de vos catalogues \`a l'autre.
-
-use \lt{}database-name\gt{}
-
-\item [var]
- \label{var}
- \index[console]{var name}
- Cette commande prend une cha\^ine \'eventuellement encadr\'ee de guillemets et effectue
- l'expansion des variables comme elle serait effectu\'ee au niveau de la
- directive {\bf LabelFormat}. Ainsi, vous pouvez tester vos cha\^ines
- de format d'\'etiquetage. La diff\'erence entre la commande {\bf var} et le
- processus effectif est que pour la premi\`ere, aucun job n'est en cours,
- aussi des valeurs factices sont utilis\'ees au lieu des variables sp\'ecifiques
- aux jobs. Cela vous permet cependant de vous faire une bonne id\'ee de ce qui
- se passerait dans le cas r\'eel.
-
-\item [version]
- \index[console]{version}
- Cette commande affiche la version du Director.
-
-\item [quit]
- \index[console]{quit}
- Cette commande stoppe le programme Console. Celui-ci envoie la requ\^ete
- {\bf quit} au Director et attend son accus\'e de r\'eception. Si le Director
- est occup\'e, cela peut prendre un certain temps. Vous pouvez quitter
- imm\'ediatement en utilisant la variante {\bf .quit} ({\bf quit} pr\'ec\'ed\'ee
- d'un point).
-
-\item [query]
- \index[console]{query}
- Cette commande lit une requ\^ete SQL pr\'ed\'efinie dans le fichier de requ\^etes
- (le nom et l'emplacement de ce fichier sont d\'efinis par la directive
- QueryFile du fichier de configuration du Director). Il vous est alors
- demand\'e de s\'electionner une requ\^ete du fichier, et \'eventuellement de
- saisir un ou plusieurs param\`etres. La requ\^ete est alors soumise au
- moteur de base de donn\'ees.
-
-Les requ\^etes suivantes sont actuellement (version 1.24) disponibles :
-
-\footnotesize
-\begin{verbatim}
-Available queries:
- 1: List Job totals:
- 2: List where a file is saved:
- 3: List where the most recent copies of a file are saved:
- 4: List total files/bytes by Job:
- 5: List total files/bytes by Volume:
- 6: List last 20 Full Backups for a Client:
- 7: List Volumes used by selected JobId:
- 8: List Volumes to Restore All Files:
- 9: List where a File is saved:
-Choose a query (1-9):
-
-\end{verbatim}
-\normalsize
-
-\item [exit]
- \index[console]{exit}
- Cette commande termine le programme Console.
-
-\item [wait]
- \index[console]{wait}
- Cette commande place le Director en pause jusqu'\`a ce qu'il n'y ait plus
- aucun job en ex\'ecution. Cette commande est utile dans des situation
- d'utilisation automatis\'ee par scripts telles que les tests de r\'egression
- o\`u vous voulez d\'emarrer un job, et attendre qu'il se termine avant de
- poursuivre. Cette commande admet les options suivantes :
-
-\footnotesize
-\begin{verbatim}
- wait [jobid=nn] [jobuid=unique id] [job=job name]
-\end{verbatim}
-\normalsize
-
-\end{description}
-
-\label{dotcommands}
-
-\subsection*{Commandes sp\'eciales, pr\'ec\'ed\'ees d'un point}
-\index[general]{Commands!sp\'eciales, pr\'ec\'ed\'ees d'un point}
-\index[general]{Commandes sp\'eciales, pr\'ec\'ed\'ees d'un point}
-\addcontentsline{toc}{subsection}{Commandes sp\'eciales, pr\'ec\'ed\'ees d'un point}
-
-Voici une liste de commandes pr\'efix\'ees d'un point (.). Elles ont pour vocation
-d'\^etre utilis\'ees soit dans des programmes {\it batch}, soit par des interfaces
-graphiques. Elles ne sont, en principe, pas utilis\'ees en mode interactif.
-Une fois que le d\'eveloppement d'interfaces graphiques aura d\'emarr\'e, cette liste
-s'accro\^itra consid\'erablement.
-
-\footnotesize
-\begin{verbatim}
-.backups job=xxx list backups for specified job
-.defaults client=xxx fileset=yyy list defaults for specified client
-.die cause the Director to segment fault (for debugging)
-.dir when in tree mode prints the equivalent to the dir command,
- but with fields separated by commas rather than spaces.
-.jobs list all job names
-.levels list all levels
-.filesets list all fileset names
-.clients list all client names
-.pools list all pool names
-.types list job types
-.msgs return any queued messages
-.messages get quick messages
-.help help command output
-.quit quit
-.status get status output
-.exit quit
-\end{verbatim}
-\normalsize
-
-\label{atcommands}
-
-\subsection*{Commandes sp\'eciales, pr\'ec\'ed\'ees d'un arobase (@)}
-\index[general]{Commandes!sp\'eciales arobase @}
-\index[general]{Commandes sp\'eciales, pr\'ec\'ed\'ees d'un arobase (@)}
-\addcontentsline{toc}{subsection}{Commandes sp\'eciales, pr\'ec\'ed\'ees d'un arobase (@)}
-
-Normalement, toutes les commandes saisies dans la Console sont imm\'ediatement
-transmises au Director, qui peut r\'esider sur une autre machine, afin d'y \^etre
-ex\'ecut\'ees. Il existe cependant quelques commandes, toutes pr\'ec\'ed\'ees du
-caract\`ere arobase (@), qui ne sont pas envoy\'ees au Director, mais
-directement interpr\'et\'ees par la Console. Notez que seule la Console
-tty impl\'emente ces commandes, et non la Console GNOME. En voici la liste :
-
-\begin{description}
-
-\item [@input \lt{}nom-de-fichier\gt{}]
- \index[console]{@input \lt{}nom-de-fichier\gt{}}
- Lit et ex\'ecute les commandes consign\'ees dans le fichier sp\'ecifi\'e.
-
-\item [@output \lt{}nom-de-fichier\gt{} w/a]
- \index[console]{@output \lt{}nom-de-fichier\gt{} w/a}
- Envoit l'ensemble des retours de la Console vers le fichier sp\'ecifi\'e,
- avec \'ecrasement si l'option {\bf w} est sp\'ecifi\'ee, ou ajout \`a la suite si l'option
- {\bf a} est sp\'ecifi\'ee. Pour rediriger la sortie vers le terminal, entrez
- simplement {\bf output} sans sp\'ecifier de nom de fichier.
- ATTENTION : prenez garde de ne pas \'ecraser un fichier valide.
- Voici un exemple typique lors d'un test de r\'egression :
-
-\footnotesize
-\begin{verbatim}
- @output /dev/null
- commands ...
- @output
-
-\end{verbatim}
-\normalsize
-
-\item [@tee \lt{}nom-de-fichier\gt{} w/a]
- \index[console]{@tee \lt{}nom-de-fichier\gt{} w/a}
- Comme la commande pr\'ec\'edente avec envoi simultan\'e vers le terminal. Pour
- sortir de ce mode, vous pouvez utiliser {\bf @tee} ou {\bf @output} sans
- sp\'ecifier de nom de fichier.
-
-\item [@sleep \lt{}seconds\gt{}]
- \index[console]{@sleep \lt{}seconds\gt{}}
- Met en sommeil pour une dur\'ee du nombre de secondes sp\'ecifi\'e.
-
-\item [@time]
- \index[console]{@time}
- Affiche la date et l'heure courantes.
-
-\item [@version]
- \index[console]{@version}
- Affiche la version de la Console.
-
-\item [@quit]
- \index[console]{@quit}
- Quitte.
-
-\item [@exit]
- \index[console]{@exit}
- Quitte.
-
-\item [@\# n-importe-quoi]
- \index[console]{n-importe-quoi}
- Commentaire.
-\end{description}
-
-\label{scripting}
-
-\subsection*{Ex\'ecuter la Console depuis un script shell}
-\index[general]{Script!Ex\'ecuter la Console depuis un script shell}
-\index[general]{Ex\'ecuter la Console depuis un script shell}
-\addcontentsline{toc}{subsection}{Ex\'ecuter la Console depuis un script shell}
-Vous pouvez automatiser de nombreuses t\^aches effectu\'ees \`a la Console, en les
-ex\'ecutant dans un script shell. Par exemple, si vous avez cr\'e\'e un fichier
-contenant ceci :
-
-\footnotesize
-\begin{verbatim}
- ./bconsole -c ./bconsole.conf <<END_OF_DATA
- unmount storage=DDS-4
- quit
- END_OF_DATA
-\end{verbatim}
-\normalsize
-
-A l'ex\'ecution de ce fichier, le p\'eriph\'erique DDS-4 est d\'emont\'e.
-Vous pouvez, si vous le souhaitez, ex\'ecuter cette t\^ache lors d'un job avec
-les directives {\bf RunBeforeJob} ou {\bf RunAfterJob}.
-
-Il est aussi possible d'ex\'ecuter la Console \`a partir de l'entr\'ee d'un
-fichier contenant les commandes comme suit :
-
-\footnotesize
-\begin{verbatim}
-./bconsole -c ./bconsole.conf <filename
-\end{verbatim}
-\normalsize
-
-o\`u le fichier nomm\'e {\bf filename} contient un ensemble quelconque de
-commandes de la Console.
-
-Voici un exemple r\'eel, issu des tests de r\'egression de Bacula. Il
-\'etiquette un volume (sur disque) ex\'ecute une sauvegarde puis une
-restauration des fichiers sauvegard\'es.
-
-\footnotesize
-\begin{verbatim}
-bin/bconsole -c bin/bconsole.conf <<END_OF_DATA
-@output /dev/null
-messages
-@output /tmp/log1.out
-label volume=TestVolume001
-run job=Client1 yes
-wait
-messages
-@#
-@# now do a restore
-@#
-@output /tmp/log2.out
-restore current all
-yes
-wait
-messages
-@output
-quit
-END_OF_DATA
-\end{verbatim}
-\normalsize
-
-Les donn\'ees issues de la sauvegarde sont envoy\'ees vers /tmp/log1.out et
-celles de la restaurations vers /tmp/log2.out. Pour v\'erifier que les
-op\'erations se sont d\'eroul\'ees correctement, les fichiers de sorties
-sont contr\^ol\'es avec :
-
-\footnotesize
-\begin{verbatim}
-grep "^Termination: *Backup OK" /tmp/log1.out
-backupstat=$?
-grep "^Termination: *Restore OK" /tmp/log2.out
-restorestat=$?
-\end{verbatim}
-\normalsize
-
-\subsection*{Ajouter des volumes \`a un pool}
-\index[general]{Ajouter des volumes \`a un pool}
-\index[general]{Pool!Ajouter des volumes \`a un}
-\addcontentsline{toc}{subsection}{Ajouter des volumes \`a un pool}
-
-Si vous avez utilis\'e la commande {\bf label} pour \'etiqueter un volume, alors
-celui-ci est automatiquement ajout\'e au pool, et vous n'avez pas besoin de le faire
-manuellement.
-
-Une alternative consiste \`a ajouter plusieurs volumes \`a un pool sans les
-\'etiqueter pr\'ealablement. Vous devrez alors les \'etiqueter plus tard, lorsque Bacula
-en aura besoin.
-
-Avant d'ajouter un volume \`a un pool, vous devez conna\^itre les informations
-suivantes :
-
-\begin{enumerate}
-\item Le nom du pool (normalement, "Default") ;
-\item Le type de media tel qu'il est sp\'ecifi\'e dans la ressource Storage
-du fichier de configuration du Director (par exemple, "DLT8000") ;
-\item Le nombre de volumes que vous voulez cr\'eer, et leurs noms.
-The number and names of the Volumes you wish to create.
-\end{enumerate}
-
-Par exemple, pour ajouter un media \`a un pool, vous utiliseriez les commandes
-suivantes dans la Console :
-
-\footnotesize
-\begin{verbatim}
-*add
-Enter name of Pool to add Volumes to: Default
-Enter the Media Type: DLT8000
-Enter number of Media volumes to create. Max=1000: 10
-Enter base volume name: Save
-Enter the starting number: 1
-10 Volumes created in pool Default
-*
-\end{verbatim}
-\normalsize
-
-Pour voir ce que vous avez ajout\'e, tapez :
-
-\footnotesize
-\begin{verbatim}
-*list media pool=Default
-+-------+----------+---------+---------+-------+------------------+
-| MedId | VolumeNa | MediaTyp| VolStat | Bytes | LastWritten |
-+-------+----------+---------+---------+-------+------------------+
-| 11 | Save0001 | DLT8000 | Append | 0 | 0000-00-00 00:00 |
-| 12 | Save0002 | DLT8000 | Append | 0 | 0000-00-00 00:00 |
-| 13 | Save0003 | DLT8000 | Append | 0 | 0000-00-00 00:00 |
-| 14 | Save0004 | DLT8000 | Append | 0 | 0000-00-00 00:00 |
-| 15 | Save0005 | DLT8000 | Append | 0 | 0000-00-00 00:00 |
-| 16 | Save0006 | DLT8000 | Append | 0 | 0000-00-00 00:00 |
-| 17 | Save0007 | DLT8000 | Append | 0 | 0000-00-00 00:00 |
-| 18 | Save0008 | DLT8000 | Append | 0 | 0000-00-00 00:00 |
-| 19 | Save0009 | DLT8000 | Append | 0 | 0000-00-00 00:00 |
-| 20 | Save0010 | DLT8000 | Append | 0 | 0000-00-00 00:00 |
-+-------+----------+---------+---------+-------+------------------+
-*
-\end{verbatim}
-\normalsize
-
-Notez que la Console a automatiquement ajout\'e un num\'ero au nom de volume de
-base que vous avez sp\'ecifi\'e ("Save" dans ce cas). Si vous ne souhaitez pas
-ce comportement, r\'epondez simplement 0 (z\'ero) \`a la queston "Enter number
-of Media volumes to create . Max=1000:" et un seul volume sera cr\'e\'e avec
-le nom exact que vous avez sp\'ecifi\'e.
+++ /dev/null
-%%
-%%
-
-\chapter{Configuration de la Console}
-\label{ConsoleConfChapter}
-\index[general]{Configuration!Console}
-\index[general]{Configuration de la Console}
-
-\section{General}
-\index[general]{General}
-
-Le fichier de configuration de la console est le plus simple de tous, et en g\'en\'eral,
-vous n'aurez rien d'autre \`a changer que le mot de passe. Il contient simplement les
-informations n\'ecessaires pour se connecter au(x) Director(s).
-
-Pour une discussion g\'en\'erale sur les fichiers de configuration et leurs ressources
-ainsi que les types de donn\'ees reconnus par {\bf Bacula}, consultez le chapitre
-\ilink{Configuration}{ConfigureChapter} de ce manuel.
-
-Les ressources Console suivantes doivent \^etre d\'efinies :
-
-\section{La ressource Director}
-\label{DirectorResource3}
-\index[general]{Director Ressource}
-\index[general]{Ressource!Director}
-
-La ressource Director d\'efinit les attributs du Director ex\'ecut\'e sur le r\'eseau.
-Vous pouvez avoir plusieurs ressources Director dans un seul fichier de
-configuration de console. Dans ce cas, le programme Console vous demandera
-de choisir \`a son lancement le Director vous voulez contacter.
-
-\begin{description}
-
-\item [Director]
- \index[console]{Director}
- D\'ebut des directives relatives au Director.
-
-\item [Name = \lt{}name\gt{}]
- \index[console]{Name}
- Le nom du Director utilis\'e pour choisir entre les diff\'erents Directors.
- (ce nom n'est utilis\'e que pour \c{c}a).
-
-\item [DIRPort = \lt{}port-number\gt{}]
- \index[dir]{DIRPort}
- Sp\'ecifie le num\'ero de port \`a utiliser pour contacter le Director. cette valeur
- sera fort probablement d\'ej\`a \'egale \`a celle que vous avez sp\'ecifi\'ee pour
- l'option {\bf \verb:--:with-base-port} de la commande {\bf configure}. Ce
- port doit \^etre identique \`a celui sp\'ecifi\'e par la directive {\bf DIRport} de la
- ressource {\bf Director} du fichier de \ilink{configuration du Director}{DirectorChapter}.
- La valeur par d\'efaut est 9101, aussi cet directive n'est normalement pas
- sp\'ecifi\'ee.
-
-\item [Address = \lt{}address\gt{}]
- \index[dir]{Address}
- O\`u "adress" est un nom d'h\^ote, un nom de domaine pleinement qualifi\'e, ou une
- adresse r\'eseau utlis\'ee pour se connecter au Director.
-
-\item [Password = \lt{}password\gt{}]
- \index[dir]{Password}
- Ce mot de passe est celui exig\'e par le Director pour accepter la connexion
- d'une console. Il doit \^etre identique \`a celui sp\'ecifi\'e dans la ressource Director
- du fichier de \ilink{configuration du Director}{DirectorChapter}. Cette directive
- est requise.
-
-\end{description}
-
-Voici un exemple r\'eel :
-
-\footnotesize
-\begin{verbatim}
-Director {
- Name = HeadMan
- address = rufus.cats.com
- password = xyz1erploit
-}
-\end{verbatim}
-\normalsize
-
-\section{La ressource ConsoleFont}
-\index[general]{Ressource!ConsoleFont}
-\index[general]{Ressource ConsoleFont}
-
-Cette ressource n'est disponible que dans la version GNOME de la console.
-Elle vous permet de d\'efinir les fontes que vous voulez utiliser pour
-l'affichage dans la fen\^etre principale.
-
-\begin{description}
-
-\item [ConsoleFont]
- \index[console]{ConsoleFont}
- D\'ebut des directives ConsoleFont.
-
-\item [Name = \lt{}name\gt{}]
- \index[console]{Name}
- Le nom de la fonte.
-
-\item [Font = \lt{}Pango Font Name\gt{}]
- \index[console]{Font}
- La cha\^ine sp\'ecifi\'ee ici d\'efinit la fonte d\'esir\'ee. Elle est sp\'ecifi\'ee au
- format Pango. Par exemple, la sp\'ecification par d\'efaut est :
-
-\footnotesize
-\begin{verbatim}
-Font = "LucidaTypewriter 9"
-\end{verbatim}
-\normalsize
-
-\end{description}
-
-Merci \`a Phil Stracchino d'avoir fourni le code pour cette fonctionnalit\'e.
-
-Un autre exemple :
-
-\footnotesize
-\begin{verbatim}
-ConsoleFont {
- Name = Default
-Font = "Monospace 10"
-}
-\end{verbatim}
-\normalsize
-
-\section{La ressource Console}
-\label{ConsoleResource}
-\index[general]{ressource Console}
-\index[general]{Ressource!Console}
-
-Depuis la version 1.33 de Bacula, il existe trois types de consoles
-diff\'erents avec lesquels l'administrateur ou l'utilisateur peut
-interagir avec le Director. Ces trois types de consoles comportent
-trois niveaux de s\'ecurit\'e.
-
-\begin{itemize}
-\item Le premier type de console est la console {\bf anonyme} ou
- {\bf par d\'efaut}, qui poss\`ede les pleins pouvoirs. Aucune ressource console
- n'est requise pour ce premier type puisque le mot de passe est sp\'ecifi\'e dans
- la ressource Director. Ce type de console est le premier \`a avoir \'et\'e
- impl\'ement\'e, et demeure fonctionnel. Vous le r\'eserverez, typiquement, \`a
- l'usage exclusif des administrateurs.
-
-\item Le second type, apparu avec la version 1.33, est une console "nomm\'ee"
- ou "restreinte" d\'efinie dans des ressources Console dans les fichiers de configuration du
- Director et dans celui de la console. Les noms et mot de passe dans ces
- deux fichiers doivent correspondre, comme c'est le cas pour les programmes
- clients.
-
- Ce second type de console ne poss\`ede, par d\'efaut, aucun privil\`ege. Pour lui
- en accorder, vous devez les sp\'ecifier explicitement dans la ressource
- Console du Director.
-
- Ainsi, vous pouvez avoir plusieurs consoles avec des
- noms et mots de passe distincts et avec, pour chacune, des privil\`eges
- diff\'erents. Ces consoles ne peuvent, par d\'efaut, absolument rien faire.
- C'est vous qui leur accordez des privil\`eges, ou plut\^ot l'acc\`es \`a des
- commandes et ressources en sp\'ecifiant des listes de contr\^ole d'acc\`es
- dans la ressource Console du Director. L'administrateur peut ainsi contrôler
- finement les actions permises à des consoles (ou utilisateurs) particuliers.
-
-\item Le troisi\`eme type de console ressemble au pr\'ec\'edent en ce qu'il requiert
- une d\'efinition de ressource Console dans le fichier de configuration du
- Director et dans celui de la console. Mais cette console permet aussi, si
- le nom de la console (la directive {\bf name}) est le m\^eme que celui du client,
- d'utiliser la commande {\bf SetIP} pour changer la valeur de la directive
- {\bf Address} dans la ressource client du Director en l'adresse de la console.
- Ceci permet aux portables et autres machines utilisant DHCP (adresses IP
- dynamiques) de notifier au Director leur adresse IP courante.
-
-\end{itemize}
-
-La ressource Console est optionnelle. Cependant, si elle est sp\'ecifi\'ee,
-vous pouvez utiliser les ACLs (listes de contr\^ole d'acc\`es) dans le fichier
-de configuration du Director pour restreindre une console particuli\`ere
-ou un utilisateur pour qu'ils ne voient que les informations relatives
-\`a ses jobs ou \`a sa machine cliente.
-
-Vous pouvez spécifier autant de ressources Console que vous voulez dans
-le fichier de configuration de la console. Cependant, si vous avez plusieurs
-ressources Director (c'est à dire si vous vous connectez à plusieurs directors
-distincts), vous pouvez associer l'une de ces ressources Console à une ressource
-Director particulière. Ainsi, lorsque vous choisirez un Director particulier,
-la configuration de console appropriée sera utilisée. Consultez le paragraphe
-ci-dessous sur la directive "Director" de la ressource Console pour plus
-d'informations sur le sujet.
-
-\begin{description}
-\item [Console]
- \index[console]{Console}
- D\'ebut de la ressource Console.
-
-\item [Name = \lt{}name\gt{}]
- \index[console]{Name}
- Le nom de console utilisé pour permettre à une console restreinte de
- changer d'adresse IP Ã l'aide de la commande {\bf SetIp}. La commande
- SetIp doit aussi être définie dans la liste d'accès {\bf CommandACL}
- du fichier de configuration du Director.
-
-\item [Password = \lt{}password\gt{}]
- \index[console]{Password}
- Si ce champ est renseigné, le mot de passe spécifié au niveau de la ressource
- Director du fichier de configuration de la console est ignoré. Voyez
- ci-dessous pour plus de détails.
-
-\item [Director = \lt{}director-resource-name\gt{}]
- Si cette directive est spécifiée, cette ressource de Console sera utilisée
- par bconsole lorsque ce Director particulier sera sélectionné au
- lancement de bconsole. Autrement dit, cette directive lie une console
- particulière avec son nom et son mot de passe à un Director particulier.
-
-\item [Heartbeat Interval = \lt{}time-interval\gt{}]
- \index[console]{Heartbeat Interval}
- \index[console]{Directive!Heartbeat}
- Cette directive est orpionnelle. Si elle est utilisée, elle fixe un délai
- {\it keepalive} -- ou {\it heartbeat} -- en secondes sur chacun des
- {\it sockets} pour communiquer avec le Director. Cette fonctionnalité
- n'est implémentée que sur les systèmes qui fournissent la fonction
- {\bf setsockopt} TCP\_KEEPIDLE (Par exemple Linux). La valeur par
- défaut est 0, ce qui signifie que le {\it socket} n'est pas modifié.
-
-\end{description}
-
-L'exemple ci-dessous nous a \'et\'e fournit par Phil Stracchino. Si nous
-d\'efinissons ce qui suit dans le fichier bconsole.conf (ou bwx-console.conf)
-d'un utilisateur :
-
-\footnotesize
-\begin{verbatim}
- Director {
- Name = MyDirector
- DIRport = 9101
- Address = myserver
- Password = "XXXXXXXXXXX" # no, really. this is not obfuscation.
-}
-
- Console {
- Name = restricted-user
- Password = "UntrustedUser"
-}
-\end{verbatim}
-\normalsize
-
-O\`u le mot de passe dans la section Director est d\'elib\'er\'ement incorrect, et
-la console a re\c{c}u le nom {\bf restricted-client}. Si d'autre part, dans le
-fichier de configuration du Director (inaccessible diectement \`a l'utilisateur),
-nous d\'efinissons :
-
-\footnotesize
-\begin{verbatim}
-Console {
- Name = restricted-user
- Password = "UntrustedUser"
- JobACL = "Restricted Client Save"
- ClientACL = restricted-client
- StorageACL = main-storage
- ScheduleACL = *all*
- PoolACL = *all*
- FileSetACL = "Restricted Client's FileSet"
- CatalogACL = DefaultCatalog
- CommandACL = run
-}
-\end{verbatim}
-\normalsize
-
-Alors, l'utilisateur de connectant au Director depuis cette console sera
-connect\'e en tant que {\bf restricted-client}, et il ne sera en mesure
-que de voir ou acc\'eder au job nomm\'e {\bf Restricted Client Save}, avec
-le stockage {\bf main-storage}, n'importe quel planification ou pool, un
-FileSet nomm\'e {\bf Restricted Client's File}, un catalogue nomm\'e
-{\bf DefaultCatalog}, et la seule commande qu'il pourra utiliser dans la console
-sera la commande {\bf run}. En d'autres termes, cet utilisateur est plut\^ot limit\'e
-dans ce qu'il peut voir ou faire avec Bacula.
-
-Voici un exemple d'un fichier de configuration de bconsole qui permet
-à plusieurs Directors avec différentes Consoles selon le Director :
-
-\footnotesize
-\begin{verbatim}
-Director {
- Name = MyDirector
- DIRport = 9101
- Address = myserver
- Password = "XXXXXXXXXXX" # no, really. this is not obfuscation.
-}
-
-Director {
- Name = SecondDirector
- DIRport = 9101
- Address = secondserver
- Password = "XXXXXXXXXXX" # no, really. this is not obfuscation.
-}
-
-Console {
- Name = restricted-user
- Password = "UntrustedUser"
- Director = MyDirector
-}
-
-Console {
- Name = restricted-user
- Password = "A different UntrustedUser"
- Director = SecondDirector
-}
-\end{verbatim}
-\normalsize
-
-Le second Director, référencé en tant que "secondserver"
-pourrait ressembler à ceci :
-
-\footnotesize
-\begin{verbatim}
-Console {
- Name = restricted-user
- Password = "A different UntrustedUser"
- JobACL = "Restricted Client Save"
- ClientACL = restricted-client
- StorageACL = second-storage
- ScheduleACL = *all*
- PoolACL = *all*
- FileSetACL = "Restricted Client's FileSet"
- CatalogACL = RestrictedCatalog
- CommandACL = run, restore
- WhereACL = "/"
-}
-\end{verbatim}
-\normalsize
-
-\section{Commandes de la Console}
-\index[general]{Commandes Console}
-\index[general]{Commandes!Console}
-
-Pour plus de d\'etails concernant la console et ses commandes, consultez le
-chapitre \ilink{La console Bacula}{_ConsoleChapter} de ce manuel.
-
-\section{Un exemple de fichier de configuration de console}
-\label{SampleConfiguration2}
-\index[general]{Fichier!exemple Console Configuration}
-\index[general]{Exemple Console Configuration Fichier}
-
-Voici un exemple de fichier de configuration de console :
-
-\footnotesize
-\begin{verbatim}
-#
-# Bacula Console Configuration File
-#
-Director {
- Name = HeadMan
- address = "my_machine.my_domain.com"
- Password = Console_password
-}
-\end{verbatim}
-\normalsize
+++ /dev/null
-%%
-%%
-
-\section*{Pr\'erequis critiques avant de passer en production}
-\label{_ChapterStart32}
-\index[general]{Production!Pr\'erequis critiques avant de passer en }
-\index[general]{Pr\'erequis critiques avant de passer en production}
-\addcontentsline{toc}{section}{Pr\'erequis critiques avant de passer en production}
-
-\subsection*{G\'en\'eralit\'es}
-\index[general]{G\'en\'eralit\'es }
-\addcontentsline{toc}{subsection}{G\'en\'eralit\'es}
-Nous vous recommandons de prendre votre temps avant d'impl\'ementer un syst\`eme
-de sauvegardes Bacula. C'est un programme complexe, et si vous commettez une
-erreur, vous pouvez vous apercevoir inopin\'ement que vous ne pouvez
-restaurer vos fichiers quand vous en avez besoin. Ceci est plus
-particuli\`erement vrai si vous n'avez jamais utilis\'e de gros logiciel de
-sauvegardes auparavant.
-
-Si vous suivez les instructions de ce chapitre, vous aurez couvert la majorit\'e
-des probl\`emes qui peuvent survenir. Il va sans dire que si vous vous apercevez
-un jour que nous avons omis un point important, votre retour sera le
-bienvenu et enrichira ce document pour le b\'en\'efice de tous.
-
-\label{Critical}
-\subsection*{Points critiques}
-\index[general]{Points critiques}
-\index[general]{Points!Critiques}
-\addcontentsline{toc}{subsection}{Points critiques}
-
-Dans ce qui suit, nous supposons que vous avez install\'e Bacula, que vous
-l'avez plus ou moins compris, que vous avez au moins travaill\'e sur le
-chapitre "Une br\`eve documentation", et que vous avez install\'e une
-configuration de production basique. Si ce n'est pas le cas, faites-le
-avant de revenir ici. La suite est une sorte de {\it checklist} d'actions
-\`a ne pas n\'egliger, avec de br\`eves explications sur les raisons de nos
-recommandations. Vous trouverez les d\'etails ailleurs dans le manuel.
-L'ordre suivi est peu ou prou celui que vous suivrez en installant un
-syst\`eme de sauvegardes en production (utilisez cette liste m\^eme si vous
-\^etes d\'ej\`a en production !).
-
-\begin{itemize}
-\item Testez la compatibilit\'e de votre lecteur avec Bacula avec la commande
- {\bf test} du programme \ilink{btape}{btape}.
-\item Mieux encore, suivez les neuf \'etapes du chapitre
- \ilink{Tester votre lecteur}{_ChapterStart27}. Cela peut prendre du temps,
- mais vous \'eviterez aussi les mauvaises surprises.
-\item Testez la prise en charge de fin de bande de votre lecteur \`a l'aide de la
- commande {\it fill} du programme \ilink{btape}{btape}
-\item Si vous utilisez un noyau 2.4, prenez soin de d\'esactiver /lib/tls si
- n\'ecessaire. Bacula ne supporte pas cette librairie. Voyez le second point
- sous \ilink{Syst\`emes d'exploitation support\'es}{SupportedOSes}.
-\item Faites, au minimum, une restauration de fichier. Si vous sauvegardez
- des syst\`emes Unix et des Win32, testez au moins une restauration sur chacun
- des syst\`emes. Le chapitre \ilink{Restaurer des fichiers}{_ChapterStart13}
- vous montre la marche \`a suivre.
-\item Ecrivez un fichier {\it bootstrap} sur un autre syst\`eme pour chaque
- sauvegarde effectu\'ee. La directive {\bf write bootstrap} est d\'ecrite dans le
- chapitre \ilink{Configurer le Director}{writebootstrap} de ce manuel, et
- plus de d\'etails sont disponibles dans le chapitre
- \ilink{Le fichier Bootstrap}{_ChapterStart43}. Le fichier de configuration
- par d\'efaut du Director comporte une directive {\bf write bootstrap}
- pr\'ed\'efinie. Ceci vous permet de retrouver l'\'etat de votre syst\`eme lors
- de la derni\`ere sauvegarde.
-\item Sauvegardez votre catalogue. Un exemple de job qui sauvegarde le
- catalogue est est pr\'ed\'efini dans le fichier de configuration par d\'efaut du
- Director. Le script de sauvegarde est install\'e par d\'efaut et devrait
- prendre en charge toute base de donn\'ees, bien que vous puissiez faire
- vos modifications locales.
-\item Ecrivez un fichier bootstrap pour le catalogue. Un exemple de ceci figure
- dans le fichier de configuration par d\'efaut. Vous serez ainsi en mesure de
- restaurer rapidement votre catalogue dans l'\'eventualit\'e d'une corruption.
- Faute d'avoir pris cette pr\'ecaution, vous vous exposez \`a des heures d'un
- travail atroce pour aboutir au m\^eme r\'esultat.
-\item Faites une copie des fichiers bacula-dir.conf, bacula-sd.conf, et
- bacula-fd.conf que vous utilisez sur votre serveur. d\'eposez la copie
- sur une autre machine, en lieu sur, car ces fichiers seront difficiles
- \`a reconstituer si votre serveur subit un crash.
-\item Faites un CDROM de secours Bacula ! Consultez le chapitre
- \ilink{Disaster Recovery avec un CDROM de secours Bacula}{_ChapterRescue}.
- Il est ais\'e de produire un tel CDROM, aussi, il serait dommage de s'en
- priver alors qu'il peut vous rendre la restauration complete d'un syst\`eme
- (par exemple dans le cas d'un disque dur en panne) infiniment plus facile.
-\end{itemize}
-
-\subsection*{Points Recommand\'es}
-\index[general]{Points!Recommand\'es}
-\index[general]{Points Recommand\'es}
-\addcontentsline{toc}{subsection}{Points recommand\'es}
-
-Bien que les points \'evoqu\'es ci-dessous ne soient pas critiques, nous les
-recommandons \`a votre attention, car ils peuvent vous \'eviter des probl\`emes.
-
-\begin{itemize}
-\item Lisez le chapitre \ilink{D\'emarrer avec Bacula}{_ChapterStart37}
-\item Apr\`es avoir install\'e Bacula et fait quelques exp\'eriences, lisez
- attentivement les exemples du chapitre
- \ilink{Une br\`eve documentation}{_ChapterStart1} et mettez-les en
- oeuvre.
-\item Aprenez ce que fait chacun des \ilink{Programmes utilitaires Bacula}{_UtilityChapter}.
-\item Fixez des p\'eriodes de r\'etention raisonnables pour \'eviter que votre
- cataloguen ne croisse d\'emesur\'ement. Consultez les trois chapitres suivants :
- \ilink{Recycler vos volumes}{_ChapterStart22},\\
- \ilink{Gestion basique des volumes}{_ChapterStart39},\\
- \ilink{Utiliser les pools pour g\'erer vos volumes}{_ChapterStart11}.
-\item Effectuez une restauration {\it from bare metal} (NDT : depuis
- le m\'etal brut) \`a l'aide du CDROM de secours Bacula. consultez le
- chapitre \ilink{Disaster Recovery avec un CDROM de secours Bacula}{_ChapterRescue}.
-\end{itemize}
-
-Si vous devez absolument impl\'ementer une politique de sauvegardes dans laquelle
-vous \'ecrivez chaque soir sur une cartouche diff\'erente que vous exportez
-le lendemain matin hors site, nous vous proposons quelques conseils :
-
-\begin{itemize}
-\item Ecrivez un fichier bootstrap de vos donn\'ees sauvegard\'ees, et un
- autre de votre sauvegarde du catalogue sur disquette ou CDROM, et
- accompagnez vos cartouches de cette disquette ou ce CDROM. Si ce
- n'est pas possible, tentez au moins d'\'ecrire ces fichiers sur un
- autre ordinateur, si possible hors site, ou envoyez les par courrier
- \'electronique \`a un ami. Si rien de tout \c{c}a n'est possible imprimez
- les fichiers bootstrap et mettez les avec les cartouches. Les fichiers
- bootstrap rendent les op\'erations de restauration bien plus ais\'ees.
-\item Il est pr\'ef\'erable de ne pas contraindre Bacula \`a charger une
- cartouche particuli\`ere chaque jour. Laissez plut\^ot Bacula choisir.
- S'il vous faut savoir quelle cartouche charger, vous pouvez imprimer
- une liste des cartouches recycl\'ees ou \`a l'\'etat "append", et
- s\'electionner l'une de ces cartouches. Bacula peut proposer
- d'utiliser une cartouche particuli\`ere qu'il juge optimale, mais il
- acceptera toute cartouche valide pourvu qu'elle provienne du pool
- {\it ad hoc}.
-\end{itemize}
+++ /dev/null
-%%
-%%
-
-\section*{Daemon Protocol}
-\label{_ChapterStart2}
-\index{Protocol!Daemon }
-\index{Daemon Protocol }
-\addcontentsline{toc}{section}{Daemon Protocol}
-
-\subsection*{General}
-\index{General }
-\addcontentsline{toc}{subsection}{General}
-
-This document describes the protocols used between the various daemons. As
-Bacula has developed, it has become quite out of date. The general idea still
-holds true, but the details of the fields for each command, and indeed the
-commands themselves have changed considerably.
-
-It is intended to be a technical discussion of the general daemon protocols
-and as such is not targeted at end users but rather at developers and system
-administrators that want or need to know more of the working details of {\bf
-Bacula}.
-
-\subsection*{Low Level Network Protocol}
-\index{Protocol!Low Level Network }
-\index{Low Level Network Protocol }
-\addcontentsline{toc}{subsection}{Low Level Network Protocol}
-
-At the lowest level, the network protocol is handled by {\bf BSOCK} packets
-which contain a lot of information about the status of the network connection:
-who is at the other end, etc. Each basic {\bf Bacula} network read or write
-actually consists of two low level network read/writes. The first write always
-sends four bytes of data in machine independent byte order. If data is to
-follow, the first four bytes are a positive non-zero integer indicating the
-length of the data that follow in the subsequent write. If the four byte
-integer is zero or negative, it indicates a special request, a sort of network
-signaling capability. In this case, no data packet will follow. The low level
-BSOCK routines expect that only a single thread is accessing the socket at a
-time. It is advised that multiple threads do not read/write the same socket.
-If you must do this, you must provide some sort of locking mechanism. I would
-not be appropriate for efficiency reasons to make every call to the BSOCK
-routines lock and unlock the packet.
-
-\subsection*{General Daemon Protocol}
-\index{General Daemon Protocol }
-\index{Protocol!General Daemon }
-\addcontentsline{toc}{subsection}{General Daemon Protocol}
-
-In general, all the daemons follow the following global rules. There may be
-exceptions depending on the specific case. Normally, one daemon will be
-sending commands to another daemon (specifically, the Director to the Storage
-daemon and the Director to the File daemon).
-
-\begin{itemize}
-\item Commands are always ASCII commands that are upper/lower case dependent
- as well as space sensitive.
-\item All binary data is converted into ASCII (either with printf statements
- or using base64 encoding).
-\item All responses to commands sent are always prefixed with a return
- numeric code where codes in the 1000's are reserved for the Director, the
- 2000's are reserved for the File daemon, and the 3000's are reserved for the
-Storage daemon.
-\item Any response that is not prefixed with a numeric code is a command (or
- subcommand if you like) coming from the other end. For example, while the
- Director is corresponding with the Storage daemon, the Storage daemon can
-request Catalog services from the Director. This convention permits each side
-to send commands to the other daemon while simultaneously responding to
-commands.
-\item Any response that is of zero length, depending on the context, either
- terminates the data stream being sent or terminates command mode prior to
- closing the connection.
-\item Any response that is of negative length is a special sign that normally
- requires a response. For example, during data transfer from the File daemon
- to the Storage daemon, normally the File daemon sends continuously without
-intervening reads. However, periodically, the File daemon will send a packet
-of length -1 indicating that the current data stream is complete and that the
-Storage daemon should respond to the packet with an OK, ABORT JOB, PAUSE,
-etc. This permits the File daemon to efficiently send data while at the same
-time occasionally ``polling'' the Storage daemon for his status or any
-special requests.
-
-Currently, these negative lengths are specific to the daemon, but shortly,
-the range 0 to -999 will be standard daemon wide signals, while -1000 to
--1999 will be for Director user, -2000 to -2999 for the File daemon, and
--3000 to -3999 for the Storage daemon.
-\end{itemize}
-
-\subsection*{The Protocol Used Between the Director and the Storage Daemon}
-\index{Daemon!Protocol Used Between the Director and the Storage }
-\index{Protocol Used Between the Director and the Storage Daemon }
-\addcontentsline{toc}{subsection}{Protocol Used Between the Director and the
-Storage Daemon}
-
-Before sending commands to the File daemon, the Director opens a Message
-channel with the Storage daemon, identifies itself and presents its password.
-If the password check is OK, the Storage daemon accepts the Director. The
-Director then passes the Storage daemon, the JobId to be run as well as the
-File daemon authorization (append, read all, or read for a specific session).
-The Storage daemon will then pass back to the Director a enabling key for this
-JobId that must be presented by the File daemon when opening the job. Until
-this process is complete, the Storage daemon is not available for use by File
-daemons.
-
-\footnotesize
-\begin{verbatim}
-SD: listens
-DR: makes connection
-DR: Hello <Director-name> calling <password>
-SD: 3000 OK Hello
-DR: JobId=nnn Allow=(append, read) Session=(*, SessionId)
- (Session not implemented yet)
-SD: 3000 OK Job Authorization=<password>
-DR: use device=<device-name> media_type=<media-type>
- pool_name=<pool-name> pool_type=<pool_type>
-SD: 3000 OK use device
-\end{verbatim}
-\normalsize
-
-For the Director to be authorized, the \lt{}Director-name\gt{} and the
-\lt{}password\gt{} must match the values in one of the Storage daemon's
-Director resources (there may be several Directors that can access a single
-Storage daemon).
-
-\subsection*{The Protocol Used Between the Director and the File Daemon}
-\index{Daemon!Protocol Used Between the Director and the File }
-\index{Protocol Used Between the Director and the File Daemon }
-\addcontentsline{toc}{subsection}{Protocol Used Between the Director and the
-File Daemon}
-
-A typical conversation might look like the following:
-
-\footnotesize
-\begin{verbatim}
-FD: listens
-DR: makes connection
-DR: Hello <Director-name> calling <password>
-FD: 2000 OK Hello
-DR: JobId=nnn Authorization=<password>
-FD: 2000 OK Job
-DR: storage address = <Storage daemon address> port = <port-number>
- name = <DeviceName> mediatype = <MediaType>
-FD: 2000 OK storage
-DR: include
-DR: <directory1>
-DR: <directory2>
- ...
-DR: Null packet
-FD: 2000 OK include
-DR: exclude
-DR: <directory1>
-DR: <directory2>
- ...
-DR: Null packet
-FD: 2000 OK exclude
-DR: full
-FD: 2000 OK full
-DR: save
-FD: 2000 OK save
-FD: Attribute record for each file as sent to the
- Storage daemon (described above).
-FD: Null packet
-FD: <append close responses from Storage daemon>
- e.g.
- 3000 OK Volumes = <number of volumes>
- 3001 Volume = <volume-id> <start file> <start block>
- <end file> <end block> <volume session-id>
- 3002 Volume data = <date/time of last write> <Number bytes written>
- <number errors>
- ... additional Volume / Volume data pairs for volumes 2 .. n
-FD: Null packet
-FD: close socket
-\end{verbatim}
-\normalsize
-
-\subsection*{The Save Protocol Between the File Daemon and the Storage Daemon}
-\index{Save Protocol Between the File Daemon and the Storage Daemon }
-\index{Daemon!Save Protocol Between the File Daemon and the Storage }
-\addcontentsline{toc}{subsection}{Save Protocol Between the File Daemon and
-the Storage Daemon}
-
-Once the Director has send a {\bf save} command to the File daemon, the File
-daemon will contact the Storage daemon to begin the save.
-
-In what follows: FD: refers to information set via the network from the File
-daemon to the Storage daemon, and SD: refers to information set from the
-Storage daemon to the File daemon.
-
-\subsubsection*{Command and Control Information}
-\index{Information!Command and Control }
-\index{Command and Control Information }
-\addcontentsline{toc}{subsubsection}{Command and Control Information}
-
-Command and control information is exchanged in human readable ASCII commands.
-
-
-\footnotesize
-\begin{verbatim}
-FD: listens
-SD: makes connection
-FD: append open session = <JobId> [<password>]
-SD: 3000 OK ticket = <number>
-FD: append data <ticket-number>
-SD: 3000 OK data address = <IPaddress> port = <port>
-\end{verbatim}
-\normalsize
-
-\subsubsection*{Data Information}
-\index{Information!Data }
-\index{Data Information }
-\addcontentsline{toc}{subsubsection}{Data Information}
-
-The Data information consists of the file attributes and data to the Storage
-daemon. For the most part, the data information is sent one way: from the File
-daemon to the Storage daemon. This allows the File daemon to transfer
-information as fast as possible without a lot of handshaking and network
-overhead.
-
-However, from time to time, the File daemon needs to do a sort of checkpoint
-of the situation to ensure that everything is going well with the Storage
-daemon. To do so, the File daemon sends a packet with a negative length
-indicating that he wishes the Storage daemon to respond by sending a packet of
-information to the File daemon. The File daemon then waits to receive a packet
-from the Storage daemon before continuing.
-
-All data sent are in binary format except for the header packet, which is in
-ASCII. There are two packet types used data transfer mode: a header packet,
-the contents of which are known to the Storage daemon, and a data packet, the
-contents of which are never examined by the Storage daemon.
-
-The first data packet to the Storage daemon will be an ASCII header packet
-consisting of the following data.
-
-\lt{}File-Index\gt{} \lt{}Stream-Id\gt{} \lt{}Info\gt{} where {\bf
-\lt{}File-Index\gt{}} is a sequential number beginning from one that
-increments with each file (or directory) sent.
-
-where {\bf \lt{}Stream-Id\gt{}} will be 1 for the Attributes record and 2 for
-uncompressed File data. 3 is reserved for the MD5 signature for the file.
-
-where {\bf \lt{}Info\gt{}} transmit information about the Stream to the
-Storage Daemon. It is a character string field where each character has a
-meaning. The only character currently defined is 0 (zero), which is simply a
-place holder (a no op). In the future, there may be codes indicating
-compressed data, encrypted data, etc.
-
-Immediately following the header packet, the Storage daemon will expect any
-number of data packets. The series of data packets is terminated by a zero
-length packet, which indicates to the Storage daemon that the next packet will
-be another header packet. As previously mentioned, a negative length packet is
-a request for the Storage daemon to temporarily enter command mode and send a
-reply to the File daemon. Thus an actual conversation might contain the
-following exchanges:
-
-\footnotesize
-\begin{verbatim}
-FD: <1 1 0> (header packet)
-FD: <data packet containing file-attributes>
-FD: Null packet
-FD: <1 2 0>
-FD: <multiple data packets containing the file data>
-FD: Packet length = -1
-SD: 3000 OK
-FD: <2 1 0>
-FD: <data packet containing file-attributes>
-FD: Null packet
-FD: <2 2 0>
-FD: <multiple data packets containing the file data>
-FD: Null packet
-FD: Null packet
-FD: append end session <ticket-number>
-SD: 3000 OK end
-FD: append close session <ticket-number>
-SD: 3000 OK Volumes = <number of volumes>
-SD: 3001 Volume = <volumeid> <start file> <start block>
- <end file> <end block> <volume session-id>
-SD: 3002 Volume data = <date/time of last write> <Number bytes written>
- <number errors>
-SD: ... additional Volume / Volume data pairs for
- volumes 2 .. n
-FD: close socket
-\end{verbatim}
-\normalsize
-
-The information returned to the File daemon by the Storage daemon in response
-to the {\bf append close session} is transmit in turn to the Director.
+++ /dev/null
-%%
-%%
-
-\documentclass[11pt,a4paper]{report}
-\usepackage{html}
-\usepackage{float}
-\usepackage{graphicx}
-\usepackage{bacula}
-\usepackage{longtable}
-\usepackage{makeidx}
-\usepackage{index}
-\usepackage{setspace}
-\usepackage{hyperref}
-\usepackage{french}
-
-
-\makeindex
-
-\sloppy
-
-\begin{document}
-\sloppy
-
-\newfont{\bighead}{cmr17 at 36pt}
-%% \topmargin -0.5in
-%% \textheight 9in
-\parskip 10pt
-\parindent 0pt
-%% \oddsidemargin -0.0in
-%% \evensidemargin -0.25in
-%% \textwidth 7in
-
-\title{\includegraphics{./bacula-logo.eps} \\ \bigskip
- \Large{Il surgit de la nuit et absorbe l'essence vitale
- de vos ordinateurs.} }
-\author{Kern Sibbald \\
- Traduit de l'anglais par Ludovic Strappazon }
-\date{\vspace{2.0in}\today \\
- Ce mode d'emploi document la version 1.37.3 de Bacula}
-
-\maketitle
-
-\clearpage
-\tableofcontents
-\clearpage
-\listoffigures
-\clearpage
-\listoftables
-\clearpage
-
-\include{generaldevel}
-\include{daemonprotocol}
-\include{director}
-\include{file}
-\include{storage}
-\include{mediaformat}
-\include{porting}
-\include{regression}
-\include{md5}
-\include{mempool}
-\include{netprotocol}
-\include{smartall}
-
-
-% 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
-
-\end{document}
+++ /dev/null
-\begin{theindex}
-
- \item [, \hyperpage{27--32}, \hyperpage{34, 35}, \hyperpage{43},
- \hyperpage{57}, \hyperpage{61}
-
- \indexspace
-
- \item Download smartall.zip (Zipped archive) , \hyperpage{80}
-
- \indexspace
-
- \item ACKNOWLEDGEMENTS , \hyperpage{63}
- \item Adding a New Test , \hyperpage{58}
- \item Additional Error information , \hyperpage{69}
- \item Alloc() Function , \hyperpage{78}
- \item ALSO
- \subitem SEE , \hyperpage{62}
- \item Archive
- \subitem Download smartall.zip Zipped , \hyperpage{80}
- \subitem Download md5.zip Zipped , \hyperpage{62}
- \item Assignment
- \subitem Copyright , \hyperpage{5}
- \item Attributes
- \subitem Unix File , \hyperpage{43}
- \item Avoid if Possible , \hyperpage{10}
-
- \indexspace
-
- \item Backup
- \subitem Commands Received from the Director for a , \hyperpage{25}
- \item Bacula
- \subitem Building the Test , \hyperpage{55}
- \subitem Developing , \hyperpage{6}
- \item Bacula Developer Notes , \hyperpage{4}
- \item Bacula Memory Management , \hyperpage{64}
- \item Bacula Porting Notes , \hyperpage{50}
- \item Bacula Regression Testing , \hyperpage{54}
- \item Bacula Source File Structure , \hyperpage{8}
- \item Becoming a Server , \hyperpage{71}
- \item Block Header , \hyperpage{34}
- \item Bnet and Threads , \hyperpage{68}
- \item Bnet\_close , \hyperpage{70}
- \item Bnet\_fsend , \hyperpage{69}
- \item Bnet\_open , \hyperpage{68}
- \item Bnet\_recv , \hyperpage{69}
- \item Bnet\_send , \hyperpage{69}
- \item Bnet\_sig , \hyperpage{70}
- \item Bnet\_strerror , \hyperpage{70}
- \item BUGS , \hyperpage{62}
- \item Building the Test Bacula , \hyperpage{55}
-
- \indexspace
-
- \item Classes
- \subitem Message , \hyperpage{14}
- \item Code
- \subitem When Implementing Incomplete , \hyperpage{8}
- \item Command and Control Information , \hyperpage{20}
- \item Command Line Message Digest Utility , \hyperpage{60}
- \item Commands Received from the Director for a Backup ,
- \hyperpage{25}
- \item Commands Received from the Director for a Restore ,
- \hyperpage{25}
- \item Contributions , \hyperpage{4}
- \item Conventions
- \subitem Higher Level , \hyperpage{71}
- \item COPYING , \hyperpage{63}
- \item Copying , \hyperpage{80}
- \item Copyright Assignment , \hyperpage{5}
- \item Copyrights , \hyperpage{4}
- \item Corporate Assignment Statement , \hyperpage{5}
-
- \indexspace
-
- \item Daemon
- \subitem Director Services , \hyperpage{23}
- \subitem File Services , \hyperpage{24}
- \subitem Protocol Used Between the Director and the File ,
- \hyperpage{19}
- \subitem Protocol Used Between the Director and the Storage ,
- \hyperpage{18}
- \subitem Save Protocol Between the File Daemon and the Storage ,
- \hyperpage{20}
- \item Daemon Protocol , \hyperpage{17}
- \item Data Information , \hyperpage{20}
- \item Debug Messages , \hyperpage{14}
- \item Debugger
- \subitem Using a , \hyperpage{7}
- \item Debugging , \hyperpage{7}
- \item Definitions , \hyperpage{30}
- \item DESCRIPTION , \hyperpage{60}
- \item Design
- \subitem Storage Daemon , \hyperpage{26}
- \item Details
- \subitem SMARTALLOC , \hyperpage{76}
- \item Detection
- \subitem Smart Memory Allocation With Orphaned Buffer ,
- \hyperpage{72}
- \item Developing Bacula , \hyperpage{6}
- \item Director Services Daemon , \hyperpage{23}
- \item Directory Structure , \hyperpage{58}
- \item Disabled
- \subitem When SMARTALLOC is , \hyperpage{77}
- \item Do Not Use , \hyperpage{10}
- \item Do Use Whenever Possible , \hyperpage{10}
- \item Don'ts , \hyperpage{13}
- \item Download md5.zip (Zipped archive) , \hyperpage{62}
- \item Dynamically Allocated Memory , \hyperpage{64}
-
- \indexspace
-
- \item Error Messages , \hyperpage{15}
- \item EXIT STATUS , \hyperpage{62}
-
- \indexspace
-
- \item Fails
- \subitem If a Test , \hyperpage{57}
- \item File Services Daemon , \hyperpage{24}
- \item Files
- \subitem Header , \hyperpage{9}
- \subitem Special , \hyperpage{8}
- \item FILES , \hyperpage{62}
- \item Format
- \subitem Old Depreciated Tape , \hyperpage{44}
- \subitem Overall , \hyperpage{33}
- \subitem Overall Storage , \hyperpage{38}
- \subitem Storage Daemon File Output , \hyperpage{32}
- \subitem Storage Media Output , \hyperpage{30}
- \subitem Volume Label , \hyperpage{37}
- \item Function
- \subitem alloc , \hyperpage{78}
-
- \indexspace
-
- \item General , \hyperpage{4}, \hyperpage{17}, \hyperpage{30},
- \hyperpage{54}, \hyperpage{64}, \hyperpage{68}
- \item General Daemon Protocol , \hyperpage{17}
-
- \indexspace
-
- \item Hack
- \subitem Invitation to the , \hyperpage{79}
- \item Hand
- \subitem Running the Tests by , \hyperpage{58}
- \item Header
- \subitem Block , \hyperpage{34}
- \subitem Record , \hyperpage{34}
- \subitem Version 2 Record , \hyperpage{36}
- \subitem Version BB02 Block , \hyperpage{36}
- \item Header Files , \hyperpage{9}
- \item Higher Level Conventions , \hyperpage{71}
-
- \indexspace
-
- \item If a Test Fails , \hyperpage{57}
- \item Indenting Standards , \hyperpage{11}
- \item Information
- \subitem Additional Error , \hyperpage{69}
- \subitem Command and Control , \hyperpage{20}
- \subitem Data , \hyperpage{20}
- \item Installing SMARTALLOC , \hyperpage{73}
- \item Introduction
- \subitem SD Design , \hyperpage{26}
- \item Invitation to the Hack , \hyperpage{79}
-
- \indexspace
-
- \item Job Messages , \hyperpage{15}
-
- \indexspace
-
- \item Label
- \subitem Session , \hyperpage{37}
- \item Leaks
- \subitem Memory , \hyperpage{7}
- \item Libraries
- \subitem Living with , \hyperpage{74}
- \item Living with Libraries , \hyperpage{74}
- \item Low Level Network Protocol , \hyperpage{17}
-
- \indexspace
-
- \item Management
- \subitem Bacula Memory , \hyperpage{64}
- \item Memory
- \subitem Dynamically Allocated , \hyperpage{64}
- \subitem Pooled and Non-pooled , \hyperpage{65}
- \subitem Statically Allocated , \hyperpage{64}
- \item Memory Leaks , \hyperpage{7}
- \item Memory Messages , \hyperpage{16}
- \item Message Classes , \hyperpage{14}
- \item Messages
- \subitem Debug , \hyperpage{14}
- \subitem Error , \hyperpage{15}
- \subitem Job , \hyperpage{15}
- \subitem Memory , \hyperpage{16}
-
- \indexspace
-
- \item NAME , \hyperpage{60}
- \item Notes
- \subitem Bacula Developer , \hyperpage{4}
- \subitem Bacula Porting , \hyperpage{50}
-
- \indexspace
-
- \item Old Depreciated Tape Format , \hyperpage{44}
- \item OPTIONS , \hyperpage{61}
- \item Other Tests , \hyperpage{57}
- \item Outline
- \subitem SD Development , \hyperpage{26}
- \item Overall Format , \hyperpage{33}
- \item Overall Storage Format , \hyperpage{38}
- \item Overlays and Underhandedness , \hyperpage{78}
-
- \indexspace
-
- \item Parameters
- \subitem Setting the Configuration , \hyperpage{54}
- \item Patches , \hyperpage{4}
- \item Pooled and Non-pooled Memory , \hyperpage{65}
- \item Porting
- \subitem Steps to Take for , \hyperpage{51}
- \item Porting Requirements , \hyperpage{50}
- \item Possible
- \subitem Avoid if , \hyperpage{10}
- \subitem Do Use Whenever , \hyperpage{10}
- \item Program
- \subitem Test and Demonstration , \hyperpage{79}
- \item Programming Standards , \hyperpage{10}
- \item Protocol
- \subitem Daemon , \hyperpage{17}
- \subitem General Daemon , \hyperpage{17}
- \subitem Low Level Network , \hyperpage{17}
- \subitem TCP/IP Network , \hyperpage{68}
- \item Protocol Used Between the Director and the File Daemon ,
- \hyperpage{19}
- \item Protocol Used Between the Director and the Storage Daemon ,
- \hyperpage{18}
-
- \indexspace
-
- \item Record Header , \hyperpage{34}
- \item Regression
- \subitem Running the Disk Only , \hyperpage{55}
- \item Requests
- \subitem SD Append , \hyperpage{27}
- \subitem SD Read , \hyperpage{28}
- \item Requirements
- \subitem Porting , \hyperpage{50}
- \item Restore
- \subitem Commands Received from the Director for a , \hyperpage{25}
- \item Running the Disk Only Regression , \hyperpage{55}
- \item Running the Regression Script , \hyperpage{54}
- \item Running the Tests by Hand , \hyperpage{58}
-
- \indexspace
-
- \item Save Protocol Between the File Daemon and the Storage Daemon ,
- \hyperpage{20}
- \item Script
- \subitem Running the Regression , \hyperpage{54}
- \item SD Append Requests , \hyperpage{27}
- \item SD Connections and Sessions , \hyperpage{27}
- \item SD Design Introduction , \hyperpage{26}
- \item SD Development Outline , \hyperpage{26}
- \item SD Read Requests , \hyperpage{28}
- \item SEE ALSO , \hyperpage{62}
- \item Serialization , \hyperpage{33}
- \item Server
- \subitem Becoming a , \hyperpage{71}
- \item Session Label , \hyperpage{37}
- \item Sessions
- \subitem SD Connections and , \hyperpage{27}
- \item Setting the Configuration Parameters , \hyperpage{54}
- \item Smart Memory Allocation With Orphaned Buffer Detection ,
- \hyperpage{72}
- \item SMARTALLOC
- \subitem Installing , \hyperpage{73}
- \subitem Squelching a , \hyperpage{74}
- \item SMARTALLOC Details , \hyperpage{76}
- \item Special Files , \hyperpage{8}
- \item Squelching a SMARTALLOC , \hyperpage{74}
- \item Standards
- \subitem Indenting , \hyperpage{11}
- \subitem Programming , \hyperpage{10}
- \item Statement
- \subitem Corporate Assignment , \hyperpage{5}
- \item Statically Allocated Memory , \hyperpage{64}
- \item STATUS
- \subitem EXIT , \hyperpage{62}
- \item Steps to Take for Porting , \hyperpage{51}
- \item Storage Daemon Design , \hyperpage{26}
- \item Storage Daemon File Output Format , \hyperpage{32}
- \item Storage Media Output Format , \hyperpage{30}
- \item Structure
- \subitem Bacula Source File , \hyperpage{8}
- \subitem Directory , \hyperpage{58}
- \item SYNOPSIS , \hyperpage{60}
-
- \indexspace
-
- \item Tabbing , \hyperpage{13}
- \item TCP/IP Network Protocol , \hyperpage{68}
- \item Test
- \subitem Adding a New , \hyperpage{58}
- \subitem Writing a Regression , \hyperpage{58}
- \item Test and Demonstration Program , \hyperpage{79}
- \item Testing
- \subitem Bacula Regression , \hyperpage{54}
- \item Tests
- \subitem Other , \hyperpage{57}
- \item Threads
- \subitem bnet and , \hyperpage{68}
-
- \indexspace
-
- \item Underhandedness
- \subitem Overlays and , \hyperpage{78}
- \item Unix File Attributes , \hyperpage{43}
- \item Use
- \subitem Do Not , \hyperpage{10}
- \item Using a Debugger , \hyperpage{7}
- \item Utility
- \subitem Command Line Message Digest , \hyperpage{60}
-
- \indexspace
-
- \item Version 2 Record Header , \hyperpage{36}
- \item Version BB02 Block Header , \hyperpage{36}
- \item Volume Label Format , \hyperpage{37}
-
- \indexspace
-
- \item When Implementing Incomplete Code , \hyperpage{8}
- \item When SMARTALLOC is Disabled , \hyperpage{77}
- \item Writing a Regression Test , \hyperpage{58}
-
-\end{theindex}
+++ /dev/null
-%%
-%%
-
-\section*{Configurer le Director}
-\label{_ChapterStart40}
-\index[general]{Director!Configurer le}
-\index[general]{Configurer le Director}
-\addcontentsline{toc}{section}{Configurer le Director}
-
-Parmi tous les fichiers de configuration requis pour ex\'ecuter {\bf Bacula},
-celui du Director est le plus compliqu\'e, et c'est celui que vous modifierez
-le plus souvent, en ajoutant des clients ou en modifiant les FileSets.
-
-Pour une discussion g\'en\'erale concernant les fichiers et ressources ainsi
-que les types de donn\'ees reconnus par {\bf Bacula}, veuillez consulter le
-chapitre
-\ilink{Configuration}{_ChapterStart16} de ce manuel.
-
-\subsection*{Les types de ressources du Director}
-\index[general]{Les types de ressources du Director}
-\index[general]{Director!Les types de ressources du}
-\addcontentsline{toc}{subsection}{Les types de ressources du Director}
-
-Les types de ressources du Director sont :
-
-Job, JobDefs, Client, Storage, Catalog, Schedule, FileSet, Pool, Director, et
-Messages. Nous les pr\'esentons ici dans l'ordre le plus logique (relativement
-au fichier de configuration du Director) :
-
-\begin{itemize}
-\item
- \ilink{Director}{DirectorResource4} -- Pour d\'efinir le nom du
- Director et son mot de passe pour l'authentification du programme Console. Il
- ne doit y avoir qu'une seule d\'efinition de ressource Director dans le
- fichier de configuration. Si vous avez soit {\bf /dev/random} soit {\bf bc}
- sur votre machine, Bacula g\'en\`erera un mot de passe al\'eatoire lors du
- processus de configuration, sinon, il sera laiss\'e blanc.
-\item
- \ilink{Job}{JobResource} -- Pour d\'efinir les Jobs de types
- sauvegarde et restauration, et pour lier les ressources Client, FileSet et
-Schedules \`a utiliser conjointement pour chaque Job.
-\item
- \ilink{JobDefs}{JobDefsResource} -- Ressource optionnelle destin\'ee \`a
- fournir des valeurs par d\'efaut pour les ressources Job.
-\item
- \ilink{Schedule}{ScheduleResource} -- Pour d\'efinir le moment
- o\`u un Job doit \^etre lanc\'e automatiquement par le {\it scheduler}
-interne de Bacula.
-\item
- \ilink{FileSet}{FileSetResource} -- Pour d\'efinir l'ensemble des
- fichiers \`a sauvegarder pour chaque client.
-\item
- \ilink{Client}{ClientResource2} -- Pour d\'efinir quel Client est
- \`a sauvegarder.
-\item
- \ilink{Storage}{StorageResource2} -- Pour d\'efinir sur quel
- p\'eriph\'erique physique les volumes seront mont\'es.
-\item
- \ilink{Pool}{PoolResource} -- Pour d\'efinir quel le pool de volumes
- qui peut \^etre utilis\'e pour un Job donn\'e
-\item
- \ilink{Catalog}{CatalogResource} -- Pour d\'efinir la base de
- donn\'ees o\`u conserver les listes des fichiers sauvegard\'es et des volumes
-o\`u ils ont \'et\'e sauvegard\'es.
-\item
- \ilink{Messages}{_ChapterStart15} -- Pour d\'efinir les
- destinataires (ou les fichiers de logs) des messages d'erreur et
-d'information.
-\end{itemize}
-
-\subsection*{La ressource Director}
-\label{DirectorResource4}
-\index[general]{Director!La ressource}
-\index[general]{La ressource Director}
-\addcontentsline{toc}{subsection}{La ressource Director}
-
-La ressource Director d\'efinit les attributs du Director ex\'ecut\'e sur le
-r\'eseau. Dans l'impl\'ementation actuelle, il n'y a qu'une ressource
-Director, mais la r\'ealisation finale contiendra plusieurs Directors pour
-maintenir la redondance de la base des indexes et m\'edia.
-
-\begin{description}
-
-\item [Director]
- \index[dir]{Director}
- D\'ebut de la ressource Director. Une ressource Director et une seule doit
-\^etre d\'efinie.
-
-\item [Name = \lt{}nom\gt{}]
- \index[dir]{Name}
- \index[dir]{Directive!Name}
- Le nom du Director utilis\'e par l'administrateur syst\`eme. Cette directive
-est requise
-
-\item [Description = \lt{ }texte\gt{}]
- \index[dir]{Description}
- \index[dir]{Directive!Description}
- Le champ texte contient une description du Director qui sera affich\'ee dans
-l'interface graphique. Cette directive est optionnelle.
-
-\item [Password = \lt{}UA-password\gt{}]
- \index[dir]{Password}
- \index[dir]{Directive!Password}
- Sp\'ecifie le mot de passe qui doit \^etre fourni par la Console Bacula par
-d\'efaut pour \^etre autoris\'ee. Le m\^eme mot de passe doit appara{\^\i}tre
-dans la ressource {\bf Director} du fichier de configuration de la console.
-Pour plus de s\'ecurit\'e, le mot de passe ne transite jamais sur le r\'eseau,
-l'authentification se fait via un \'echange de type {\it challenge-response}
-d'un {\it hash code} cr\'e\'e avec le mot de passe. Cette directive est
-requise. Si vous disposez de {\bf /dev/random} ou {\bf bc} sur votre machine,
-Bacula g\'en\`erera un mot de passe al\'eatoire lors du processus
-d'installation, sinon il sera laiss\'e blanc et vous devrez en d\'efinir un
-manuellement.
-
-\item [Messages = \lt{}Nom-de-ressource-Messages\gt{}]
- \index[dir]{Messages}
- \index[dir]{Directive!Messages}
- La ressource {\bf messages} sp\'ecifie o\`u doivent \^etre d\'elivr\'es les messages du Director
- qui ne sont pas associ\'es \`a un job sp\'ecifique. La plupart des messages sont relatifs
- \`a un job et seront dirig\'es vers la ressource {\bf messages} sp\'ecifi\'ee par le job.
- Cependant, quelques messages peuvent \^etre g\'en\'er\'es lorsque aucun job n'est actif.
- Cette directive est requise.
-
-\item [Working Directory = \lt{}R\'epertoire\gt{}]
- \index[dir]{Working Directory}
- \index[dir]{Directive!Working Directory}
- Cette directive sp\'ecifie un r\'epertoire o\`u le Director peut d\'eposer ses fichiers
- d'\'etats. Ce r\'epertoire ne devrait \^etre utilis\'e que par Bacula, mais il peut \^etre
- partag\'e par d'autres {\it daemons} Bacula. Notez cependant que si ce r\'epertoire est
- partag\'e avec d'autres daemons Bacula, vous devez vous assurer que le nom {\bf Name}
- donn\'e \`a chaque daemon est unique afin d'\'eviter des collisions entre les fichiers
- temporaires utilis\'es. Par d\'efaut, le processus de configuration de Bacula cr\'e\'e des noms
- de daemons uniques en les postfixant avec -dir, -fd et -sd.
- 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. Cette directive est requise.
-
- Si vous avez sp\'ecifi\'e un utilisateur et/ou un groupe pour le Director lors de la
- configuration avec les options {\bf {-}{-}with-dir-user} et/ou {\bf {-}{-}with-dir-group} de
- la commande ./configure, le r\'epertoire de travail Working Directory doit appartenir
- doit appartenir \`a ce groupe et \`a cet utilisateur.
-
-\item [Pid Directory = \lt{}R\'epertoire\gt{}]
- \index[dir]{Pid Directory}
- \index[dir]{Directive!Pid Directory}
- Cette directive sp\'ecifie un r\'epertoire o\`u le Director 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 [Scripts Directory = \lt{}Directory\gt{}]
- \index[dir]{Scripts Directory}
- \index[dir]{Directive!Scripts Directory}
- Cette directive sp\'ecifie le r\'epertoire dans lequel le Director devra rechercher
- le script Python de d\'emarrage {\bf DirStartup.py}. Ce r\'epertoire peut \^etre
- partag\'e par d'autres daemons 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. Cette directive est optionnelle.
-
-\item [QueryFile = \lt{}Path\gt{}]
- \index[dir]{QueryFile}
- \index[dir]{Directive!QueryFile}
- Cette directive sp\'ecifie un r\'epertoire et un fichier dans lequel le
-Director peut trouver les requ\^etes SQL pr\'e\'etablies pour la commande
-{\bf Query} de la Console. 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.
-Cette directive est requise.
-
-\label{DirMaxConJobs}
-
-\item [Maximum Concurrent Jobs = \lt{}nombre\gt{}]
- \index[dir]{Maximum Concurrent Jobs}
- \index[dir]{Directive!Maximum Concurrent Jobs}
- \index[general]{Jobs Simultan\'es}
- \index[general]{Jobs Concurrents}
-
- O\`u \lt{}nombre\gt{} est le nombre maximal de jobs qui peuvent \^etre ex\'ecut\'es
-simultan\'ement par le Director. La valeur par d\'efaut est 1, mais vous pouvez utiliser
-une valeur plus grande.
-Notez que le format des volumes devient beaucoup plus compliqu\'e avec plusieurs jobs
-ex\'ecut\'es simultan\'ement. De ce fait, les restaurations peuvent prendre beaucoup plus
-de temps si Bacula doit faire le tri parmi les segments entrem\'el\'es de ces jobs. Ceci
-peut \^etre \'evit\'e en s'arrangeant pour que chacun des jobs ex\'ecut\'es simultan\'ement
-\'ecrive sur un volume distinct. Une autre possibilit\'e consiste \`a utiliser le
-{\it data spooling} : les donn\'ees seront d'abord "spool\'ees" sur disque
-simultan\'ement, ensuite les fichiers "spool" seront \'ecrits s\'equentiellement
-sur le volume.
-
-Dans certains cas, des directives telles que {\bf Maximum Volume Jobs} ne sont pas
-correctement synchronis\'ees avec le nombre de jobs simultan\'es, et des probl\`emes
-de synchronisation subtils peuvent survenir, aussi des tests minutieux sont recommand\'es.
-
-Actuellement, il n'y a aucun param\`etre de configuration pour r\'egler ou limiter
-le nombre de connections par console. Un maximum de cinq connection simultan\'ees
-est autoris\'e.
-
-Pour plus de d\'etails concernant l'ex\'ecution simultan\'ee de plusieurs jobs, consultez la
-partie \ilink{Ex\'ecution simultan\'ee de plusieurs jobs}{ConcurrentJobs} du chapitre Astuces de ce manuel.
-
-
-\item [FD Connect Timeout = \lt{}dur\'ee\gt{}]
- \index[dir]{FD Connect Timeout}
- \index[dir]{Directive!FD Connect Timeout}
- O\`u {\bf dur\'ee} est le d\'elai durant lequel le Director tente de contacter
- le File Daemon pour d\'emarrer un job. Une fois ce d\'elai \'ecoul\'e, le Director supprimera le job.
- La valeur par d\'efaut est 30 minutes.
-
-\item [SD Connect Timeout = \lt{}dur\'ee\gt{}]
- \index[dir]{SD Connect Timeout}
- \index[dir]{Directive!SD Connect Timeout}
- O\`u {\bf dur\'ee} est le d\'elai durant lequel le Director tente de contacter
- le Storage Daemon pour d\'emarrer un job. Une fois ce d\'elai \'ecoul\'e, le Director supprimera le job.
- La valeur par d\'efaut est 30 minutes.
-
-\item [DirAddresses = \lt{}Sp\'ecification-adresses-IP\gt{}]
- \index[dir]{DirAddresses}
- \index[dir]{Adresse}
- \index[general]{Adresse}
- \index[dir]{Directive!DirAddresses}
- Sp\'ecifie les ports et adresses sur lesquels le Director se met en attente de
- connections de Consoles Bacula. La meilleure explication est sans doute un exemple :
-
-\footnotesize
-\begin{verbatim}
- DirAddresses = {
- ip = { addr = 1.2.3.4; port = 1205;}
- ipv4 = {
- addr = 1.2.3.4; port = http;}
- ipv6 = {
- addr = 1.2.3.4;
- port = 1205;
- }
- ip = {
- addr = 1.2.3.4
- port = 1205
- }
- ip = { addr = 1.2.3.4 }
- ip = { addr = 201:220:222::2 }
- ip = {
- addr = bluedot.thun.net
- }
- }
-\end{verbatim}
-\normalsize
-
-o\`u "ip", "ip4", "ip6", "addr", et "port sont les mots clef. Notez que
-les adresses peuvent \^etre sp\'ecifi\'ees sous forme de quadruplets point\'es, ou
-suivant la notation \`a doubles points IPv6, ou encore sous forme de nom symbolique
-(seulement pour la sp\'ecification ip). D'autre part, le port peut \^etre sp\'ecifi\'e
-par un nombre, ou par une valeur mn\'emonique du fichier /etc/services. Si un port
-n'est pas pr\'ecis\'e, celui par d\'efaut sera utilis\'e. Si une section ip est sp\'ecifi\'ee,
-la r\'esolution peut \^etre faite soit par IPv4, soit par IPv6. Si ip4 est sp\'ecifi\'e,
-seules les r\'esolutions IPv4 seront permises. Il en va de m\^eme avec ip6.
-
-Notez que si vous utilisez la directive DirAddresses, vous ne devez utiliser ni la directive
-DirPort, ni la directive DirAddress dans la m\^eme ressource.
-
-\item [DIRport = \lt{}num\'ero-de-port\gt{}]
- \index[dir]{DIRport}
- \index[dir]{Directive!DIRport}
- Sp\'ecifie le port (un entier positif) sur lequel le Director est \`a l'\'ecoute
-de connections de Consoles Bacula. Ce m\^eme num\'ero de port doit \^etre sp\'ecifi\'e
-dans la ressource Director du fichier de configuration de la console. La
-valeur par d\'efaut est 9101, aussi, il n'est en principe pas n\'ecessaire
-de renseigner cette directive. Elle n'est pas requise si vous sp\'ecifiez des
-DirAdresses.
-
-\item [DirAddress = \lt{}Adresse-IP\gt{}]
- \index[dir]{DirAddress}
- \index[dir]{Directive!DirAddress}
- Cette directive est optionnelle. Lorsqu'elle est sp\'ecifi\'ee, le Director n'accepte
-de connections Console 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 ou cha\^ine quot\'ee.
-Si cette directive n'est pas sp\'ecifi\'ee, le Director acceptera des connections de Console
-de toute adresse valide. Notez que contrairement \`a la sp\'ecification DirAdresses d\'ecrite
-plus haut, cette directive ne permet de sp\'ecifier qu'une seule adresse. Cette directive
-n'est pas requise si vous utilisez la directive DirAdresses.
-
-\end{description}
-
-Voici un exemple d'une ressource Director valide :
-
-\footnotesize
-\begin{verbatim}
-Director {
- Name = HeadMan
- WorkingDirectory = "$HOME/bacula/bin/working"
- Password = UA_password
- PidDirectory = "$HOME/bacula/bin/working"
- QueryFile = "$HOME/bacula/bin/query.sql"
- Messages = Standard
-}
-\end{verbatim}
-\normalsize
-
-\subsection*{La ressource Job}
-\label{JobResource}
-\index[general]{Resource!Job }
-\index[general]{Job Resource }
-\addcontentsline{toc}{subsection}{Job Resource}
-
-La ressource Job d\'efinit un Job (sauvegarde, restauration,...) que Bacula doit
-ex\'ecuter. Chaque d\'efinition de ressource Job contient le nom d'un client, la
-liste des \'el\'ements \`a sauvegarder (FileSet), la planification (Schedule) pour
-ce Job, le lieu o\`u sauvegarder ces donn\'ees (Storage Device) et quel groupe de
-media utiliser (Pool). En effet, chaque ressource Job doit r\'epondre aux questions :
-"Quoi ?", "O\`u ?", "Quand ?" et "Comment ?" soit, respectivement Fileset, Storage,
-Schedule, Type et Niveau (Sauvegarde/Restauration - Full/Differentielle/Incr\'ementale).
-Notez que le FileSet doit \^etre sp\'ecifi\'e lors des restaurations pour des raisons
-historiques, mais il n'est plus utilis\'e.
-
-Un seul type ({\bf Backup}, {\bf Restore}, ...) peut \^etre sp\'ecifi\'e pour un Job donn\'e.
-Si vous voulez sauvegarder plusieurs FileSets sur le m\^eme client, vous devez d\'efinir un
-Job pour chacun d'entre eux.
-
-\begin{description}
-
-\item [Job]
- \index[dir]{Job}
- \index[dir]{Directive!Job}
- D\'ebut de la ressource Job. Il faut d\'efinir au moins une ressource Job.
-
-\item [Name = \lt{}name\gt{}]
- \index[dir]{Name}
- \index[dir]{Directive!Name}
- Le nom du Job. Ce nom peut \^etre utilis\'e avec la commande {\bf Run} du
- programme Console pour lancer un Job. Si le nom contient des espaces,
- il doit \^etre plac\'e entre quotes. C'est g\'en\'eralement une bonne id\'ee de
- nommer vos Jobs du nom du Client qu'ils sauvegardent, afin de les
- identifier ais\'ement.
-
- Lors de l'ex\'ecution d'un Job, son nom unique est compos\'e du nom que vous avez
- sp\'ecifi\'e ici suffix\'e avec la date et l'heure de sa planification.
- Cette directive est requise.
-
-\item [Enabled = \lt{}yes|no\gt{}]
- \index[dir]{Enable}
- \index[dir]{Directive!Enable}
- Cette directive permet d'activer ou d\'esactiver l'ex\'ecution automatique d'un job
- par le planificateur.
-
-\item [Type = \lt{}job-type\gt{}]
- \index[dir]{Type}
- \index[dir]{Directive!Type}
- La directive {\bf Type} sp\'ecifie le type de Job, qui peut \^etre l'un des
- suivants : {\bf Backup}, {\bf Restore}, {\bf Verify}, ou {\bf Admin}.
- Cette directive est requise. Pour chaque type de Job, il existe diff\'erents
- niveaux, qui seront d\'ecrits dans les prochains paragraphes.
-
-\begin{description}
-
-\item [Backup]
- \index[dir]{Backup}
- D\'efinit une sauvegarde. En principe, vous aurez au moins un job de type Backup
- par client sauvegard\'e. A moins que vous ne d\'esactiviez le catalogue, la
- plupart des donn\'ees et statistiques concernant les fichiers sauvegard\'ees
- seront \'ecrites dans le catalogue.
-
-\item [Restore]
- \index[dir]{Restore}
- D\'efinit une restauration. En principe, vous ne cr\'eerez qu'un seul job de ce
- type, que vous utiliserez comme un prototype que vous modifierez \`a l'aide
- de la console lorsque vous devrez restaurer. Bien que certaines informations
- basiques soient conserv\'ees dans le catalogue lors de restaurations, leur
- quantit\'e est infime en regard des informations stock\'ees pour une sauvegarde --
- par exemple, aucune entr\'ee de nom de fichier n'est g\'en\'er\'ee, puisqu'aucun fichier
- n'est sauvegard\'e.
-
-\item [Verify]
- \index[dir]{Verify}
- D\'efinit un Job de type Verify. Le Jobs de type {\bf verify} permettent de
- comparer le catalogue au syst\`eme de fichiers ou \`a ce qui a \'et\'e sauvegard\'e.
- Vous pouvez l'utiliser pour vous assurer qu'une cartouche de donn\'ees est
- lisible, mais aussi comme un syst\`eme de d\'etection d'intrusion \`a la fa\c {c}on de
- Tripwire.
-
-\item [Admin]
- \index[dir]{Admin}
- D\'efinit un Job de type Admin. Un {\bf Admin} peut s'utiliser pour "\'elaguer"
- p\'eriodiquement le catalogue, si vous ne souhaitez pas que ceci soit fait \`a la fin
- de chaque sauvegarde. Bien que les Jobs de type admin soient enregistr\'es dans le
- catalogue, la quantit\'e de donn\'ees g\'en\'er\'ee est infime.
-
-\end{description}
-
-\label{Level}
-
-\item [Level = \lt{}job-level\gt{}]
- \index[dir]{Directive!Level}
- \index[dir]{Level}
- La directive Level sp\'ecifie le niveau d'ex\'ecutiondu job par d\'efaut.
- Chaque type de job a son propre jeu de niveaux qui peuvent \^etre sp\'ecifi\'es.
- Le niveau d'ex\'ecution est en g\'en\'eral surcharg\'e par une valeur diff\'erente
- sp\'ecifi\'ee dans la ressource {\bf Schedule}. Cette directive n'est pas
- requise mais doit \^etre sp\'ecifi\'ee soit ici, soit en tant que surcharge
- dans la ressource {\bf Schedule}.
-
-Pour un job de type {\bf Backup} le niveau doit \^etre l'un des suivants :
-
-\begin{description}
-
-\item [Full]
- \index[dir]{Full}
- Tous les fichiers du FileSet, qu'ils aient \'et\'e modifi\'es ou non.
-
-\item [Incremental]
- \index[dir]{Incremental}
- Tous les fichiers modifi\'es depuis la derni\`ere sauvegarde valide du FileSet
- sp\'ecifi\'e pour le m\^eme job. Si le Director ne peut trouver une sauvegarde Full ant\'erieure,
- le niveau du job sera \'elev\'e en une sauvegarde Full. Lorsque le Director
- recherche une Full valide dans le catalogue, il recherche un job avec
- les caract\'eristiques suivantes :
-
-\begin{itemize}
-\item le m\^eme nom de job ;
-\item le m\^eme nom de client ;
-\item le m\^eme FileSet (toute modification de la d\'efinition du FileSet telle
- que l'ajout ou la suppression de fichiers dans les sections Include ou
- Exclude constitue un changement de FileSet).
-\item le niveau requis (Full, Differential ou Incremental)
-\item le job s'est termin\'e normalement, c'est \`a dire un qu'il ne s'est pas termin\'e
- en \'echec, et n'a pas \'et\'e effac\'e.
-\end{itemize}
-
-Si toutes les conditions ci-dessus ne sont pas r\'ealis\'ees, le Director
-augmentera la sauvegarde incr\'ementale en une sauvegarde Full. Dans le cas
-contraire, la sauvegarde incr\'ementale sera effectu\'ee normalement.
-
-Le File Daemon (Client) d\'etermine les fichiers \`a sauvegarder pour une
-incr\'ementale par comparaison de l'heure de d\'emarrage du Job pr\'ec\'edent
-(Full, Diff\'erentiel ou Incr\'emental) avec les dates de derni\`ere modification
-de chaque fichier (st\_mtime) et de ses attributs (st\_ctime). Si le fichier
-ou ses attributs ont chang\'es depuis cette date de d\'emarrage, alors le fichier
-sera sauvegard\'e.
-
-Veuillez noter que certains logiciels anti-virus peuvent modifier la date
-st\_time lors de leurs op\'erations de scan. Ainsi, si l'antivirus modifie
-la date d'acc\`es (st\_atime), qui n'est pas utilis\'ee par Bacula, il
-provoquera une modification du st\_ctime et conduira Bacula \`a sauvegarder
-les fichiers concern\'es lors des incr\'ementales et diff\'erentielles. Dans le
-cas de l'antivirus Sophos, vous pouvez \'eviter cet inconv\'enient en utilisant
-l'option {\bf \verb{--{no-reset-atime}. Pour les autres logiciels, voyez
-leurs manuels.
-
-Lorsque Bacula effectue une sauvegarde incr\'ementale, tous les fichiers modifi\'es
-pr\'esents sur le syst\`eme sont sauvegard\'es. Cependant, tout fichier supprim\'e depuis
-la derni\`ere Full demeure dans le catalogue, ce qui signifie que si vous effectuez
-une restauration \`a partir de sauvegardes incr\'ementales (et de la Full associ\'ee),
-les fichiers supprim\'es depuis la derni\`ere Full seront aussi restaur\'es. Ces fichiers
-n'appara\^itront plus dans le catalogue apr\`es avoir fait une nouvelle sauvegarde
-Full. Le processus pour supprimer ces fichiers du catalogue lors d'une
-incr\'ementale ralentirait fortement les sauvegardes incr\'ementales. Il n'est
-actuellement pas impl\'ement\'e dans Bacula.
-
-De plus, si vous d\'eplacez un r\'epertoire plut\^ot que de le copier, les fichiers qu'il
-contient voient leurs dates de derni\`ere modification (st\_mtime) et de dernier acc\`es
-(st\_ctime) inchang\'es. Par cons\'equent, ces fichiers ne seront probablement
-sauvegard\'es par aucune incr\'ementale ou diff\'erentielle, puisque ces derni\`eres
-ne se r\'ef\`erent qu'\`a ces indicateurs. Aussi, il est pr\'ef\'erable de copier un dossier
-avant de supprimer l'original plut\^ot que de le d\'eplacer, si vous voulez qu'il soit
-correctement sauvegard\'e.
-
-\item [Differential]
- \index[dir]{Differential}
- Tous les fichiers modifi\'es depuis la derni\`ere sauvegarde Full valide du FileSet
- sp\'ecifi\'e pour le m\^eme job. Si le Director ne peut trouver une sauvegarde Full
- ant\'erieure, le niveau du job sera \'elev\'e en une sauvegarde Full. Lorsque le
- Director recherche une Full valide dans le catalogue, il recherche un job avec
- les caract\'eristiques suivantes :
-
-\begin{itemize}
-\item le m\^eme nom de job ;
-\item le m\^eme nom de client ;
-\item le m\^eme FileSet (toute modification de la d\'efinition du FileSet telle
- que l'ajout ou la suppression de fichiers dans les sections Include ou
- Exclude constitue un changement de FileSet).
-\item le Job \'etait une sauvegarde FULL
-\item le Job s'est termin\'e normalement, c'est \`a dire qu'il ne s'est pas termin\'e
- en \'echec, et n'a pas \'et\'e effac\'e.
-\end{itemize}
-
-Si toutes les conditions ci-dessus ne sont pas r\'ealis\'ees, le Director
-augmentera la sauvegarde diff\'erentielle en une sauvegarde Full. Dans le cas
-contraire, la sauvegarde diff\'erentielle sera effectu\'ee normalement.
-
-Le File Daemon (Client) d\'etermine les fichiers \`a sauvegarder pour une
-diff\'erentielle par comparaison de l'heure de d\'emarrage de la derni\`ere
-sauvegarde Full avec les dates de derni\`ere modification
-de chaque fichier (st\_mtime) et de ses attributs (st\_ctime). Si le fichier
-ou ses attributs ont chang\'es depuis cette date de d\'emarrage, alors le fichier
-sera sauvegard\'e. La date de d\'emarrage utilis\'ee est affich\'e apr\`es le {\bf Since}
-du rapport de Job. Dans de rares cas, certains fichiers sont sauvegard\'es deux fois
-\`a cause de l'utilisation de la date de d\'emarrage de la sauvegarde pr\'ec\'edente,
-mais ceci assure qu'aucun changement n'est perdu. Comme pour les incr\'ementales,
-vous devriez vous assurer que les horloges de votre serveur Bacula et de vos clients
-sont synchronis\'ees, ou aussi proches que possible, pour \'eviter le risque d'omission
-d'un fichier. Notez qu'\`a partir de la version 1.33, Bacula effectue automatiquement
-ces ajustements de sorte que les horloges utilis\'ees par Bacula soient synchrones.
-
-Veuillez noter que certains logiciels anti-virus peuvent modifier la date
-st\_time lors de leurs op\'erations de scan. Ainsi, si l'antivirus modifie
-la date d'acc\`es (st\_atime), qui n'est pas utilis\'ee par Bacula, il
-provoquera une modification du st\_ctime et conduira Bacula \`a sauvegarder
-les fichiers concern\'es lors des incr\'ementales et diff\'erentielles. Dans le
-cas de l'antivirus Sophos, vous pouvez \'eviter cet inconv\'enient en utilisant
-l'option {\bf \verb{--{no-reset-atime}. Pour les autres logiciels, voyez
-leurs manuels.
-
-Lorsque Bacula effectue une sauvegarde diff\'erentielle, tous les fichiers modifi\'es
-pr\'esents sur le syst\`eme sont sauvegard\'es. Cependant, tout fichier supprim\'e depuis
-la derni\`ere Full demeure dans le catalogue, ce qui signifie que si vous effectuez
-une restauration \`a partir de sauvegardes diff\'erentielles (et de la Full associ\'ee),
-les fichiers supprim\'es depuis la derni\`ere Full seront aussi restaur\'es. Ces fichiers
-n'appara\^itront plus dans le catalogue apr\`es avoir fait une nouvelle sauvegarde
-Full. Le processus pour supprimer ces fichiers du catalogue lors d'une
-incr\'ementale ralentirait fortement les sauvegardes diff\'erentielles. Il n'est
-actuellement pas impl\'ement\'e dans Bacula, mais plannifi\'e pour une future version
-de Bacula.
-
-Comme not\'e ci-dessus, si vous d\'eplacez un r\'epertoire plut\^ot que de le copier, les fichiers
-qu'il contient voient leurs dates de derni\`ere modification (st\_mtime) et de dernier acc\`es
-(st\_ctime) inchang\'es. Par cons\'equent, ces fichiers ne seront probablement
-sauvegard\'es par aucune incr\'ementale ou diff\'erentielle, puisque ces derni\`eres
-ne se r\'ef\`erent qu'\`a ces indicateurs. Aussi, il est pr\'ef\'erable de copier un dossier
-avant de supprimer l'original plut\^ot que de le d\'eplacer, si vous voulez qu'il soit
-correctement sauvegard\'e.
-
-R\'eguli\`erement, quelqu'un demande \`a quoi servent les sauvegardes diff\'erentielles
-du moment que les incr\'ementales r\'ecup\`erent tous les fichiers modifi\'es. Il existe
-plusieurs r\'eponses \`a cette question, mais la plus importante \`a mes yeux est de
-combiner toutes les incr\'ementales et diff\'erentielles depuis la derni\`ere full en
-une seule diff\'erentielle. Ceci a deux effets : 1. La redondance. 2. Plus important,
-la r\'eduction du nombre de volumes requis pour faire une restauration en
-\'eliminant la n\'ecessit\'e de lire tous les volumes des pr\'ec\'edentes incr\'ementales
-depuis la derni\`ere full.
-
-\end{description}
-
-Pour un Job de type {\bf Restore}, aucun niveau ne doit \^etre sp\'ecifi\'e.
-
-Pour un Job de type {\bf Verify}, le niveau peut \^etre l'un des suivants :
-
-\begin{description}
-
-\item [InitCatalog]
- \index[dir]{InitCatalog}
- Examine le {\bf FileSet} sp\'ecifi\'e et stocke les attributs de fichiers dans le
- catalogue. Vous pouvez vous interroger sur l'int\'er\^et d'un Job qui ne
- sauvegarde aucun fichier. La r\'eponse est de pouvoir utiliser Bacula comme
- vous utiliseriez Tripwire, en d'autres termes, ce type de Jobs vous permet
- de sauvegarder l'\'etat d'un ensemble de fichiers d\'efini par un {\bf FileSet}
- afin de pouvoir ult\'erieurement contr\^oler si rien n'a \'et\'e modifi\'e, supprim\'e ou
- ajout\'e. Ceci peut \^etre utilis\'e pour d\'etecter une intrusion. Typiquement,
- vous sp\'ecifiez un {\bf FileSet} qui contient l'ensemble des fichiers qui ne
- devraient pas changer (par exemple /sbin, /boot, /lib, /bin, ...). Ensuite,
- vous ex\'ecutez le Job verify de niveau {\bf InitCatalog} apr\`es l'installation
- de votre syst\`eme, puis apr\`es chaque modification (mise \`a jour). Ensuite,
- lorsque vous souhaitez contr\^oler l'\'etat de votre syst\`eme de fichiers,
- vous utilisez un Job {\bf Verify}, {\bf level = Catalog} afin de comparer
- le r\'esultat de votre {\bf InitCatalog} avec l'\'etat actuel de votre syst\`eme
- de fichiers.
-
-\item [Catalog]
- \index[dir]{Catalog}
- Compare l'\'etat actuel des fichiers et l'\'etat pr\'ec\'edemment sauvegard\'e
- lors d'un {\bf InitCatalog}. Toutes les anomalies sont rapport\'ees.
- Les objets du rapport sont d\'etermin\'es par les options {\bf verify}
- sp\'ecifi\'ees dans la directive {\bf Include} du {\bf FileSet} sp\'ecifi\'e
- (voyez la ressource {\bf FileSet} ci-dessous pour plus de d\'etails).
- Typiquement, cette commande sera ex\'ecut\'ee quotidiennement pour
- contr\^oler toute modification de votre syst\`eme de fichier.
-
-Attention ! Si vous ex\'ecutez deux jobs Verify Catalog simultan\'ement sur le m\^eme client,
-les r\'esultats seront probablement erronn\'es. En effet, Verify Catalog modifie
-le catalogue lors de son ex\'ecution afin de d\'etecter les nouveaux fichiers.
-
-\item [VolumeToCatalog]
- \index[dir]{VolumeToCatalog}
- Ce niveau permet de lire les attributs de fichiers \'ecrits sur le Volume
- lors du dernier Job. Les attributs de fichiers sont compar\'es aux valeurs
- sauvegard\'ees dans le catalogue et toute diff\'erence est rapport\'ee. Ceci
- est similaire au niveau {\bf Catalog}, sauf que ce sont les
- attributs des fichiers du volume plut\^ot que ceux des fichiers du disque
- qui sont compar\'es aux attributs sauvegard\'es dans le catalogue. Bien que
- les attributs et signatures (MD5 ou SHA1) soient compar\'es, les donn\'ees
- r\'eelles ne le sont pas (elles ne figurent pas dans le catalogue).
-
-Attention ! Si vous ex\'ecutez deux jobs Verify VolumeToCatalog simultan\'ement sur le m\^eme client,
-les r\'esultats seront probablement erronn\'es. En effet, Verify VolumeToCatalog modifie
-le catalogue lors de son ex\'ecution afin de d\'etecter les nouveaux fichiers.
-
-\item [DiskToCatalog]
- \index[dir]{DiskToCatalog}
- Ce niveau permet de lire les fichiers tels qu'ils sont actuellement sur le
- disque et de comparer leurs attributs actuels avec ceux stock\'es dans le
- catalogue lors de la derni\`ere sauvegarde pour le Job sp\'ecifi\'e par la
- directive {\bf VerifyJob}. Ce niveau diff\`ere du niveau {\bf Catalog}
- d\'ecrit plus haut en ce qu'il ne se r\'ef\`ere pas \`a un Job Verify ant\'erieur,
- mais \`a la derni\`ere sauvegarde. Lorsque vous utilisez ce niveau , vous devez
- renseigner les option Verify de la section Include. Ces options d\'eterminent
- quels attributs seront compar\'es.
-
-Cette commande peut se r\'ev\'eler tr\`es utile si vous avez des probl\`emes de disque
-car elle comparera l'\'etat actuel de votre disque avec la derni\`ere sauvegarde
-valide, qui peut remonter \`a plusieurs jobs.
-
-Notez que l'impl\'ementation actuelle (1.32c) n'identifie pas les fichiers qui
-ont \'et\'e supprim\'es.
-\end{description}
-
-\item [Verify Job = \lt{}Job-Resource-Name\gt{}]
- \index[dir]{Verify Job}
- \index[dir]{Directive!Verify Job}
- Si vous ex\'ecutez un job verify sans cette directive, le dernier job
- ex\'ecut\'e sera compar\'e avec le catalogue, ce qui signifie que votre commande
- verify doit succ\'eder imm\'ediatement \`a une sauvegarde. Si vous sp\'ecifiez
- un {\bf Verify Job}, Bacula trouvera le dernier job ex\'ecut\'e avec ce nom.
- Ceci vous permet d'ex\'ecuter toutes vos sauvegardes, puis d'ex\'ecuter les jobs
- Verify sur les sauvegardes de votre choix (le plus souvent, un {\bf VolumeToCatalog}
- de sorte que la cartouche qui vient juste d'\^etre \'ecrite est relue).
-
-\item [JobDefs = \lt{}JobDefs-Resource-Name\gt{}]
- \index[dir]{JobDefs}
- \index[dir]{Directive!JobDefs}
- Si un nom de JobDef est sp\'ecifi\'e dans la d\'efinition d'un Job, toutes les valeurs
- d\'efinies dans la ressource JobDef concern\'ee seront utilis\'ees en tant que valeurs
- par d\'efaut pour le Job. Toute valeur explicitement sp\'ecifi\'ee dans la
- d\'efinition du Job outrepasse la valeur par d\'efaut d\'efinie par le JobDef.
- L'utilisation de cette directive permet d'\'ecrire des ressources Job plus
- compactes, o\`u la majeure partie des directives sont d\'efinies dans un ou
- plusieurs JobDefs. C'est particuli\`erement pratique si vous avez de nombreux
- Jobs similaires avec des variations mineures telles que diff\'erents clients.
- Un exemple basique de l'utilisation d'un Jobdef est fourni dans le fichier
- bacula-dir.conf par d\'efaut.
-
-\item [Bootstrap = \lt{}bootstrap-file\gt{}]
- \index[dir]{Bootstrap}
- \index[dir]{Directive!Bootstrap}
- La directive Bootstrap sp\'ecifie un fichier bootstrap qui, s'il est fourni,
- sera utilis\'e lors des restaurations et ignor\'e par tout les autres Jobs.
- Le fichier {\bf bootstrap} contient la liste des cartouches n\'ecessaires
- pour la restauration ainsi que les index des fichiers \`a restaurer
- (localisation sur la cartouche). Cette directive
- est optionnelle, et n'est utilis\'ee que pour les restaurations. De plus,
- elle peut \^etre modifi\'ee lorsqu'une restauration est lanc\'ee depuis la console.
-
-Si vous utilisez la commande {\bf Restore} dans la console pour lancer une
-restauration, le fichier {\bf bootstrap} sera cr\'e\'e automatiquement \`a partir des
-fichiers que vous avez s\'electionn\'es pour la restauration.
-
-Pour plus de d\'etails concernant les fichiers {\bf bootstrap}, veuillez
-consulter le chapitre \ilink{Restaurer des fichiers avec le fichier Bootstrap}{_ChapterStart43}
-de ce manuel.
-
-\label{writebootstrap}
-\item [Write Bootstrap = \lt{}bootstrap-file-specification\gt{}]
- \index[dir]{Write Bootstrap}
- \index[dir]{Directive!Write Bootstrap}
- La directive {\bf writebootstrap} sp\'ecifie le de fichier Bootstrap o\`u Bacula
- \'ecrira lors de chaque sauvegarde. Ainsi, cette directive s'applique
- exclusivement aux jobs de type sauvegarde. Si la sauvegarde est une Full,
- Bacula \'ecrase le contenu du fichier sp\'ecifi\'e. Sinon, Bacula ajoute les
- nouveaux enregistrements Bootstrap \`a la fin du fichier.
-
-En utilisant cette fonction, vous aurez constamment un fichier bootstrap
-capable de recouvrer l'\'etat le plus r\'ecent de votre syst\`eme. Le fichier
-bootstrap devrait \^etre \'ecrit sur un disque mont\'e sur une autre machine, de
-sorte que vous puissiez en disposer imm\'ediatement en cas de d\'efaillance
-de votre disque dur. Une alternative consiste \`a copier le fichier sur une autre
-machine apr\`es chaque mise \`a jour.
-
-Si la {\bf sp\'ecification de fichier bootstrap} d\'ebute par une barre verticale (|),
-Bacula consid\`ere la sp\'ecification comme un nom de programme vers lequel les
-les enregistrement bootstrap seront redirig\'es. Ce peut \^etre, par exemple, un
-script qui vous envoie par e-mail les enregistrements bootstrap.
-
-A partir de la version 1.40, Bacula effectue des
-\ilink{character substitution}{substitution de caracteres} comme dans une directive
-RunScript. Pour g\'erer automatiquement vos fichiers bootstrap, vous pouvez utiliser
-ceci dans vos {\bf JobDefs} :
-
-\begin{verbatim}
-JobDefs {
- Write Bootstrap = "%c_%n.bsr"
- ...
-}
-\end{verbatim}
-
-Pour plus de d\'etails sur l'utilisation de fichiers bootstrap, veuillez
-consulter le chapitre intitul\'e \ilink{Le Fichier Bootstrap}{_ChapterStart43}
-de ce manuel.
-
-
-\item [ Client = \lt{}client-resource-name\gt{}]
- \index[dir]{Client}
- \index[dir]{Directive!Client}
- La directive Client sp\'ecifie le Client (File Daemon) \`a utiliser dans le Job.
- Le client est ex\'ecut\'e sur la machine \`a sauvegarder. Il exp\'edie les fichiers requis
- au Storage Daemon lors des sauvegardes, et re\c {c}oit les fichiers du Storage Daemon
- lors des restaurations. Pour plus de d\'etails, consultez la section
- \ilink{Ressource Client}{ClientResource2} de ce chapitre. Cette deirective est requise.
-
-
-\item [ FileSet = \lt{}FileSet-resource-name\gt{}]
- \index[dir]{FileSet}
- \index[dir]{FileSet}
- La directive FileSet sp\'ecifie le FileSet \`a utiliser dans le Job concern\'e. Le
- FileSet d\'efinit les r\'epertoires et fichiers \`a sauvegarder, ainsi que les options
- \`a utiliser pour les sauvegarder (par exemple la compression,...). Un Job ne peut
- contenir qu'un seul FileSet. Pour plus de d\'etails, consultez la section
- \ilink{Ressource FileSet}{FileSetResource} de ce chapitre.
- Cette directive est requise.
-
-\item [ Messages = \lt{}messages-resource-name\gt{}]
- \index[dir]{Messages}
- \index[dir]{Directive!Messages}
- La directive Messages d\'efinit la ressource Message qui doit \^etre utilis\'ee
- pour le job concern\'e. Ainsi, elle d\'etermine le comment et o\`u seront
- d\'elivr\'es les diff\'erents messages de Bacula. Par exemple, vous pouvez diriger
- certains messages vers un fichier de logs, tandis que d'autres seront
- envoy\'es par e-mail. Pour plus de d\'etails, consultez le chapitre
- \ilink{Ressource Messages}{_ChapterStart15} de ce manuel. Cette directive
- est requise.
-
-\item [ Pool = \lt{}pool-resource-name\gt{}]
- \index[dir]{Pool}
- \index[dir]{Directive!Pool}
- La directive Pool sp\'ecifie le jeu de volumes qui doit \^etre utilis\'e pour
- sauvegarder vos donn\'ees. De nombreuses installations de Bacula
- n'utiliseront que le pool d\'efini par d\'efaut {\bf Default}. Toutefois,
- si vous voulez sp\'ecifier diff\'erents jeux de volumes pou diff\'erents clients
- ou diff\'erents jobs, vous voudrez probablement utiliser les Pools.
- Pour plus de d\'etails, consultez la section \ilink{Ressource Pool}{PoolResource}
- de ce chapitre. Cette directive est requise
-
-\item [ Full Backup Pool = \lt{}pool-resource-name\gt{}]
- \index[dir]{Full Backup Pool}
- \index[dir]{Directive!Full Backup Pool}
- La directive {\it Full Backup Pool} sp\'ecifie un Pool \`a utiliser pour les
- sauvegardes Full. Cette directive outrepasse toute autre sp\'ecification
- de Pool lors d'une sauvegarde Full. Cette directive est optionnelle.
-
-\item [ Differential Backup Pool = \lt{}pool-resource-name\gt{}]
- \index[dir]{Differential Backup Pool}
- \index[dir]{Directive!Differential Backup Pool}
- La directive {\it Differential Backup Pool} sp\'ecifie un Pool \`a utiliser pour les
- sauvegardes Diff\'erentielles. Cette directive outrepasse toute autre sp\'ecification
- de Pool lors d'une sauvegarde Diff\'erentielle. Cette directive est optionnelle.
-
-\item [ Incremental Backup Pool = \lt{}pool-resource-name\gt{}]
- \index[dir]{Incremental Backup Pool}
- \index[dir]{Directive!Differential Backup Pool}
- La directive {\it Incremental Backup Pool} sp\'ecifie un Pool \`a utiliser pour les
- sauvegardes Incr\'ementales. Cette directive outrepasse toute autre sp\'ecification
- de Pool lors d'une sauvegarde Incr\'ementale. Cette directive est optionnelle.
-
-\item [ Schedule = \lt{}schedule-name\gt{}]
- \index[dir]{Schedule}
- \index[dir]{Directive!Schedule}
- La directive Schedule d\'efinit la planification du job. Le {\it schedule} d\'etermine
- la date et l'instant o\`u le job doit \^etre lanc\'e automatiquement, et le niveau
- (Full, Diff\'erentiel, Incr\'emental...) du job en question. Cette directive est
- optionnelle. Si elle est omise, le job ne pourra \^etre ex\'ecut\'e que manuellement via
- la Console. Bien que vous puissiez vous contenter d'une ressource Schedule simple
- pour tout job, vous pouvez aussi d\'efinir des ressources Schedule avec plusieurs
- directives {\bf Run}, afin de lancer le job \`a diff\'erentes heures. Chacune de ces
- directives {\bf Run} permet d'outrepasser les valeurs par d\'efaut de Level, Pool,
- Storage et Messages ressources. Ceci autorise une grande souplesse d'utilisation
- d'un simple job.
- Pour plus de d\'etails, consultez le chapitre.
- \ilink{Ressource Schedule}{ScheduleResource} de ce manuel.
-
-\item [ Storage = \lt{}storage-resource-name\gt{}]
- \index[dir]{Storage}
- \index[dir]{Directive!Storage}
- La directive Storage d\'efinit le nom du service storage que vous souhaitez
- utiliser pour sauvegarder les donn\'ees du FileSet. Pour plus de d\'etails, consultez le
- chapitre \ilink{Ressource Storage}{StorageResource2} de ce manuel.
- Cette directive est requise.
-
-\item [ Max Start Delay = \lt{}time\gt{}]
- \index[sd]{Max Start Delay}
- \index[dir]{Directive!Max Start Delay}
- La directive Max Start Delay sp\'ecifie le d\'elai maximal entre l'horaire
- planifi\'e (dans le schedule) et l'horaire effectif de d\'emarrage du job.
- Par exemple, un job peut \^etre programm\'e pour d\'emarrer \`a 1h, mais \^etre
- mis en attente \`a cause d'autres jobs en cours d'ex\'ecution. Si le
- Max Start Delay a \'et\'e r\'egl\'e \`a 3600, le job sera supprimm\'e s'il n'a pas
- d\'emarr\'e \`a 2h. Ceci peut se r\'ev\'eler utile pour, par exemple, \'eviter qu'un job
- s'ex\'ecute duant les heures ouvrables. La valeur par d\'efaut est 0 (pas de limite).
-
-\item [ Max Run Time = \lt{}time\gt{}]
- \index[sd]{Max Run Time}
- \index[dir]{Directive!Max Run Time}
- La directive Max Run Time sp\'ecifie le d\'elai allou\'e pour l'ex\'ecution
- compl\`ete d'un job depuis son lancement (pas n\'ecessairement \`a l'heure
- de sa programmation) jusqu'\`a sa fin. Cette directive est impl\'ement\'ee
- depuis la version 1.33.
-
-\item [ Max Wait Time = \lt{}time\gt{}]
- \index[sd]{Max Wait Time}
- \index[dir]{Directive!Max Wait Time}
- La directive Max Wait Time sp\'ecifie le d\'elai maximum durant lequel un
- job peut rester bloqu\'e en attente d'une ressource (par exemple, en attente du
- montage d'une cartouche ou encore en attente des Storage ou File Daemon occup\'es
- \`a d'autres tâches) depuis son lancement (pas n\'ecessairement \`a l'heure
- de sa programmation) jusqu'\`a sa fin. Cette directive est impl\'ement\'ee
- depuis la version 1.33.
-
-\item [Incremental Max Wait Time = \lt{}time\gt{}]
- \index[dir]{Incremental Max Wait Time}
- \index[dir]{Directive!Incremental Max Wait Time}
- Cette directive sp\'ecifie le temps maximum durant lequel une sauvegarde
- incr\'ementale peut rester bloqu\'ee en attente d'une ressource (par exemple, en
- attente d'une cartouche ou des File ou Storage daemons), compt\'e \`a partir
- du d\'emarrage du job, ({\bf pas n\'ecessairement} l'heure \`a laquelle le job
- a \'et\'e programm\'e). Notez que si un {\bf Max Wait Time} a \'et\'e sp\'ecifi\'e,
- il peut aussi s'appliquer au job.
-
-\item [Differential Max Wait Time = \lt{}time\gt{}]
- \index[dir]{Differential Max Wait Time}
- \index[dir]{Directive!Differential Max Wait Time}
- Cette directive sp\'ecifie le temps maximum durant lequel une sauvegarde
- diff\'erentielle peut rester bloqu\'ee en attente d'une ressource (par exemple, en
- attente d'une cartouche ou des File ou Storage daemons), compt\'e \`a partir
- du d\'emarrage du job, ({\bf pas n\'ecessairement} l'heure \`a laquelle le job
- a \'et\'e programm\'e). Notez que si un {\bf Max Wait Time} a \'et\'e sp\'ecifi\'e,
- il peut aussi s'appliquer au job.
-
-\item [Prefer Mounted Volumes = \lt{}yes|no\gt{}]
- \index[dir]{Prefer Mounted Volumes}
- \index[dir]{Directive!Differential Max Wait Time}
- Si cette directive est activ\'ee (c'est le cas par d\'efaut), le Director
- ordonne au Storage daemon de s\'electionner de pr\'ef\'erence soit une
- librairie, soit un lecteur avec un volume valide d\'ej\`a mont\'e, plut\^ot qu'un
- lecteur pas pr\`et. Si aucun lecteur n'est pr\`et, c'est le premier lecteur
- pr\`et qui sera s\'electionn\'e.
-
- Si cette directive est d\'esactiv\'ee, le Storage daemon privil\'egiera
- les lecteurs inutilis\'es. Ce mode de fonctionnement peut \^etre tr\`es utile
- pour ces sites avec de nombreux lecteurs qui o\`u il peut \^etre pr\'ef\'erable
- de maximiser le flux des sauvegardes au prix d'une utilisation d'un plus
- grand nombre de lecteurs et de cartouches. Afin d'optimiser l'utilisation
- de plusieurs lecteurs, vous voudrez probablement lancer chacun de vos
- jobs l'un apr\`es l'autre avec un intervalle de 5 secondes environ. Ceci
- aidera \`a assurer que chaque nuit, le m\^eme lecteur (volume) est
- s\'electionn\'e pour le m\^eme job. Autrement, lors d'une restauration, vous
- pourriez trouver vos fichiers dispers\'es sur beaucoup plus de volumes que
- n\'ecessaire.
-
-\item [ Prune Jobs = \lt{}yes|no\gt{}]
- \index[dir]{Prune Jobs}
- \index[dir]{Directive!Prune Jobs}
- En principe, l'\'elagage des jobs du catalogue est sp\'ecifi\'e pour chaque client
- dans sa propre ressource Client par la directive {\bf AutoPrune}. Si cette
- directive est sp\'ecifi\'ee (normalement, non) et si la valeur est {\bf yes},
- elle outrepasse la valeur sp\'ecifi\'ee dans la ressource Client. La valeur
- par d\'efaut est {\bf no}.
-
-\item [ Prune Files = \lt{}yes|no\gt{}]
- \index[dir]{Prune Files}
- \index[dir]{Directive!Prune Jobs}
- En principe, l'\'elagage des fichiers du catalogue est sp\'ecifi\'e pour chaque client
- dans sa propre ressource Client par la directive {\bf AutoPrune}. Si cette
- directive est sp\'ecifi\'ee (normalement, non) et si la valeur est {\bf yes},
- elle outrepasse la valeur sp\'ecifi\'ee dans la ressource Client. La valeur
- par d\'efaut est {\bf no}.
-
-\item [ Prune Volumes = \lt{}yes|no\gt{}]
- \index[dir]{Prune Volumes}
- \index[dir]{Directive!Prune Jobs}
- En principe, l'\'elagage des volumes du catalogue est sp\'ecifi\'e pour chaque client
- dans sa propre ressource Client par la directive {\bf AutoPrune}. Si cette
- directive est sp\'ecifi\'ee (normalement, non) et si la valeur est {\bf yes},
- elle outrepasse la valeur sp\'ecifi\'ee dans la ressource Client. La valeur
- par d\'efaut est {\bf no}.
-
-\item [RunScript \{...\}]
- \index[dir]{RunScript}
- \index[dir]{Directive!Run Script}
-
- La commande sp\'ecifi\'ee est ex\'ecut\'ee en tant que programme externe avant le
- lancement du job. Cette directive est optionnelle.
- Vous disposez des options suivantes : \\
-
-\begin{tabular}{|c|c|c|l}
-Options & Valeur & Defaut & Informations \\
-\hline
-\hline
-Runs On Success & Yes/No & {\it Yes} & La commande est ex\'ecut\'ee si le job s'est termin\'e avec succ\`es\\
-\hline
-Runs On Failure & Yes/No & {\it No} & La commande est ex\'ecut\'ee si le job a \'echou\'e\\
-\hline
-Runs On Client & Yes/No & {\it Yes} & La commande est ex\'ecut\'ee sur le client\\
-\hline
-Runs When & Before|After|Always & {\it Never} & Le moment o\`u la commande doit \^etre ex\'ecut\'ee\\
-\hline
-Abort Job On Error & Yes/No & {\it Yes} & Abandonne le job si le script retourne
- un r\'esultat non nul\\
-\hline
-Command & & & Le chemin vers votre script\\
-\hline
-\end{tabular}
- Tout retour de la commande sur la sortie standard est
- incluse dans le rapport de job de Bacula. La cha\^ine {bf command} doit \^etre
- un nom de programme valide ou un script shell
-
- D'autre part,
- la cha\^ine {bf command} est parcourue puis envoy\'ee vers la fonction execvp(), ce qui
- signifie que le chemin de la commande est recherch\'e pour son ex\'ecution, mais
- qu'il n'y a aucune interpr\'etation shell. Par cons\'equent, si vous voulez utiliser
- des commandes complexes ou toute fonctionnalit\'e du shell telle que la
- redirection, vous devez appeler un script shell o\`u vous mettrez vos commandes.
-
- Avant de soumettre la commande sp\'ecifi\'ee au syst\`eme d'exploitation, Bacula
- effectue les substitutions suivantes :
-
-\label{character substitution}
-
-\footnotesize
-\begin{verbatim}
- %% = %
- %c = Nom du client
- %d = Nom du Director
- %e = Statut de sortie du job
- %i = JobId
- %j = Nom unique du job
- %l = Niveau du job
- %n = Nom du job
- %s = Temps Depuis (NDT : Since Time)
- %t = Type de job (Backup,...)
- %v = Nom de volume
-\end{verbatim}
-\normalsize
-
-Le code de statut de fin de job peut prendre les valeurs suivantes :
-
-\index[dir]{Exit Status}
-\begin{itemize}
-\item OK
-\item Error
-\item Fatal Error
-\item Canceled
-\item Differences
-\item Unknown term code
-\end{itemize}
-
- Aussi, si vous l'utilisez dans une ligne de commande, il vous faudra l'encadrer
- de quotes.
-
-Vous disposez des raccourcis suivants :\\
-\begin{tabular}{|c|c|c|c|c|c}
-Mot clef & RunsOnSuccess & RunsOnFailure & AbortJobOnError & Runs On Client & RunsWhen \\
-\hline
-Run Before Job & & & Yes & No & Before \\
-\hline
-Run After Job & Yes & No & & No & After \\
-\hline
-Run After Failed Job & No & Yes & & No & After \\
-\hline
-Client Run Before Job & & & Yes & Yes & Before \\
-\hline
-Client Run After Job & Yes & No & & Yes & After \\
-\hline
-Client Run After Failed Job & No & Yes & & Yes & After \\
-\end{tabular}
-
-Exemple :
-\begin{verbatim}
-RunScript {
- RunsWhen = Before
- AbortJobOnError = No
- Command = "/etc/init.d/apache stop"
-}
-
-RunScript {
- RunsWhen = After
- RunsOnFailure = yes
- Command = "/etc/init.d/apache start"
-}
-\end{verbatim}
-
-{\bf Consid\'erations particuli\`eres \`a Windows}
- D'autre part, pour les clients Windows \`a partir de la version 1.33, notez bien
- que vous devez fournir un chemin correct pour votre script, et que le script
- peut avoir l'extension .com, .exe, ou .bat. Si vous sp\'ecifiez un chemin,
- vous devez aussi sp\'ecifier l'extension compl\`ete. Les commandes \`a la fa\c{c}on
- d'Unix ne fonctionneront pas, \`a moins que vous n'ayez install\'e et
- correctement configur\'e Cygwin en plus (et s\'epar\'ement) de Bacula.
-
-La commande peut \^etre n'importe quel programme reconnu par cmd.exe ou command.com
-comme un fichier ex\'ecutable. Sp\'ecifier une extension de fichier ex\'ecutable
-est optionnel, \`a moins qu'il y ait une ambigu\"it\'e (par exemple ls.bat, ls.exe).
-
-Bacula cherche la commande dans le r\'epertoire "System \%Path\%" (Dans la
-bo\^ite de dialogue des variables d'environnement vous avez les variables
-"syst\`eme" et "utilisateurs". Si bacula-fd fonctionne en tant que
-service, seules les variables d'environnement syst\`emes sont accessibles.)
-
-Les variables d'environnement syst\`eme peuvent \^etre invoqu\'ees avec la
-syntaxe \%var\% et utilis\'ees comme portion du nom de la commande ou des
-arguments.
-
-Lorsque la sp\'ecification du chemin absolu d'un ex\'ecutable ou le nom de
-l'ex\'ecutable contient des espaces ou des caract\`eres sp\'eciaux, ils doivent
-\^etre quot\'es. Il en va de m\^eme pour les arguments.
-
-\footnotesize
-\begin{verbatim}
-ClientRunBeforeJob = "\"C:/Program Files/Software
- Vendor/Executable\" /arg1 /arg2 \"foo bar\""
-\end{verbatim}
-\normalsize
-
-Les caract\`eres sp\'eciaux \&()[]\{\}\^{}=;!'+,`\^u devront \^etre quot\'es s'ils font
-partie d'un nom de fichier ou d'un argument.
-
-
-If someone is logged in a blank ``command'' window running the commands will
-be present during the execution of the command.
-
-Quelques suggestions de Phil Stracchino pour l'ex\'ecution sur les machines
-Win32 avec le File Daemon Win32 natif :
-
-\begin{enumerate}
-\item Vous pourriez utiliser la directive ClientRunBeforeJob pour sp\'ecifier
- un fichier .bat qui ex\'ecute les commandes cot\'e client plut\^ot que
- d'essayer d'ex\'ecuter (par exemple) regedit /e directement.
-\item Le fichier batch devrait retourner explicitement 0 lors des ex\'ecutions correctes.
-\item Le chemin vers le fichier batch devrait \^etre sp\'ecifi\'e au format Unix :
-
- ClientRunBeforeJob = ``c:/bacula/bin/systemstate.bat''
-
-plut\^ot qu'au format DOS/Windows :
-
-ClientRunBeforeJob =
-``c:\textbackslash{}bacula\textbackslash{}bin\textbackslash{}systemstate.bat''
-INCORRECT
-\end{enumerate}
-
-L'exemple suivant d'utilisation de la directive Client Run Before Job a \'et\'e soumis
-par un utilisateur :\\
-Vous pourriez \'ecrire un script shell pour sauvegarder une base DB2 dans un FIFO. Voici
-le script en question :
-
-\footnotesize
-\begin{verbatim}
- #!/bin/sh
- # ===== backupdb.sh
- DIR=/u01/mercuryd
-
- mkfifo $DIR/dbpipe
- db2 BACKUP DATABASE mercuryd TO $DIR/dbpipe WITHOUT PROMPTING &
- sleep 1
-\end{verbatim}
-\normalsize
-
-La ligne suivante dans la ressource Job du fichier bacula-dir.conf :
-\footnotesize
-\begin{verbatim}
- Client Run Before Job = "su - mercuryd -c \"/u01/mercuryd/backupdb.sh '%t'
-'%l'\""
-\end{verbatim}
-\normalsize
-
-Lorsque le job est ex\'ecut\'e, vous obtiendrez un message de sortie du script
-annon\c{c}ant que la sauvegarde a d\'emarr\'e. M\^eme si la commande est ex\'ecut\'ee en
-arri\`ere plan avec \&, le job bloquera jusqu'\`a la commande "db2 BACKUP DATABASE", et
-la sauvegarde se fige.
-
-Pour rem\'edier \`a cette situation, la ligne "db2 BACKUP DATABASE"
-devrait \^etre modifi\'ee en :
-
-\footnotesize
-\begin{verbatim}
- db2 BACKUP DATABASE mercuryd TO $DIR/dbpipe WITHOUT PROMPTING > $DIR/backup.log
-2>&1 < /dev/null &
-\end{verbatim}
-\normalsize
-
-Il est important de rediriger l'entr\'ee et la sortie d'une commande en arri\`ere plan
-vers /dev/null pour \'eviter le bloquage du script.
-
-\item [ Run Before Job = \lt{}command\gt{}]
- \index[dir]{Run Before Job}
- \index[dir]{Directive!Run Before Job}
- La commande sp\'ecifi\'ee est ex\'ecut\'ee en tant que programme externe avant le
- lancement du job. Cette directive n'est pas requise,mais si elle est d\'efinie,
- et si le code retour d'ex\'ecution du programme est diff\'erent de z\'ero, le job qui
- a lanc\'e le programme est effac\'e.
-
-\begin{verbatim}
-Run Before Job = "echo test"
-\end{verbatim}
- est \'equivalent \'a :
-\begin{verbatim}
-RunScript {
- Command = "echo test"
- RunsOnClient = No
- RunsWhen = Before
-}
-\end{verbatim}
-
-Lutz Kittler a fait remarquer que ceci peut \^etre un moyen ais\'e pour modifier
-vos schedules pour les vacances. Par exemple, supposons que vous fassiez
-habituellement des sauvegardes Full le vendredi, mais que jeudi et vendredi
-soient f\'eri\'es. Pour \'eviter d'avoir \`a changer les cartouches entre jeudi et vendredi
-alors que personne n'est au bureau, vous pouvez cr\'eer un RunBeforeJob qui retourne
-un statut non nul jeudi et z\'ero les autres jours. Ainsi, le job de jeudi ne sera pas
-ex\'ecut\'e, et la cartouche que vous avez ins\'er\'e mercredi sera disponible pour la Full
-de vendredi.
-
-\item [ Run After Job = \lt{}command\gt{}]
- \index[dir]{Run After Job}
- \index[dir]{Directive!Run After Job}
- La commande sp\'ecifi\'ee est ex\'ecut\'ee en tant que programme externe apr\`es la fin
- du job. La cha\^ine {bf command} doit \^etre un nom de programme valide ou un
- script shell. Cette directive n'est pas requise. Si le code de sortie du
- programme est non nul, Bacula affiche un message d'avertissement (warning).
- Avant de soumettre
- la commande sp\'ecifi\'ee au syst\`eme d'exploitation, Bacula effectue les
- substitutions de caract\`eres d\'ecrites au paragraphe {\bf RunScript}
-
-Un exemple d'utilisation de cette directive est donn\'e au chapitre
-\ilink{Astuces}{JobNotification} de ce manuel.
-Lisez le paragraphe {\bf Run After Failed Job} si vous voulez ex\'ecuter
-une commande lorqu'un job se termine avec un statut anormal.
-
-\item [Run After Failed Job = \lt{}command\gt{}]
- \index[dir]{Run After Job}
- \index[dir]{Directive!Run After Job}
- La commande sp\'ecifi\'ee est ex\'ecut\'ee en tant que programme externe apr\`es la fin
- du job lorqu'il se termine avec un statut d'erreur. Cette directive est optionnelle.
- La cha\^ine {\bf command} doit \^etre le nom d'un programme ou d'un script shell.
- Si le code de sortie du programme est non nul, Bacula affiche un mesage d'avertissement
- (warning). Avant de soumettre
- la commande sp\'ecifi\'ee au syst\`eme d'exploitation, Bacula effectue les
- substitutions de caract\`eres d\'ecrites au paragraphe {\bf RunScript}. Notez que
- vous pouvez, si vous souhaitez que
- votre programme soit ex\'ecut\'e quel que soit l'issue du job, utiliser une d\'efinition
- telle que :
-
-RunScript {
- Command = "echo test"
- RunsWhen = After
- RunsOnFailure = yes
- RunsOnClient = no
- RunsOnSuccess = yes \# default, you can drop this line
-}
-
- Le chapitre \ilink{Trucs et astuces}{JobNotification} de ce manuel propose un
- exemple d'utilisation de cette directive.
-
-\item [ Client Run Before Job = \lt{}command\gt{}]
- \index[dir]{Client Run Before Job}
- \index[dir]{Directive!Client Run Before Job}
- Cette directive est similaire \`a {\bf Run Before Job} except\'e que la
- commande est ex\'ecut\'ee sur la machine cliente. Les m\^emes restrictions
- s'appliquent aux syt\`emes Unix que celles signal\'ees pour {\bf Run Before Job}.
-
-\item [ Client Run After Job = \lt{}command\gt{}]
- \index[dir]{Client Run After Job}
- \index[dir]{Directive!Client Run After Job}
- Cette directive est similaire \`a {\bf Run After Job} sauf qu'elle est ex\'ecut\'ee
- sur la machine cliente. Veuillez consulter les notes concernant les clients
- Windows dans le paragraphe {\bf RunScript} ci-dessus.
-
-\item [ Rerun Failed Levels = \lt{}yes|no\gt{}]
- \index[dir]{Rerun Failed Levels}
- \index[dir]{Directive!Rerun Failed Levels}
- Si la valeur de cette directive est {\bf yes} ({\bf no} par d\'efaut), et si
- Bacula d\'etecte qu'un job ant\'erieur d'un niveau plus \'elev\'e (Full ou
- diff\'erentiel), alors le job est \'elev\'e au niveau le plus haut. Ceci est
- particuli\`erement utile pour sauvegarder les pc portables qui peuvent
- \^etre fr\'equemment inaccessibles. En effet, apr\`es l'\'echec d'une Full, vous
- souhaiterez probablement que la prochaine sauvegarde soit de niveau Full
- plut\^ot qu'Incremental ou Diff\'erentiel.
-
-\item [ Spool Data = \lt{}yes|no\gt{}]
- \index[dir]{Spool Data}
- \index[dir]{Directive!Spool Data}
- Si la valeur de cette directive est {\bf yes} ({\bf no} par d\'efaut), le
- Storage Daemon aura pour consigne de stocker les donn\'ees dans un
- fichier spoule sur disque plut\^ot que de les \'ecrire directement sur bande.
- Lorsque toutes les donn\'ees sont dans le spoule ou lorsque la taille
- maximale fix\'ee pour le fichier spoule est atteinte, les donn\'ees sont
- d\'echarg\'ees du spoule vers les bandes. Lorsque la valeur de cette directive
- est {\bf yes}, la directive Spool Attributes est aussi automatiquement
- mise \`a la valeur {\bf yes}. L'utilisation de cette fonctionnalit\'e
- pr\'evient les arr\^ets et red\'emarrage incessants lors des incr\'ementales.
- Elle ne doit pas \^etre utilis\'ee si vous sauvegardez sur disque.
-
-
-\item [ Spool Attributes = \lt{}yes|no\gt{}]
- \index[dir]{Spool Attributes}
- \index[dir]{Directive!Spool Attributes}
- \index[dir]{lenteur}
- \index[general]{lent}
- \index[dir]{Sauvegardes!lent}
- \index[general]{Sauvegardes!lent}
- La valeur par d\'efaut est {\bf no}, ce qui signifie que le Storage Daemon
- envoie les attributs de fichiers au Director au moment o\`u ils (les fichiers)
- sont ecrits sur la bande. Cependant, si vous souhaitez \'eviter le risque
- de ralentissement d\^u aux mises \`a jour du catalogue, vous pouvez r\'egler
- cette directive \`a {\bf yes}, dans ce cas, le Storage Daemon stockera les
- attributs de fichiers dans un fichier tampon du Working Directory pour ne les
- transmettre au Director qu'\`a la fin de l'\'ecriture sur bande des donn\'ees du job.
-
-\item [ Where = \lt{}directory\gt{}]
- \index[dir]{Where}
- \index[dir]{Directive!Where}
- Cette directive ne concerne que les jobs de type Restauration. Elle permet
- de sp\'ecifier un pr\'efixe au nom du r\'epertoire o\`u tous les fichiers sont
- restaur\'es. Ceci permet de restaurer les fichiers en un emplacement
- diff\'erent de celui o\`u ils ont \'et\'e sauvegard\'es. Si {\bf Where} n'est pas
- renseign\'e, ou si sa valeur est backslash ({\bf /}), les fichiers sont
- restaur\'es \`a leur emplacement d'origine. Par d\'efaut, nous avons donn\'e \`a
- {\bf Where} la valeur {\bf /tmp/bacula-restores} dans les fichiers de
- configuration fournis en exemple, ceci afin d'\'eviter l'\'ecrasement
- accidentel de vos fichiers.
-
-\item [ Replace = \lt{}replace-option\gt{}]
- \index[dir]{Replace}
- \index[dir]{Directive!Replace}
- Cette directive ne concerne que les jobs de type Restauration. Elle pr\'ecise
- la conduite \`a adopter dans l'\'eventualit\'e o\`u Bacula serait conduit \`a restaurer
- un fichier ou un r\'epertoire qui existe d\'ej\`a. Les options suivantes sont
- disponibles :
-
-\begin{description}
-
-\item [always]
- \index[dir]{always }
- Lorsque le fichier \`a restaurer existe d\'ej\`a, il est supprim\'e et remplac\'e par la
- copie sauvegard\'ee.
-
-\item [ifnewer]
- \index[dir]{ifnewer }
- Si le fichier sauvegard\'e (sur bande) est plus r\'ecent que le fichier existant,
- le fichier existant est supprim\'e et remplac\'e par la copie sauvegard\'ee.
-
-\item [ifolder]
- \index[dir]{ifolder }
- Si le fichier sauvegard\'e (sur bande) est plus ancien que le fichier existant,
- le fichier existant est supprim\'e et remplac\'e par la copie sauvegard\'ee.
-
-\item [never]
- \index[dir]{never }
- Si le fichier sauvegard\'e existe d\'ej\`a, Bacula renonce \`a restaurer ce fichier.
-\end{description}
-
-\item [ Prefix Links=\lt{}yes|no\gt{}]
- \index[dir]{Prefix Links}
- \index[dir]{Directive!Prefix Links}
- Si la valeur de cette directive est {\bf Yes} et si un pr\'efixe de chemin
- {\bf Where} est sp\'ecifi\'e, alors ce dernier s'applique aussi aux liens
- absolus. La valeur par d\'efaut est {\bf No}. Lorsque cette directive est \`a
- {\bf Yes}, tous les liens absolus seront aussi modifi\'es pour
- pointer vers le nouveau r\'epertoire. En principe, c'est ce qui est souhait\'e :
- l'ensemble du r\'epertoire restaur\'e conserve sa coh\'erence interne. Cependant,
- si vous voulez replacer les fichiers ult\'erieurement \`a leurs emplacements
- d'origine, tous les liens absolus seront bris\'es.
-
-\item [ Maximum Concurrent Jobs = \lt{}number\gt{}]
- \index[dir]{Maximum Concurrent Jobs}
- \index[dir]{Directive!Maximum Concurrent Jobs}
- O\`u \lt{}number\gt{} est le nombre maximum de jobs de la ressource Job courrante
- qui peuvent \^etre ex\'ecut\'es simultan\'ement. Notez que cette directive ne limite
- que les jobs avec le m\^eme nom que la ressource dans laquelle elle
- figure. Toute autre restriction du nombre maximum de jobs simultan\'es, que ce soit au
- niveau du Director, du Client ou de la ressource Storage, s'applique en plus de
- de la limite stipul\'ee ici. La valeur par d\'efaut est 1, mais vous pouvez utiliser
- une valeur plus grande. Nous vous recommandons fortement de lire
- attentivement le paragraphe WARNING sous \ilink{ Maximum Concurrent Jobs}{DirMaxConJobs}
- dans la section concernant la ressource Director.
-
-\item [ Reschedule On Error = \lt{}yes|no\gt{}]
- \index[dir]{Reschedule On Error}
- \index[dir]{Directive!Reschedule On Error}
- Si cette directive est activ\'ee, alors si le job se termine en erreur, il sera
- reprogramm\'e en accord avec les directives {\bf Reschedule Interval} et
- {\bf Reschedule Times}. Si vous supprimez le job, il ne sera pas reprogramm\'e.
- La valeur par d\'efaut est {\bf no}.
-
-Cette sp\'ecification peut se r\'ev\'eler utile pour les pc portables ainsi que pour toutes
-les machines qui ne sont pas connect\'ees au r\'eseau en permanence.
-
-\item [ Reschedule Interval = \lt{}time-specification\gt{}]
- \index[dir]{Reschedule Interval}
- \index[dir]{Directive!Reschedule Interval}
- Si cette directive est activ\'ee, alors si le job se termine en erreur, il sera
- reprogramm\'e apr\`es l'intervalle de temps stipul\'e par {\bf time-specification}.
- Consultez la section \ilink{ the time specification formats}{Time} du chapitre
- Configurer Bacula pour plus de d\'etails sur les sp\'ecifications de temps. Si
- aucun intervalle n'est sp\'ecifi\'e, le job ne sera pas reprogramm\'e en cas d'erreur.
-
-\item [ Reschedule Times = \lt{}count\gt{}]
- \index[dir]{Reschedule Times}
- \index[dir]{Directive!Reschedule Times}
- Cette directive pr\'ecise le nombre maximal de tentatives d'ex\'ecution du job.
- S'il est fix\'e \`a z\'ero (valeur par d\'efaut), le job sera reprogramm\'e
- ind\'efiniment.
-
-\item [Run = \lt{}job-name\gt{}]
- \index[dir]{Run}
- \index[dir]{Directive!Run}
- \index[dir]{Cloner un Job}
- La directive Run (\`a ne pas confondre avec l'option Run dans un
- Schedule) vous permet de d\'emarrer ou de cloner des jobs. En utilisant les
- mots-clef de clonage (voir ci dessous), vous pouvez sauvegarder les m\^emes
- donn\'ees (ou presque les m\^emes) vers deux (ou plus) lecteurs en m\^eme temps.
- Le nom de job {\bf job-name} est en principe le m\^eme que celui de la
- ressource job courante (cr\'eant ainsi un clone). Cependant, ce peut \^etre
- n'importe quel nom de job, de sorte qu'un job peut d\'emarrer d'autre jobs li\'es.
- La partie apr\`es le signe \'egale doit \^etre encadr\'ee de double quotes, et peut
- contenir toute cha\^ine ou jeu d'options (surcharges) qui pourraient \^etre
- sp\'ecifi\'ees \`a l'utilisation de la commande Run dans la Console. Par exemple,
- {\bf storage=DDS-4 ...}. De plus, deux mots-clef sp\'eciaux vous permettent de
- cloner le job courant : {\bf level=\%l} et {\bf since=\%s}. le \%l du mot clef
- level permet d'entrer le niveau r\'eel du job courant et le \%s du mot clef since
- permet d'imposer la m\^eme date pour la comparaison que celle utilis\'ee par le job courant.a
- Notez que dans le cas du mot-clef since, le \%s doit \^etre encadr\'e de double quotes,
- qui doivent \^etre elles m\^emes pr\'ec\'ed\'ees de barres obliques arri\`eres puisque elles sont
- d\'ej\`a entre double quotes. Par exemple :
-
- \begin{verbatim}
- run = "Nightly-backup level=%s since=\"%s\" storage=DDS-4"
- \end{verbatim}
- Un job clon\'e ne d\'emarrera pas de nouveaux clones, aussi il n'est pas possible de les cascader.
-
-\label{Priority}
-\item [ Priority = \lt{}number\gt{}]
- \index[dir]{Priority}
- \index[dir]{Directive!Priority}
- Cette directive vous permet de contr\^oler l'ordre d'ex\'ecution des jobs en
- sp\'ecifiant un entier positif non nul. Plus grand est ce nombre, plus basse
- est la priorit\'e du job. En supposant que vous n'ex\'ecutiez pas de jobs
- simultan\'es, tous les jobs en file d'attente avec la priorit\'e 1 seront
- ex\'ecut\'es avant ceux avec la priorit\'e 2, et ainsi de suite, sans prise en
- compte de l'ordre original de planification.
-
- La priorit\'e affecte seulement les jobs en file d'attente, et non les jobs d\'eja
- en cours d'ex\'ecution. Si un ou plusieurs jobs de priorit\'e 2 sont d\'ej\`a en cours
- d'ex\'ecution, et si un nouveau job est programm\'e avec la priorit\'e 1, les jobs
- en cours d'ex\'ecution doivent se terminer pour que le job de priorit\'e 1 puisse
- d\'emarrer.
-
- La priorit\'e par d\'efaut est 10.
-
-Si vous voulez ex\'ecutez plusieurs jobs simultan\'es,
-vous devriez garder les points suivants \`a l'esprit :
-
-\begin{itemize}
-\item Pour ex\'ecuter plusieurs jobs simultan\'es, vous devez ajuster la directive
- {\bf Maximum Concurrent Jobs} (utiliser une valeur sup\'erieure \'a 1)
- en cinq ou six endroits diff\'erents : dans le
- fichier bacula-dir.conf, les ressources {\bf Job}, {\bf Client}, {\bf Storage};
- dans le fichier bacula-fd, la ressource {\bf FileDaemon}; et dans le fichier
- bacula-sd.conf, la ressource {\bf Storage}. Si vous omettez l'un d'entre eux,
- les jobs seront ex\'ecut\'es un par un.
-\item Bacula n'ex\'ecute pas simultan\'ement les jobs de priorit\'es distinctes.
-\item Si Bacula ex\'ecute un job de priorit\'e 2 et si un nouveau job de priorit\'e
- 1 est programm\'e, il attendra la fin du job de priorit\'e 1, m\^eme si les
- param\`etres {\bf Maximum Concurrent Jobs} pourraient permettre l'ex\'ecution
- simultan\'ee de deux jobs.
-\item Supposons que Bacula soit en train d'ex\'ecuter un job de priorit\'e 2 et qu'un
- job de priorit\'e 1 soit programm\'e et mis en queue en attente de la fin du
- job de priorit\'e 2. Si vous d\'emarrez alors un second job de priorit\'e 2, le job
- en attente de priorit\'e 1 emp\`echera le nouveau job de priorit\'e 2 de s'ex\'ecuter
- en parall\`ele au premier. Ainsi : tant qu'il reste un job de priorit\'e sup\'erieure
- \`a ex\'ecuter, aucun nouveau job de priorit\'e inf\'erieure ne pourra d\'emarrer, m\^eme si
- les param\`etres {\bf Maximum Concurrent Jobs} devraient le permettre. Ceci permet
- d'assurer que les jobs de priorit\'e sup\'erieure seront ex\'ecut\'es d\`es que possible.
-\end{itemize}
-
-Si vous avez plusieurs jobs de priorit\'es diff\'erentes, il est pr\'ef\'erable de ne pas les
-d\'emarrer exactement \`a la m\^eme heure, car Bacula doit les examiner un \`a la fois. Si,
-par hazard, Bacula commence par traiter un job de priorit\'e inf\'erieure, il sera
-ex\'ecut\'e avant votre job de priorit\'e \'elev\'e. Pour \'eviter cette situation,
-d\'emarrez l'un quelconque des jobs de priorit\'e \'elev\'ee quelques secondes avant
-ceux de basse priorit\'e. Ainsi, vous serez assur\'e que Bacula examine les jobs
-dans l'ordre voulu et que votre sch\'ema de priorit\'es sera respect\'e.
-
-\label{WritePartAfterJob}
-
-\item [ Write Part After Job = \lt{}yes|no\gt{}]
- \index[sd]{Write Part After Job}
- \index[dir]{Directive!Write Part After Job}
-Cette directive est impl\'ement\'ee depuis la version 1.37.
-Si la valeur de cette directive est {\bf yes} ({\bf no} par d\'efaut), un nouveau
-"fichier partition" (ndt : part file) sera cr\'e\'e apr\`es la fin du job.
-
-Cette directive devrait \^etre activ\'ee lors de l'\'ecriture sur des p\'eriph\'erique
-qui requi\`erent un montage (par exemple, les DVDs), afin de vous assurer que
-le fichier partition courant, celui qui contient les donn\'ees de ce job, est
-envoy\'e vers le p\'eriph\'erique, et qu'aucune donn\'ee n'est laiss\'ee dans le fichier
-temporaire sur le disque dur. Quoi qu'il en soit, avec certains supports tels
-que les DVD+R et DVD-R, beaucoup d'espace (environ 10 Mb) est perdu \`a chaque fois
-qu'un fichier partition est \'ecrit. Aussi, si vous ex\'ecutez plusieurs jobs \`a la
-suite, vous devriez r\'egler cette directive \`a {\bf no} pour tous ces jobs sauf
-le dernier, pour \'eviter un gaspillage important d'espace, tout en ayant la certitude
-que les donn\'ees sont bien \'ecrites sur le m\'edium lorsque tous les jobs sont
-achev\'es.
-
-Cette directive est ignor\'ee avec les bandes et les p\'eriph\'eriques FIFO.
-\end{description}
-
-Voici un exemple de d\'efinition de ressource Job valide.
-
-\footnotesize
-\begin{verbatim}
-Job {
- Name = "Minou"
- Type = Backup
- Level = Incremental # default
- Client = Minou
- FileSet="Minou Full Set"
- Storage = DLTDrive
- Pool = Default
- Schedule = "MinouWeeklyCycle"
- Messages = Standard
-}
-\end{verbatim}
-\normalsize
-
-\subsection*{La ressource JobDefs}
-\label{JobDefsResource}
-\index[general]{JobDefs Resource }
-\index[general]{Resource!JobDefs }
-\addcontentsline{toc}{subsection}{JobDefs Resource}
-
-La ressource Jobdefs admet toutes les directives qui peuvent appara\^itre dans
-une ressource Job. Une ressource Jobdefs ne cr\'e\'e en aucun cas un Job, son r\^ole
-est de pouvoir \^etre d\'esign\'ee dans une ressource Job comme un ensemble de
-param\`etres par d\'efaut. Ceci permet de d\'efinir plusieurs jobs similaires avec
-concision, en ne mentionnant, pour chaque job, que les diff\'erences avec les
-valeurs par d\'efaut sp\'ecifi\'ees dans la ressource Jobdefs.
-
-\subsection*{La ressource Schedule}
-\label{ScheduleResource}
-\index[general]{Resource!Schedule }
-\index[general]{Schedule Resource }
-\addcontentsline{toc}{subsection}{Schedule Resource}
-
-La ressource Schedule offre un moyen pour planifier automatiquement un Job,
-mais aussi la possibilit\'e de surcharger les param\`etres par d\'efaut de Level,
-Pool, Storage, et Messages ressources. Si une ressource Schedule n'est pas
-sp\'ecifi\'ee dans un job, ce job ne peut \^etre ex\'ecut\'e que manuellement.
-En g\'en\'eral, vous sp\'ecifierez une action et le moment de son lancement.
-
-\begin{description}
-
-\item [Schedule]
- \index[dir]{Schedule}
- \index[dir]{Directive!Schedule}
- D\'ebut des directives Schedule. La ressource {\bf Schedule} n'est pas requise,
- mais il vous en faudra au moins une si vous souhaitez que vos jobs soient
- ex\'ecut\'es automatiquement.
-
-\item [Name = \lt{}name\gt{}]
- \index[dir]{Name}
- \index[dir]{Directive!Name}
- Le nom du Schedule d\'efini. Cette directive est requise.
-
-\item [Run = \lt{}Job-overrides\gt{} \lt{}Date-time-specification\gt{} ]
- \index[dir]{Run}
- \index[dir]{Directive!Run}
- La directive Run d\'efinit quand un job doit \^etre ex\'ecut\'e, et les \'eventuelles
- surcharges \`a appliquer. Il est possible de sp\'ecifier plusieurs directives
- {\bf run} au sein d'une ressource {\bf Schedule}, elles seront toutes
- appliqu\'ees. Si vous avez deux directives {\bf Run} qui d\'emarrent au m\^eme
- moment, deux jobs seront lanc\'es simultan\'ement (en fait, avec une seconde d'\'ecart).
-
-
-La directive {\bf Job-overrides} permet d'outrepasser les sp\'ecifications de
-Level, Storage, Messages et Pool \'ecrites dans la ressource Job. De plus,
-les sp\'ecifications FullPool, DifferentialPool et IncrementalPool permettent
-de passer outre les sp\'ecification de Pool, en accord avec le niveau (level)
-effectif d'ex\'ecution du job.
-
-L'utilisation de surcharges permet de peaufiner le param\'etrage d'un job
-particulier. Par exemple, vous pourriez surcharger une sp\'ecification
-Messages qui enverrait vos logs de backups vers un fichier, de fa\c {c}on \`a ce qu'ils
-vous soient envoy\'es par mails pour les Fulls hebdomadaires ou mensuelles.
-
-Les directives {\bf Job-overrides} sont sp\'ecifi\'ees en tant que {\bf mot-clef=valeur}
-o\`u le mot-clef est l'un des suivants : Level, Storage, Messages, Pool, FullPool,
-DifferentialPool ou IncrementalPool, et la {\bf valeur} est d\'efinie selon le format
-adapt\'e \`a la directive. Vous pouvez sp\'ecifier plusieurs surcharges {\bf Job-overrides}
-en une seule directive {\bf Run} en les s\'eparant par des espaces ou des
-trailing comas (traduction ?). Par exemple :
-
-\begin{description}
-
-\item [Level=Full]
- \index[dir]{Level}
- \index[dir]{Directive!Level}
- Tous les fichiers du FileSet qu'ils aient ou non chang\'e.
-
-\item [Level=Incremental]
- \index[dir]{Level}
- \index[dir]{Directive!Level}
- Tous les fichiers qui ont chang\'e depuis la derni\`ere sauvegarde.
-
-\item [Pool=Weekly]
- \index[dir]{Pool}
- \index[dir]{Directive!Pool}
- Sp\'ecifie l'utilisation du Pool nomm\'e {\bf Weekly}.
-
-\item [Storage=DLT\_Drive]
- \index[dir]{Storage }
- \index[dir]{Directive!Storage}
- Sp\'ecifie l'utilisation du lecteur {\bf DLT\_Drive} pour p\'eriph\'erique de stockage.
-
-\item [Messages=Verbose]
- \index[dir]{Messages }
- \index[dir]{Directive!Messages}
- Sp\'ecifie l'utilisation de la ressource messages {\bf Verbose} pour le job.
-
-\item [FullPool=Full]
- \index[dir]{FullPool}
- \index[dir]{Directive!FullPool}
-
- Sp\'ecifie l'utilisation du Pool nomm\'e {\bf Full} si le job est une sauvegarde Full,
- ou s'il a \'et\'e \'elev\'e en Full bien qu'ayant \'et\'e lanc\'e en tant que diff\'erentiel ou
- incr\'emental.
-
-\item [DifferentialPool=Differential]
- \index[dir]{DifferentialPool }
- \index[dir]{Directive!DifferentialPool}
- Sp\'ecifie l'utilisation du Pool nomm\'e {\bf Differential} si le job est une
- sauvegarde diff\'erentielle.
-
-\item [IncrementalPool=Incremental]
- \index[dir]{IncrementalPool}
- \index[dir]{Directive!IncrementalPool}
- Sp\'ecifie l'utilisation du Pool nomm\'e {\bf Incremental} si le job est une
- sauvegarde incr\'ementale.
-
-\item [SpoolData=yes|no]
- \index[dir]{SpoolData}
- \index[dir]{Directive!SpoolData}
- Indique \`a Bacula d'ordonner au Storage Daemon de placer les donn\'ees sur un
- spool disque avant de les envoyer vers les cartouches.
-
-\item [WritePartAfterJob=yes|no]
- \index[dir]{WritePartAfterJob}
- \index[dir]{Directive!WritePartAfterJob}
- Indique \`a Bacula d'ordonner au Storage Daemon d'\'ecrire le fichier partition
- courant vers le p\'eriph\'erique lorsque le job s'ach\`eve (voir
-\ilink{la directive Write Part After Job dans la ressource Job}{WritePartAfterJob}).
-\end{description}
-
-{\bf Date-time-specification} D\'etermine la planification d'ex\'ecution du job.
-La sp\'ecification est une r\'ep\'etition, et, par d\'efaut, Bacula est param\'etr\'e
-pour ex\'ecuter un job au d\'ebut de chaque heure de chaque jour de chaque semaine
-de chaque mois de chaque ann\'ee. Ce n'est probablement pas ce que vous souhaitez,
-aussi vous devez pr\'eciser ou limiter les moments o\`u vous souhaitez voir vos jobs
-ex\'ecut\'es. Toute sp\'ecification est suppos\'ee cyclique et servira \`a limiter le
-cycle par d\'efaut. Ceci se fait en sp\'ecifiant des masques ou des horaires,
-jours de la semaine, jours du mois, semaines du mois, semaines de l'ann\'ee et
-mois de l'ann\'ee o\`u vous voulez ex\'ecuter le job. En combinant ces possibilit\'es,
-vous pouvez d\'efinir une planification qui se r\'ep\`ete \`a presque n'importe quelle
-fr\'equence.
-
-Concr\`etement, vous devez d\'efinir les {\bf mois}, {\bf jour}, {\bf heure} et
-{\bf minute} o\`u le job est \`a ex\'ecuter. Parmis ces quatre objets, le {\bf jour}
-est particulier en ce qu'il peut sp\'ecifier un jour du mois (1,2,...31) ou de la
-semaine (Monday, Tuesday,...Sunday). Enfin, vous pouvez aussi sp\'ecifier un
-jour de la semaine pour restreindre la planification \`a la premi\`ere, deuxi\`eme,
-troisi\`eme, quatri\`eme ou cinqui\`eme semaine du mois.
-
-Par exemple, si vous sp\'ecifiez seulement un jour de la semaine, disons {\bf Mardi},
-le job sera ex\'ecut\'e toutes les heures de chaque mardi de chaque mois. La raison
-en est que les param\`etres {\bf Mois} et {\bf Heure} sont rest\'es \`a leurs valeurs
-par d\'efaut : chaque mois et chaque heure.
-
-Notez que, par d\'efaut, sans autre sp\'ecification, votre job s'ex\'ecutera au
-d\'ebut de chaque heure. Si vous souhaitez que votre job s'ex\'ecute plus souvent
-qu'une fois par heure, il vous faudra d\'efinir plusieurs sp\'ecifications {\bf run}
-avec pour chacune une minut diff\'erente.
-
-Les dates et horaires d'ex\'ecutions des jobs peuvent \^etre sp\'ecifi\'es comme suit,
-en pseudo-BNF :
-
-\footnotesize
-\begin{verbatim}
-<void-keyword> = on
-<at-keyword> = at
-<week-keyword> = 1st | 2nd | 3rd | 4th | 5th | first |
- second | third | forth | fifth
-<wday-keyword> = sun | mon | tue | wed | thu | fri | sat |
- sunday | monday | tuesday | wednesday |
- thursday | friday | saturday
-<week-of-year-keyword> = w00 | w01 | ... w52 | w53
-<month-keyword> = jan | feb | mar | apr | may | jun | jul |
- aug | sep | oct | nov | dec | january |
- february | ... | december
-<daily-keyword> = daily
-<weekly-keyword> = weekly
-<monthly-keyword> = monthly
-<hourly-keyword> = hourly
-<digit> = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0
-<number> = <digit> | <digit><number>
-<12hour> = 0 | 1 | 2 | ... 12
-<hour> = 0 | 1 | 2 | ... 23
-<minute> = 0 | 1 | 2 | ... 59
-<day> = 1 | 2 | ... 31
-<time> = <hour>:<minute> |
- <12hour>:<minute>am |
- <12hour>:<minute>pm
-<time-spec> = <at-keyword> <time> |
- <hourly-keyword>
-<date-keyword> = <void-keyword> <weekly-keyword>
-<day-range> = <day>-<day>
-<month-range> = <month-keyword>-<month-keyword>
-<wday-range> = <wday-keyword>-<wday-keyword>
-<range> = <day-range> | <month-range> |
- <wday-range>
-<date> = <date-keyword> | <day> | <range>
-<date-spec> = <date> | <date-spec>
-<day-spec> = <day> | <wday-keyword> |
- <day-range> | <wday-range> |
- <week-keyword> <wday-keyword>
- <day-range> | <wday-range> |
- <daily-keyword>
-<month-spec> = <month-keyword> | <month-range> |
- <monthly-keyword>
-<date-time-spec> = <month-spec> <day-spec> <time-spec>
-\end{verbatim}
-\normalsize
-
-\end{description}
-
-Notez que les sp\'ecifications de semaine et d'ann\'ee suivent les d\'efinitions ISO
-standard de semaine et ann\'ee, o\`u la semaine 1 est la semaine qui contient le
-premier jeudi de l'ann\'ee, ou alternativement, la semaine qui contient le
-quatri\`eme jour de janvier. Les semaines sont num\'erot\'ees w01 \`a w53. w00 est
-pour Bacula la semaine qui pr\'ec\`ede la premi\`ere semaine ISO (c'est \`a dire celle
-qui contient les quelques premiers jours de l'ann\'ee si aucun n'est un jeudi).
-w00 n'est pas d\'efinie dans les sp\'ecifications ISO. Une semaine commence le Lundi
-et se termine le Dimanche.
-
-Voici un exemple de ressource Schedule nomm\'ee {\bf WeeklyCycle} qui ex\'ecute
-un job de niveau Full chaque Dimanche \`a 1h05 et un job de niveau incr\'emental
-du Lundi au Samedi \`a 1h05 :
-
-\footnotesize
-\begin{verbatim}
-Schedule {
- Name = "WeeklyCycle"
- Run = Level=Full sun at 1:05
- Run = Level=Incremental mon-sat at 1:05
-}
-\end{verbatim}
-\normalsize
-
-Voici un exemple de cycle mensuel :
-
-\footnotesize
-\begin{verbatim}
-Schedule {
- Name = "MonthlyCycle"
- Run = Level=Full Pool=Monthly 1st sun at 1:05
- Run = Level=Differential 2nd-5th sun at 1:05
- Run = Level=Incremental Pool=Daily mon-sat at 1:05
-}
-\end{verbatim}
-\normalsize
-
-Le premier de chaque mois :
-
-\footnotesize
-\begin{verbatim}
-Schedule {
- Name = "First"
- Run = Level=Full on 1 at 1:05
- Run = Level=Incremental on 2-31 at 1:05
-}
-\end{verbatim}
-\normalsize
-
-Toutes les dix minutes :
-
-\footnotesize
-\begin{verbatim}
-Schedule {
- Name = "TenMinutes"
- Run = Level=Full hourly at 0:05
- Run = Level=Full hourly at 0:15
- Run = Level=Full hourly at 0:25
- Run = Level=Full hourly at 0:35
- Run = Level=Full hourly at 0:45
- Run = Level=Full hourly at 0:55
-}
-\end{verbatim}
-\normalsize
-
-\subsection*{Notes techniques sur les Schedules}
-\index[general]{Schedules!Technical Notes on }
-\index[general]{Technical Notes on Schedules }
-\addcontentsline{toc}{subsection}{Notes techniques sur les Schedules}
-Au niveau interne, Bacula consid\`ere un schedule en tant que bit masque.
-Il y a six masques et un champ minute pour chaque schedule. Les masques sont
-heure, jour du mois (mday), jour de la semaine (wday), semaine du mois (wom),
-et semaine de l'ann\'ee (woy). Le schedule est initialis\'e de fa\c {c}on \`a avoir les
-bits de chacun de ces masques positionn\'es, ce qui signifie qu'au d\'ebut de chaque
-heure, le job sera ex\'ecut\'e. Quand vous sp\'ecifiez un mois pour la premi\`ere
-fois, le masque est effac\'e et le bit correspondant au mois s\'electionn\'e est
-ajout\'e au masque. Si vous sp\'ecifiez un second mois, le bit correspondant
-est aussi ajout\'e. Ainsi, lorsque Bacula examine le masque pour voir si
-les bits plac\'es correspondent \`a la date courante, votre job ne sera ex\'ecut\'e
-que pendant les deux mois que vous avez sp\'ecifi\'es. De m\^eme, si vous sp\'ecifiez
-un horaire, le masque Heure est effac\'e et le bit correspondant \`a l'heure que
-vous avez sp\'ecifi\'ee est plac\'e, les minutes sont quant \`a elles stock\'ees dans le
-champ Minutes.
-
-Pour chacun de vos schedules, vous pouvez visualiser le masque associ\'e
-gr\^ace \`a la commande {\bf show schedules} du programme Console.
-Notez que le bit masque est "zero based", et que Dimanche est le premier
-jour de la semaine (bit 0)
-
-\subsection*{La ressource FileSet }
-\label{FileSetResource}
-\index[general]{Resource!FileSet }
-\index[general]{FileSet Resource }
-\addcontentsline{toc}{subsection}{FileSet Resource}
-
-La ressource FileSet d\'efinit les fichiers \`a inclure dans une sauvegarde. Pour
-chaque job de type sauvegarde, il est n\'ecessaire de d\'efinir au moins une
-ressource {\bf FileSet}. Un {\bf FileSet} consiste en une liste de fichiers
-ou r\'epertoires \`a inclure, une liste de fichiers ou r\'epertoires \`a exclure, et
-diverses options de sauvegardes telles que compression, chiffrement et
-signatures qui doivent \^etre appliqu\'ees \`a chaque fichier.
-
-Toute modification de la liste des fichiers inclus provoque la cr\'eation par Bacula
-d'un nouveau FileSet (d\'efini par le nom et la somme de contr\^ole MD5 du contenu
-du paragraphe Include). Chaque fois qu'un nouveau FileSet est cr\'e\'e, Bacula
-s'assure que la premi\`ere sauvegarde est une Full.
-
-\begin{description}
-
-\item [FileSet]
- \index[dir]{FileSet }
- D\'ebut de la ressource FileSet. Au moins une ressource {\bf FileSet} doit
- \^etre d\'efinie.
-
-\item [Name = \lt{}name\gt{}]
- \index[dir]{Name }
- Le nom de la ressource FileSet. Cette directive est requise.
-
-\item [Ignore FileSet Changes = \lt{}yes|no\gt{}]
- \index[dir]{Ignore FileSet Changes }
-Si cette directive est activ\'ee ({\bf yes}), toute modification des listes
-d'inclusion ou d'exclusion du FileSet sera ignor\'ee et Bacula n'\'el\`evera
-pas la prochaine sauvegarde en Full. La valeur par d\'efaut est {\bf no}, ainsi,
-si vous modifiez une des listes d'inclusion ou d'exclusion du FileSet, Bacula
-forcera une sauvegarde Full pour assurer que tout soit bien sauvegard\'e
-proprement. Il n'est pas recommand\'e d'activer cette directive. Cette directive
-est disponible \`a partir de Bacula 1.35.4.
-
-\item [{Include \ \{ [ Options \{\lt{}file-options\gt{}\} ...]
- \lt{}file-list\gt{} \}
- }]
-\index[dir]{Include \ \{ [ Options \{\lt{}file-options\gt{}\} ...]
-\lt{}file-list\gt{} \} }
-
-\item [Options \ \{ \lt{}file-options\gt{} \}
- ]
- \index[dir]{Options \ \{ \lt{}file-options\gt{} \} }
-
-\item [Exclude \ \{ \lt{}file-list\gt{} \}]
- \index[dir]{Exclude \ \{ \lt{}file-list\gt{} \} }
-\end{description}
-La ressource Include doit contenir une liste de r\'epertoires et/ou fichiers
-\`a traiter lors de la sauvegarde. Normalement, tous les fichiers trouv\'es dans
-tous les sous-r\'epertoires de tout r\'epertoire de la liste d'inclusion des
-fichiers seront sauvegard\'es. La ressource Include peut aussi comporter une
-ou plusieurs ressources Options qui sp\'ecifient des param\`etres tels que
-la compression \`a appliquer \`a tous les fichiers ou \`a n'importe quel sous ensemble
-de fichiers \`a sauvegarder.
-
-Le nombre de ressources {\bf Include} par FileSet n'est pas limit\'e, chacune ayant
-sa propre liste de r\'epertoires et/ou fichiers \`a sauvegarder et ses propres
-param\`etres d\'efinis par une ou plusieurs ressources Options. La liste de fichiers
-{\bf file-list} consiste en un nom de fichier ou r\'epertoire par ligne.
-Les noms de r\'epertoire doivent \^etre sp\'ecifi\'es sans slash final.
-
-Vous devez toujours sp\'ecifier des chemins absolus pour tout fichier ou
-r\'epertoire que vous placez dans un FileSet. De plus, sur les machines Windows,
-vous devez {\bf toujours} pr\'efixer le r\'epertoire ou nom de fichier d'une
-sp\'ecification de disque (par exemple : {\bf c:/xxx}) en utilisant le s\'eparateur
-de r\'epertoire Unix (slash /).
-
-Le comportement par d\'efaut de Bacula en ce qui concerne le traitement des
-r\'epertoires est de descendre r\'ecursivement dans chaque r\'epertoire
-et de sauvegarder tous les fichiers et sous-r\'epertoires. Par d\'efaut, Bacula
-ne suit pas les syst\`emes de fichiers transverses (en terminologie Unix, les
-points de montage). Ceci signifie que si vous sp\'ecifiez la partition racine
-( par exemple /), Bacula sauvegardera seulement la partition racine, et aucun
-des syst\`emes de fichiers mont\'es. De fa\c {c}on analogue, sur les syst\`emes Windows,
-vous devez expliciter chacun des disques que vous souhaitez sauvegarder (par
-exemple {\bf c:/} et {\bf d:/}...). De plus, au moins pour les syst\`emes
-Windows, il sera la plupart du temps n\'ecessaire d'encadrer chaque sp\'ecification
-de doubles quotes, particuli\`erement si le nom du r\'epertoire (ou du fichier)
-comporte des espaces. La commande {\bf df} des syst\`emes Unix vous fournira
-la liste des r\'epertoires qu'il vous faudra sp\'ecifier pour tout sauvegarder.
-Voyez ci-dessous pour un exemple.
-
-Soyez attentif \`a ne pas inclure un r\'epertoire deux fois, car il serait
-sauvegard\'e deux fois, ce qui gaspillerait l'espace sur votre p\'eriph\'erique
-de sauvegarde. Cette erreur est facile \`a commettre. Par exemple :
-
-\footnotesize
-\begin{verbatim}
- Include {
- File = /
- File = /usr
- Options { compression=GZIP }
- }
-\end{verbatim}
-\normalsize
-
-Sur un syst\`eme Unix o\`u /usr est un sous r\'epertoire (plut\^ot qu'un syst\`eme de
-fichiers mont\'e), cette ressource Include sauvegarderait /usr deux fois.
-Dans ce cas, sur les versions ant\'erieures \`a 1.32f-5-09Mar04, en raison
-d'un bug, vous ne pourriez restaurer les fichiers li\'es physiquement sauvegard\'es
-deux fois.
-
-Si vous avez utilis\'e des versions de Bacula ant\'erieures \`a 1.34.3, vous noterez
-ces modifications dans la syntaxe des FileSets :
-
-\begin{enumerate}
-\item il n'y a pas de signe \'egale (=) apr\`es le "include" et avant l'accolade
-ouvrante (\{) ;
-\item chaque r\'epertoire (ou nom de fichier) \`a sauvegarder est pr\'ec\'ed\'e de
-"{\bf File =}" ;
-\item les options qui apparaissaient pr\'ec\'edemmant sur la ligne Include doivent
-d\'esormais \^etre sp\'ecifi\'ees dans leur propre ressource Options.
-\end{enumerate}
-
-La ressource Options est optionnelle, mais lorsqu'elle est sp\'ecifi\'ee, elle doit
-contenir une liste de lignes "{\bf mot-clef=valeur}" relatives aux options \`a appliquer
-\`a la liste de fichiers/r\'epertoires. Plusieurs ressources Options peuvent \^etre
-sp\'ecifi\'ees l'une apr\`es l'autre. Lorsqu'un fichier se trouve dans un dossier
-sp\'ecifi\'e, les options sont appliqu\'ees au nom de fichier pour savoir s'il doit
-\^etre sauvegard\'e, et comment. Les ressources Options sont appliqu\'ees dans l'ordre
-o\`u elles appara\^issent dans le FileSet jusqu'\`a ce qu'il y en ait une qui corresponde.
-Une ressource Options qui ne contient pas de directive {\bf wild} (sp\'ecification
-de caract\`ere joker, voir ci-dessous) est consid\'er\'ee comme concernant tous les
-fichiers. Il est important de bien comprendre ceci, car une fois que Bacula a
-d\'etermin\'e que des Options s'appliquent \`a un fichier donn\'e, ce fichier sera
-sauvegard\'e sans tenir compte d'aucunes des \'eventuelles autres ressources Options.
-Ceci signifie que toute ressource Options avec caract\`eres joker doit appara\^itre
-avant une ressource Options sans caract\`eres joker.
-
-Si, pour quelque raison, Bacula applique toutes les ressources Options \`a un
-fichier sans qu'aucune ne corresponde (en g\'en\'eral \`a cause de caract\`eres joker
-qui ne correspondent pas), par d\'efaut Bacula sauvegardera le fichier. Ceci est
-assez logique si vous consid\'erez la situation sans options, o\`u vous souhaitez
-que tout soit sauvegard\'e. De plus, dans le cas ou aucune correspondance n'est
-trouv\'ee, Bacula utilise les options de la derni\`ere ressource Options. Par cons\'equent,
-si vous souhaitez d\'efinir un jeu d'options par d\'efaut, vous devriez les placer
-dans la derni\`ere ressource Options.
-
-Les directives disponibles pour les ressources Options sont les suivantes :
-
-\begin{description}
- \item [compression=GZIP]
- \index[dir]{compression }
- Tous les fichiers sauvegard\'es sont compress\'es (NDT : compression logicielle,
- par opposition \`a la compression mat\'erielle effectu\'ee par le lecteur) au
- format GNU ZIP. Chaque fichier est compress\'e individuellement par le File
- Daemon. S'il y a un probl\`eme \`a la lecture d'une cartouche au niveau de
- l'enregistrement d'un fichier, il affectera tout au plus ce fichier et aucun
- des autres fichiers de la cartouche. La plupart du temps, cette option n'est
- pas n\'ecessaire si vous avez un lecteur de bandes moderne qui applique sa
- propre compression. En fait, si vous activez les deux compressions
- simultan\'ement, il se peut que vos fichiers occupent plus d'espace sur le
- volume qu'avec une seule.
-
- La compression logicielle est particuli\`erement int\'eressante lorsque vous
- sauvegardez sur disque, et peut \^etre d'un grand secours si vous avez un
- ordinateur rapide mais un r\'eseau lent.
-
- La sp\'ecification {\bf GZIP} utilise le niveau de compression six par d\'efaut
- (i.e. {\bf GZIP} est \'equivalent \`a {\bf GZIP6}). Si vous voulez utiliser un
- niveau diff\'erent (de 1 \`a 9), vous pouvez le sp\'ecifier en ajoutant le num\'ero
- du niveau voulu \`a la fin du mot {\bf GZIP}, sans espace. Ainsi, {\bf compression=GZIP1}
- d\'esigne la compression la moins efficace, mais l'algorithme le plus rapide,
- tandis que {\bf compression=GZIP9} est le niveau de compression le plus \'elev\'e,
- mais requi\`ere plus de puissance de calcul. Selon la documentation GZIP, les
- niveaux de compression sup\'erieurs \`a 6 ne procurent g\'en\'eralement que peu
- de compression suppl\'ementaire alors qu'ils sont plut\^ot exigeants en puissance
- de calcul.
-
- \item [signature=SHA1]
- \index[dir]{signature }
- La signature SHA1 est calcul\'ee pour tous les fichiers sauvegard\'es.
- L'algorithme SHA1 est
- r\'eput\'e plus lent que MD5, mais bien meilleur d'un point de vue cryptographique
- (i.e. beaucoup moins de collisions et probabilit\'e de piratage bien inf\'erieure.).
- Nous recommandons fortement d'activer l'une ou l'autre des options SHA1 ou MD5
- par d\'efaut pour tous les fichiers. Notez que seule l'une de ces deux options
- peut \^etre activ\'ee pour tout fichier.
-
- \item [signature=MD5]
- \index[dir]{signature }
- La signature MD5 est calcul\'ee pour tous les fichiers sauvegard\'es. Activer cette
- option r\'esulte en une charge CPU suppl\'ementaire de l'ordre de 5\% pour chaque
- fichier sauvegard\'e. D'autre part, la signature MD5 ajoute 16 octets
- suppl\'ementaires au catalogue pour chaque fichier sauvegard\'e. Nous recommandons
- fortement d'activer l'une ou l'autre des options SHA1 ou MD5 par d\'efaut pour tous
- les fichiers.
-
- \item [verify=\lt{}options\gt{}]
- \index[dir]{verify }
- Les "options-lettres" sont utilis\'ees lors de l'ex\'ecution de jobs de type {\bf Verify}
- de niveau {\bf Level=Catalog} et de niveau {\bf Level=DiskToCatalog}. Les options
- peuvent \^etre n'importe quelle combinaison de ces lettres.
-
-\begin{description}
-
-\item [i]
- compare les inodes
-
-\item [p]
- compare bits de permissions
-
-\item [n]
- compare le nombre de liens
-
-\item [u]
- compare les user ids
-
-\item [g]
- compare les group ids
-
-\item [s]
- compare les tailles
-
-\item [a]
- compare les date d'acc\`es (access time)
-
-\item [m]
- compare les dates de modification (st\_mtime)
-
-\item [c]
- compare les dates de changement (st\_ctime)
-
-\item [d]
- signale tout fichier dont la taille a diminu\'e
-
-\item [5]
- compare les signatures MD5
-
-\item [1]
- compare les signatures SHA1
-\end{description}
-
-Le jeu d'options {\bf pins5} (qui compare les bits de permissions, les inodes,
-les nombres de liens, la taille des fichiers et les signatures MD5) est tr\`es
-utile pour des jobs de type verify de niveaux {\bf Level=Catalog} ou
-{\bf Level=DiskToCatalog}.
-
-\item [{\bf onefs=yes|no}]
- \index[dir]{onefs }
- Si cette option est activ\'ee (valeur {\bf yes}, par d\'efaut), Bacula ne
- changera pas de syst\`eme de fichiers. Autrement dit, il ne sauvegardera pas
- les syst\`emes de fichiers mont\'es sur des sous-r\'epertoires. Si vous souhaitez
- sauvegarder plusieurs syst\`emes de fichiers, vous pouvez les \'enum\'erer
- explicitement. Une autre possibilit\'e consiste \`a d\'esactiver l'option onefs
- ({\bf onefs=no}) afin que Bacula sauvegarde les syst\`emes de fichiers mont\'es
- trouv\'es dans les r\'epertoires list\'es dans votre FileSet. Ainsi, si vous avez
- des syst\`emes de fichiers NFS ou Samba mont\'es sur un r\'epertoire list\'e dans le
- FileSet, ils seront aussi sauvegard\'es. En principe, il est pr\'ef\'erable
- d'activer cette option et de nommer explicitement chaque syst\`eme de fichier
- que vous voulez sauvegarder. Ce nommage explicite \'evite le risque de tomber
- dans une boucle infinie de syst\`emes de fichiers. Voyez l'exemple ci-dessous
- pour plus de d\'etails.
-
-\label{portable}
-
-\item [{\bf portable=yes|no}]
- \index[dir]{portable }
- Si cette option est activ\'ee (la valeur par d\'efaut est {\bf no}), le File Daemon
- sauvegarde les fichiers win32 dans un format portable, mais tous les attributs
- de fichiers win32 ne seront pas sauvegard\'es ni restaurables. La valeur par
- d\'efaut est {\bf no}, ce qui signifie que sur les syst\`emes Win32, les donn\'ees
- sont sauvegard\'ees en utilisant les appels Windows API et sur les WinNT/2k/XP,
- tous les attributs de s\'ecurit\'e et de propri\'et\'e sont correctement sauvegard\'es
- et restaur\'es. Cependant, ce format n'est pas portable aux autres syst\`emes
- -- par exemple UNIX, Win95/98/Me. Lors de la sauvegarde de syst\`emes Unix,
- cette option est ignor\'ee, et \`a moins que vous n'ayez un besoin sp\'ecifique de
- portabilit\'e de vos sauvegardes, nous recommandons d'accepter la valeur par
- d\'efaut ({\bf no}) de sorte qu'un maximum d'informations concernant vos
- fichiers soit sauvegard\'e.
-
-\item [{\bf recurse=yes|no}]
- \index[dir]{recurse }
- Si cette option est activ\'ee (la valeur par d\'efaut est {\bf yes}), Bacula
- descend r\'ecursivement dans tout sous-r\'epertoire trouv\'e, \`a moins qu'il ne soit
- explicitement exclu par une d\'efinition {\bf exclude}. Si vous d\'esactivez cette
- option ({\bf recurse=no}), Bacula sauvegardera toutes les entr\'ees de sous-
- r\'epertoires, mais n'entrera pas dans ces sous-r\'epertoires, et ainsi ne
- sauvegardera pas les fichiers ou \'epertoires contenus dans ces sous-r\'epertoires.
- En principe, vous pr\'ef\`ererez la valeur par d\'efaut ({\bf yes}).
-
-\item [{\bf sparse=yes|no}]
- \index[dir]{sparse }
- Cette option active un code sp\'ecial qui d\'etecte les fichiers clairsem\'es tels
- ceux cr\'e\'es par ndbm. Elle est d\'esactiv\'ee par d\'efaut ({\bf sparse=no}), de sorte
- qu'aucun contr\^ole n'est fait pour rechercher les fichiers clairsem\'es. Vous
- pouvez l'activer sans danger sur des fichiers non clairsem\'es, cependant elle
- entra\^ine une l\'eg\`ere charge suppl\'ementaire pour la d\'etection de tampons remplis
- de z\'eros (buffers of all zero), et un l\'eger surplus d'espace sur l'archive
- de sortie sera utilis\'e pour ssauver les adresses de recherche de chaque
- enregistrement non-nul trouv\'e.
-
-{\bf Restrictions:} Bacula lit les fichiers dans des tampons de 32K. Si le tampon
-entier est rempli de z\'eros, il sera trait\'e en tant que bloc clairsem\'e, et ne sera pas
-\'ecrit sur la cartouche. En revanche, si une partie quelconque du tampon est
-non-nulle, le tampon sera int\'egralement copi\'e sur la cartouche, avec \'eventuellement
-des secteurs de disque (g\'en\'eralement 4098 octets) enti\`erement nuls. La d\'etection par
-Bacula des blocs clairsem\'es a lieu sur des blocs de 32K plut\^ot que sur des blocs de
-taille d\'etermin\'ee par le syst\`eme. Si quelqu'un consid\`ere ceci comme un r\'eelle
-probl\`eme, merci d'envoyer une demande de modification en exposant les raisons.
-Ce code est apparu avec la version 1.27 de Bacula.
-
-Si vous n'\^etes pas familier avec les notions de fichiers clairsem\'es, prenons
-pour exemple un fichier o\`u vous \'ecrivez 512 octets \`a l'adresse 0, puis 512 octets
-\`a l'adresse 1 million. Le syst\`eme d'exploitation n'allouera que deux blocs, et
-rien n'est allou\'e pour l'espace vide. Pourtant, lorsque vous lisez le fichier
-clairsem\'e, le syst\`eme retourne tous les z\'eros comme si l'espace \'etait allou\'e,
-et si vous sauvegardez un tel fichier, vous utiliserez beaucoup d'espace
-sur le volume pour \'ecrire des z\'eros. Pire encore, lorsque vous restaurez ce
-fichier \`a son emplacement initial, tous les emplacements pr\'ec\'edemment vides
-seront cette fois allou\'es, occupant ainsi beaucoup plus d'espace disque.
-En activant l'option {\bf sparse}, Bacula recherchera sp\'ecifiquement l'espace
-vide dans les fichiers afin d'\'eviter ces inconv\'enients. Le prix \`a payer est que
-Bacula doit d'abord examiner chaque bloc lu avant de l'\'ecrire. Sur un syst\`eme lent,
-ceci peut-\^etre important. Si vous suspectez certains de vos fichiers d'\^etre
-clairsem\'es, vous devriez mesurer les performances et gains d'espace avec et
-sans l'options, ou ne l'activer que pour les fichiers effectivement
-clairsem\'es.
-
-\label{readfifo}
-
-\item [{\bf readfifo=yes|no}]
- \index[dir]{readfifo }
-Cette option, si elle est activ\'ee, indique au client de lire les donn\'ees
-(lors d'une sauvegarde) et de les \'ecrire (lors d'une restauration) sur
-un FIFO (pipe) explicitement explicitement mentionn\'e dans le FileSet.
-Dans ce cas, vous devez avoir un programme actif qui \'ecrit sur ce FIFO
-dans le cas d'une sauvegarde, ou qui le lit dans le cas d'une restauration.
-(Ceci peut \^etre accompli par la directive {\bf RunBeforeJob}). Si cette
-condition n'est pas satisfaite, Bacula demeurera en suspens ind\'efiniment
-en lecture/\'ecriture du FIFO. Lorsque cette option est d\'esactiv\'ee (par d\'efaut),
-le Client sauvegarde simplement l'entr\'ee du r\'epertoire pour le FIFO.
-
-\item [{\bf mtimeonly=yes|no}]
- \index[dir]{mtimeonly }
-Cette option, si elle est activ\'ee, indique au client que la s\'election de fichiers
-lors d'une sauvegarde incr\'ementale ou diff\'erentielle ne doit se r\'ef\'erer qu'aux valeurs
-de st\_mtime du paquet stat(). La valeur par d\'efaut est {\bf no}, ce qui signifie
-que la s\'election de fichiers \`a sauvegarder se base sur les deux valeurs st\_mtime et
-st\_ctime. En g\'en\'eral, il n'est pas recommand\'e d'activer cette option.
-
-\item [{\bf keepatime=yes|no}]
- \index[dir]{keepatime }
-Avec cette option activ\'ee, Bacula r\'etablit le champ st\_atime (date d'acc\`es) des
-fichiers qu'il sauvegarde \`a leur valeur d'avant la sauvegarde. Cette option
-n'est g\'en\'eralement pas recommand\'ee car il existe peu de programmes qui utilisent
-st\_atime, et la charge de la sauvegarde se trouve augment\'ee par les appels
-syst\`emes n\'ecessaires pour r\'etablir les dates. (Je ne suis pas sur que ceci
-fonctionne sous Win32).
-
-\item [{\bf wild=\lt{}string\gt{}}]
- \index[dir]{wild }
-Sp\'ecifie une cha\^ine de caract\`eres jokers \`a appliquer aux fichiers. Notez
-que si {\bf Exclude} n'est pas activ\'ee, cette cha\^ine s\'electionnera les fichiers
-\`a sauvegarder. Si au contraire {\bf Exclude=yes} est sp\'ecifi\'e, la cha\^ine
-s\'electionnera les fichiers \`a exclure de la sauvegarde. Plusieurs directives
-wild-card peuvent \^etre sp\'ecifi\'ees et sont appliqu\'ees s\'equentiellement
-jusqu'\`a ce que l'une d'elles corresponde.
-
-\item [{\bf regex=\lt{}string\gt{}}]
- \index[dir]{regex }
-Sp\'ecifie une expression r\'eguli\`ere \'etendue POSIX \`a appliquer aux fichiers.
-Cette directive est disponible \`a partir de Bacula 1.35. Si {\bf Exclude} n'est
- pas activ\'ee, cette expression r\'eguli\`ere s\'electionnera les fichiers \`a
- sauvegarder. Si au contraire {\bf Exclude=yes} est sp\'ecifi\'e, elle s\'electionnera
- les fichiers \`a exclure de la sauvegarde. Plusieurs directives regex peuvent \^etre
- sp\'ecifi\'ees et sont appliqu\'ees s\'equentiellement jusqu'\`a ce que l'une d'elles corresponde.
-
-\item [{\bf exclude=yes|no}]
- \index[dir]{exclude }
-Lorsque cette option est activ\'ee, tout fichier qui correspond aux options est exclu de
-la sauvegarde. La valeur par d\'efaut est {\bf no}.
-
-\label{ACLSupport}
-
-\item [{\bf aclsupport=yes|no}]
- \index[dir]{aclsupport }
- Si cette option est activ\'ee, et si vous avez install\'e la librarie POSIX {\bf libacl}
- sur votre syst\`eme, Bacula sauvegardera Listes de Contr\^oles d'Acc\`es (ACL) UNIX des
- fichiers et r\'epertoires telles que d\'efinies dans IEEE Std 1003.1e version 17 et
- "POSIX.1e" (abandonn\'e). Cette fonction n'est disponible que sur UNIX et d\'epend de
- la librairie ACL. Bacula est automatiquement compil\'e avec le support ACL si la
- librairie {\bf libacl} est install\'ee sur votre syst\`eme (ceci est report\'e dans
- le fichier config.out). Lors de la restauration, Bacula tentera de restaurer les
- ACLs. S'il n'y a pas de support ACL sur le syst\`eme cible, Bacula ne restaurera que les
- fichiers et r\'epertoires sans les informations ACL. Veuillez noter que si vous
- sauvegardez un syst\`eme de fichiers EXT3 ou XFS avec le support des ACLs, et que vous
- restaurez vers un syst\`eme de fichiers sans ACLs (tel , peut-\^etre reiserfs), les
- ACLs seront ignor\'ees.
-
-\end{description}
-
-{\bf \lt{}file-list\gt{}} est une liste de r\'epertoires et/ou noms de fichiers sp\'ecifi\'es
-avec la directive {\bf File =}. Pour inclure des noms contenant des espaces,
-entourez-les de guillemets (doubles quotes).
-
-Il existe quelques notations particuli\`eres pour sp\'ecifier des fichiers et r\'epertoires
-dans une liste de fichiers {\bf file-list}. Les voici :
-
-\begin{itemize}
-\item Tout nom pr\'ec\'ed\'e d'un signe "at" (@) est compris comme le nom d'un fichier,
- lequel contient une liste de fichiers, chacun pr\'ec\'ed\'e d'une directive "File=".
- Ce fichier est lu lorsque le fichier de configuration est parcouru au d\'emarrage
- du Director. Notez bien que le fichier est lu sur sur la machine qui h\'eberge le
- Director (autrement dit, le serveur de sauvegardes) et non sur le Client.
- En fait, le "@NomDeFichier" peut appara\^itre n'importe o\`u dans le fichier de
- configuration o\`u un objet pourrait \^etre lu, le contenu du fichier d\'esign\'e sera
- logiquement ins\'er\'e \`a l'emplacement du "@NomDeFichier". Ce qui doit figurer dans le
- fichier d\'epend de l'emplacement du "@NomDeFichier" au sein du fichier de
- configuration.
-
-\item Tout nom pr\'ec\'ed\'e d'une barre verticale (|) est compris comme le nom d'un
- programme. Ce programme sera ex\'ecut\'e sur la machine qui h\'eberge le Director au
- moment o\`u le job d\'emarre (et non lorsque le Director lit son fichier de
- configuration), et toute sortie de ce programme sera per\c {c}u en tant que liste
- de fichiers ou r\'epertoires, un par ligne, \`a inclure. Ceci vous permet d'avoir un
- job qui, par exemple, inclue toutes les partitions locales m\^eme si vous changez le
- partitionnement en ajoutant des disques. En g\'en\'eral, il vous faudra pr\'ec\'eder
- votre commande d'un "{\bf sh -c}" afin qu'elle soit invoqu\'ee par un shell.
- Ce ne sera pas le cas si vous invoquez un script comme dans le second exemple
- ci-dessous. Vous devez aussi prendre soin d'\'echapper (pr\'ec\'eder d'un \textbackslash{})
- les caract\`eres jokers, les caract\`eres du shell, ainsi que toute espace dans votre
- commande. Si vous utilisez des simples quotes (') dans des doubles quotes (``),
- Bacula traitera tout ce qui est entre simples quotes comme un seul champ, et il ne
- dera donc pas n\'ecessaire d'\'echapper les espaces. En g\'en\'eral, parvenir \`a avoir
- toutes les quotes et \'echappements corrects est un calvaire, comme vous pouvez
- le constater dans le prochain exemple. Par cons\'equent, il est souvent plus facile
- de tout mettre dans un fichier et d'utiliser simplement le nom de fichier dans
- Bacula. Dans ce cas le "{\bf sh -c}" ne sera plus n\'ecessaire, pourvu que la
- premi\`ere ligne du fichier soit {\bf \#!/bin/sh}.
-
-
-Par exemple :
-
-\footnotesize
-\begin{verbatim}
-
-Include {
- Options { signature = SHA1 }
- File = "|sh -c 'df -l | grep \"^/dev/hd[ab]\" | grep -v \".*/tmp\" \
- | awk \"{print \\$6}\"'"
-}
-\end{verbatim}
-\normalsize
-
-produira une liste de toutes les partitions locales sur un syst\`eme RedHat Linux.
-Notez que la ligne si dessus a \'et\'e coup\'ee, mais devrait normalement \^etre \'ecrite
-sur une seule ligne. Quoter est un r\'eel probl\`eme car vous devez d'une part le faire
-pour Bacula - ce qui consiste \`a pr\'ec\'eder tout \textbackslash{} et tout '' avec un
-\textbackslash{} - et d'autre part pour les commandes shell. En d\'efinitive, il est
-probablement plus ais\'e d'ex\'ecuter un petit fichier tel que :
-
-\footnotesize
-\begin{verbatim}
-Include {
- Options {
- signature=MD5
- }
- File = "|my_partitions"
-}
-\end{verbatim}
-\normalsize
-
-o\`u le fichier my\_partitions contient :
-
-\footnotesize
-\begin{verbatim}
-#!/bin/sh
-df -l | grep "^/dev/hd[ab]" | grep -v ".*/tmp" \
- | awk "{print \$6}"
-\end{verbatim}
-\normalsize
-
-Si la barre verticale (|) devant "my\_partitions" est pr\'ec\'ed\'ee d'une barre oblique
-(\textbackslash{}), le programme sera ex\'ecut\'e sur la machine cliente plut\^ot que sur
-la machine h\'ebergeant le Director -- (ceci est impl\'ement\'e, mais n'est pas compl\`etement
-test\'e, et a \'et\'e rapport\'e fonctionner sous Windows). Veuillez noter que si le nom de
-fichier est donn\'e entre quotes, vous devrez utiliser deux barres obliques. Voci un
-exemple, fourni par John Donagher, qui sauvegarde toutes les partitions UFS locales
-sur un syst\`eme distant :
-
-\footnotesize
-\begin{verbatim}
-FileSet {
- Name = "All local partitions"
- Include {
- Options { signature=SHA1; onefs=yes; }
- File = "\\|bash -c \"df -klF ufs | tail +2 | awk '{print \$6}'\""
- }
-}
-\end{verbatim}
-\normalsize
-
-Notez que deux barres obliques \textbackslash{} sont requises apr\`es les doubles quotes
-(l'une pr\'eserve l'autre). Si vous utilisez Linux, changez simplement {\bf ufs} en {\bf ext3}
-(ou votre syst\`eme de fichiers pr\'ef\'er\'e) et l'affaire sera dans le sac.
-
-\item Tout \'el\'ement de la liste de fichiers file-list pr\'ec\'ed\'e par un signe "inf\'erieur" (\lt{})
-est interpr\'et\'e comme un fichier qui sera lu sur la machine qui h\'eberge le Director
-au moment o\`u le job d\'emarre. Son contenu est suppos\'e \^etre une liste de r\'epertoires ou
-fichiers, un par ligne, \`a inclure dans la sauvegarde. Les noms ne doivent pas \^etre quot\'es, m\^eme
-s'ils comportent des espaces. Cette fonction vous permet de modifier le fichier externe,
-et ainsi ce qui est sauvegard\'e sans avoir \`a red\'emarrer Bacula comme il le faudrait avec
-le modificateur @ d\'ecrit plus haut.
-
-Si vous pr\'ec\'edez le signe "inf\'erieur" (\lt{}) d'une barre oblique \textbackslash{}\lt{}, le
-fichier mentionn\'e sera lu sur la machine cliente au lieu de celle h\'ebergeant le Director.
-Veullez noter que si le nom de fichier est donn\'e entre quotes, il vous faudra utiliser deux
-barres obliques.
-
-\item Si vous sp\'ecifiez explicitement un block device (NDT ?) tel que {\bf /dev/hda1}, alors
-Bacula consid\`erera ceci comme une partition raw \`a sauvegarder. Dans ce cas, vous \^etes
-fortement invit\'e \`a utiliser l'option {\bf sparse=yes}, faute de quoi vous sauvegarderez
-la partition enti\`ere plut\^ot que seulement les donn\'ees r\'eellement contenues dans la
-partition. Par exemple :
-
-\footnotesize
-\begin{verbatim}
-Include {
- Options { signature=MD5; sparse=yes }
- File = /dev/hd6
-}
-\end{verbatim}
-\normalsize
-
-va sauvegarder les donn\'ees de la partition /dev/hd6.
-
-will backup the data in device /dev/hd6.
-
-Ludovic Strappazon a fait remarquer que cette fonction pouvait servir \`a sauvegarder
-un disque Microsoft Windows. Il suffit de booter avec un Linux Rescue Disk, puis de
-charger un client Bacula statiquement li\'e comme d\'ecrit dans le chapitre
-\ilink{ Disaster Recovery avec Bacula}{_ChapterStart38} de ce manuel. Sauvegardez alors
-la partition compl\`ete. En cas de d\'esastre, vous pouvez alors restaurer la partition
-d\'esir\'ee en bootant une fois encore sur le Linux Rescue Disk et en utilisant le
-client Bacula statiquement li\'e.
-
-
-\item Si vous sp\'ecifiez explicitement un p\'eriph\'erique FIFO nomm\'e (cr\'e\'e avec mkfifo),
-ets si vous ajoutez l'option {\bf readfifo=yes}, Bacula lira le FIFO et sauvegardera ses
-donn\'ees sur le volume. Par exemple :
-
-\footnotesize
-\begin{verbatim}
-Include {
- Options {
- signature=SHA1
- readfifo=yes
- }
- File = /home/abc/fifo
-}
-\end{verbatim}
-\normalsize
-
-si {\bf /home/abc/fifo} est un FIFO, Bacula va l'ouvrir, le lire, et stocker
-toutes les donn\'ees ainsi obtenues sur le volume. Notez qu'il faut que vous ayez
-un processus qui \'ecrit sur le FIFO, faute de quoi Bacula restera en suspens, et
-abandonnera au bout d'une minute pour passer au fichier suivant. Les donn\'ees
-lues peuvent \^etre de nature quelconque puisque Bacula les traite comme un flux.
-
-Cette fonction est un excellent moyen de faire une sauvegarde "\`a chaud" d'une
-tr\`es grosse base de donn\'ees. Vous pouvez utiliser la directive {\bf RunBeforeJob}
-pour cr\'eer le FIFO et d\'emarrer un programme qui lit dynamiquement votre base de
-donn\'ees et l'\'ecrit sur le FIFO. Bacula l'\'ecrira alors sur le volume.
-
-Lors de l'op\'eration de restauration, l'inverse se produit : apr\`es que Bacula ait cr\'e\'e
-le FIFO, s'il y avait des donn\'ees stock\'ees par son biais (inutile de les lister
-explicitement ni d'ajouter aucune option), elles seront renvoy\'ees vers le FIFO.
-Par cons\'equent, s'il existe un tel FIFO \`a restaurer, vous devez vous assurer
-qu'il y a un programme lecteur ou Bacula se bloquera et passera au fichier suivant
-apr\`es une minute.
-
-\end{itemize}
-
-
-Voici un exemple de d\'efinition de ressource FileSet valide. Notez que le premier
-Include ins\`ere le contenu du fichier {\bf /etc/backup.list} lors du d\'emarrage
-de Bacula (i.e. le @).
-
-\footnotesize
-\begin{verbatim}
-FileSet {
- Name = "Full Set"
- Include {
- Options {
- Compression=GZIP
- signature=SHA1
- Sparse = yes
- }
- File = @/etc/backup.list
- }
- Include {
- Options {
- wild = *.o
- Exclude = yes
- }
- File = /root/myfile
- File = /usr/lib/another_file
- }
-}
-\end{verbatim}
-\normalsize
-
-Notez que dans l'exemple ci-dessus, tous les fichiers mentionn\'es dans
-/etc/backup.list seront compress\'e avec GZIP, qu'une signature SHA1 sera
-calcul\'ee sur le contenu des fichiers (leurs donn\'ees), et que la prise en
-charge particuli\`ere des fichiers clairsem\'es (sparse) s'appliquera.
-
-Les deux r\'epertoires /root/myfile et /usr/lib/another\_file seront aussi
-sauvegard\'es sans aucune option, mais tous les fichiers \`a extension {\bf .o}
-de ces r\'epertoires seront exlus de la sauvegarde.
-
-Supposons que vous vouliez sauvegarder tout sauf {\bf /tmp} sur votre syst\`eme.
-La commande {\bf df} vous fournit le r\'esultat suivant :
-
-\footnotesize
-\begin{verbatim}
-[kern@rufus k]$ df
-Filesystem 1k-blocks Used Available Use% Mounted on
-/dev/hda5 5044156 439232 4348692 10% /
-/dev/hda1 62193 4935 54047 9% /boot
-/dev/hda9 20161172 5524660 13612372 29% /home
-/dev/hda2 62217 6843 52161 12% /rescue
-/dev/hda8 5044156 42548 4745376 1% /tmp
-/dev/hda6 5044156 2613132 2174792 55% /usr
-none 127708 0 127708 0% /dev/shm
-//minimatou/c$ 14099200 9895424 4203776 71% /mnt/mmatou
-lmatou:/ 1554264 215884 1258056 15% /mnt/matou
-lmatou:/home 2478140 1589952 760072 68% /mnt/matou/home
-lmatou:/usr 1981000 1199960 678628 64% /mnt/matou/usr
-lpmatou:/ 995116 484112 459596 52% /mnt/pmatou
-lpmatou:/home 19222656 2787880 15458228 16% /mnt/pmatou/home
-lpmatou:/usr 2478140 2038764 311260 87% /mnt/pmatou/usr
-deuter:/ 4806936 97684 4465064 3% /mnt/deuter
-deuter:/home 4806904 280100 4282620 7% /mnt/deuter/home
-deuter:/files 44133352 27652876 14238608 67% /mnt/deuter/files
-\end{verbatim}
-\normalsize
-
-Si vous vous contentez de sp\'ecifier {\bf /} dans votre liste d'inclusions,
-Bacula ne sauvegardera que le syst\`eme de fichiers {\bf /dev/hda5}. Pour
-sauvegarder tous vos syst\`emes de fichiers sans inclure les syst\`emes de fichiers
-mont\'es Samba ou NFS et en excluant /tmp, /proc, .journal, et .autofsck, que
-vous ne voulez ni sauvegarder ni restaurer, vous pouvez utiliser ce qui suit :
-
-\footnotesize
-\begin{verbatim}
-FileSet {
- Name = Include_example
- Include {
- Options {
- wild = /proc
- wild = /tmp
- wild = \.journal
- wild = \.autofsck
- exclude = yes
- }
- File = /
- File = /boot
- File = /home
- File = /rescue
- File = /usr
- }
-}
-\end{verbatim}
-\normalsize
-
-/tmp \'etant sur son propre syst\`eme de fichiers et n'\'etant pas explicitement nomm\'e
-dans la liste d'inclusion, il n'est pas n\'ecessaire de le sp\'ecifier dans la liste
-d'exclusion. Cependant, il peut \^etre pr\'ef\'erable de le faire malgr\'e tout par
-souci de clart\'e et au cas o\`u il ne serait plus sur sa propre partition apr\`es un
-remplacement de disques.
-
-Ayez conscience qu'il peut \^etre {\bf tr\`es} dangereux de permettre \`a Bacula de traverser ou
-changer de syst\`eme de fichiers au gr\'e des ppoints de montage. Par exemple, avec ce qui suit :
-
-\footnotesize
-\begin{verbatim}
-FileSet {
- Name = "Bad example"
- Include {
- Options { onefs=no }
- File = /mnt/matou
- }
-}
-\end{verbatim}
-\normalsize
-
-vous sauvegardez une partition NFS mont\'ee ({\bf /mnt/matou}), et puisque
-{\bf onefs} est d\'esactiv\'ee, Bacula traverse les syst\`emes de fichiers.
-Si jamais {\bf /mnt/matou} contient lui m\^eme un point de montage o\`u le syst\`eme
-de fichiers de la machine sauvegard\'ee est mont\'e, ce qui est souvent le cas,
-vous vous retrouvez pris dans un boucle r\'ecursive, et la sauvegarde ne se
-terminera jamais.
-
-Le FileSet suivant sauvegarde une partition raw :
-
-\footnotesize
-\begin{verbatim}
-FileSet {
- Name = "RawPartition"
- Include {
- Options { sparse=yes }
- File = /dev/hda2
- }
-}
-\end{verbatim}
-\normalsize
-
-Lorsque vous sauvegardez et restaurez une partition raw, vous devriez vous
-assurer qu'aucun autre processus, y compris le syst\`eme, n'\'ecrit sur cette
-partition. En guise de pr\'ecaution, nous recommandons ardemment de ne sauvegarder
-en mode raw que des partitions non mont\'ees, ou mont\'ees en lecture seule. Ceci peut
-\^etre fait si n\'ecessaire avec la directive {\bf RunBeforeJob}.
-
-\label{win32}
-
-\subsection*{Consid\'erations sur les FileSets Windows}
-\index[general]{FileSets!Windows Considerations for }
-\index[general]{Windows Considerations for FileSets }
-\addcontentsline{toc}{subsection}{Windows Considerations for FileSets}
-
-Si vous saisissez des noms de fichiers Windows, les chemins des r\'epertoires devraient
-\^etre pr\'ec\'ed\'es de double-points (comme dans "c:"). Cependant, les s\'eparateurs de
-champs doivent \^etre sp\'ecifi\'es selon la convention Unix (c'est \`a dire, la barre oblique
-avant : "/"). Si vous souhaitez inclure une apostrophe dans un nom de fichier, pr\'ec\'edez-la
-d'une barre oblique arri\`ere (\textbackslash{}\textbackslash{}). Par exemple, vous pourriez
-utiliser ce qui suit pour sauvegarder le r\'epertoire "My Documents" d'une machine Windows :
-
-\footnotesize
-\begin{verbatim}
-FileSet {
- Name = "Windows Set"
- Include {
- Options {
- wild = *.obj
- wild = *.exe
- exclude = yes
- }
- File = "c:/My Documents"
- }
-}
-\end{verbatim}
-\normalsize
-
-Pour que les listes d'exclusion fonctionnent correctement sous Windows, vous devez
-observer les r\`egles suivante :
-
-\begin{itemize}
-\item les noms de fichiers sont sensibles \`a la casse, aussi vous devez utilise la
-casse correcte ;
-\item vous ne devez pas sp\'ecifier de barre oblique finale pour exclure un r\'epertoire ;
-\item si vos noms de fichiers comportent des espaces, vous devez les encadrer de
-quillemets. Les barres obliques arri\`eres (\textbackslash{}\textbackslash{}) ne
-fonctionnent pas ;
-\item si vous utilisez l'ancienne syntaxe des listes d'exclusion (mentionn\'ee ci-dessous),
-vous ne devriez pas sp\'ecifier la lettre r\'ef\'eran\c {c}ant le disque dans une liste d'exclusion.
-La nouvelle syntaxe d\'ecrite ci-dessus devrait fonctionner correctement en incluant la lettre
-du disque.
-\end{itemize}
-
-Merci \`a Thiago Lima pour nous avoir r\'esum\'e les points ci-dessus. Si vous rencontrez
-des difficult\'es pour faire fonctionner vos listes d'inclusion ou d'exclusion,
-songez \`a utiliser la commande {\bf estimate job=xxx listing} document\'ee
-dans le chapitre \ilink{Console chapter}{estimate} de ce manuel.
-
-Sur les syst\`emes Win32, si vous d\'eplacez un r\'epertoire ou si vous renommez
-un fichier de la liste \`a sauvegarder, et si une Full a d\'ej\`a eu lieu, Bacula
-ne saura reconna\^itre qu'il existe de nouveaux fichiers \`a sauvegarder lors d'une
-incr\'ementale ou d'une diff\'erentielle (faites-en le reproche \`a Microsoft, pas \`a moi !).
-Pour pallier \`a ce probl\`eme, veuillez copier tout r\'epertoire ou fichier de la
-zone sauvegard\'ee. Si vous ne disposez pas de suffisamment d'espace disque,
-d\'eplacez-les, mais lancez alors une sauvegarde Full.
-
-\subsubsection*{Exclusion de fichiers et r\'epertoires}
-\index[general]{Directories!Excluding Files and }
-\index[general]{Excluding Files and Directories }
-\addcontentsline{toc}{subsubsection}{Exclusion de fichiers et r\'epertoires}
-
-Vous pouvez aussi inclure des noms de fichiers ou chemins absolus, en plus
-de l'utilisation de caract\`eres jokers et de la directive {\bf Exclude=yes} dans
-les ressources Options comme expos\'e ci-dessus, en ajoutant simplement
-les fichiers \`a exclure dans une ressource Exclude du FileSet. Par exemple :
-
-\footnotesize
-\begin{verbatim}
-FileSet {
- Name = Exclusion_example
- Include {
- Options {
- Signature = SHA1
- }
- File = /
- File = /boot
- File = /home
- File = /rescue
- File = /usr
- }
- Exclude {
- File = /proc
- File = /tmp
- File = .journal
- File = .autofsck
- }
-}
-\end{verbatim}
-\normalsize
-
-\subsection*{Un exemple de FileSet Windows}
-\index[general]{FileSet!Windows Example }
-\index[general]{Un exemple de FileSet Windows}
-\addcontentsline{toc}{subsection}{Un exemple de FileSet Windows}
-
-Cet exemple est une contribution de Phil Stracchino :
-
-\footnotesize
-\begin{verbatim}
-This is my Windows 2000 fileset:
-FileSet {
- Name = "Windows 2000 Full Set"
- Include {
- Options {
- signature=MD5
- }
- File = c:/
- }
- Exclude {
-# Most of these files are excluded not because we don't want
-# them, but because Win2K won't allow them to be backed up
-# except via proprietary Win32 API calls.
- File = "/Documents and Settings/*/Application Data/*/Profiles/
- */*/Cache/*"
- File = "/Documents and Settings/*/Local Settings/Application Data/
- Microsoft/Windows/[Uu][Ss][Rr][Cc][Ll][Aa][Ss][Ss].*"
- File = "/Documents and Settings/*/[Nn][Tt][Uu][Ss][Ee][Rr].*"
- File = "/Documents and Settings/*/Cookies/*"
- File = "/Documents and Settings/*/Local Settings/History/*"
- File = "/Documents and Settings/*/Local Settings/
- Temporary Internet Files/*"
- File = "/Documents and Settings/*/Local Settings/Temp/*"
- File = "/WINNT/CSC"
- File = "/WINNT/security/logs/scepol.log"
- File = "/WINNT/system32/config/*"
- File = "/WINNT/msdownld.tmp/*"
- File = "/WINNT/Internet Logs/*"
- File = "/WINNT/$Nt*Uninstall*"
- File = "/WINNT/Temp/*"
- File = "/temp/*"
- File = "/tmp/*"
- File = "/pagefile.sys"
- }
-}
-\end{verbatim}
-\normalsize
-
-Remarque : les trois lignes coup\'ees de cette liste d'exclusion ne l'ont \'et\'e
-que pour des motifs de mise en page, elles doivent en r\'ealit\'e \^etre \'ecrites
-sur une seule ligne.
-
-\subsection*{L'ancienne ressource FileSet}
-\index[general]{Resource!Old FileSet }
-\index[general]{L'ancienne ressource FileSet}
-\addcontentsline{toc}{subsection}{L'ancienne ressource FileSet}
-
-L'ancienne Ressource FileSet des versions ant\'erieures \`a 1.34.3 est obsol\`ete,
-mais fonctionne encore. Nous vous encourageons \`a utiliser la nouvelle forme,
-car le code correspondant sera supprim\'e \`a partir de la version 1.37.
-
-\subsection*{Tester vos FileSets}
-\index[general]{FileSet!Testing Your }
-\index[general]{Tester vos FileSets }
-\addcontentsline{toc}{subsection}{Tester vos FileSets}
-
-Si vous voulez vous faire une id\'ee pr\'ecise de ce qui sera effectivement
-sauvegard\'e par un FileSet, ou si vous voulez vous assurer de l'efficacit\'e
-d'une liste d'exclusion, vous pouvez utiliser la commande {\bf estimate}
-du programme Console. Voyez la commande \ilink{estimate}{estimate} dans le
-chapitre Console de ce manuel.
-
-\subsection*{Considerations sur le nommage Windows NTFS}
-\index[general]{Considerations sur le nommage Windows NTFS}
-\index[general]{Considerations!Windows NTFS Naming }
-\addcontentsline{toc}{subsection}{Considerations sur le nommage Windows NTFS}
-
-Les noms de fichiers NTFS contenant des caract\`eres Unicode (i.e. \gt{} 0xFF) ne
-peuvent, pour le moment, \^etre nomm\'e eplicitement. Vous devez inclure de tels
-fichiers en d\'esignant un r\'epertoire de niveau sup\'erieur ou une lettre de disque
-ne contenant pas de caract\`ere Unicode.
-
-\subsection*{La ressource Client}
-\label{ClientResource2}
-\index[general]{Resource!Client }
-\index[general]{La ressource Client}
-\addcontentsline{toc}{subsection}{La ressource Client}
-
-La ressource Client d\'efinit les attributs des clients sauvegard\'es
-par ce Director. Il faut une ressource Client par machine sauvegard\'ee.
-
-\begin{description}
-
-\item [Client (ou FileDaemon)]
- \index[dir]{Client (ou FileDaemon)}
- \index[dir]{Directive!Client (or FileDaemon)}
- D\'ebut des directives Client.
-
-\item [Name = \lt{}name\gt{}]
- \index[dir]{Name}
- \index[dir]{Directive!Name}
-Le nom du client qui sera utilis\'e dans la directive Job de la ressource ou
-dans une commande run de la Console. Cette directive est requise.
-
-\item [Address = \lt{}address\gt{}]
- \index[dir]{Address}
- \index[dir]{Directive!Address}
- \index[dir]{File Daemon Address}
- \index[dir]{Client Address}
-L'adresse d'un File Daemon Bacula est un nom d'h\^ote, un nom pleinement qualifi\'e
-ou une adresse r\'eseau au format quatre octets point\'es. Cette directive est requise.
-
-\item [FD Port = \lt{}port-number\gt{}]
- \index[dir]{FD Port}
- \index[dir]{Directive!FD Port}
-O\`u le port est le num\'ero de port auquel le le File Daemon peut \^etre contact\'e.
-La valeur par d\'efaut est 9102.
-
-
-\item [Catalog = \lt{}Catalog-resource-name\gt{}]
- \index[dir]{Catalog}
- \index[dir]{Directive!Catalog}
-Cette directive sp\'ecifie le nom de la ressource catalog \`a utiliser pour ce
-client. Cette directive est requise.
-
-\item [Password = \lt{}password\gt{}]
- \index[dir]{Password}
- \index[dir]{Directive!Password}
-Il s'agit ici du mot de passe \`a utiliser lors de la connection avec le
-File Daemon, aussi le fichier de configuration de la machine \`a sauvegarder
-doit d\'efinir le m\^eme mot de passe pour \^etre connect\'e par ce Director.
-Cette directive est requise. Si vous disposez de {\bf /dev/random} ou de {\bf bc}
-sur votre machine, Bacula g\'en\`ere des mots de passe al\'eatoires lors du processus
-de configuration. Dans le cas contraire, le mot de passe est laiss\'e blanc.
-
-\label{FileRetention}
-
-\item [File Retention = \lt{}time-period-specification\gt{} ]
- \index[dir]{File Retention }
- \index[dir]{Directive!Password}
-La directive File Retention d\'efinit la p\'eriode pendant laquelle Bacula conservera
-les enregistrements File dans le catalogue. Lors de l'expiration de cette p\'eriode,
-si la directive {\bf AutoPrune} est active ({\bf yes}), Bacula \'elague le catalogue
-des enregistrements File dont l'âge est sup\'erieur \`a la p\'eriode de r\'etention.
-Notez que ceci n'affecte que les enregistrements du catalogue, et non vos
-sauvegardes archiv\'ees.
-
-Les enregistrements File peuvent en fait \^etre conserv\'es pour une p\'eriode inf\'erieure
-\`a celle affect\'ee \`a cette directive dans les cas o\`u vous avez sp\'ecifi\'e des p\'eriodes
-plus courtes pour les directives {\bf Job Retention} ou {\bf Volume Retention}.
-La plus courte des trois prend le pas sur les autres. Les dur\'ees peuvent \^etre exprim\'ees
-en secondes, minutes, heures, jours, semaines, mois, trimestres ou ann\'ees. Consultez
-le chapitre \ilink{Adapter les fichiers de configuration}{Time} de ce manuel pour plus de d\'etails sur les
-sp\'ecifications de dur\'ees.
-
-La valeur par d\'efaut est de 60 jours.
-\label{JobRetention}
-
-\item [Job Retention = \lt{}time-period-specification\gt{} ]
- \index[dir]{Job Retention}
- \index[dir]{Directive!Job Retention}
-La directive Job Retention d\'efinit la p\'eriode pendant laquelle Bacula conservera
-les enregistrements Job dans le catalogue. Lors de l'expiration de cette p\'eriode,
-si la directive {\bf AutoPrune} est active ({\bf yes}), Bacula \'elague le catalogue
-des enregistrements File dont l'âge est sup\'erieur \`a la p\'eriode de r\'etention.
-Notez que ceci n'affecte que les enregistrements du catalogue, et non vos
-sauvegardes archiv\'ees.
-
-Si un enregistrement de Job est s\'electionn\'e pour \'elagage, tous les enregistrements File
-et JobMedia associ\'es seront aussi \'elagu\'es du catalogue, sans qu'il ne soit tenu compte
-de la p\'eriode File Retention d\'efinie. Par cons\'equent, vous utiliserez, en principe,
-une p\'eriode File Retention inf\'erieure \`a la p\'eriode Job retention. La p\'eriode
-Job retention peut en fait s'av\'erer inf\'erieure \`a la valeur que vous avez sp\'ecifi\'ee
-si vous avez affect\'e une valeur inf\'erieure \`a la directive {\bf Volume Retention} dans
-la ressource Pool. Les p\'eriodes Job retention et Volume retention sont appliqu\'ees
-ind\'ependamment, la plus petite prend le pas sur l'autre.
-
-Les dur\'ees peuvent \^etre exprim\'ees
-en secondes, minutes, heures, jours, semaines, mois, trimestres ou ann\'ees. Consultez
-le chapitre \ilink{Adapter les fichiers de configuration}{Time} de ce manuel pour plus de d\'etails sur les
-sp\'ecifications de dur\'ees.
-
-La valeur par d\'efaut est 180 jours.
-\label{AutoPrune}
-
-\item [AutoPrune = \lt{}yes|no\gt{}]
- \index[dir]{AutoPrune}
- \index[dir]{Directive!AutoPrune}
-Si AutoPrune est r\'egl\'e \`a {\bf yes} (valeur par d\'efaut), Bacula (dans les versions au del\`a
-de 1.20) applique automatiquement les p\'eriodes File retention et Job retention pour le
-client \`a la fin du job. Si vous sp\'ecifiez {\bf AutoPrune = no}, l'\'elagage ne se fera pas
-et votre catalogue grossira \`a chaque job. L'\'elagage n'affecte que les donn\'ees du catalogue,
-et non les donn\'ees stock\'ees sur les volumes.
-
-\item [Maximum Concurrent Jobs = \lt{}number\gt{}]
- \index[dir]{Maximum Concurrent Jobs}
- \index[dir]{Directive!Maximum Concurrent Jobs}
-\lt{}number\gt{} d\'esigne le nombre maximum de jobs qui peuvent \^etre lanc\'es simultan\'ement
-sur le client concern\'e. Notez que cette directive ne limite que les jobs pour les clients
-qui ont le m\^eme nom que la ressource dans laquelle elle appara\^it. Toutes les autres restrictions
-du nombre maximum de jobs simultan\'es telles que celles sp\'ecifi\'ees dans les ressources
-Director, Job, ou Storage s'appliquent aussi en plus de toute limite fix\'ee ici. La valeur
-par d\'efaut est 1, mais vous pouvez sp\'ecifier une valeur plus grande. Nous recommandons
-fortement de lire les MISES EN GARDE de la section \ilink{ Maximum Concurrent
-Jobs}{DirMaxConJobs} du chapitre Configurer le Director.
-
-
-\item [Priority = \lt{}number\gt{}]
- \index[dir]{Priority}
- \index[dir]{Directive!Priority}
-\lt{}number\gt{} sp\'ecifie la priorit\'e de ce client par rapport aux autres clients
-que le Director sauvegarde simultan\'ement. La priorit\'e admet une valeur entre 1 et 1000.
-Les clients sont ordonn\'es de sorte que ceux dont la valeur de priorit\'e sont les plus petites
-sont trait\'es les premiers (Ceci n'est pas encore impl\'ement\'e).
-\end{description}
-
-Voici un exemple d'une d\'efinition de ressource Client valide :
-
-\footnotesize
-\begin{verbatim}
-Client {
- Name = Minimatou
- FDAddress = minimatou
- Catalog = MySQL
- Password = very_good
-}
-\end{verbatim}
-\normalsize
-
-\subsection*{La ressource Storage}
-\label{StorageResource2}
-\index[general]{Resource!Storage }
-\index[general]{Storage Resource }
-\addcontentsline{toc}{subsection}{Storage Resource}
-
-La ressource Storage d\'efinit les Storage Daemons disponibles pour le Director.
-
-\begin{description}
-
-\item [Storage]
- \index[dir]{Storage}
- \index[dir]{Directive!Storage}
-D\'ebut des ressources Storage. Il faut en sp\'ecifier au moins une.
-
-\item [Name = \lt{}name\gt{}]
- \index[dir]{Name}
- \index[dir]{Directive!Name}
-Le nom de la ressource Storage. Ce nom appara\^it au niveau de la directive
-Storage sp\'ecifi\'ee dans la ressource Job et est requise.
-
-\item [Address = \lt{}address\gt{}]
- \index[dir]{Address}
- \index[dir]{Directive!SD Address}
- \index[dir]{Storage daemon Address}
-O\`u l'adresse est un nom d'h\^ote, une {\bf adresse pleinement qualifi\'ee}, ou une
-{\bf adresse IP}. Notez bien que l'adresse sp\'ecifi\'ee ici sera transmise au
-File Daemon qui l'utilisera alors pour contacter le Storage Daemon. Aussi, ce
-n'est {\bf pas} une bonne id\'ee d'utiliser {\bf localhost} en tant que nom,
-il vaut mieux utiliser un nom de machine pleinement qualifi\'e, ou une adresse IP.
-Cette directive est requise.
-
-\item [SD Port = \lt{}port\gt{}]
- \index[dir]{SD Port}
- \index[dir]{Directive!SD Port}
-O\`u "port" est le port \`a utiliser pour contacter le Storage Daemon pour les
-informations et pour ex\'ecuter les jobs. Ce m\^eme num\'ero de port doit
-appara\^itre dans la ressource Storage du fichier de configuration du
-Storage Daemon. Le port par d\'efaut est 9103.
-
-\item [Password = \lt{}password\gt{}]
- \index[dir]{Password}
- \index[dir]{Directive!Password}
-Il s'agit du mot de passe \`a utiliser lors de l'\'etablissement de la connection
-avec les services Storage. Ce m\^eme mot de passe doit aussi appara\^itre dans la
-ressource Director du fichier de configuration du Storage Daemon. Cette
-directive est requise. Si vous avez soit {\bf /dev/random}, soit {\bf bc}
-sur votre machine, Bacula g\'en\`erera un mot de passe al\'eatoire lors du processus
-de configuration. Dans le cas contraire, ce champ sera laiss\'e blanc.
-
-\item [Device = \lt{}device-name\gt{}]
- \index[dir]{Device}
- \index[dir]{Directive!Device}
-Cette directive sp\'ecifie le nom (pour le Storage Daemon) du p\'eriph\'erique \`a
-utiliser pour le stockage.
-Ce nom n'est pas le nom de p\'eriph\'erique physique, mais le nom de p\'eriph\'erique
-logique qui a \'et\'e d\'efini par la directive {\bf Name} de la ressource {\bf Device}
-du fichier de configuration du Storage Daemon. Si le p\'eriph\'erique est une librairie, vous
-devez utiliser le nom d\'efini au niveau de la directive {\bf Name} d\'efini dans la d\'efinition
-de la ressource {\bf Autochanger} du Storage Daemon. Vous pouvez utiliser le nom de
-votre choix (y compris le nom de p\'eriph\'erique physique) \`a concurrence de
-127 caract\`eres. Le nom de p\'eriph\'erique physique associ\'e \`a ce p\'eriph\'erique est
-sp\'ecifi\'e dans le fichier de configuration du Storage Daemon
-(en tant qu'{\bf Archive Device}). Prenez garde \`a ne pas d\'efinir deux directives
-Storage Resource dans le Director qui pointent vers le m\^eme p\'eriph\'erique du
-Storage Daemon. Il pourrait en r\'esulter un blocage du Storage Daemon si celui-ci
-tente d'utiliser le m\^eme p\'eriph\'erique deux fois. Cette directive est requise.
-
-\item [Media Type = \lt{}MediaType\gt{}]
- \index[dir]{Media Type}
- \index[dir]{Directive!Media Type}
-Cette directive sp\'ecifie le type de m\'edia \`a utiliser pour stocker les donn\'ees.
-Il s'agit d'une cha\^ine de caract\`eres arbitraire n'exc\'edant pas 127 caract\`eres.
-Ce peut \^etre ce que vous voulez, cependant, il est pr\'ef\'erable de la choisir de
-mani\`ere \`a d\'ecrire le m\'edium de stockage utilis\'e (par exemple : Fichier, DAT,
-''HP DLT8000``, 8mm,...). D'autre part, il est esentiel d'avoir une sp\'ecification
-{\bf Media Type} unique pour chaque type de m\'edia de stockage. Si vous avez deux
-lecteurs DDS-4 avec des formats incompatibles et une librairie DDS-4, vous devriez
-certainement sp\'ecifier des {\bf Media Types} distincts. Lors d'une restauration,
-supposons qu'un Media Type {\bf DDS-4} est associ\'e avec le le job, Bacula peut
-d\'ecider d'utiliser tout Storage Daemon qui supporte le Media Type {\bf DDS-4} sur
-tout lecteur qui le supporte.
-
-Actuellement, Bacula n'autorise qu'un seul type de media. Par cons\'equent, si vous
-disposez d'un lecteur qui en supporte plusieurs, vous pouvez utiliser une cha\^ine
-unique pour d\'esigner les volumes de l'un ou l'autre type, par exemple Media Type = DDS-3-4
-pour les types DDS-3 et DDS-4, mais ces volumes ne seront mont\'es que sur les lecteurs
-sp\'ecifi\'es comme acceptant les deux types : DDS-3-4
-
-Si vous voulez contraindre Bacula \`a utiliser un
-seul Storage Daemon ou un seul lecteur, vous devez sp\'ecifier un Media Type unique
-pour ce lecteur. C'est un point important qui devrait \^etre bien compris. Notez que
-ceci s'applique \'egalement aux volumes disque. Si vous d\'efinissez plus d'une ressource
-Device disque dans votre fichier de configuration du Storage Daemon, les volumes sur ces
-deux devices seront en fait incompatibles car l'un ne pourra \^etre mont\'e sur l'autre
-puisqu'ils se trouvent dans des r\'epertoires diff\'erents. C'est pourquoi vous devriez
-probablement plut\^ot utiliser deux Media Types distincts pour vos deux devices disque
-(m\^eme si vous pensez \`a eux comme ayant l'un et l'autre le type File).
-
-Vous trouverez pus de d\'etails \`a ce sujet dans le chapitre
-\ilink{Gestion des volumes : fondements (NDT:basic volumes management)}
-{_ChapterStart39} de ce manuel.
-
-Le {\bf MediaType} sp\'ecifi\'e ici {\bf doit} correspondre au {\bf MediaType}
-sp\'ecifi\'e dans la ressource {\bf Device} du fichier de configuration du
-Storage Daemon. Cette directive est requise, et est utilis\'ee par le Director
-et le Storage Daemon pour s'assurer qu'un volume s\'electionn\'e automatiquement
-dans un Pool correspond \`a un p\'eriph\'erique physique. Si un Storage Daemon
-g\`ere plusieurs p\'eriph\'eriques (par exemple, s'il \'ecrit sur plusieurs volumes
-de type File sur diff\'erentes partitions), cette directive vous permet de
-pr\'eciser exactement quel p\'eriph\'erique utiliser.
-
-Comme mentionn\'e ci-dessus, la valeur sp\'ecifi\'ee dans la ressource Storage du
-Director doit s'accorder avec celle sp\'ecifi\'ee dans la ressource Device du
-fichier de configuration du Storage Daemon. Ceci repr\'esente aussi un contr\^ole
-suppl\'ementaire pour assurer que vous n'essayez pas d'\'ecrire les donn\'ees destin\'ees
-\`a un lecteur DLT sur un lecteur 8mm.
-
-\label{Autochanger1}
-
-\item [Autochanger = \lt{}yes|no\gt{} ]
- \index[dir]{Autochanger }
- \index[dir]{Directive!Autochanger}
-Si vous sp\'ecifiez {\bf yes} pour cette commande (la valeur par d\'efaut est {\bf no}),
-alors Bacula requ\'erira un num\'ero de Slot lorsque vous utiliserez les commandes
-{\bf label} et {\bf add} pour cr\'eer un nouveau volume. Ceci simplifie la cr\'eation
-des enregistrements de Volumes dans le catalogue si vous disposez d'une librairie.
-Si vous omettez de sp\'ecifier le Slot, la robotique ne sera pas utilis\'ee. Cependant,
-vous pouvez modifier le Slot associ\'e \`a un volume \`a tout moment grâce \`a la commande
-{\bf update volume} du programme Console. Lorqu'{\bf autochanger} est activ\'ee,
-l'algorithme utilis\'e par Bacula pour rechercher des volumes utilisables est
-modifi\'e de fa\c {c}on \`a prendre en compte tout volume suppos\'e contenu dans la librairie.
-Si aucun volume {\bf in changer} n'est trouv\'e, Bacula tente de recycler, \'elaguer...,
-et s'il ne trouve toujours aucun volume, Bacula recherche un volume pr\'esent ou non
-dans la librairie. Privil\'egier les volumes pr\'esents dans la librairie permet de
-minimiser les interventions d'un op\'erateur.
-
-Pour que la robotique soit utilis\'ee, vous devez aussi sp\'ecifier {\bf Autochanger = yes}
-dans la ressource \ilink{La Ressource Device}{Autochanger} du fichier de configuration du
-Storage Daemon, ainsi que d'autres param\`etres importants du Storage Daemon. Vous
-trouverez plus d'information \`a ce sujet dans le chapitre
-\ilink{ Utiliser une librairie}{_ChapterStart18} de ce manuel.
-
-\item [Maximum Concurrent Jobs = \lt{}number\gt{}]
- \index[dir]{Maximum Concurrent Jobs}
- \index[dir]{Directive!Maximum Concurrent Jobs}
-O\`u \lt{}number\gt{} est le nombre maximum de jobs utilisant la
-ressource Storage courante qui peuvent \^etre ex\'ecut\'es simultan\'ement. Notez que cette
-directive ne limite que les jobs qui utilisent ce Storage Daemon. Toute autre
-limitation du nombre maximum de jobs simultan\'es au niveau des ressources
-Director, Job ou Client est aussi appliqu\'ee en plus de celle fix\'ee ici. La valeur
-par d\'efaut est 1, mais vous pouvez utiliser une valeur plus importante. Nous vous
-recommandons fortement de lire les MISES EN GARDE de la section \ilink{ Maximum Concurrent
-Jobs}{DirMaxConJobs} du chapitre Configurer le Director.
-
-Alors qu'il est possible de d\'efinir des nombres maximum de jobs simultan\'es sup\'erieurs
-\`a 1 dans les ressource Director, Job et Client, vous devriez porter une attention
-particuli\`ere au param\'etrage de cette directive pour le Storage Daemon. En conservant
-la valeur 1, vous \'evitez que deux jobs \'ecrivent simultan\'ement sur le m\^eme volume ce qui,
-quoique support\'e, n'est pas recommand\'e actuellement.
-\end{description}
-
-Voici un exemple de ressource Storage valide :
-
-\footnotesize
-\begin{verbatim}
-# Definition of tape storage device
-Storage {
- Name = DLTDrive
- Address = lpmatou
- Password = storage_password # password for Storage daemon
- Device = "HP DLT 80" # same as Device in Storage daemon
- Media Type = DLT8000 # same as MediaType in Storage daemon
-}
-\end{verbatim}
-\normalsize
-
-\subsection*{La ressource Pool}
-\label{PoolResource}
-\index[general]{Resource!Pool }
-\index[general]{Pool Resource }
-\addcontentsline{toc}{subsection}{Pool Resource}
-La ressource Pool d\'efinit l'ensemble des volumes de stockage (cartouches ou fichiers)
-\`a la disposition de Bacula pour \'ecrire les donn\'ees. En configurant diff\'erents
-Pools, vous pouvez d\'eterminer quel ensemble de volumes (ou m\'edia) re\c {c}oit les
-donn\'ees sauvegard\'ees. Ceci permet, par exemple, de stocker toutes les sauvegardes
-Full sur un ensemble de volumes, et les sauvegardes diff\'erentielles et
-incr\'ementales sur un autre. De m\^eme, vous pouvez assigner un ensemble de volumes
-\`a chaque machine sauvegard\'ee. Tout ceci peut \^etre r\'ealis\'e ais\'ement en d\'efinissant
-plusieurs pools.
-
-Un autre aspect important d'un pool est qu'il contient des attributs par d\'efaut
-(Nombre maximum de jobs, p\'eriode de r\'etention, drapeau de recyclage,...) qui sont
-conf\'er\'es \`a tout volume lui appartenant lors de sa cr\'eation. Ceci vous \'evite d'avoir
-\`a r\'epondre \`a un grand nombre de questions lorsque vous \'etiquettez (label) un nouveau
-volume. Chacun de ces attributs peut ensuite \^etre modifi\'e sur chaque volume
-individuellement avec la commande {\bf update} du programme Console. Notez que
-vous devez pr\'eciser explicitement quel pool est \`a utiliser avec chaque job. Bacula
-ne recherche pas automatiquement le pool correct.
-
-Dans la plupart des installations de Bacula, toutes les sauvegardes de toutes
-les machines vont vers un unique jeu de volumes. Dans ce cas, vous n'utiliserez
-probablement que le pool par d\'efaut {\bf Default}. Si votre strat\'egie de
-sauvegarde vous impose \`a monter chaque jour une cartouche diff\'erente, vous voudrez
-probablement d\'efinir des pools distincts pour chaque jour. Pour plus d'informations
-\`a ce sujet, consultez le chapitre \ilink{Strat\'egies de sauvegarde}{_ChapterStart3}
-de ce manuel.
-
-Pour utiliser un pool, vous devez suivre trois \'etapes :
-
-D'abord, le pool doit
-\^etre d\'efini dans le fichier de configuration du Director. Ensuite le pool doit
-\^etre enregistr\'e dans le catalogue. Ceci est fait automatiquement par le Director
-\`a chaque fois qu'il d\'emarre, ou peut \^etre r\'ealis\'e manuellement \`a l'aide de la
-commande {\bf create} du programme Console. Enfin, si vous modifiez la d\'efinition
-du pool dans le fichier de configuration du Director et red\'emarrez Bacula,
-le pool sera mis \`a jour automatiquement, ce qui peut aussi \^etre r\'ealis\'e
-manuellement avec la commande {\bf update pool} du programme Console pour
-rafraichir l'image du catalogue. C'est cette image du catalogue plut\^ot
-que l'image de la ressource du Director qui est utilis\'ee pour les attributs
-de volume par d\'efaut. Notez que pour que le pool soit automatiquement
-cr\'e\'e ou mis \`a jour, il doit \^etre r\'ef\'erenc\'e explicitement par une ressource Job.
-
-Ensuite le m\'edium physique doit \^etre \'etiquett\'e. L'\'etiquettage peut \^etre r\'ealis\'e
-soit par la commande {\bf label} du programme Console, soit en utilisant le
-programme {\bf btape}. La m\'ethode \`a privil\'egier est la premi\`ere.
-
-Finallement, vous devez ajouter des noms de volumes (et leurs attributs) au
-pool. Pour que les volumes soient utilis\'es par Bacula, ils doivent \^etre
-du m\^eme {\bf Media Type} que l'Archive Device sp\'ecifi\'ee pour le job.
-(Autrement dit, si vous vous appr\'etez \`a sauvegarder vers un lecteur DLT,
-le pool doit contenir des volumes DLT, puisque des volumes 8mm ne peuvent
-\^etre mont\'es sur un lecteur DLT). Le {\bf Media Type} rev\^et une importance
-particuli\`ere si vous sauvegardez vers des fichiers. Lorsque vous ex\'ecutez
-un job, vous devez explicitement pr\'eciser le pool. Bacula s\'electionne d\`es lors
-automatiquement le prochain volume du pool \`a utiliser, en s'assurant que le
-{\bf Media Type} de tout volume s\'electionn\'e est bien celui requis par la
-ressource Storage sp\'ecifi\'ee pour le job.
-
-Si vous utilisez la commande {\bf label} du programme Console pour
-\'etiquetter les volumes, il sont automatiquement ajout\'es au pool, aussi cette
-derni\`ere \'etape n'est g\'en\'eralement pas requise.
-
-Il est aussi possible d'ajouter des volumes au catalogue sans avoir
-explicitement \'etiquett\'e les volumes physiques. Ceci s'effectue avec la commande
-{\bf add} du programme Console.
-
-Comme mentionn\'e plus haut, \`a chaque d\'emarrage, Bacula examine tous les pools
-associ\'es \`a chaque catalogue, et si un enregistrement n'existe pas encore, il
-est cr\'e\'e \`a partir de la d\'efinition du pool dans la ressource. Bacula devrait
-probablement effectuer un {\bf update pool} si vous modifiez la d\'efinition
-du pool mais, actuellement, vous devez le faire manuellement avec la
-commande {\bf update pool} du programme Console.
-
-La ressource Pool d\'efinie dans le fichier de configuration du Director peut
-contenir les directives suivantes :
-
-
-\begin{description}
-
-\item [Pool]
- \index[dir]{Pool}
- \index[dir]{Directive!Pool}
-D\'ebut de la ressource Pool. Il faut d\'efinir au moins une ressource Pool.
-
-\item [Name = \lt{}name\gt{}]
- \index[dir]{Name}
- \index[dir]{Directive!Name}
-Le nom du pool. Pour la plupart des applications, vous utiliserez le pool
-par d\'efaut nomm\'e {\bf Default}. Cette directive est requise.
-
-\item [Number of Volumes = \lt{}number\gt{}]
- \index[dir]{Number of Volumes }
-Cette directive sp\'ecifie le nombre de volumes (cartouches ou fichiers) contenus
-dans le pool. En principe, il est d\'efini et mis \`a jour automatiquement par la
-routine de maintenance du catalogue de Bacula.
-\label{MaxVolumes}
-
-\item [Maximum Volumes = \lt{}number\gt{}]
- \index[dir]{Maximum Volumes}
- \index[dir]{Directive!Maximum Volumes}
-Cette directive sp\'ecifie le nombre maximum de volumes contenus dans le pool.
-Cette directive est optionnelle. Si elle est omise ou r\'egl\'ee \`a 0, tout nombre
-de volumes est permis. En g\'en\'eral, cette directive est utile pour les librairies,
-o\`u il y a un nombre fix\'e de volumes, ou pour le stockage sur fichier si vous voulez
-vous assurer que les sauvegardes sur disque ne deviennent pas trop nombreuses ou ne
-consomment pas trop d'espace.
-
-\item [Pool Type = \lt{}type\gt{}]
- \index[dir]{Pool Type }
- \index[dir]{Directive!Pool Type}
-Cette directive d\'efinit le type du pool, qui correspond au type du job
-ex\'ecut\'e. Cette directive est requise et peut prendre l'une des valeurs suivantes :
-
-\begin{itemize}
-\item [Backup]
-\item [*Archive]
-\item [*Cloned]
-\item [*Migration]
-\item [*Copy]
-\item [*Save]
- \end{itemize}
-
-\item [Use Volume Once = \lt{}yes|no\gt{}]
- \index[dir]{Use Volume Once}
- \index[dir]{Directive!Use Volume Once}
-Cette directive, si elle est active (valeur {\bf yes}) stipule que chaque volume
-ne doit \^etre utilis\'e qu'une seule fois. C'est particuli\`erement utile si le
-volume est un fichier et si vous voulez un nouveau fichier pour chaque nouvelle
-sauvegarde. La valeur par d\'efaut est {\bf no} (autrement dit, les volumes peuvent
-\^etre utilis\'es plusieurs fois). Cette directive sera tr\`es certainement bient\^ot
-obsol\`ete, aussi nous vous recommandons d'utiliser {\bf Maximum Volume Jobs = 1}
-\`a la place.
-
-La valeur d\'efinie par cette directive dans le fichier de
-configuration du Director est la valeur par d\'efaut utilis\'ee lorsqu'un nouveau
-volume est cr\'e\'e. Modifier la valeur dans le fichier de configuration ne changera
-pas ce qui est stock\'e sur le volume. Pour changer cette valeur pour un volume
-existant, vous devez utiliser la commande {\bf update} du programme Console.
-
-\item [Maximum Volume Jobs = \lt{}positive-integer\gt{}]
- \index[dir]{Maximum Volume Jobs}
- \index[dir]{Directive!Maximum Volume Jobs}
-Cette directive sp\'ecifie le nombre maximum de jobs qui peuvent \^etre \'ecrits sur le volume.
-La valeur par d\'efaut est z\'ero, ce qui signifie que le nombre de jobs sur un volume
-n'est pas limit\'e. Sinon, lorsque le nombre de jobs sauvegard\'es sur le volume atteint
-la valeur {\bf positive-integer} sp\'ecifi\'ee, le volume est marqu\'e {\bf Used}. D\`es lors,
-il ne peut plus \^etre utilis\'e pour y ajouter des jobs, tout comme dans le cas d'un volume
-avec le statut {\bf Full}, mais il peut \^etre recycl\'e si le recyclage est activ\'e. En
-sp\'ecifiant {\bf MaximumVolumeJobs = 1} vous obtenez le m\^eme effet que celui que vous
-obtiendriez avec {\bf UseVolumeOnce = yes}.
-
-Notez que la valeur d\'efinie par cette directive dans le fichier de configuration du
-Director est la valeur par d\'efaut utilis\'ee lors de la cr\'eation d'un volume. Une fois
-le volumes cr\'e\'e, modifier la valeur dans le fichier de configuration ne changera
-pas ce qui est stock\'e sur le volume. Pour changer cette valeur pour un volume
-existant, vous devez utiliser la commande {\bf update} du programme Console.
-
-\item [Maximum Volume Files = \lt{}positive-integer\gt{}]
- \index[dir]{Maximum Volume Files}
- \index[dir]{Directive!Maximum Volume Files}
-Cette directive sp\'ecifie le nombre maximum de fichiers qui peuvent \^etre \'ecrits sur
-le volume. La valeur par d\'efaut est z\'ero, ce qui signifie que le nombre de fichiers
-sur un volume n'est pas limit\'e. Sinon, lorsque le nombre de fichiers sauvegard\'es sur
-le volume atteint la valeur {\bf positive-integer} sp\'ecifi\'ee, le volume est marqu\'e
-{\bf Used}. D\`es lors, il ne peut plus \^etre utilis\'e pour y ajouter des jobs, tout comme
-dans le cas d'un volume avec le statut {\bf Full}, mais il peut \^etre recycl\'e si le
-recyclage est activ\'e. Ce n'est qu'\`a la fin d'un job que Cette valeur est control\'ee,
-et que le statut du volume est \'eventuellement chang\'e en {\bf Used}.
-
-La valeur d\'efinie par cette directive dans le fichier de configuration du
-Director est la valeur par d\'efaut utilis\'ee lors de la cr\'eation d'un volume. Une fois
-le volumes cr\'e\'e, modifier la valeur dans le fichier de configuration ne changera
-pas ce qui est stock\'e sur le volume. Pour changer cette valeur pour un volume
-existant, vous devez utiliser la commande {\bf update} du programme Console.
-
-\item [Maximum Volume Bytes = \lt{}size\gt{}]
- \index[dir]{Maximum Volume Bytes}
- \index[dir]{Directive!Maximum Volume Bytes}
-Cette directive sp\'ecifie le nombre maximum d'octets qui peuvent \^etre \'ecrits sur le
-volume. La valeur par d\'efaut est z\'ero, ce qui signifie qu'il n'y a d'autre limite
-que la capacit\'e physique du volume. Sinon, lorsque le nombre d'octets sauvegard\'es sur
-le volume atteint la valeur {\bf size} sp\'ecifi\'ee, le volume est marqu\'e
-{\bf Used}. D\`es lors, il ne peut plus \^etre utilis\'e pour y ajouter des jobs, tout comme
-dans le cas d'un volume avec le statut {\bf Full}, mais il peut \^etre recycl\'e si le
-recyclage est activ\'e. Ce n'est qu'\`a la fin d'un job que Cette valeur est control\'ee,
-et que le statut du volume est \'eventuellement chang\'e en {\bf Used}.
-
-La valeur d\'efinie par cette directive dans le fichier de configuration du
-Director est la valeur par d\'efaut utilis\'ee lors de la cr\'eation d'un volume. Une fois
-le volumes cr\'e\'e, modifier la valeur dans le fichier de configuration ne changera
-pas ce qui est stock\'e sur le volume. Pour changer cette valeur pour un volume
-existant, vous devez utiliser la commande {\bf update} du programme Console.
-
-\item [Volume Use Duration = \lt{}time-period-specification\gt{}]
- \index[dir]{Volume Use Duration}
- \index[dir]{Directive!Volume Use Duration}
-Cette directive d\'efinit la p\'eriode durant laquelle le volume peut \^etre utilis\'e en
-\'ecriture, \`a compter de la premi\`ere op\'eration d'\'ecriture de donn\'ees.
-La valeur par d\'efaut est z\'ero, ce qui signifie que le volume peut \^etre \'ecrit
-ind\'efiniment . Sinon, lorsque la dur\'ee depuis la premi\`ere \'ecriture exc\`ede la p\'eriode
-{\bf time-period-specification} sp\'ecifi\'ee, le volume est marqu\'e
-{\bf Used}. D\`es lors, il ne peut plus \^etre utilis\'e pour y ajouter des jobs, tout comme
-dans le cas d'un volume avec le statut {\bf Full}, mais il peut \^etre recycl\'e si le
-recyclage est activ\'e. L'usage de la commande {\bf status dir} applique des algorithmes
-similaires \`a l'\'execution de jobs, aussi lors d'une telle commande, le statut du volume
-peut \^etre modifi\'e. Lorsque le volume est recycl\'e, il peut \`a nouveau \^etre utilis\'e.
-
-Vous pourriez utiliser cette directive, par exemple, si vous avez un volume d\'edi\'e
-aux sauvegardes incr\'ementales, et un volume d\'edi\'e aux Fulls hebdomadaires. Une fois que
-la Full est pass\'ee, vous pouvez pr\'ef\'erer utiliser un autre volume pour les incr\'ementales.
-Ceci peut \^etre accompli en r\`eglant la p\'eriode {\bf Volume Use Duration} \`a six jours pour
-les volumes des incr\'ementales. Autrement dit, celui-ci sera utilis\'e durant les six jours
-qui suivent une full, puis un autre volume d'incr\'ementales sera utilis\'e. Veillez \`a utiliser
-des p\'eriodes relativement courtes telles que 23 heures, ou vous pourriez placer Bacula en situation
-de devoir attendre tout un week-end le montage d'une cartouche par l'op\'erateur pour pouvoir terminer
-une sauvegarde.
-
-Ce n'est qu'\`a la fin d'un job que Cette valeur est control\'ee,
-et que le statut du volume est \'eventuellement chang\'e en {\bf Used}, ce qui signifie que
-bien que la p\'eriode {\bf Volume Use Duration} puisse avoir expir\'e, l'entr\'ee correspondante
-du catalogue ne sera pas mise \`a jour jusqu'\`a ce que le prochain job utilisant ce
-volume soit ex\'ecut\'e.
-
-La valeur d\'efinie par cette directive dans le fichier de configuration du
-Director est la valeur par d\'efaut utilis\'ee lors de la cr\'eation d'un volume. Une fois
-le volumes cr\'e\'e, modifier la valeur dans le fichier de configuration ne changera
-pas ce qui est stock\'e sur le volume. Pour changer cette valeur pour un volume
-existant, vous devez utiliser la commande \ilink{\bf update volume}{UpdateCommand} du
-programme Console.
-
-\item [Catalog Files = \lt{}yes|no\gt{}]
- \index[dir]{Catalog Files}
- \index[dir]{Directive!Catalog Files}
-Cette directive pr\'ecise si les noms des fichiers sauvegard\'es doivent ou non \^etre
-enregistr\'es dans le catalogue. La valeur par d\'efaut est {\bf yes}. L'avantage de
-d\'esactiver cette option ({\bf Catalog Files = No}) est d'avoir un catalogue
-significativement plus petit. L'inconv\'enient est de ne pas pouvoir produire de
-liste des fichiers sauvegard\'es pour chaque job \`a partir du catalogue (autrement
-dit, vous ne pourrez naviguer dans les fichiers sauvegard\'es). Ainsi, sans les
-enregistrements de fichiers, vous ne pourrez utiliser la commande {\bf restore},
-ni aucune des autres commandes du programme Console qui se r\'ef\`erent aux
-enregistrements de fichiers.
-
-\label{PoolAutoPrune}
-
-\item [AutoPrune = \lt{}yes|no\gt{}]
- \index[dir]{AutoPrune}
- \index[dir]{Directive!AutoPrune}
-Si AutoPrune est activ\'ee ({\bf yes}), ce qui est le cas par d\'efaut, Bacula
-(depuis la version 1.20) applique automatiquement la p\'eriode de r\'etention des
-volumes lorsqu'un nouveau volumes est requis ou lorsqu'il n'existe aucun volume
-utilisable dans le pool. L'\'elagage des volumes consiste \`a supprimer du catalogue
-les jobs expir\'es (ceux qui sont plus anciens que la p\'eriode de r\'etention), et rend
-possible le recyclage de ces volumes
-
-\label{VolRetention}
-
-\item [Volume Retention = \lt{}time-period-specification\gt{}]
- \index[dir]{Volume Retention}
- \index[dir]{Directive!Volume Retention}
-La directive Volume Retention d\'efinit la p\'eriode durant laquelle {\bf Bacula}
-conserve les enregistrements Job associ\'es au volume dans le catalogue.
-Lors de l'expiration de cette p\'eriode, si {\bf AutoPrune} est activ\'ee, Bacula
-peut supprimer les enregistrements Job plus anciens que la p\'eriode {\bf time-period-specification}
-sp\'ecifi\'ee s'il est n\'ecessaire de lib\'erer un volume. Tous les enregistrements de fichiers
-associ\'es \`a des jobs supprim\'es sont aussi supprim\'es. Les dur\'ees peuvent \^etre exprim\'ees
-en secondes, minutes, heures, jours, semaines, mois, trimestres ou ann\'ees.
-La p\'eriode {\bf Volume Retention} s'applique ind\'ependamment des p\'eriodes {\bf Job Retention}
-et {\bf File Retention} d\'efinies dans la ressource Client. Ceci signifie que la
-p\'eriode la plus courte est celle qui s'applique.Notez bien que lorsque la p\'eriode
-{\bf Volume Retention} a \'et\'e atteinte les enregistrements de Job et ceux de fichiers
-sont supprimm\'es les uns et les autres.
-Cet \'elagage peut aussi se produire \`a l'ex\'ecution de la commande {\bf status dir} car elle
-applique des algorithmes similaires \`a ceux utilis\'es pour d\'eterminer le prochain volume
-disponible.
-
-Il est important de savoir que lorsque la p\'eriode Volume Retention expire,
-Bacula ne recycle pas syst\'ematiquement le volume concern\'e. Il tente de conserver
-les donn\'ees intactes aussi longtemps que possible avant d'\'ecrire sur ce volume.
-
-La valeur par d\'efaut est 365 jours. Notez que cette directive r\`egle la valeur par
-d\'efaut pour chaque enregistrement de volume du catalogue lorsque le volume
-est cr\'e\'e. Cette valeur du catalogue peut ensuite \^etre modifi\'ee avec la commande
-{\bf update } du programme Console.
-
-En d\'efinissant plusieurs pools avec diff\'erentes p\'eriodes de r\'etention (volume
-retention), vous pouvez efficacement g\'erer vos cartouches avec, par exemple
-un pool de cartouches recycl\'e chaque semaine, un autre recycl\'e chaque mois, et
-ainsi de suite. Cependant, il faut bien garder \`a l'esprit que si votre p\'eriode
-de r\'etention {\bf Volume Retention} est trop courte, il peut arriver que votre
-derni\`ere sauvegarde Full valide soit supprim\'ee, de sorte que vous n'ayez plus
-une sauvegarde compl\`ete de votre syst\`eme, et que votre prochaine incr\'ementale
-soit \'elev\'ee en une Full. Par cons\'equent, la valeur minimum de la p\'eriode
-{\bf Volume Retention} devrait \^etre au moins le double de l'intervalle
-s\'eparant vos Fulls. Autrement dit, pour des Fulls mensuelles, la p\'eriode
-{\bf Volume Retention} devrait \^etre sup\'erieure ou \'egale \`a deux mois.
-
-Notez que la valeur d\'efinie par cette directive dans le fichier de configuration du
-Director est la valeur par d\'efaut utilis\'ee lors de la cr\'eation d'un volume. Une fois
-le volumes cr\'e\'e, modifier la valeur dans le fichier de configuration ne changera
-pas ce qui est stock\'e sur le volume. Pour changer cette valeur pour un volume
-existant, vous devez utiliser la commande {\bf update} du programme Console.
-
-\label{PoolRecycle}
-
-\item [Recycle = \lt{}yes|no\gt{}]
- \index[dir]{Recycle}
- \index[dir]{Directive!Recycle}
-Cette directive sp\'ecifie la valeur par d\'efaut pour le recyclage des volumes purg\'es.
-Si elle est activ\'ee ({\bf yes}) et si Bacula a besoin d'un volume mais n'en trouve
-aucun utilisable, il recherche alors les volumes purg\'es (c'est \`a dire ceux dont tous
-les jobs et fichiers ont expir\'e et ont, de fait, \'et\'e supprim\'es du catalogue). Si un
-volume est recycl\'e, toutes les donn\'ees pr\'ecedemment \'ecrites sur ce volumes seront
-\'ecras\'ees. Si le recyclage est d\'esactiv\'e ({\bf no}), le volume ne sera pas recycl\'e, et ainsi
-les donn\'ees resteront valides. Si vous souhaitez r\'eutiliser un volume dont le drapeau de
-recyclage est no (0 dans le catalogue), vous devez manuellement le changer en yes (commande
-update).
-
-Notez que la valeur d\'efinie par cette directive dans le fichier de configuration du
-Director est la valeur par d\'efaut utilis\'ee lors de la cr\'eation d'un volume. Une fois
-le volumes cr\'e\'e, modifier la valeur dans le fichier de configuration ne changera
-pas ce qui est stock\'e sur le volume. Pour changer cette valeur pour un volume
-existant, vous devez utiliser la commande {\bf update} du programme Console.
-
-\label{RecycleOldest}
-
-\item [Recycle Oldest Volume = \lt{}yes|no\gt{}]
- \index[dir]{Recycle Oldest Volume}
- \index[dir]{Directive!Recycle Oldest Volume}
-Cette directive indique au Director de rechercher le volume le plus ancien
-du pool lorsq'un nouveau est requis par le Storage Daemon et qu'aucun autre
-n'est disponible. Le catalog est alors {\bf \'elagu\'e} dans le respect des
-p\'eriodes {\bf Job}, {\bf File} et {\bf Volume Retention}, c'est pourquoi cette
-directive est, de {\bf tr\`es} loin, pr\'ef\'erable \`a directive Purge Oldest Volume.
-
-Cette directive peut \^etre utile si vous avez un nombre fixe de volumes dans
-un pool et que vous voulez cycler sur ces volumes apr\`es avoir sp\'ecifi\'e
-les p\'eriodes de r\'etention qui conviennent.
-
-\label{RecycleCurrent}
-
-\item [Recycle Current Volume = \lt{}yes|no\gt{}]
- \index[dir]{Recycle Current Volume}
- \index[dir]{Directive!Recycle Current Volume}
-Si Bacula a besoin d'un nouveau volume, cette directive lui indique d'\'elaguer
-le volume dans le respect des p\'eriodes {\bf Job}, {\bf File} et
-{\bf Volume Retention}. Si tous les jobs sont \'elagu\'es, (c'est \`a dire si le
-volume est purg\'e), alors le volume est recycl\'e et sera utilis\'e pour la
-prochaine op\'eration d'\'ecriture. Cette directive respecte toutes les
-p\'eriodes {\bf Job}, {\bf File} et {\bf Volume Retention}, c'est pourquoi
-elle est , de {\bf tr\`es} loin, pr\'ef\'erable \`a la directive Purge Oldest Volume.
-
-Cette directive peut \^etre utile si vous avez un nombre fixe de volumes dans
-un pool et que vous voulez cycler sur ces volumes apr\`es avoir sp\'ecifi\'e
-les p\'eriodes de r\'etention qui \'elaguent les volumes avant que vous n'ayez
-termin\'e le cycle sur les volumes.
-
-\label{PurgeOldest}
-
-\item [Purge Oldest Volume = \lt{}yes|no\gt{}]
- \index[dir]{Purge Oldest Volume}
- \index[dir]{Directive!Purge Oldest Volume}
-Cette directive indique au Director de rechercher le volume utilis\'e le plus
-ancien dans le pool lorsqu'un nouveau volume est requis par le Storage
-Daemon et qu'aucun n'est disponible. Le catalogue est alors purg\'e sans
-\'egards pour les p\'eriodes de r\'etention des fichiers et jobs \'ecrits sur ce
-volume. Le volume est alors recycl\'e pour \^etre utilis\'e pour la prochaine
-op\'eration d'\'ecriture. Cette directive outrepasse toute p\'eriode de r\'etention
-(Job, File, ou Volume) que vous avez pu sp\'ecifier par ailleurs.
-
-Cette directive peut \^etre utile si vous avez un nombre fixe de volumes dans
-un pool et que vous voulez cycler sur ces volumes lorsque tous les volumes
-sont pleins, sans avoir \`a vous soucier de param\'etrer les p\'eriodes de
-r\'etentions qui conviendraient. Cependant, en l'utilisant, vous courrez le
-risque de perdre toutes vos donn\'ees.
-
-{\bf Soyez conscient que {\bf Purge Oldest Volume} ne fait aucun cas d'aucune
-p\'eriode de r\'etention.} Si vous activez cette directive alors que vous ne poss\'edez
-qu'un seul volume, ce volume sera syst\'ematiquement \'ecras\'e tout de suite apr\`es
-avoir \'et\'e rempli ! Aussi, assurez vous au moins d'avoir un nombre d\'ecent de
-volumes dans votre pool avant d'ex\'ecuter un job. Si vous voulez que les p\'eriodes
-de r\'etention soient prises en compte, n'utilisez pas cette directive. Pour
-sp\'ecifier une p\'eriode de r\'etention, utilisez la directive {\bf Volume Retention}
-(voir ci dessus).
-
-Je recommande fortement de ne pas utiliser cette directive, car il est certain que
-t\^ot ou tard, Bacula recyclera un volume contenant des donn\'ees valides et r\'ecentes.
-La valeur par d\'efaut est {\bf no}
-
-\item [Cleaning Prefix = \lt{}string\gt{}]
- \index[dir]{Cleaning Prefix}
- \index[dir]{Directive!Cleaning Prefix}
-Cette directive d\'efinit un pr\'efixe qui, s'il correspond au d\'ebut du nom d'un
-volume lors de son \'etiquettage, indique \`a Bacula que le volume en question est
-une cartouche de nettoyage, qui aura le statut {\bf VolStatus = Cleaning}.
-Ainsi Bacula ne tentera jamais d'utiliser cette cartouche. Cette option est
-particuli\`erement utile avec les librairies \'equip\'ees de lecteurs de codes barres o\`u,
-conventionnellement, les codes barres commen\c {c}nt par {\bf CLN} sont trait\'es en
-tant que cartouches de nettoyage.
-
-\label{Label}
-
-\item [Label Format = \lt{}format\gt{}]
- \index[dir]{Label Format}
- \index[dir]{Directive!Label Format}
-Cette directive pr\'ecise le format des \'etiquettes des volumes de ce pool.
-La directive {\bf Format} est utilis\'ee comme un patron pour cr\'eer de nouveaux
-noms de volumes lors de l'\'etiquettage automatique.
-
-Le {\bf format} devrait \^etre sp\'ecifi\'e entre guillemets, et consiste en une
-cha\^ine de lettres, chiffres et caract\`eres sp\'eciaux tiret ({\bf -}), soulign\'e
-({\bf \_}), double point ({\bf :}) et point ({\bf .}), qui sont consid\'er\'es valides
-pour un nom de volume.
-
-De plus, le {\bf format} peut comporter des caract\`eres variables qui seront
-substitu\'ees par un algorithme complexe, ce qui permet de cr\'eer des noms de volumes
-avec plusieurs formats diff\'erents. En tous les cas, le processus d'expansion des
-variables doit aboutir au jeu de caract\`eres d\'efinis comme l\'egaux dans le
-dernier paragraphe. G\'en\'eralement, ces caract\`eres variables commencent par
-un signe dollar ({\bf \$}) ou un crochet droit ({\bf [}). Si vous sp\'ecifiez
-des caract\`eres variables vous devriez toujours les encadrer de guillemets.
-Pour plus de d\'etails sur ce sujet, veuillez consulter le chapitre
-\ilink{Variable Expansion}{_ChapterStart50} de ce manuel.
-
-Si aucun caract\`ere variable n'est d\'ecouvert dans la cha\^ine, le nom de volume
-sera constitu\'e de la cha\^ine {\bf format} suffix\'ee du nombre de volumes dans le
-pool plus un, au format 4 chiffres et avec des z\'eros en t\^ete. Par exemple,
-avec {\bf Label Format = ''File-``}, les volumes seront nomm\'es
-{\bf File-0001}, {\bf File-0002}, ...
-
-Exception faite des variables sp\'ecifiques aux jobs, vous pouvez tester votre
-{\bf LabelFormat} en utilisant la section \ilink{ var command}{var} du
-chapitre Console de ce manuel.
-
-Dans la plupart des cas, vous devriez encadrer la sp\'ecification de format (la
-partie \`a droite du signe \'egale) entre guillemets. Notez que cette directive est
-obsol\`ete et qu'elle est remplac\'ee, \`a partir de la version 1.37 par un script Python
-pour la cr\'eation des noms de volumes.
-
-\end{description}
-
-Pour qu'un pool puisse \^etre utilis\'e lors d'une sauvegarde, il faut qu'il lui soit
-associ\'e au moins un volume. Les volumes sont cr\'e\'es et affect\'es aux pools avec les
-commandes {\bf label} ou {\bf add} du programme {\bf Bacula Console}. Outre
-l'affectation du volume au pool (c'est \`a dire son r\'ef\'erencement
-dans le catalogue), le volume physique doit recevoir une \'etiquette logicielle
-valide pour que Bacula l'accepte. Ceci peut \^etre r\'ealis\'e automatiquement grâce
-\`a la commande {\bf label}. D'autre part, Bacula peut effectuer cette op\'eration
-automatiquement si l'instruction lui en est donn\'e, mais cette fonctionnalit\'e
-n'est pas encore pleinement impl\'ement\'ee.
-
-Voici un exemple d'une d\'efinition de ressource Pool valide :
-
-\footnotesize
-\begin{verbatim}
-
-Pool {
- Name = Default
- Pool Type = Backup
-}
-\end{verbatim}
-\normalsize
-
-\subsubsection*{Le Scratch Pool}
-\addcontentsline{toc}{subsection}{Scratch Pool}
-\index[general]{Scratch Pool}
-En g\'en\'eral, vous pouvez nommer vos pool \`a votre guise, il existe cependant
-une importante restriction : le pool nomm\'e {\bf Scratch}, s'il existe,
-se comporte comme une r\'eserve de volumes o\`u Bacula pourra puiser s'il ne trouve
-aucun volume utilisable dans le pool normalement utilis\'e par le job. Le volume
-est alors d\'eplac\'e du pool Scratch vers le pool en d\'efaut.
-
-\subsection*{La ressource Catalog}
-\label{CatalogResource}
-\index[general]{Resource!Catalog }
-\index[general]{Ressource Catalog}
-\addcontentsline{toc}{subsection}{La ressource Catalog}
-
-La ressource Catalog pr\'ecise quel catalogue utiliser pour le job courant.
-Actuellement, Bacula ne peut utiliser qu'un type de serveur de bases de
-donn\'ees d\'efini lors de sa configuration : SQLite, MySQL, PostgreSQL.
-En revanche, vous pouvez utiliser autant de
-catalogues que vous le souhaitez. Par exemple, vous pouvez avoir un
-catalogue par client, ou encore un catalogue pour les sauvegardes, un autre
-pour les jobs de type Verify et un troisi\`eme pour les restaurations.
-
-\begin{description}
-
-\item [Catalog]
- \index[dir]{Catalog}
- \index[dir]{Directive!Catalog}
-D\'ebut de la ressource Catalog. Il faut au moins une ressource Catalogue.
-
-\item [Name = \lt{}name\gt{}]
- \index[dir]{Name}
- \index[dir]{Directive!Name}
-Le nom du Catalog. Il n'a pas besoin d'\^etre en relation avec le nom sur le serveur
-de base de donn\'ees. Ce nom sera repris dans la ressource Client, indiquant ainsi
-que toutes les donn\'ees relatives \`a ce client sont maintenues dans ce catalogue.
-Cette directive est requise.*
-
-
-\item [password = \lt{}password\gt{}]
- \index[dir]{password}
- \index[dir]{Directive!password}
-Cette directive sp\'ecifie le mot de passe \`a utiliser pour se connecter au
-catalogue. Cette directive est requise.
-
-\item [DB Name = \lt{}name\gt{}]
- \index[dir]{DB Name}
- \index[dir]{Directive!DB Name}
-Cette directive sp\'ecifie le nom de la base de donn\'ees. Si vous utilisez plusieurs
-catalogues, vous sp\'ecifiez lequel ici. Si vous utilisez un serveur de bases de
-donn\'ees externe plut\^ot que l'int\'egr\'e, vous devez sp\'ecifier un nom connu du
-serveur (autrement dit, le nom que vous avez utilis\'e lorsque vous avez cr\'e\'e les
-tables Bacula.). Cette directive est requise.
-
-\item [user = \lt{}user\gt{}]
- \index[dir]{user}
- \index[dir]{Directive!user}
-L'utilisateur habilit\'e \`a se connecter au catalogue. Cette directive est requise.
-
-\item [DB Socket = \lt{}socket-name\gt{}]
- \index[dir]{DB Socket}
- \index[dir]{Directive!DB Socket}
-Il s'agit du nom d'un {\it socket} \`a utiliser sur la machine locale pour se
-connecter au catalogue. Cette directive n'est utilis\'ee que par MySQL, elle est
-ignor\'ee par SQLite. Normalement, si ni {\bf DB Socket}, ni {\bf DB Address} ne sont
-sp\'ecifi\'ees, MySQL utilise le socket par d\'efaut.
-
-\item [DB Address = \lt{}address\gt{}]
- \index[dir]{DB Address}
- \index[dir]{Directive!DB Address}
-Il s'agit de l'adresse du serveur de bases de donn\'ees. En principe, vous
-utiliserez cette directive plut\^ot que {\bf DB Socket} si le serveur de bases de
-donn\'ees est une autre machine. Dans ce cas, vous sp\'ecifierez aussi le port {\bf DB Port}.
-Cette directive n'est utilis\'ee que par MySQL, et ignor\'ee par SQLite. Elle est
-optionnelle.
-
-\item [DB Port = \lt{}port\gt{}]
- \index[dir]{DB Port}
- \index[dir]{Directive!DB Port}
-Cette directive d\'efinit le port \`a utiliser en conjonction avec {\bf DB Address} pour
-acc\'eder au catalogue s'il est h\'eberg\'e sur une autre machine. Elle n'est utilis\'ee que par
- MySQL, et ignor\'ee par SQLite. Elle est optionnelle.
-
-%% \item [Multiple Connections = \lt{}yes|no\gt{}]
-%% \index[dir]{Multiple Connections}
-%% \index[dir]{Directive!Multiple Connections}
-%% Par d\'efaut, cette directive est d\'esactiv\'ee, ce qui implique que tous les jobs utilisant
-%% le m\^eme catalogue se partagent une m\^eme connection au catalogue, et que Bacula n'autorise
-%% qu'un job \`a la fois \`a communiquer. Si vous activez cette directive ({\bf yes}), Bacula
-%% permettra les connection multiples au catalogue, c'est pourquoi la base de donn\'ees
-%% doit supporter le {\it multi thread}. Pour SQLite et PostgreSQL, ce n'est pas un probl\`eme.
-%% Pour MySQL, vous devez vous assurer {\bf attentivement} d'avoir la version {\it multi thread}
-%% de la librairie cliente sur votre syst\`eme. Une fois cette directive activ\'ee, chaque job
-%% disposera de sa propre connection au catalogue, la base de donn\'ees contr\^olant les interactions
-%% entre les diff\'erents jobs. Ceci peut accro\^itre significativement les op\'erations de la
-%% base de donn\'ees si vous ex\'ecutez plusieurs jobs simultan\'es. De plus, pour SQLite et PostgreSQL,
-%% Bacula activera automatiquement les transactions dans la base de donn\'ees. Ceci peut accro\^itre
-%% significativement les insertions d'attributs dans le catalogue, que ce soit pour un job unique
-%% ou pour plusieurs jobs simultan\'es.
-
-%% Cette directive n'a pas \'et\'e test\'ee. Veuillez, s'il vous pla\^it, la tester scrupuleusement avant
-%% de l'activer en production, et nous fournir un retour de vos tests.
-
-\end{description}
-
-Voici un exemple d'une d\'efinition de ressource Catalog valide :
-
-\footnotesize
-\begin{verbatim}
-Catalog
-{
- Name = SQLite
- dbname = bacula;
- user = bacula;
- password = "" # no password = no security
-}
-\end{verbatim}
-\normalsize
-
-en voici une deuxi\`eme pour un catalogue sur une autre machine :
-
-\footnotesize
-\begin{verbatim}
-Catalog
-{
- Name = MySQL
- dbname = bacula
- user = bacula
- password = ""
- DB Address = remote.acme.com
- DB Port = 1234
-}
-\end{verbatim}
-\normalsize
-
-\subsection*{La ressource Messages}
-\label{MessagesResource2}
-\index[general]{Resource!Messages }
-\index[general]{Messages Ressource }
-\addcontentsline{toc}{subsection}{Messages Resource}
-
-Pour les d\'etails sur la ressource Messages, veuillez consulter
-le chapitre \ilink{La ressource Messages}{_ChapterStart15} de ce manuel.
-
-\subsection*{La ressource Console}
-\label{ConsoleResource1}
-\index[general]{Console Resource }
-\index[general]{Resource!Console }
-\addcontentsline{toc}{subsection}{Console Resource}
-
-A partir de la version 1.33 de Bacula, l'administrateur dispose de trois sortes de
-consoles diff\'erentes pour interagir avec le Director. Ces trois types de consoles
-comportent trois niveaux de s\'ecurit\'e diff\'erents.
-
-\begin{itemize}
-\item Le premier type de console est une console {\bf anonyme} ou {\bf par d\'efaut},
- qui d\'etient tous les privil\`eges. La ressource Console n'est pas requise pour
- ce type puisque le mot de passe est sp\'ecifi\'e dans la ressource Director et par
- cons\'equent, de telles consoles n'ont pas de nom d\'efini par une directive {\bf Name =}.
- C'est le premier type de console impl\'ement\'e dans les versions ant\'erieures \`a 1.33, il
- demeure valide. Sont usage est typiquement r\'eserv\'e aux administrateurs.
-\item Le second type de console, apparu avec la version 1.33 est une console "nomm\'ee"
- d\'efinie dans une ressource Console simultan\'ement dans le fichier de configuration du
- Director et dans le fichier de configuration de la Console, les noms et mots de passe
- devant \^etre en conjonction dans ces deux fichiers.
- Ce type de console ne d\'etient absolument aucun privil\`ege, except\'es ceux explicitement
- sp\'ecifi\'es dans la ressource Console du fichier de configuration du Director.
- Ainsi, vous pouvez d\'efinir plusieurs consoles avec des noms et mots de passe distincts
- destin\'ees \`a diff\'erents utilisateurs avec diff\'erents privil\`eges. Par d\'efaut ces consoles
- ne peuvent absolument rien faire. Il vous revient de leur accorder des privil\`eges
- ou plut\^ot des acc\`es aux commandes et ressources en sp\'ecifiant des listes de
- contr\^ole d'acc\`es (ACL) dans la ressource Console du fichier de configuration du
- Director. Les ACLs sont sp\'ecifi\'ees par une directive suivie d'une liste de noms
- d'acc\`es. Vous trouverez des exemples ci-dessous.
-\item Le troisi\`eme type de console est similaire au second en ce qu'il requiert
- une d\'efinition de ressource Console dans le fichier de configuration du
- Director et dans le fichier de configuration de la Console. De plus, si le nom de
- la console sp\'ecifi\'e par la directive {\bf Name =} est le m\^eme que le nom du client,
- cette console est autoris\'ee \`a utiliser la commande {\bf SetIP} pour modifier la
- directive Address dans la ressource client du fichier de configuration du
- Director en l'adresse IP de la console. Ceci permet aux portables et autres machines
- utilisant DHCP (adresses IP dynamiques) de "notifier" le Director de leur adresse
- IP courante.
-\end{itemize}
-
-La ressource Console est optionnelle. Les directives suivantes sont permises
-dans le fichier de configuration du Director.
-
-\begin{description}
-
-\item [Name = \lt{}name\gt{}]
- \index[dir]{Name}
- \index[dir]{Directive!Name}
-Le nom de la console. Ce nom doit \^etre en conjonction avec celui sp\'ecifi\'e
-dans le fichier de configuration de la Console (comme c'est le cas pour les
-d\'efinitions de clients).
-
-\item [Password = \lt{}password\gt{}]
- \index[dir]{Password}
- \index[dir]{Directive!Password}
-Sp\'ecifie le mot de passe qu'une console nomm\'ee doit fournir pour \^etre autoris\'ee.
-Le m\^eme mot de passe doit appara\^itre dans la ressource Console du fichier
-de configuration de la Console. Pour plus de s\'ecurit\'e, le mot de passe n'est
-jamais r\'eellement transmis \`a travers le r\'eseau, mais plut\^ot un code de
-hachage de type {\it challenge response} cr\'e\'e \`a partir du mot de passe.
-Cette directive est requise. Si vous disposez de {\bf /dev/random} ou {\bf bc}
-sur votre machine, Bacula g\'en\`erera al\'eatoirement ce mot de passe lors du
-processus de configuration, autrement, il sera laiss\'e blanc.
-
-\item [JobACL = \lt{}name-list\gt{}]
- \index[dir]{JobACL}
- \index[dir]{Directive!JobACL}
-Cette directive est utilis\'ee pour sp\'ecifier une liste de noms de ressources Job
-qui peuvent \^etre acc\'ed\'es par la console. Sans cette directive, la console ne peut
-acc\'eder \`a aucune des ressources Job d\'efinies dans le fichier de configuration
-du Director. Plusieurs ressources Job peuvent \^etre sp\'ecifi\'ees en les s\'eparant par
-des virgules, et/ou en sp\'ecifiant plusieurs directives JobACL. Par exemple, la
-directive peut \^etre sp\'ecifi\'ee ainsi :
-
-\footnotesize
-\begin{verbatim}
- JobACL = kernsave, "Backup client 1", "Backup client 2"
- JobACL = "RestoreFiles"
-
-\end{verbatim}
-\normalsize
-
-Avec cette sp\'ecificaton, la console peut acc\'eder aux ressources du Director pour
-les quatre jobs d\'esign\'es par la directive JobACL, et uniquement \`a eux.
-
-\item [ClientACL = \lt{}name-list\gt{}]
- \index[dir]{ClientACL}
- \index[dir]{Directive!ClientACL}
-Cette directive est utilis\'ee pour sp\'ecifier une liste de noms de ressources Client
-iaccessibles par la console.
-
-\item [StorageACL = \lt{}name-list\gt{}]
- \index[dir]{StorageACL}
- \index[dir]{Directive!StorageACL}
-Cette directive est utilis\'ee pour sp\'ecifier une liste de noms de ressources Storage
-accessibles par la console.
-
-\item [ScheduleACL = \lt{}name-list\gt{}]
- \index[dir]{ScheduleACL}
- \index[dir]{Directive!ScheduleACL}
-Cette directive est utilis\'ee pour sp\'ecifier une liste de noms de ressources Schedule
-accessibles par la console.
-
-\item [PoolACL = \lt{}name-list\gt{}]
- \index[dir]{PoolACL}
- \index[dir]{Directive!PoolACL}
-Cette directive est utilis\'ee pour sp\'ecifier une liste de noms de ressources Pool
-accesibles ar la console.
-
-\item [FileSetACL = \lt{}name-list\gt{}]
- \index[dir]{FileSetACL}
- \index[dir]{Directive!FileSetACL}
-Cette directive est utilis\'ee pour sp\'ecifier une liste de noms de ressources FileSet
-accessibles par la console.
-
-\item [CatalogACL = \lt{}name-list\gt{}]
- \index[dir]{CatalogACL}
- \index[dir]{Directive!CatalogACL}
-Cette directive est utilis\'ee pour sp\'ecifier une liste de noms de ressources Catalog
-accessibles par la console.
-
-\item [CommandACL = \lt{}name-list\gt{}]
- \index[dir]{CommandACL}
- \index[dir]{Directive!CommandACL}
-Cette directive est utilis\'ee pour sp\'ecifier une liste de commandes de la console
-qui peuvent \^etre ex\'ecut\'ees par la console.
-
-\end{description}
-
-En plus des diff\'erents noms de ressources du Director et de commandes, le mot-clef
-sp\'ecial {\bf *all*} peut \^etre sp\'ecifi\'e dans chacune des directives ACL ci-dessus.
-Sa pr\'esence signifie que toute ressource ou commande (pourvu qu'elle soit appropri\'ee
-\`a la directive) est accept\'ee. Pour un exemple de fichier de configuration, voyez le
-chapitre \ilink{Configuration de la console}{_ChapterStart36} de ce manuel
-
-\subsection*{La ressource Counter}
-\label{CounterResource}
-\index[general]{Ressource!Counter }
-\index[general]{Ressource Counter }
-\addcontentsline{toc}{subsection}{Ressource Counter}
-La ressource Counter d\'efinit une variable-compteur qui peut \^etre acc\'ed\'ee par le
-processus d'expansion de variables utilis\'e pour la cr\'eation de d'\'etiquettes (labels)
-de volumes avec la directive {\bf LabelFormat}. Consultez le paragraphe sur la directive
-\ilink{LabelFormat}{Label} de ce chapitre pour plus de d\'etails.
-
-\begin{description}
-
-\item [Counter]
- \index[dir]{Counter}
- \index[dir]{Directive!Counter}
-D\'ebut de la ressource Counter. les directives Counter sont optionnelles.
-
-\item [Name = \lt{}name\gt{}]
- \index[dir]{Name}
- \index[dir]{Directive!Name}
-iLe nom de la variable-compteur. Il s'agit du nom que vous utiliserez pour vous r\'ef\'erer
-\`a cette variable et acc\'eder \`a sa valeur.
-
-\item [Minimum = \lt{}integer\gt{}]
- \index[dir]{Minimum}
- \index[dir]{Directive!Minimum}
-Sp\'ecifie la valeur minimale de la variable-compteur. Cette valeur devient celle par d\'efaut.
-Si elle n'est pas fournie, sa valeur est z\'ero.
-
-\item [Maximum = \lt{}integer\gt{}]
- \index[dir]{Maximum}
- \index[dir]{Directive!Maximum}
-Sp\'ecifie la valeur maximale de la variable-compteur. Si elle n'est pas fournie, ou si elles
-est r\'egl\'ee \`a z\'ero, la variable compteur peut prendre une valeur maximale de 2 147 483 648
-($2^{31}$). Au del\`a de cette valeur, le compteur est remis au minimum.
-
-\item [*WrapCounter = \lt{}counter-name\gt{}]
- \index[dir]{*WrapCounter}
- \index[dir]{Directive!*WrapCounter}
-Si cette valeur est sp\'ecifi\'ee, lorsque la variable-compteur d\'epasse le maximum et
-est remise au minimum, le compteur sp\'ecifi\'e par la directive {\bf WrapCounter} est
-incr\'ement\'e. (Ceci n'est, pour le moment, pas impl\'ement\'e.)
-
-\item [Catalog = \lt{}catalog-name\gt{}]
- \index[dir]{Catalog}
- \index[dir]{Directive!Catalog}
-Si cette directive est sp\'ecifi\'ee, le compteur et sa valeur sont sauvegard\'es dans le
-catalogue sp\'ecifi\'e. Dans le cas contraire, le compteur est red\'efini \`a chaque
-d\'emarrage de Bacula.
-
-\end{description}
-
-\subsection*{ Voici un exemple complet de fichier de configuration du Director.}
-\label{SampleDirectorConfiguration}
-\index[general]{File!Exemple Complet Director Configuration }
-\index[general]{Exemple Complet Fichier Configuration Director}
-\addcontentsline{toc}{subsection}{Exemple Complet Fichier Configuration Directo}
-Un exemple de fichier de configuration du Director pourrait \^etre le suivant :
-
-
-\footnotesize
-\begin{verbatim}
-#
-# Default Bacula Director Configuration file
-#
-# The only thing that MUST be changed is to add one or more
-# file or directory names in the Include directive of the
-# FileSet resource.
-#
-# For Bacula release 1.15 (5 March 2002) -- redhat
-#
-# You might also want to change the default email address
-# from root to your address. See the "mail" and "operator"
-# directives in the Messages resource.
-#
-Director { # define myself
- Name = rufus-dir
- QueryFile = "/home/kern/bacula/bin/query.sql"
- WorkingDirectory = "/home/kern/bacula/bin/working"
- PidDirectory = "/home/kern/bacula/bin/working"
- Password = "XkSfzu/Cf/wX4L8Zh4G4/yhCbpLcz3YVdmVoQvU3EyF/"
-}
-# Define the backup Job
-Job {
- Name = "NightlySave"
- Type = Backup
- Level = Incremental # default
- Client=rufus-fd
- FileSet="Full Set"
- Schedule = "WeeklyCycle"
- Storage = DLTDrive
- Messages = Standard
- Pool = Default
-}
-Job {
- Name = "Restore"
- Type = Restore
- Client=rufus-fd
- FileSet="Full Set"
- Where = /tmp/bacula-restores
- Storage = DLTDrive
- Messages = Standard
- Pool = Default
-}
-
-# List of files to be backed up
-FileSet {
- Name = "Full Set"
- Include {
- Options { signature=SHA1 }
-#
-# Put your list of files here, one per line or include an
-# external list with:
-#
-# @file-name
-#
-# Note: / backs up everything
- File = /
- }
- Exclude { }
-}
-# When to do the backups
-Schedule {
- Name = "WeeklyCycle"
- Run = Full sun at 1:05
- Run = Incremental mon-sat at 1:05
-}
-# Client (File Services) to backup
-Client {
- Name = rufus-fd
- Address = rufus
- Catalog = MyCatalog
- Password = "MQk6lVinz4GG2hdIZk1dsKE/LxMZGo6znMHiD7t7vzF+"
- File Retention = 60d # sixty day file retention
- Job Retention = 1y # 1 year Job retention
- AutoPrune = yes # Auto apply retention periods
-}
-# Definition of DLT tape storage device
-Storage {
- Name = DLTDrive
- Address = rufus
- Password = "jMeWZvfikUHvt3kzKVVPpQ0ccmV6emPnF2cPYFdhLApQ"
- Device = "HP DLT 80" # same as Device in Storage daemon
- Media Type = DLT8000 # same as MediaType in Storage daemon
-}
-# Definition for a DLT autochanger device
-Storage {
- Name = Autochanger
- Address = rufus
- Password = "jMeWZvfikUHvt3kzKVVPpQ0ccmV6emPnF2cPYFdhLApQ"
- Device = "Autochanger" # same as Device in Storage daemon
- Media Type = DLT-8000 # Different from DLTDrive
- Autochanger = yes
-}
-# Definition of DDS tape storage device
-Storage {
- Name = SDT-10000
- Address = rufus
- Password = "jMeWZvfikUHvt3kzKVVPpQ0ccmV6emPnF2cPYFdhLApQ"
- Device = SDT-10000 # same as Device in Storage daemon
- Media Type = DDS-4 # same as MediaType in Storage daemon
-}
-# Definition of 8mm tape storage device
-Storage {
- Name = "8mmDrive"
- Address = rufus
- Password = "jMeWZvfikUHvt3kzKVVPpQ0ccmV6emPnF2cPYFdhLApQ"
- Device = "Exabyte 8mm"
- MediaType = "8mm"
-}
-# Definition of file storage device
-Storage {
- Name = File
- Address = rufus
- Password = "jMeWZvfikUHvt3kzKVVPpQ0ccmV6emPnF2cPYFdhLApQ"
- Device = FileStorage
- Media Type = File
-}
-# Generic catalog service
-Catalog {
- Name = MyCatalog
- dbname = bacula; user = bacula; password = ""
-}
-# Reasonable message delivery -- send most everything to
-# the email address and to the console
-Messages {
- Name = Standard
- mail = root@localhost = all, !skipped, !terminate
- operator = root@localhost = mount
- console = all, !skipped, !saved
-}
-
-# Default pool definition
-Pool {
- Name = Default
- Pool Type = Backup
- AutoPrune = yes
- Recycle = yes
-}
-#
-# Restricted console used by tray-monitor to get the status of the director
-#
-Console {
- Name = Monitor
- Password = "GN0uRo7PTUmlMbqrJ2Gr1p0fk0HQJTxwnFyE4WSST3MWZseR"
- CommandACL = status, .status
-}
-\end{verbatim}
-\normalsize
+++ /dev/null
-%%
-%%
-
-\section*{Director Services Daemon}
-\label{_ChapterStart6}
-\index{Daemon!Director Services }
-\index{Director Services Daemon }
-\addcontentsline{toc}{section}{Director Services Daemon}
-
-This chapter is intended to be a technical discussion of the Director services
-and as such is not targeted at end users but rather at developers and system
-administrators that want or need to know more of the working details of {\bf
-Bacula}.
-
-The {\bf Bacula Director} services consist of the program that supervises all
-the backup and restore operations.
-
-To be written ...
+++ /dev/null
-%%
-%%
-
-\section*{Basic Volume Management}
-\label{_ChapterStart39}
-\index[general]{Basic Volume Management}
-\index[general]{Management!Basic Volume}
-\index[general]{Disk Volumes}
-\addcontentsline{toc}{section}{Basic Volume Management}
-
-This chapter presents most all the features needed to do Volume management.
-Most of the concepts apply equally well to both tape and disk Volumes.
-However, the chapter was originally written to explain backing up to disk, so
-you will see it is slanted in that direction, but all the directives
-presented here apply equally well whether your volume is disk or tape.
-
-If you have a lot of hard disk storage or you absolutely must have your
-backups run within a small time window, you may want to direct Bacula to
-backup to disk Volumes rather than tape Volumes. This chapter is intended to
-give you some of the options that are available to you so that you can manage
-either disk or tape volumes.
-
-\label{Concepts}
-\subsection*{Key Concepts and Resource Records}
-\index[general]{Key Concepts and Resource Records }
-\index[general]{Records!Key Concepts and Resource }
-\addcontentsline{toc}{subsection}{Key Concepts and Resource Records}
-
-Getting Bacula to write to disk rather than tape in the simplest case is
-rather easy. In the Storage daemon's configuration file, you simply define an
-{\bf Archive Device} to be a directory. For example, if you want your disk
-backups to go into the directory {\bf /home/bacula/backups}, you could use the
-following:
-
-\footnotesize
-\begin{verbatim}
-Device {
- Name = FileBackup
- Media Type = File
- Archive Device = /home/bacula/backups
- Random Access = Yes;
- AutomaticMount = yes;
- RemovableMedia = no;
- AlwaysOpen = no;
-}
-\end{verbatim}
-\normalsize
-
-Assuming you have the appropriate {\bf Storage} resource in your Director's
-configuration file that references the above Device resource,
-
-\footnotesize
-\begin{verbatim}
-Storage {
- Name = FileStorage
- Address = ...
- Password = ...
- Device = FileBackup
- Media Type = File
-}
-\end{verbatim}
-\normalsize
-
-Bacula will then write the archive to the file {\bf
-/home/bacula/backups/\lt{}volume-name\gt{}} where \lt{}volume-name\gt{} is the
-volume name of a Volume defined in the Pool. For example, if you have labeled
-a Volume named {\bf Vol001}, Bacula will write to the file {\bf
-/home/bacula/backups/Vol001}. Although you can later move the archive file to
-another directory, you should not rename it or it will become unreadable by
-Bacula. This is because each archive has the filename as part of the internal
-label, and the internal label must agree with the system filename before
-Bacula will use it.
-
-Although this is quite simple, there are a number of problems. The first is
-that unless you specify otherwise, Bacula will always write to the same volume
-until you run out of disk space. This problem is addressed below.
-
-In addition, if you want to use concurrent jobs that write to several
-different volumes at the same time, you will need to understand a number
-of other details. An example of such a configuration is given
-at the end of this chapter under \ilink{Concurrent Disk
-Jobs}{ConcurrentDiskJobs}.
-
-\subsubsection*{Pool Options to Limit the Volume Usage}
-\index[general]{Usage!Pool Options to Limit the Volume }
-\index[general]{Pool Options to Limit the Volume Usage }
-\addcontentsline{toc}{subsubsection}{Pool Options to Limit the Volume Usage}
-
-Some of the options you have, all of which are specified in the Pool record,
-are:
-
-\begin{itemize}
-\item To write each Volume only once (i.e. one Job per Volume or file in this
- case), use:
-
-{\bf UseVolumeOnce = yes}.
-\item To write nnn Jobs to each Volume, use:
-
- {\bf Maximum Volume Jobs = nnn}.
-\item To limit the maximum size of each Volume, use:
-
- {\bf Maximum Volume Bytes = mmmm}.
-\item To limit the use time (i.e. write the Volume for a maximum of 5 days),
- use:
-
-{\bf Volume Use Duration = ttt}.
-\end{itemize}
-
-Note that although you probably would not want to limit the number of bytes on
-a tape as you would on a disk Volume, the other options can be very useful in
-limiting the time Bacula will use a particular Volume (be it tape or disk).
-For example, the above directives can allow you to ensure that you rotate
-through a set of daily Volumes if you wish.
-
-As mentioned above, each of those directives is specified in the Pool or
-Pools that you use for your Volumes. In the case of {\bf Maximum Volume Job},
-{\bf Maximum Volume Bytes}, and {\bf Volume Use Duration}, you can actually
-specify the desired value on a Volume by Volume basis. The value specified in
-the Pool record becomes the default when labeling new Volumes. Once a Volume
-has been created, it gets its own copy of the Pool defaults, and subsequently
-changing the Pool will have no effect on existing Volumes. You can either
-manually change the Volume values, or refresh them from the Pool defaults using
-the {\bf update volume} command in the Console. As an example
-of the use of one of the above, suppose your Pool resource contains:
-
-\footnotesize
-\begin{verbatim}
-Pool {
- Name = File
- Pool Type = Backup
- Volume Use Duration = 23h
-}
-\end{verbatim}
-\normalsize
-
-then if you run a backup once a day (every 24 hours), Bacula will use a new
-Volume for each backup, because each Volume it writes can only be used for 23 hours
-after the first write. Note, setting the use duration to 23 hours is not a very
-good solution for tapes unless you have someone on-site during the weekends,
-because Bacula will want a new Volume and no one will be present to mount it,
-so no weekend backups will be done until Monday morning.
-
-\label{AutomaticLabeling}
-\subsubsection*{Automatic Volume Labeling}
-\index[general]{Automatic Volume Labeling }
-\index[general]{Labeling!Automatic Volume }
-\addcontentsline{toc}{subsubsection}{Automatic Volume Labeling}
-
-Use of the above records brings up another problem -- that of labeling your
-Volumes. For automated disk backup, you can either manually label each of your
-Volumes, or you can have Bacula automatically label new Volumes when they are
-needed. While, the automatic Volume labeling in version 1.30 and prior is a
-bit simplistic, but it does allow for automation, the features added in
-version 1.31 permit automatic creation of a wide variety of labels including
-information from environment variables and special Bacula Counter variables.
-In version 1.37 and later, it is probably much better to use Python scripting
-and the NewVolume event since generating Volume labels in a Python script is
-much easier than trying to figure out Counter variables. See the
-\ilink{Python Scripting}{_ChapterStart60} chapter of this manual for more
-details.
-
-Please note that automatic Volume labeling can also be used with tapes, but
-it is not nearly so practical since the tapes must be pre-mounted. This
-requires some user interaction. Automatic labeling from templates does NOT
-work with autochangers since Bacula will not access unknown slots. There
-are several methods of labeling all volumes in an autochanger magazine.
-For more information on this, please see the \ilink{
-Autochanger}{_ChapterStart18} chapter of this manual.
-
-Automatic Volume labeling is enabled by making a change to both the Pool
-resource (Director) and to the Device resource (Storage daemon) shown above.
-In the case of the Pool resource, you must provide Bacula with a label format
-that it will use to create new names. In the simplest form, the label format
-is simply the Volume name, to which Bacula will append a four digit number.
-This number starts at 0001 and is incremented for each Volume the pool
-contains. Thus if you modify your Pool resource to be:
-
-\footnotesize
-\begin{verbatim}
-Pool {
- Name = File
- Pool Type = Backup
- Volume Use Duration = 23h
- LabelFormat = "Vol"
-}
-\end{verbatim}
-\normalsize
-
-Bacula will create Volume names Vol0001, Vol0002, and so on when new Volumes
-are needed. Much more complex and elaborate labels can be created using
-variable expansion defined in the
-\ilink{Variable Expansion}{_ChapterStart50} chapter of this manual.
-
-The second change that is necessary to make automatic labeling work is to give
-the Storage daemon permission to automatically label Volumes. Do so by adding
-{\bf LabelMedia = yes} to the Device resource as follows:
-
-\footnotesize
-\begin{verbatim}
-Device {
- Name = File
- Media Type = File
- Archive Device = /home/bacula/backups
- Random Access = Yes;
- AutomaticMount = yes;
- RemovableMedia = no;
- AlwaysOpen = no;
- LabelMedia = yes
-}
-\end{verbatim}
-\normalsize
-
-You can find more details of the {\bf Label Format} Pool record in
-\ilink{Label Format}{Label} description of the Pool resource
-records.
-
-\label{Recycling1}
-\subsubsection*{Restricting the Number of Volumes and Recycling}
-\index[general]{Recycling!Restricting the Number of Volumes and }
-\index[general]{Restricting the Number of Volumes and Recycling }
-\addcontentsline{toc}{subsubsection}{Restricting the Number of Volumes and
-Recycling}
-
-Automatic labeling discussed above brings up the problem of Volume management.
-With the above scheme, a new Volume will be created every day. If you have not
-specified Retention periods, your Catalog will continue to fill keeping track
-of all the files Bacula has backed up, and this procedure will create one new
-archive file (Volume) every day.
-
-The tools Bacula gives you to help automatically manage these problems are the
-following:
-
-\begin{enumerate}
-\item Catalog file record retention periods, the
- \ilink{File Retention = ttt}{FileRetention} record in the Client
- resource.
-\item Catalog job record retention periods, the
- \ilink{Job Retention = ttt}{JobRetention} record in the Client
- resource.
-\item The
- \ilink{ AutoPrune = yes}{AutoPrune} record in the Client resource
- to permit application of the above two retention periods.
-\item The
- \ilink{ Volume Retention = ttt}{VolRetention} record in the Pool
- resource.
-\item The
- \ilink{ AutoPrune = yes}{PoolAutoPrune} record in the Pool
- resource to permit application of the Volume retention period.
-\item The
- \ilink{ Recycle = yes}{PoolRecycle} record in the Pool resource
- to permit automatic recycling of Volumes whose Volume retention period has
- expired.
-\item The
- \ilink{ Recycle Oldest Volume = yes}{RecycleOldest} record in the
- Pool resource tells Bacula to Prune the oldest volume in the Pool, and if all
- files were pruned to recycle this volume and use it.
-\item The
- \ilink{ Recycle Current Volume = yes}{RecycleCurrent} record in
- the Pool resource tells Bacula to Prune the currently mounted volume in the
- Pool, and if all files were pruned to recycle this volume and use it.
-\item The
- \ilink{ Purge Oldest Volume = yes}{PurgeOldest} record in the
- Pool resource permits a forced recycling of the oldest Volume when a new one
- is needed. {\bf N.B. This record ignores retention periods! We highly
- recommend not to use this record, but instead use Recycle Oldest Volume}
-\item The
- \ilink{ Maximum Volumes = nnn}{MaxVolumes} record in the Pool
- resource to limit the number of Volumes that can be created.
-\end{enumerate}
-
-The first three records (File Retention, Job Retention, and AutoPrune)
-determine the amount of time that Job and File records will remain in your
-Catalog, and they are discussed in detail in the
-\ilink{Automatic Volume Recycling}{_ChapterStart22} chapter of
-this manual.
-
-Volume Retention, AutoPrune, and Recycle determine how long Bacula will keep
-your Volumes before reusing them, and they are also discussed in detail in the
-\ilink{Automatic Volume Recycling}{_ChapterStart22} chapter of
-this manual.
-
-The Maximum Volumes record can also be used in conjunction with the Volume
-Retention period to limit the total number of archive Volumes (files) that
-Bacula will create. By setting an appropriate Volume Retention period, a
-Volume will be purged just before it is needed and thus Bacula can cycle
-through a fixed set of Volumes. Cycling through a fixed set of Volumes can
-also be done by setting {\bf Recycle Oldest Volume = yes} or {\bf Recycle
-Current Volume = yes}. In this case, when Bacula needs a new Volume, it will
-prune the specified volume.
-
-\label{ConcurrentDiskJobs}
-\subsection*{Concurrent Disk Jobs}
-\index[general]{Concurrent Disk Jobs}
-\addcontentsline{toc}{subsection}{Concurrent Disk Jobs}
-Above, we discussed how you could have a single device named {\bf
-FileBackup} that writes to volumes in {\bf /home/bacula/backups}.
-You can, in fact, run multiple concurrent jobs using the
-Storage definition given with this example, and all the jobs will
-simultaneously write into the Volume that is being written.
-
-Now suppose you want to use multiple Pools, which means multiple
-Volumes, or suppose you want each client to have its own Volume
-and perhaps its own directory such as {\bf /home/bacula/client1}
-and {\bf /home/bacula/client2} ... With the single Storage and Device
-definition above, neither of these two is possible. Why? Because
-Bacula disk storage follows the same rules as tape devices. Only
-one Volume can be mounted on any Device at any time. If you want
-to simultaneously write multiple Volumes, you will need multiple
-Device resources in your bacula-sd.conf file, and thus multiple
-Storage resources in your bacula-dir.conf.
-
-OK, so now you should understand that you need multiple Device definitions
-in the case of different directorys or different Pools, but you also
-need to know that the catalog data that Bacula keeps contains only
-the Media Type and not the specific storage device. This permits a tape
-for example to be re-read on any compatible tape drive. The compatibility
-being determined by the Media Type. The same applies to disk storage.
-Since a volume that is written by a Device in say directory {\bf
-/home/bacula/backups} cannot be read by a Device with an Archive Device
-definition of {\bf /home/bacula/client1}, you will not be able to
-restore all your files if you give both those devices
-{\bf Media Type = File}. During the restore, Bacula will simply choose
-the first available device, which may not be the correct one. If this
-is confusing, just remember that the Directory has only the Media Type
-and the Volume name. It does not know the {\bf Archive Device} (or the
-full path) that is specified in the Storage daemon. Thus you must
-explicitly tie your Volumes to the correct Device by using the Media Type.
-
-The example shown below shows a case where there are two clients, each
-using its own Pool and storing their Volumes in different directories.
-
-
-\label{Example2}
-\subsection*{An Example}
-\index[general]{Example }
-\addcontentsline{toc}{subsection}{Example}
-
-The following example is not very practical, but can be used to demonstrate
-the proof of concept in a relatively short period of time. The example
-consists of a two clients that are backed up to a set of 12 archive files
-(Volumes) for each client into different directories on the Storage
-maching. Each Volume is used (written) only once, and there are four Full
-saves done every hour (so the whole thing cycles around after three hours).
-
-What is key here is that each physical device on the Storage daemon
-has a different Media Type. This allows the Director to choose the
-correct device for restores ...
-
-The Director's configuration file is as follows:
-
-\footnotesize
-\begin{verbatim}
-Director {
- Name = my-dir
- QueryFile = "~/bacula/bin/query.sql"
- PidDirectory = "~/bacula/working"
- WorkingDirectory = "~/bacula/working"
- Password = dir_password
-}
-Schedule {
- Name = "FourPerHour"
- Run = Level=Full hourly at 0:05
- Run = Level=Full hourly at 0:20
- Run = Level=Full hourly at 0:35
- Run = Level=Full hourly at 0:50
-}
-Job {
- Name = "RecycleExample"
- Type = Backup
- Level = Full
- Client = Rufus
- FileSet= "Example FileSet"
- Messages = Standard
- Storage = FileStorage
- Pool = Recycle
- Schedule = FourPerHour
-}
-
-Job {
- Name = "RecycleExample2"
- Type = Backup
- Level = Full
- Client = Roxie
- FileSet= "Example FileSet"
- Messages = Standard
- Storage = FileStorage1
- Pool = Recycle1
- Schedule = FourPerHour
-}
-
-FileSet {
- Name = "Example FileSet"
- Include = compression=GZIP signature=SHA1 {
- /home/kern/bacula/bin
- }
-}
-Client {
- Name = Rufus
- Address = rufus
- Catalog = BackupDB
- Password = client_password
-}
-
-Client {
- Name = Roxie
- Address = roxie
- Catalog = BackupDB
- Password = client1_password
-}
-
-Storage {
- Name = FileStorage
- Address = rufus
- Password = local_storage_password
- Device = RecycleDir
- Media Type = File
-}
-
-Storage {
- Name = FileStorage1
- Address = rufus
- Password = local_storage_password
- Device = RecycleDir1
- Media Type = File1
-}
-
-Catalog {
- Name = BackupDB
- dbname = bacula; user = bacula; password = ""
-}
-Messages {
- Name = Standard
- ...
-}
-Pool {
- Name = Recycle
- Use Volume Once = yes
- Pool Type = Backup
- LabelFormat = "Recycle-"
- AutoPrune = yes
- VolumeRetention = 2h
- Maximum Volumes = 12
- Recycle = yes
-}
-
-Pool {
- Name = Recycle1
- Use Volume Once = yes
- Pool Type = Backup
- LabelFormat = "Recycle1-"
- AutoPrune = yes
- VolumeRetention = 2h
- Maximum Volumes = 12
- Recycle = yes
-}
-
-\end{verbatim}
-\normalsize
-
-and the Storage daemon's configuration file is:
-
-\footnotesize
-\begin{verbatim}
-Storage {
- Name = my-sd
- WorkingDirectory = "~/bacula/working"
- Pid Directory = "~/bacula/working"
- MaximumConcurrentJobs = 10
-}
-Director {
- Name = my-dir
- Password = local_storage_password
-}
-Device {
- Name = RecycleDir
- Media Type = File
- Archive Device = /home/bacula/backups
- LabelMedia = yes;
- Random Access = Yes;
- AutomaticMount = yes;
- RemovableMedia = no;
- AlwaysOpen = no;
-}
-
-Device {
- Name = RecycleDir1
- Media Type = File1
- Archive Device = /home/bacula/backups1
- LabelMedia = yes;
- Random Access = Yes;
- AutomaticMount = yes;
- RemovableMedia = no;
- AlwaysOpen = no;
-}
-
-Messages {
- Name = Standard
- director = my-dir = all
-}
-\end{verbatim}
-\normalsize
-
-With a little bit of work, you can change the above example into a weekly or
-monthly cycle (take care about the amount of archive disk space used).
-
-\label{MultipleDisks}
-\subsection*{Backing up to Multiple Disks}
-\index[general]{Disks!Backing up to Multiple }
-\index[general]{Backing up to Multiple Disks }
-\addcontentsline{toc}{subsection}{Backing up to Multiple Disks}
-
-Bacula can, of course, use multiple disks, but in general, each disk must be a
-separate Device specification in the Storage daemon's conf file, and you must
-then select what clients to backup to each disk. You will also want to
-give each Device specification a different Media Type so that during
-a restore, Bacula will be able to find the appropriate drive.
-
-The situation is a bit more complicated if you want to treat two different
-physical disk drives (or partitions) logically as a single drive, which
-Bacula does not directly support. However, it is possible to back up your
-data to multiple disks as if they were a single drive by linking the
-Volumes from the first disk to the second disk.
-
-For example, assume that you have two disks named {\bf /disk1} and {\bf
-/disk2}. If you then create a standard Storage daemon Device resource for
-backing up to the first disk, it will look like the following:
-
-\footnotesize
-\begin{verbatim}
-Device {
- Name = client1
- Media Type = File
- Archive Device = /disk1
- LabelMedia = yes;
- Random Access = Yes;
- AutomaticMount = yes;
- RemovableMedia = no;
- AlwaysOpen = no;
-}
-\end{verbatim}
-\normalsize
-
-Since there is no way to get the above Device resource to reference both {\bf
-/disk1} and {\bf /disk2} we do it by pre-creating Volumes on /disk2 with the
-following:
-
-\footnotesize
-\begin{verbatim}
-ln -s /disk2/Disk2-vol001 /disk1/Disk2-vol001
-ln -s /disk2/Disk2-vol002 /disk1/Disk2-vol002
-ln -s /disk2/Disk2-vol003 /disk1/Disk2-vol003
-...
-\end{verbatim}
-\normalsize
-
-At this point, you can label the Volumes as Volume {\bf Disk2-vol001}, {\bf
-Disk2-vol002}, ... and Bacula will use them as if they were on /disk1 but
-actually write the data to /disk2. The only minor inconvenience with this
-method is that you must explicitly name the disks and cannot use automatic
-labeling unless you arrange to have the labels exactly match the links you
-have created.
-
-An important thing to know is that Bacula treats disks like tape drives
-as much as it can. This means that you can only have a single Volume
-mounted at one time on a disk as defined in your Device resource in
-the Storage daemon's conf file. You can have multiple concurrent
-jobs running that all write to the one Volume that is being used, but
-if you want to have multiple concurrent jobs that are writting to
-separate disks drives (or partitions), you will need to define
-separate Device resources for each one, exactly as you would do for
-two different tape drives. There is one fundamental difference, however.
-The Volumes that you creat on the two drives cannot be easily exchanged
-as they can for a tape drive, because they are physically resident (already
-mounted in a sense) on the particular drive. As a consequence, you will
-probably want to give them different Media Types so that Bacula can
-distinguish what Device resource to use during a restore.
-An example would be the following:
-
-\footnotesize
-\begin{verbatim}
-Device {
- Name = Disk1
- Media Type = File1
- Archive Device = /disk1
- LabelMedia = yes;
- Random Access = Yes;
- AutomaticMount = yes;
- RemovableMedia = no;
- AlwaysOpen = no;
-}
-
-Device {
- Name = Disk2
- Media Type = File2
- Archive Device = /disk2
- LabelMedia = yes;
- Random Access = Yes;
- AutomaticMount = yes;
- RemovableMedia = no;
- AlwaysOpen = no;
-}
-\end{verbatim}
-\normalsize
-
-With the above device definitions, you can run two concurrent
-jobs each writing at the same time, one to {\bf /disk2} and the
-other to {\bf /disk2}. The fact that you have given them different
-Media Types will allow Bacula to quickly choose the correct
-Storage resource in the Director when doing a restore.
-
-\label{MultipleClients}
-\subsection*{Considerations for Multiple Clients}
-\index[general]{Clients!Considerations for Multiple }
-\index[general]{Multiple Clients}
-\addcontentsline{toc}{subsection}{Considerations for Multiple Clients}
-
-If we take the above example and add a second Client, here are a few
-considerations:
-
-\begin{itemize}
-\item Although the second client can write to the same set of Volumes, you
- will probably want to write to a different set.
-\item You can write to a different set of Volumes by defining a second Pool,
- which has a different name and a different {\bf LabelFormat}.
-\item If you wish the Volumes for the second client to go into a different
- directory (perhaps even on a different filesystem to spread the load), you
- would do so by defining a second Device resource in the Storage daemon. The
-{\bf Name} must be different, and the {\bf Archive Device} could be
-different. To ensure that Volumes are never mixed from one pool to another,
-you might also define a different MediaType (e.g. {\bf File1}).
-\end{itemize}
-
-In this example, we have two clients, each with a different Pool and a
-different number of archive files retained. They also write to different
-directories with different Volume labeling.
-
-The Director's configuration file is as follows:
-
-\footnotesize
-\begin{verbatim}
-Director {
- Name = my-dir
- QueryFile = "~/bacula/bin/query.sql"
- PidDirectory = "~/bacula/working"
- WorkingDirectory = "~/bacula/working"
- Password = dir_password
-}
-# Basic weekly schedule
-Schedule {
- Name = "WeeklySchedule"
- Run = Level=Full fri at 1:30
- Run = Level=Incremental sat-thu at 1:30
-}
-FileSet {
- Name = "Example FileSet"
- Include = compression=GZIP signature=SHA1 {
- /home/kern/bacula/bin
- }
-}
-Job {
- Name = "Backup-client1"
- Type = Backup
- Level = Full
- Client = client1
- FileSet= "Example FileSet"
- Messages = Standard
- Storage = File1
- Pool = client1
- Schedule = "WeeklySchedule"
-}
-Job {
- Name = "Backup-client2"
- Type = Backup
- Level = Full
- Client = client2
- FileSet= "Example FileSet"
- Messages = Standard
- Storage = File2
- Pool = client2
- Schedule = "WeeklySchedule"
-}
-Client {
- Name = client1
- Address = client1
- Catalog = BackupDB
- Password = client1_password
- File Retention = 7d
-}
-Client {
- Name = client2
- Address = client2
- Catalog = BackupDB
- Password = client2_password
-}
-# Two Storage definitions with differen Media Types
-# permits different directories
-Storage {
- Name = File1
- Address = rufus
- Password = local_storage_password
- Device = client1
- Media Type = File1
-}
-Storage {
- Name = File2
- Address = rufus
- Password = local_storage_password
- Device = client2
- Media Type = File2
-}
-Catalog {
- Name = BackupDB
- dbname = bacula; user = bacula; password = ""
-}
-Messages {
- Name = Standard
- ...
-}
-# Two pools permits different cycling periods and Volume names
-# Cycle through 15 Volumes (two weeks)
-Pool {
- Name = client1
- Use Volume Once = yes
- Pool Type = Backup
- LabelFormat = "Client1-"
- AutoPrune = yes
- VolumeRetention = 13d
- Maximum Volumes = 15
- Recycle = yes
-}
-# Cycle through 8 Volumes (1 week)
-Pool {
- Name = client2
- Use Volume Once = yes
- Pool Type = Backup
- LabelFormat = "Client2-"
- AutoPrune = yes
- VolumeRetention = 6d
- Maximum Volumes = 8
- Recycle = yes
-}
-\end{verbatim}
-\normalsize
-
-and the Storage daemon's configuration file is:
-
-\footnotesize
-\begin{verbatim}
-Storage {
- Name = my-sd
- WorkingDirectory = "~/bacula/working"
- Pid Directory = "~/bacula/working"
- MaximumConcurrentJobs = 10
-}
-Director {
- Name = my-dir
- Password = local_storage_password
-}
-# Archive directory for Client1
-Device {
- Name = client1
- Media Type = File1
- Archive Device = /home/bacula/client1
- LabelMedia = yes;
- Random Access = Yes;
- AutomaticMount = yes;
- RemovableMedia = no;
- AlwaysOpen = no;
-}
-# Archive directory for Client2
-Device {
- Name = client2
- Media Type = File2
- Archive Device = /home/bacula/client2
- LabelMedia = yes;
- Random Access = Yes;
- AutomaticMount = yes;
- RemovableMedia = no;
- AlwaysOpen = no;
-}
-Messages {
- Name = Standard
- director = my-dir = all
-}
-\end{verbatim}
-\normalsize
+++ /dev/null
-#
-# Avoid that @VERSION@ and @DATE@ are changed by configure
-# This file is sourced by update_version
-#
-echo "s%@VERSION@%${VERSION}%g" >${out}
-echo "s%@DATE@%${DATE}%g" >>${out}
+++ /dev/null
-%%
-%%
-
-\section*{DVD Volumes}
-\label{_DVDChapterStart}
-\index[general]{DVD Volumes}
-\index[general]{Writing DVDs}
-\index[general]{DVD Writing}
-\index[general]{Volumes!DVD}
-\addcontentsline{toc}{section}{DVD Volumes}
-
-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}.
-
-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
-(28 October 2005) we still consider this code to be experimental and of
-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}
-
-\subsection*{DVD Specific SD Directives}
-\index[general]{Directives!DVD}
-\index[general]{DVD Specific SD Directives }
-\addcontentsline{toc}{subsection}{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[sd]{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[sd]{Mount Point}
- Directory where the device can be mounted.
-
-\item [Mount Command = {\it name-string}]
- \index[sd]{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
-
-\item [Unmount Command = {\it name-string}]
- \index[sd]{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[sd]{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[sd]{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, \%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}
- Free Space Command = "/path/dvd-handler %a free"
-\end{verbatim}
-\normalsize
-
- Where {\bf /path} is the path to your scripts install directory, and
- dvd-freespace 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}.
-
-
-\subsection*{DVD Specific Director Directives}
-\index[general]{Directives!DVD}
-\index[general]{DVD Specific Director Directives }
-\addcontentsline{toc}{subsection}{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[dir]{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}
-\subsection*{Other Points}
-\index[general]{Points!Other }
-\index[general]{Other Points }
-\addcontentsline{toc}{subsection}{Other Points}
-
-\begin{itemize}
-\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...).
-
-\item For more informations about DVD writing, please look at the
-\elink{dvd+rw-tools homepage}{http://fy.chalmers.se/~appro/linux/DVD+RW/}.
-\end{itemize}
+++ /dev/null
-%%
-%%
-
-\section*{Bacula Frequently Asked Questions}
-\label{_ChapterStart48}
-\index[general]{Questions!Bacula Frequently Asked }
-\index[general]{Bacula Frequently Asked Questions }
-\addcontentsline{toc}{section}{Bacula Frequently Asked Questions}
-
-These are questions that have been submitted over time by the
-Bacula users.
-
-Please also see
-\ilink{the bugs section}{_ChapterStart4} of this document for a list
-of known bugs and solutions.
-
-\begin{description}
-\label{what}
-\subsection*{What is Bacula?}
-\item [What is {\bf Bacula}? ]
- \index[general]{What is Bacula? }
- {\bf Bacula} is a network backup and restore program.
-
-\subsection*{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, 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}
-\subsection*{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}
-\subsection*{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 RedHat Linux (versions RH7.1-RHEL 3.0,
- SuSE, Gentoo, Debian, Mandriva, ...), FreeBSD, Solaris, Alpha, SGI (client),
- NetBSD, OpenBSD, Mac OS X (client), and Win32 (client).
-
- Bacula has been my only backup tool for over four years backing up 5
- machines nightly (3 Linux boxes running RedHat, a WinXP machine, and a WinNT
- machine).
-
-
-\label{stable}
-\subsection*{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
- (100,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. 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 was largely written by one person to date
- (Kern).\\
- \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}
-\subsection*{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}{_ChapterStart1} 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{./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}
-\subsection*{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 betwen 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}
-\subsection*{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 <bacula-source>/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 <bacula-source>/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}
-\subsection*{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}
-\subsection*{I Cannot Get My Windows Client to Start Automatically? }
-\item [I Cannot Get My Windows Client to Start Automatically? ]
- \index[general]{I Cannot Get My Windows Client to Start Automatically? }
- 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}{_ChapterStart7} in this
- manual.
-
-\label{windowsdie}
-\subsection*{My Windows Client Immediately Dies When I Start It}
-\item [My Windows Client Immediately Dies When I Start It ]
-\index[general]{My Windows Client Immediately Dies When I Start It }
-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]{When I Start the Console, the Error Messages Fly By. How can
-I see them? }
- 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}
-\subsection*{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]{I didn't realize that the backups were not working on my Windows
-Client. What should I do? }
-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}
-\subsection*{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}
-\subsection*{Can Bacula Backup My System To Files instead of Tape?}
-\item [Can Bacula Backup My System To Files instead of Tape? ]
- \index[general]{Can Bacula Backup My System To Files instead of Tape? }
- 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}{_ChapterStart39}. 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{bigfiles}
-\subsection*{Can Bacula Backup and Restore Files Greater than 2 Gigabytes?}
-\item [Can Bacula Backup and Restore Files Greater than 2 Gigabytes in
- Size? ]
-\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 larger than 2 Gigabytes.
-
-\label{cancel}
-\subsection*{I want to stop a job. Is
- there a better way than {\bf ./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}
-\subsection*{Why have You Trademarked the Name
- Bacula\raisebox{.6ex}{{\footnotesize \textsuperscript{\textregistered}}}?}
-\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}
-\subsection*{Why is Your Online Document for Version 1.37 but the Released Version is 1.36?}
-\item [Why is Your Online Document for Version 1.37 of Bacula when the
- Currently Release Version is 1.36?]
-\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.
-
-\label{sure}
-\subsection*{Does Bacula really save and restore all files?}
-\item [How Can I Be Sure that Bacula Really Saves and Restores All Files? ]
- \index[general]{How Can I Be Sure that Bacula Really Saves and Restores
- All Files? } 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}{_ChapterStart38} 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}
-\subsection*{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]{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? } 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.
-
-\label{filenamelengths}
-\subsection*{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]{How Can You Claim to Handle Unlimited Path and Filename
- Lengths when All Other Programs Have Fixed Limits? } 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}
-\subsection*{What Is the Really Unique Feature of Bacula?}
-\item [What Is the Really Unique Feature of Bacula?]
- \index[general]{What Is the Really 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.31).
-
- 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}
-\subsection*{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]{If I Run Multiple Simultaneous Jobs, How Can I Force One
-Particular Job to Run After Another Job? }
-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}
-\subsection*{I Am Not Getting Email Notification, What Can I Do? }
-\item [I Am Not Getting Email Notification, What Can I Do? ]
-
-\index[general]{I Am Not Getting Email Notification, What Can I Do? }
-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}
-\subsection*{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}
-\subsection*{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.
-
- Bacula also has compression code, which is normally used only when backing
-up
- to file Volumes. There are two conditions for this "software" to become
- enabled.
-
-\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 RedHat 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}
-\subsection*{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}
-\subsection*{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]{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?}
- 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}
-\subsection*{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]{When I ssh into a machine and start Bacula then attempt to
-exit,
- ssh hangs forever. }
- 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
- RedHat autostart scripts do this automatically). For example, you start the
- Director with:
-
-\footnotesize
-\begin{verbatim}
- bacula-dir -c bacula-dir.conf ... 0>\&1 2>\&1 >/dev/null
-
-\end{verbatim}
-\normalsize
-
-and likewise for the other daemons.
-
-\label{RetentionPeriods}
-\subsection*{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]{I'm confused by the different Retention periods: File
-Retention,
- Job Retention, Volume Retention. Why are there so many? }
- 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}
-\subsection*{MaxVolumeSize is ignored}
-\item [Why Does Bacula Ignore the MaxVolumeSize Set in my Pool?]
- \index[general]{Why Does Bacula Ignore the MaxVolumeSize Set in my Pool? }
- 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}
-\subsection*{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]{In connecting to my Client, I get "ERR:Connection
-Refused.
- Packet Size too big from File daemon:192.168.1.4:9102" Why? }
- 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.
-
-\subsection*{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}
- 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.
-
-\subsection*{How to 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 ...
-
-\end{description}
+++ /dev/null
-
-
-\chapter{Non-officiel GNU Free Documentation License en Fran\c{c}ais}
-\index[general]{GNU Free Documentation License}
-\index[general]{License!GNU Free Documentation}
-\addcontentsline{toc}{section}{GNU Free Documentation License}
-
-\label{label_fdl_fr}
-
-
-
-\begin{center}
-{\bf\large Licence de documentation libre GNU} \\
-\end{center}
-
-{\bf\large Disclaimer} \\
-
-This is an unofficial translation of the GNU Free
-Documentation License into French. It was not published by the Free
-Software Foundation, and does not legally define the distribution
-terms for documentation that uses the GNU FDL--only the original
-English text of the GNU FDL does that. However, we hope that this
-translation will help French speakers understand the GNU FDL better.
-
-{\bf\large Avertissment} \\
-
-Ceci est une traduction fran\c{c}aise non
-officielle de la Licence de documentation libre GNU. Elle n'a pas \'et\'e
-publi\'ee par la Free Software Foundation, et ne fixe pas
-l\'egalement les conditions de redistribution des documents qui
-l'utilisent -- seul le texte original en anglais le fait. Nous
-esp\'erons toutefois que cette traduction aidera les
-francophones \`a mieux comprendre la FDL GNU.
-
-\begin{center} Traduction fran\c{c}aise \textbf{"non officielle"} de
-la GFDL Version 1.2 (Novembre 2002)
-
-\begin{center}
-Copyright original :
-
-Copyright \copyright 2000,2001,2002 Free Sofware 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}
-
-
-Chacun est libre de copier et de distribuer des
-copies conformes de cette Licence, mais nul n'est autoris\'e \`a
-la modifier.
-\end{center}
-
-\begin{center}
-{\bf\large Pr\'eamble}
-\end{center}
-
-L'objet de cette Licence est de rendre tout manuel,
-livre ou autre document \'ecrit "libre"
-au sens de la libert\'e d'utilisation, \`a savoir :
-assurer \`a chacun la libert\'e effective de le copier ou
-de le redistribuer, avec ou sans modifications, commercialement ou
-non. En outre, cette Licence garantit \`a l'auteur et \`a
-l'\'editeur la reconnaissance de leur travail, sans qu'ils
-soient pour autant consid\'er\'es comme responsables des
-modifications r\'ealis\'ees par des tiers.\\
-Cette Licence est une sorte de "copyleft",
-ce qui signifie que les travaux d\'eriv\'es du document
-d'origine sont eux-m\^{e}mes "libres" selon
-les m\^{e}mes termes. Elle compl\`ete la Licence Publique
-G\'en\'erale GNU, qui est \'egalement une Licence
-copyleft, con\c{c}ue pour les logiciels libres.\\
-Nous avons con\c{c}u cette Licence pour la
-documentation des logiciels libres, car les logiciels libres ont
-besoin d'une documentation elle-m\^{e}me libre : un logiciel
-libre doit \^{e}tre accompagn\'e d'un manuel garantissant les
-m\^{e}mes libert\'es que celles accord\'ees par le
-logiciel lui-m\^{e}me. Mais cette Licence n'est pas limit\'ee
-aux seuls manuels des logiciels ; elle peut \^{e}tre utilis\'ee
-pour tous les documents \'ecrits, sans distinction particuli\`ere
-relative au sujet trait\'e ou au mode de publication. Nous
-recommandons l'usage de cette Licence principalement pour les travaux
-destin\'es \`a des fins d'enseignement ou devant servir de
-documents de r\'ef\'erence.\\
-
-\begin{center}
-{\Large\bf 1. APPLICABILIT\'E ET D\'EFINITIONS}
-\addcontentsline{toc}{section}{1. APPLICABILIT\'E AND D\'EFINITIONS}
-\end{center}
-
-Cette Licence couvre tout manuel ou tout autre travail
-\'ecrit contenant une notice de copyright autorisant la
-redistribution selon les termes de cette Licence. Le mot "{\bf Document}"
-se r\'ef\`ere ci-apr\`es \`a un tel manuel ou
-travail. Toute personne en est par d\'efinition concessionnaire
-et est r\'ef\'erenc\'ee ci-apr\`es par le terme
-\textbf{"vous"}. Vous acceptez la licence si vous copiez, modifiez,
-ou redistribuez le travail en sorte que la permission sous la loi copyright
-est n\'ecessaire.
-
-Une \textbf{"Version modifi\'ee"}
-du Document d\'esigne tout travail en contenant la totalit\'e
-ou seulement une portion de celui-ci, copi\'ee mot pour mot,
-modifi\'ee et/ou traduite dans une autre langue.
-
-Une \textbf{"Section secondaire"}
-d\'esigne une annexe au Document, ou toute information indiquant
-les rapports entre l'auteur ou l'\'editeur et le sujet (ou tout
-autre sujet connexe) du document, sans toutefois \^{e}tre en
-rapport direct avec le sujet lui-m\^{e}me (par exemple, si le
-Document est un manuel de math\'ematiques, une {\bf Section
-secondaire} ne traitera d'aucune notion math\'ematique).
-Cette section peut contenir des informations relatives \`a
-l'historique du Document, des sources documentaires, des dispositions
-l\'egales, commerciales, philosophiques, ou des positions
-\'ethiques ou politiques susceptibles de concerner le sujet
-trait\'e.
-
-Les \textbf{"Sections inalt\'erables"}
-sont des sections secondaires consid\'er\'ees comme ne
-pouvant \^{e}tre modifi\'ees et cit\'ees comme telles
-dans la notice l\'egale qui place le Document sous cette
-Licence.
-
-Les \textbf{"Textes de couverture"}
-sont les textes courts situ\'es sur les pages de couverture
-avant et arri\`ere du Document, et cit\'es comme tels dans
-la mention l\'egale de ce Document. Un Text de Couverture-Avant
-peut consister au maximum de 5 mots, et us Text de Couvertur-Arri\`ere
-peut consister au maximum de 25 mots.
-
-Le terme \textbf{"Copie transparente"}
-d\'esigne une version num\'erique du Document repr\'esent\'ee
-dans un format dont les sp\'ecifications sont publiquement
-disponibles et dont le contenu peut \^{e}tre visualis\'e et
-\'edit\'e directement et imm\'ediatement par un
-\'editeur de texte quelconque, ou (pour les images compos\'ees
-de pixels) par un programme de traitement d'images quelconque, ou
-(pour les dessins) par un \'editeur de dessins courant. Ce
-format doit pouvoir \^{e}tre accept\'e directement ou \^{e}tre
-convertible facilement dans des formats utilisables directement par
-des logiciels de formatage de texte. Une copie publi\'ee dans un
-quelconque format num\'erique ouvert mais dont la structure a
-\'et\'e con\c{c}ue dans le but expr\`es de pr\'evenir
-les modifications ult\'erieures du Document ou dans le but d'en
-d\'ecourager les lecteurs n'est pas consid\'er\'ee
-comme une Copie Transparente. Une copie qui n'est pas
-"Transparente" est consid\'er\'ee,
-par opposition, comme \textbf{"Opaque"}.
-
-Le format de fichier texte cod\'e en ASCII
-g\'en\'erique et n'utilisant pas de balises, les formats de
-fichiers Texinfo ou LaTeX, les formats de fichiers SGML ou XML
-utilisant une DTD publiquement accessible, ainsi que les formats de
-fichiers HTML simple et standard, \'ecrits de telle sorte qu'ils
-sont modifiables sans outil sp\'ecifique, sont des exemples de
-formats acceptables pour la r\'ealisation de Copies
-Transparentes. Les formats suivants sont opaques : PostScript, PDF,
-formats de fichiers propri\'etaires qui ne peuvent \^{e}tre
-visualis\'es ou \'edit\'es que par des traitements de
-textes propri\'etaires, SGML et XML utilisant des DTD et/ou des
-outils de formatage qui ne sont pas disponibles publiquement, et du
-code HTML g\'en\'er\'e par une machine \`a l'aide
-d'un traitement de texte quelconque et dans le seul but de la
-g\'en\'eration d'un format de sortie.\\
-
-La \textbf{"Page de titre"}
-d\'esigne, pour les ouvrages imprim\'es, la page de titre
-elle-m\^{e}me, ainsi que les pages suppl\'ementaires
-n\'ecessaires pour fournir clairement les informations dont
-cette Licence impose la pr\'esence sur la page de titre. Pour
-les travaux n'ayant pas de Page de titre comme d\'ecrit
-ci-dessus, la \textbf{"Page de titre"} d\'esigne
-le texte qui s'apparente le plus au titre du document et situ\'e
-avant le texte principal.
-
-Une section \textbf{"Intitul\`ee XYZ"} d\'esigne une partie du Document
-nomm\`e dont le title est pr\`ecisemment XYZ ou contient XYZ entre
-parenth\`eses apr\`es texte traduit dans une autre langue.
-(Ici XYZ signifie le nom specifique d'une section mentionn\`ee dessous,
-par exemple \textbf{"Remerciements"}, \textbf{"D\'edicaces"},
-\textbf{"Approbations"}, ou \textbf{"Historique"}.)
-
-\textbf{"Concerver le Title"}
-d'une telle section quand vous modifier le the Document signifie
-qu'il reste une section "Intitul\`ee XYZ" selon cette definition.
-
-Le Document peut contenir Warranty Disclaimers pr\`es de la mentionne
-que cette License applique au Document. Ces Warranty
-Disclaimers sont consider\`es \^{e}tre incluent par r\`eference
-dans cette License, mais seulement concernant les Warranty Disclaimers:
-toute autre implication que ces Warrenty Disclaimers peuvent avoir
-est nul et n'a pas d'effet sur le interpretation de cette License.
-
-\begin{center}
-{\Large\bf 2. COPIES CONFORMES}
-\addcontentsline{toc}{section}{2. COPIES CONFORMES}
-\end{center}
-Vous pouvez copier et distribuer le {\bf Document} sur
-tout type de support, commercialement ou non, \`a condition que
-cette Licence, la notice de copyright et la notice de la Licence
-indiquant que cette Licence s'applique \`a ce {\bf Document}
-soient reproduits dans toutes les copies, et que vous n'y ajoutiez
-aucune condition restrictive suppl\'ementaire. Vous ne pouvez
-pas utiliser un quelconque moyen technique visant \`a emp\^{e}cher
-ou \`a contr\^{o}ler la lecture ou la reproduction ult\'erieure
-des copies que vous avez cr\'e\'ees ou distribu\'ees.
-Toutefois, vous pouvez solliciter une r\'etribution en \'echange
-des copies. Si vous distribuez une grande quantit\'e de copies,
-r\'ef\'erez-vous aux dispositions de la section 3.\\
-Vous pouvez \'egalement pr\^{e}ter des copies,
-sous les m\^{e}mes conditions que celles suscit\'ees, et vous
-pouvez afficher publiquement des copies de ce {\bf Document}.\\
-
-\begin{center}
-{\Large\bf 3. COPIES EN NOMBRE}
-\addcontentsline{toc}{section}{3. COPIES EN NOMBRE}
-\end{center}
-
-Si vous publiez des copies imprim\'ees de ce
-{\bf Document} \`a plus de 100 exemplaires et que la Licence du
-{\bf Document} indique la pr\'esence de {\bf Textes de
-couverture}, vous devez fournir une couverture pour chaque copie,
-qui pr\'esente les {\bf Textes de couverture} des premi\`ere
-et derni\`ere pages de couverture du {\bf Document}. Les
-premi\`ere et derni\`ere pages de couverture doivent
-\'egalement vous identifier clairement et sans ambiguit\'e
-comme \'etant l'\'editeur de ces copies. La premi\`ere
-page de couverture doit comporter le titre du {\bf Document} en mots
-d'importance et de visibilit\'e \'egales. Vous pouvez
-ajouter des informations compl\'ementaires sur les pages de
-couverture. Les copies du {\bf Document} dont seule la couverture a
-\'et\'e modifi\'ee peuvent \^{e}tre consid\'er\'ees
-comme des copies conformes, \`a condition que le titre du
-{\bf Document} soit pr\'eserv\'e et que les conditions
-indiqu\'ees pr\'ec\'edemment soient respect\'ees.\\
-
-Si les textes devant se trouver sur la couverture sont
-trop importants pour y tenir de mani\`ere claire, vous pouvez ne
-placer que les premiers sur la premi\`ere page et placer les
-suivants sur les pages cons\'ecutives.\\
-
-Si vous publiez plus de 100 {\bf Copies opaques} du
-{\bf Document}, vous devez soit fournir une {\bf Copie transparente}
-pour chaque {\bf Copie opaque}, soit pr\'eciser ou fournir avec
-chaque {\bf Copie opaque} une adresse r\'eseau publiquement
-accessible d'une {\bf Copie transparente} et compl\`ete du
-{\bf Document}, sans aucun ajout ou modification, et \`a
-laquelle tout le monde peut acc\'eder en t\'el\'echargement
-anonyme et sans frais, selon des protocoles r\'eseau communs et
-standards. Si vous choisissez cette derni\`ere option, vous
-devez prendre les dispositions n\'ecessaires, dans la limite du
-raisonnable, afin de garantir l'acc\`es non restrictif \`a
-la {\bf Copie transparente} durant une ann\'ee pleine apr\`es
-la diffusion publique de la derni\`ere {\bf Copie opaque
-}(directement ou <I>via</I> vos revendeurs).\\
-
-Nous recommandons, mais ce n'est pas obligatoire, que
-vous contactiez l'auteur du {\bf Document} suffisamment t\^{o}t
-avant toute publication d'un grand nombre de copies, afin de lui
-permettre de vous donner une version \`a jour du {\bf Document}.\\
-
-\begin{center}
-{\Large\bf 4. MODIFICATIONS}
-\addcontentsline{toc}{section}{4. MODIFICATIONS}
-\end{center}
-
-Vous pouvez copier et distribuer une {\bf Version
-modifi\'ee} du {\bf Document} en respectant les conditions
-des sections 2 et 3 pr\'ec\'edentes, \`a condition de
-placer cette {\bf Version modifi\'ee} sous la pr\'esente
-Licence, dans laquelle le terme "{\bf Document}"
-doit \^{e}tre remplac\'e par les termes "{\bf Version
-modifi\'ee}", donnant ainsi l'autorisation de
-redistribuer et de modifier cette {\bf Version modifi\'ee} \`a
-quiconque en poss\`ede une copie. De plus, vous devez effectuer
-les actions suivantes dans la {\bf Version modifi\'ee }:\\
-
-\begin{itemize}
-\item[A.]
- Utiliser sur la {\bf Page
- de titre} (et sur la page de couverture \'eventuellement
- pr\'esente) un titre distinct de celui du {\bf Document}
- d'origine et de toutes ses versions ant\'erieures (qui, si
- elles existent, doivent \^{e}tre mentionn\'ees dans la
- section "{\bf Historique"} du {\bf Document}).
- Vous pouvez utiliser le m\^{e}me titre si l'\'editeur
- d'origine vous en a donn\'e express\'ement la permission.
-
-\item[B.]
- Mentionner sur la {\bf Page
- de titre} en tant qu'auteurs une ou plusieurs des personnes ou
- entit\'es responsables des modifications de la {\bf Version
- modifi\'ee}, avec au moins les cinq principaux auteurs du
- {\bf Document} (ou tous les auteurs s'il y en a moins de cinq).
-
-\item[C.]
- Pr\'eciser sur la
- {\bf Page de titre} le nom de l'\'editeur de la {\bf Version
- modifi\'ee}, en tant qu'\'editeur du {\bf Document}.
-
-\item[D.]
- Pr\'eserver
- int\'egralement toutes les notices de copyright du {\bf Document}.
-
-\item[E.]
- Ajouter une notice de
- copyright adjacente aux autres notices pour vos propres
- modifications.
-
-\item[F.]
- Inclure imm\'ediatement
- apr\`es les notices de copyright une notice donnant \`a
- quiconque l'autorisation d'utiliser la {\bf Version modifi\'ee}
- selon les termes de cette Licence, sous la forme pr\'esent\'ee
- dans l'annexe indiqu\'ee ci-dessous.
-
-\item[G.]
- Pr\'eserver dans
- cette notice la liste compl\`ete des {\bf Sections inalt\'erables}
- et les {\bf Textes de couverture} donn\'es avec la notice de
- la Licence du Document.
-
-\item[H.]
- Inclure une copie non modifi\'ee de cette Licence.
-
-\item[I.]
- Pr\'eserver la
- section nomm\'ee "{\bf Historique}" et
- son titre, et y ajouter une nouvelle entr\'ee d\'ecrivant
- le titre, l'ann\'ee, les nouveaux auteurs et l'\'editeur
- de la {\bf Version modifi\'ee}, tels que d\'ecrits sur la
- {\bf Page de titre}, ainsi qu'un descriptif des modifications
- apport\'ees depuis la pr\'ec\'edente version.
-
-\item[J.]
- Conserver l'adresse
- r\'eseau \'eventuellement indiqu\'ee dans le {\bf Document}<SPAN STYLE="font-weight: medium">
- permettant \`a quiconque d'acc\'eder \`a </SPAN>une
- {\bf Copie transparente} du {\bf Document}, ainsi que les adresses
- r\'eseau indiqu\'ees dans le {\bf Document} pour les
- versions pr\'ec\'edentes sur lesquelles le {\bf Document}
- se base. Ces liens peuvent \^{e}tre plac\'es dans la section
- "{\bf Historique}". Vous pouvez ne pas
- conserver les liens pour un travail datant de plus de quatre ans
- avant la version courante ou si l'\'editeur d'origine vous en
- accorde la permission.
-
-\item[K.]
- Si une section
- "{\bf D\'edicaces}" ou une section
- "{\bf Remerciements}" sont pr\'esentes,
- les informations et les appr\'eciations concernant les
- contributeurs et les personnes auxquelles s'adressent ces
- remerciements doivent \^{e}tre conserv\'ees, ainsi que le
- titre de ces sections.
-
-\item[L.]
- Conserver sans
- modification les {\bf Sections inalt\'erables} du {\bf Document},
- ni dans leurs textes, ni dans leurs titres. Les num\'eros de
- sections ne sont pas consid\'er\'es comme faisant partie
- du texte des sections.
-
-\item[M.]
- Effacer toute section
- intitul\'ee "{\bf Approbations}". Une
- telle section ne peut pas \^{e}tre incluse dans une {\bf Version
- modifi\'ee}.
-
-\item[N.]
- Ne pas renommer une section existante sous le
- titre "{\bf Approbations}" ou sous un autre
- titre entrant en conflit avec le titre d'une {\bf Section inalt\'erable}.
-
-\item[O.]
- Conserver tout Warranty Disclaimers.
-\end{itemize}
-
-Si la {\bf Version modifi\'ee} contient de
-nouvelles sections pr\'eliminaires ou de nouvelles annexes
-consid\'er\'ees comme des {\bf Sections secondaires} et
-que celles-ci ne contiennent aucun \'el\'ement copi\'e
-\`a partir du Document, vous pouvez \`a votre convenance en
-d\'esigner une ou plusieurs comme \'etant des {\bf Sections
-inalt\'erables}. Pour ce faire, ajoutez leurs titres dans la
-liste des {\bf Sections inalt\'erables} au sein de la notice de
-Licence de la version Modifi\'ee. Ces titres doivent \^{e}tres
-distincts des titres des autres sections.\\
-
-Vous pouvez ajouter une section nomm\'ee
-"{\bf Approbations}" \`a condition que
-ces approbations ne concernent que les modifications ayant donn\'e
-naissance \`a la {\bf Version modifi\'ee} (par exemple,
-comptes rendus de revue du document ou acceptation du texte par une
-organisation le reconnaissant comme \'etant la d\'efinition
-d'un standard).\\
-
-Vous pouvez ajouter un passage comprenant jusqu'\`a
-cinq mots en premi\`ere page de couverture, et jusqu'\`a
-vingt-cinq mots en derni\`ere page de couverture, \`a la
-liste des {\bf Textes de couverture} de la {\bf Version modifi\'ee}.
-Il n'est autoris\'e d'ajouter qu'un seul passage en premi\`ere
-et en derni\`ere pages de couverture par personne ou groupe de
-personnes ou organisation ayant contribu\'e \`a la
-modification du {\bf Document}. Si le Document comporte d\'ej\`a
-un passage sur la m\^{e}me couverture, ajout\'e en votre nom
-ou au nom de l'organisation au nom de laquelle vous agissez, vous ne
-pouvez pas ajouter de passage suppl\'ementaire ; mais vous
-pouvez remplacer un ancien passage si vous avez express\'ement
-obtenu l'autorisation de l'\'editeur de celui-ci.\\
-Cette Licence ne vous donne pas le droit d'utiliser le
-nom des auteurs et des \'editeurs de ce {\bf Document} \`a
-des fins publicitaires ou pour pr\'etendre \`a
-l'approbation d'une {\bf Version modifi\'ee}.\\
-
-\begin{center}
-{\Large\bf 5. FUSION DE DOCUMENTS}
-\addcontentsline{toc}{section}{5. FUSION DE DOCUMENTS}
-\end{center}
-
-Vous pouvez fusionner le {\bf Document} avec d'autres
-documents soumis \`a cette Licence, suivant les sp\'ecifications
-de la section 4 pour les {\bf Versions modifi\'ees}, \`a
-condition d'inclure dans le document r\'esultant toutes les
-{\bf Sections inalt\'erables} des documents originaux sans
-modification, et de toutes les lister dans la liste des {\bf Sections
-inalt\'erables} de la notice de Licence du d<SPAN STYLE="font-weight: medium">ocument</SPAN>
-r\'esultant de la fusion.\\
-Le document r\'esultant de la fusion n'a besoin
-que d'une seule copie de cette Licence, et les {\bf Sections
-inalt\'erables} existant en multiples exemplaires peuvent
-\^{e}tre remplac\'ees par une copie unique. S'il existe
-plusieurs {\bf Sections inalt\'erables} portant le m\^{e}me
-nom mais de contenu diff\'erent, rendez unique le titre de
-chaque section en ajoutant, \`a la fin de celui-ci, entre
-parenth\`eses, le nom de l'auteur ou de l'\'editeur
-d'origine, ou, \`a d\'efaut, un num\'ero unique. Les
-m\^{e}mes modifications doivent \^{e}tre r\'ealis\'ees
-dans la liste des {\bf Sections inalt\'erables} de la notice de
-Licence du document final.\\
-Dans le document r\'esultant de la fusion, vous
-devez rassembler en une seule toutes les sections "Historique"
-des documents d'origine. De m\^{e}me, vous devez rassembler les
-sections "Remerciements" et "D\'edicaces".
-Vous devez supprimer toutes les sections "Approbations".\\
-
-\begin{center}
-{\Large\bf 6. REGROUPEMENTS DE DOCUMENT}
-\addcontentsline{toc}{section}{6. REGROUPEMENTS DE DOCUMENT}
-\end{center}
-
-Vous pouvez cr\'eer un regroupement de documents
-comprenant le {\bf Document} et d'autres documents soumis \`a
-cette Licence, et remplacer les copies individuelles de cette Licence
-des diff\'erents documents par une unique copie incluse dans le
-regroupement de documents, \`a condition de respecter pour
-chacun de ces documents l'ensemble des r\`egles de cette Licence
-concernant les copies conformes.\\
-Vous pouvez extraire un document d'un tel regroupement
-et le distribuer individuellement sous couvert de cette Licence, \`a
-condition d'y inclure une copie de cette Licence et d'en respecter
-l'ensemble des r\`egles concernant les copies conformes.\\
-
-\begin{center}
-{\Large\bf 7. AGR\'EGATION AVEC DES TRAVAUX IND\'EPENDANTS}
-\addcontentsline{toc}{section}{7. AGR\'EGATION AVEC DES TRAVAUX IND\'EPENDANTS}
-\end{center}
-
-La compilation du {\bf Document} ou de ses d\'eriv\'es
-avec d'autres documents ou travaux s\'epar\'es et
-ind\'ependants sur un support de stockage ou sur un m\'edia
-de distribution quelconque ne repr\'esente pas une {\bf Version
-modifi\'ee} du {\bf Document} tant qu'aucun copyright n'est
-d\'epos\'e pour cette compilation. Une telle compilation
-est appel\'ee "agr\'egat" et cette
-Licence ne s'applique pas aux autres travaux ind\'ependants
-compil\'es avec le {\bf Document} s'ils ne sont pas eux-m\^{e}mes
-des travaux d\'eriv\'es du {\bf Document}.\\
-Si les exigences de la section 3 concernant les {\bf Textes
-de couverture} sont applicables \`a ces copies du {\bf Document},
-et si le {\bf Document} repr\'esente un volume inf\'erieur
-\`a un quart du volume total de l'agr\'egat, les {\bf Textes
-de couverture} du {\bf Document} peuvent \^{e}tre plac\'es
-sur des pages de couverture qui n'encadrent que le {\bf Document} au
-sein de l'agr\'egat. Dans le cas contraire, ils doivent
-appara\^{i}tre sur les pages de couverture de l'agr\'egat
-complet.\\
-
-\begin{center}
-{\Large\bf 8. TRADUCTION}
-\addcontentsline{toc}{section}{8. TRADUCTION}
-\end{center}
-
-La traduction est consid\'er\'ee comme une
-forme de modification, vous pouvez donc distribuer les traductions du
-{\bf Document} selon les termes de la section 4. Vous devez obtenir
-l'autorisation sp\'eciale des auteurs des {\bf Sections
-inalt\'erables} pour les remplacer par des traductions, mais
-vous pouvez inclure les traductions des {\bf Sections inalt\'erables}
-en plus des textes originaux. Vous pouvez inclure une traduction de
-cette Licence \`a condition d'inclure \'egalement la
-version originale en anglais. En cas de contradiction entre la
-traduction et la version originale en anglais, c'est cette derni\`ere
-qui pr\'evaut.\\
-
-\begin{center}
-{\Large\bf 9. R\`EVOCATION}
-\addcontentsline{toc}{section}{9. R\`EVOCATION}
-\end{center}
-
-Vous ne pouvez pas copier, modifier, sous-licencier ou
-distribuer le {\bf Document} autrement que selon les termes de cette
-Licence. Tout autre acte de copie, modification, sous-Licence ou
-distribution du {\bf Document} est sans objet et vous prive
-automatiquement des droits que cette Licence vous accorde. En
-revanche, les personnes qui ont re\c{c}u de votre part des copies
-ou les droits sur le document sous couvert de cette Licence ne voient
-pas leurs droits r\'evoqu\'es tant qu'elles en respectent
-les principes.\\
-
-\begin{center}
-{\Large\bf 10. R\'EVISIONS FUTURES DE CETTE LICENCE}
-\addcontentsline{toc}{section}{10. R\'EVISIONS FUTURES DE CETTE LICENCE}
-\end{center}
-
-La Free Software Foundation peut publier de temps en
-temps de nouvelles versions r\'evis\'ees de cette Licence.
-Ces nouvelles versions seront semblables \`a la pr\'esente
-version dans l'esprit, mais pourront diff\'erer sur des points
-particuliers en fonction de nouvelles questions ou nouveaux
-probl\`emes. Voyez http:\\www.gnu.org/copyleft
-pour plus de d\'etails.
-
-Chaque version de cette Licence est dot\'ee d'un
-num\'ero de version distinct. Si un {\bf Document} sp\'ecifie
-un num\'ero de version particulier de cette Licence, et porte la
-mention "ou toute autre version ult\'erieure",
-vous pouvez choisir de suivre les termes de la version sp\'ecifi\'ee
-ou ceux de n'importe quelle version ult\'erieure publi\'ee
-par la Free Software Foundation. Si aucun num\'ero de version
-n'est sp\'ecifi\'e, vous pouvez choisir n'importe quelle
-version officielle publi\'ee par la Free Sofware Foundation.\\
-
-\begin{center}
-{\Large\bf ADDENDUM: Comment utiliser cette Licence pour vos documents}
-\addcontentsline{toc}{section}{ADDENDUM: Comment utiliser cette Licence
-pour vos documents}
-\end{center}
-
-Pour utiliser cette Licence avec un document que vous
-avez \'ecrit, incorporez une copie du texte de cette Licence en
-anglais et placez le texte ci-dessous juste apr\`es la page de
-titre :\\
-
-\bigskip
-\begin{quote}
-Copyright \copyright ANN\'EE VOTRE NOM
-Permission vous est donn\'ee de copier, distribuer
-et/ou modifier ce document selon les termes de la Licence GNU Free
-Documentation License, Version 1.2 ou ult\'erieure publi\'ee
-par la Free Software Foundation; sans Sections Inalt\`erables, sans
-Texts de Couverture-Avant, et sans Texts de Couverture-Arri\`ere.
-Une copie de cette Licence est incluse dans la section
-appel\'ee {\bf GNU Free Documentation License}.
-\end{quote}
-
-Si votre Document contient de Sections
-Inalt\'erables, Texts de Couverture-Avant et
-Texts de Couverture-Arri\`ere
-remplacez la ligne "sans Sections Inalt\`erables ..." avec
-ceci:
-
-\bigskip
-\begin{quote}
- avec les Sections Inalt\`erables suivants LISTE DES TITRES DES SECTIONS
-INALT\'ERABLE, avec les Texts de Couverture-Avant suivants LIST,
-et avec les Texts de Couverture-Arri\`ere suivants LIST.
-\end{quote}
-\bigskip
-
-Si vous avec Sections Inalt\`erables sans Texts de Couverture-Avant,
-ou une autre combinaison des trois, combinez les deux alternatives
-selon pour convenir.
-
-Si votre Document contient
-des exemples non triviaux de code programme, nous recommandons de
-distribuer ces exemples en parall\`ele sous Licence GNU General
-Public License, qui permet leur usage dans les logiciels libres.\\
-
-\begin{center}
-{\bf\large Historique}
-\end{center}
-Pour GNU FDL Version 1.1 (mars 2000):\\
-Version 1.0 FR (Jean-Luc Fortin, juillet 2000) \\
-Version 1.1 FR (Christian Casteyde, mars 2001) \\
-Version 1.1.1 FR (C\'esar Alexanian, mars 2001) \\
-Version 1.1.2r2 FR (Christian Casteyde et C\'esar Alexanian, juin 2001)\\
-
-Pour GNU FDL Version 1.2 (novembre 2002):\\
-Version 1.2.0 FR (Kern Sibbald, juillet 2006)
- Traduit de HTML \`a LaTeX
-
-%---------------------------------------------------------------------
+++ /dev/null
-% 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.
-
-%---------------------------------------------------------------------
+++ /dev/null
-%%
-%%
-
-\section*{File Services Daemon}
-\label{_ChapterStart11}
-\index{File Services Daemon }
-\index{Daemon!File Services }
-\addcontentsline{toc}{section}{File Services Daemon}
-
-Please note, this section is somewhat out of date as the code has evolved
-significantly. The basic idea has not changed though.
-
-This chapter is intended to be a technical discussion of the File daemon
-services and as such is not targeted at end users but rather at developers and
-system administrators that want or need to know more of the working details of
-{\bf Bacula}.
-
-The {\bf Bacula File Services} consist of the programs that run on the system
-to be backed up and provide the interface between the Host File system and
-Bacula -- in particular, the Director and the Storage services.
-
-When time comes for a backup, the Director gets in touch with the File daemon
-on the client machine and hands it a set of ``marching orders'' which, if
-written in English, might be something like the following:
-
-OK, {\bf File daemon}, it's time for your daily incremental backup. I want you
-to get in touch with the Storage daemon on host archive.mysite.com and perform
-the following save operations with the designated options. You'll note that
-I've attached include and exclude lists and patterns you should apply when
-backing up the file system. As this is an incremental backup, you should save
-only files modified since the time you started your last backup which, as you
-may recall, was 2000-11-19-06:43:38. Please let me know when you're done and
-how it went. Thank you.
-
-So, having been handed everything it needs to decide what to dump and where to
-store it, the File daemon doesn't need to have any further contact with the
-Director until the backup is complete providing there are no errors. If there
-are errors, the error messages will be delivered immediately to the Director.
-While the backup is proceeding, the File daemon will send the file coordinates
-and data for each file being backed up to the Storage daemon, which will in
-turn pass the file coordinates to the Director to put in the catalog.
-
-During a {\bf Verify} of the catalog, the situation is different, since the
-File daemon will have an exchange with the Director for each file, and will
-not contact the Storage daemon.
-
-A {\bf Restore} operation will be very similar to the {\bf Backup} except that
-during the {\bf Restore} the Storage daemon will not send storage coordinates
-to the Director since the Director presumably already has them. On the other
-hand, any error messages from either the Storage daemon or File daemon will
-normally be sent directly to the Directory (this, of course, depends on how
-the Message resource is defined).
-
-\subsection*{Commands Received from the Director for a Backup}
-\index{Backup!Commands Received from the Director for a }
-\index{Commands Received from the Director for a Backup }
-\addcontentsline{toc}{subsection}{Commands Received from the Director for a
-Backup}
-
-To be written ...
-
-\subsection*{Commands Received from the Director for a Restore}
-\index{Commands Received from the Director for a Restore }
-\index{Restore!Commands Received from the Director for a }
-\addcontentsline{toc}{subsection}{Commands Received from the Director for a
-Restore}
-
-To be written ...
+++ /dev/null
-%%
-%%
-
-\section*{Configuration du Client/File Daemon}
-\label{_ChapterStart25}
-\index[general]{Configuration!Client/File daemon }
-\index[general]{Client/File daemon Configuration }
-\addcontentsline{toc}{section}{Client/File daemon Configuration}
-
-\subsection*{General}
-\index[general]{General }
-\addcontentsline{toc}{subsection}{General}
-
-La configuration du Client (ou File Daemon) est l'une des plus simples \`a
-effectuer. En principe, vous n'aurez rien \`a modifier au fichier par d\'efaut
-en dehors du nom du Client afin d'identifier clairement les messages d'erreur.
-
-Pour un discours g\'en\'eral sur les fichiers de configuration et ressources
-incluant les types de donn\'ees reconnues par Bacula, veuillez consulter
-le chapitre \ilink{Configuration}{_ChapterStart16} de ce manuel.
-Les ressources suivantes doivent \^etre d\'efinies :
-
-\begin{itemize}
-\item
- \ilink{Client}{ClientResource} -- pour d\'efinir les clients qui doivent \^etre
- sauvegard\'es.
-\item
- \ilink{Director}{DirectorResource} -- pour d\'efinir le nom du Director et son
- mot de passe.
-\item
- \ilink{Messages}{_ChapterStart15} -- pour d\'efinir o\`u les messages d'erreur et
- d'information doivent \^etre envoy\'es.
-\end{itemize}
-
-\subsection*{La ressource Client}
-\label{ClientRessource}
-\index[general]{Ressource!Client }
-\index[general]{Client Ressource }
-\addcontentsline{toc}{subsection}{Ressource Client}
-
-La ressource Client (ou File Daemon) d\'efinit le nom du Client (en tant que
-client du Director), ainsi que le port sur lequel le Client \'ecoute les
-connections du Director.
-
-\begin{description}
-
-\item [Client (ou FileDaemon)]
- \index[fd]{Client (ou FileDaemon)}
- \index[fd]{Directive!Client (or FileDaemon)}
-D\'ebut des enregistrements du client. Il ne doit y avoir qu'une seule ressource
-Client dans le fichier de configuration puisqu'il d\'efinit les propri\'et\'es du
-programme client courrant.
-
-\item [Name = \lt{}name\gt{}]
- \index[fd]{Name}
- \index[fd]{Directive!Name}
- Le nom du client qui doit \^etre utilis\'e par le Director lors de la connection.
- G\'en\'eralement, c'est une bonne id\'ee d'utiliser un nom en relation avec la
- machine de fa\c {c}on \`a identifier facilement les messages d'erreur si vous avez
- plusieurs clients. Cette directive est requise.
-
-\item [Working Directory = \lt{}Directory\gt{}]
- \index[fd]{Working Directory}
- \index[fd]{Directive!Working Directory}
- Cette directive sp\'ecifie le r\'epertoire dans lequel le File Daemon peut placer
- ses fichiers de statuts. Il ne devrait \^etre utilis\'e que par Bacula, mais il
- peut \^etre partag\'e par d'autres daemons Bacula, pourvu que les noms de daemons
- d\'efinis par la directive {\bf Name} soient uniques pour chaque daemon. Cette
- directive est requise.
-
- Sur les syst\`emes Win32, vous pouvez, dans certaines circonstances, \^etre
- amen\'e \`a sp\'ecifier une lettre de disque au niveau de la sp\'ecification
- du r\'epertoire. Aussi, assurez-vous que ce r\'epertoire est bien accessible
- en \'ecriture par l'utilisateur SYSTEM, faute de quoi les restaurations
- peuvent \'echouer (le fichier bootstrap transf\'er\'e au File Daemon par le
- Director est temporairement plac\'e dans ce r\'epertoire avant d'\^etre
- transmis au Storage Daemon).
-
-\item [Pid Directory = \lt{}Directory\gt{}]
- \index[fd]{Pid Directory}
- \index[fd]{Directive!Pid Directory}
- Cette directive sp\'ecifie le r\'epertoire dans lequel le Director peut placer
- son fichier d'Id de processus. Le fichier d'Id de processus est utilis\'e
- pour stopper Bacula et pr\'evenir l'ex\'ecution simultan\'ee de plusieurs copies
- de Bacula. Cette directive est requise. L'\'evaluation standard du shell de
- {\bf Directory} est faite lorsque le fichier de configuration est lu, de
- sorte que des valeurs telles que {\bf \$HOME} seront correctement
- substitu\'ees.
-
- Typiquement, sur les syst\`emes Linux, vous utiliserez la valeur {\bf /var/run}
- pour cette directive. Si vous n'installez pas Bacula dans les r\'epertoires du
- syst\`eme, vous pouvez utiliser le {\bf Working Directory} tel que d\'efini
- ci-dessus.
-
-\item [Heartbeat Interval = \lt{}time-interval\gt{}]
- \index[fd]{Heartbeat Interval}
- \index[fd]{Directive!Heartbeat Interval}
- \index[general]{Heartbeat Interval}
- \index[general]{Broken pipe}
- \index[general]{Lenteur}
- \index[general]{Sauvegarde!lenteur}
- Cette directive d\'efinit un intervalle de temps. Chaque "pulsation"
- du Storage Daemon re\c {c}ue par le File Daemon est transmise au Director.
- De plus, si aucune pulsation n'est re\c {c}ue du Storage Daemon (et donc
- pas transmise au Director) le File Daemon envoie une pulsation \`a ces
- deux daemons afin de conserver les canaux actifs. La valeur par d\'efaut est
- z\'ero, ce qui d\'esactive les pulsations. Cette fonction est particuli\`erement
- utile si vous avez un routeur tels que les 3com qui ne suivent pas les
- standards Internet et expirent une connection valide apr\`es une courte p\'eriode
- en d\'epit de l'activation de {\it keepalive}. Il en r\'esulte en g\'en\'eral
- un message "broken pipe error".
-
- Si vous continuez de recevoir de messages broken pipe malgr\'e
- {\bf Heartbeat Interval}, et si vous utilisez Windows, vous devriez envisager
- de mettre \`a jour votre pilote ethernet. Il s'agit d'un probl\`eme connu
- des pilotes NVidia NForce 3 (4.4.2 17/05/2004). Vous pouvez aussi essayer
- la proc\'edure suivante sugg\'er\'ee par Thomas Simmons pour les machines
- Win32 :
-
- D\'emarrer \gt{} Panneau de configuration \gt{} connections r\'eseau
-
- Faites un click droit sur connection pour l'adaptateur nvidia et
- s\'electionnez "propri\'et\'es". Sous l'onglet "G\'en\'eral", cliquez "Configurer...".
- Sous l'onglet "Avanc\'e", d\'esactivez l'option "Checksum Offload" et cliquez
- "Ok" pour sauvegarder la modification.
-
- L'absence de communication, ou des interruptions dans les communications
- peuvent aussi \^etre caus\'ees par des firewalls Linux si vous avez une r\`egle
- qui limite les connections ou le trafic.
-
- 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.
-
-
-\item [Maximum Concurrent Jobs = \lt{}number\gt{}]
- \index[fd]{Maximum Concurrent Jobs}
- \index[fd]{Directive!Maximum Concurrent Jobs}
- O\`u \lt{}number\gt{} est le nombre maximum de jobs qui peuvent \^etre
- ex\'ecut\'es simultan\'ement. La valeur par d\'efaut est 2, mais vous pouvez
- mettre une valeur plus importante. Tout contact du Director (par exemple :
- requ\^ete de statut, de lancement de job...) est consid\'er\'e comme un job,
- aussi, si vous souhaitez garder la possibilit\'e de faire une requ\^ete de
- statut {\bf status} dans la console alors qu'un job est en cours, vous
- devez r\'egler cette valeur sup\'erieure \`a 1.
-
-
-\item [FDAddresses = \lt{}IP-address-specification\gt{}]
- \index[fd]{FDAddresses}
- \index[fd]{Directive!FDAddresses}
- Sp\'ecifie les ports et adresses sur lesquels le Director \'ecoute les connections
- de consoles Bacula. La meilleure explication est probalement un exemple :
-
-\footnotesize
-\begin{verbatim}
- FDAddresses = {
- 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 tous des mots-clef. Notez que les adresses
-peuvent \^etre sp\'ecifi\'ees aussi bien en quadruplets point\'es qu'en notation IPv6
-double point\'ee ou avec des noms symboliques (seulement pour la la sp\'ecification
-d'ip). De m\^eme, les ports peuvent \^etre sp\'ecifi\'e sous forme de nombres, ou avec
-les valeurs mn\'emoniques 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 s'effectuer avec IPv4 et IPv6. Si ip4 est sp\'ecifi\'e, alors seule la r\'esolution
-IPv4 est permise, il en va de m\^eme avec ip6.
-
-\item [FDPort = \lt{}port-number\gt{}]
- \index[fd]{FDPort}
- \index[fd]{Directive!FDPort}
-Cette directive sp\'ecifie le num\'ero de port sur lequel le Client est en attente de
-connections du Director. Le num\'ero sp\'ecifi\'e ici doit s'accorder avec le num\'ero
-FDPort sp\'ecifi\'e dans la ressource Client du fichier de configuration du Director.
-La valeur par d\'efaut est 9102.
-
-\item [FDAddress = \lt{}IP-Address\gt{}]
- \index[fd]{FDAddress}
- \index[fd]{Directive!FDAddress}
- Cette directive est optionnelle. Si elle est sp\'ecifi\'ee, le serveur File Daemon
-(serveur pour les connections du Director) est alors li\'e \`a l'adresse sp\'ecifi\'ee
-{\bf IP-Address}, qui est soit un nom de domaine, soit une adresse IP sp\'ecifi\'ee
-au format quadruplet point\'e. Si cet enregistrement n'est pas sp\'ecifi\'e, le File
-Daemon se lie alors \`a toute adresse disponible (c'est le comportement par d\'efaut).
-
-\item [SDConnectTimeout = \lt{}time-interval\gt{}]
- \index[fd]{SDConnectTimeout}
- \index[fd]{Directive!SDConnectTimeout}
-Cette directive d\'efinit l'intervalle de temps durant lequel le File Daemon tente
-de se connecter au Storage Daemon. La valeur par d\'efaut est 30 minutes Si aucune
-connection n'est \'etablie durant cet intervalle, le File Daemon efface le Job.
-
-\item [Maximum Network Buffer Size = \lt{}bytes\gt{}]
- \index[fd]{Maximum Network Buffer Size}
- \index[fd]{Directive!Maximum Network Buffer Size}
-O\`u \lt{}bytes\gt{} sp\'ecifie la taille initiale du tampon r\'eseau \`a utiliser
-avec le File Daemon. Cette taille sera revue \`a la baisse si elle est trop
-importante jusqu'\`a ce qu'elle soit accept\'ee par le syst\`eme d'exploitation.
-Soyez circonspect avec cette directive car si la valeur est trop importante,
-elle sera diminu\'ee par pas de 512 octets jusqu'\`a ce qu'elle convienne au
-syst\`eme d'exploitation, ce qui peut requ\'erir un grand nombre d'appels
-syst\`emes. La valeur par d\'efaut est 32 768 octets.
-\end{description}
-
-Voici un exemple d'une d\'efinition de ressource Client valide :
-
-\footnotesize
-\begin{verbatim}
-Client { # this is me
- Name = rufus-fd
- WorkingDirectory = $HOME/bacula/bin/working
- Pid Directory = $HOME/bacula/bin/working
-}
-\end{verbatim}
-\normalsize
-
-\subsection*{La ressource Director}
-\label{DirectorResource}
-\index[general]{La ressource Director}
-\index[general]{Resource!Director }
-\addcontentsline{toc}{subsection}{Director Ressource}
-La ressource Director d\'efinit le nom et le mot de passe des Directors
-autoris\'es \`a contacter ce client.
-
-\begin{description}
-
-\item [Director]
- \index[fd]{Director}
- \index[fd]{Directive!Director}
- D\'ebut des enregistrements de Director. Il peut y avoir un nombre quelconque
- de ressources Director dans le fichier de configuration du Client. Chacune
- d\'efinit un Director autoris\'e \`a contacter ce Client.
-
-\item [Name = \lt{}name\gt{}]
- \index[fd]{Name}
- \index[fd]{Directive!Name}
- Le nom du Director qui peut contacter ce Client. Ce nom doit \^etre le m\^eme
- que celui sp\'ecifi\'e au niveau de la ressource Director dans le fichier de
- configuration du Director. Cette directive est requise.
-
-\item [Password = \lt{}password\gt{}]
- \index[fd]{Password}
- \index[fd]{Directive!Password}
- Sp\'ecifie le mot de passe qui doit \^etre fourni par le Director pour \^etre
- autoris\'e. Ce mot de passe doit \^etre le m\^eme que celui sp\'ecifi\'e dans la
- ressource Client du fichier de configuration du Director. Cette directive
- est requise.
-
-\item [Monitor = \lt{}yes|no\gt{}]
- \index[fd]{Monitor}
- \index[fd]{Directive!Monitor}
- Si cette directive est r\'egl\'ee \`a {\bf no} (valeur par d\'efaut), ce Director
- dispose d'un acc\`es total \`a ce Client. Dans le cas contraire ({\bf yes}), ce
- Director est seulement autoris\'e \`a relever le statut courant de ce Client.
-
- Veuillez noter que si ce Director est utilis\'e \`a des fins de surveillance, nous
- vous recommandons fortement de mettre cette directive \`a {\bf yes} pour
- \'eviter de s\'erieux probl\`emes de s\'ecurit\'e.
-\end{description}
-
-Ainsi, plusieurs Directors peuvent \^etre autoris\'es \`a utiliser les services de
-ce Client. Chaque Director aura un nom diff\'erent, et, en principe, un mot de passe
-diff\'erent.
-
-Voici un exemple d'une d\'efinition de ressource Director valide :
-
-\footnotesize
-\begin{verbatim}
-#
-# List Directors who are permitted to contact the File daemon
-#
-Director {
- Name = HeadMan
- Password = very_good # password HeadMan must supply
-}
-Director {
- Name = Worker
- Password = not_as_good
- Monitor = Yes
-}
-\end{verbatim}
-\normalsize
-
-\subsection*{La ressource Message}
-\label{MessagesResource}
-\index[general]{La ressource Message}
-\index[general]{Ressource!Message }
-\addcontentsline{toc}{subsection}{Ressource Message}
-Voyez le chapitre \ilink{La ressource Messages}{_ChapterStart15} de ce manuel
-pour plus de d\'etails sur la ressource Messages.
-
-Il doit y avoir au moins une ressource Messages d\'efinie dans le fichier de
-configuration du Client.
-
-\subsection*{Un exemple de fichier de configuration de Client}
-\label{SampleClientConfiguration}
-\index[general]{Exemple fichier configuration Client }
-\index[general]{Fichier!Exemple configuration Client}
-\addcontentsline{toc}{subsection}{Exemple fichier de configuration Client}
-
-Voici un exemple de fichier de configuration de Client :
-
-\footnotesize
-\begin{verbatim}
-#
-# Default Bacula File Daemon Configuration file
-#
-# For Bacula release 1.35.2 (16 August 2004) -- gentoo 1.4.16
-#
-# There is not much to change here except perhaps to
-# set the Director's name and File daemon's name
-# to something more appropriate for your site.
-#
-#
-# List Directors who are permitted to contact this File daemon
-#
-Director {
- Name = rufus-dir
- Password = "/LqPRkX++saVyQE7w7mmiFg/qxYc1kufww6FEyY/47jU"
-}
-#
-# Restricted Director, used by tray-monitor to get the
-# status of the file daemon
-#
-Director {
- Name = rufus-mon
- Password = "FYpq4yyI1y562EMS35bA0J0QC0M2L3t5cZObxT3XQxgxppTn"
- Monitor = yes
-}
-#
-# "Global" File daemon configuration specifications
-#
-FileDaemon { # this is me
- Name = rufus-fd
- WorkingDirectory = $HOME/bacula/bin/working
- Pid Directory = $HOME/bacula/bin/working
-}
-# Send all messages except skipped files back to Director
-Messages {
- Name = Standard
- director = rufus-dir = all, !skipped
-}
-\end{verbatim}
-\normalsize
+++ /dev/null
-%%
-%%
-
-\section*{Dealing with Firewalls}
-\label{_ChapterStart26}
-\index[general]{Dealing with Firewalls }
-\index[general]{Firewalls!Dealing with }
-\addcontentsline{toc}{section}{Dealing with Firewalls}
-
-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.
-
-\subsection*{Technical Details}
-\index[general]{Technical Details }
-\index[general]{Details!Technical }
-\addcontentsline{toc}{subsection}{Technical Details}
-
-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 it should be 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 -\gt{} 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" who 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.
-
-\subsection*{A Concrete Example}
-\index[general]{Example!Concrete }
-\index[general]{Concrete Example }
-\addcontentsline{toc}{subsection}{Concrete Example}
-
-Jesse Guardiani's solution for his network for this problem, in his own words,
-is:
-
-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
-
-\subsubsection*{The Bacula Configuration Files for the Above}
-\index[general]{Above!Bacula Configuration Files for the }
-\index[general]{Bacula Configuration Files for the Above }
-\addcontentsline{toc}{subsubsection}{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}
-Device {
- Name = "autochanger1";
- Media Type = AIT-1;
- Archive Device = /dev/nrsa1;
- Changer Device = /dev/ch0;
- Changer Command = "/usr/local/sbin/chio-bacula %c %o %S %a";
- 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, I have *two* Storage resources in
-my server-dir.conf file:
-
-\footnotesize
-\begin{verbatim}
-Storage {
- Name = "autochanger1-int" # Storage device for backing up
- Address = server.int.mydomain.tld
- SDPort = 9103
- Password = "mysecretpassword"
- Device = "autochanger1"
- Media Type = AIT-1
- Autochanger = yes
-}
-Storage {
- Name = "autochanger1-ext" # Storage device for backing up
- Address = firewall.mydomain.tld
- SDPort = 9103
- Password = "mysecretpassword"
- Device = "autochanger1"
- Media Type = AIT-1
- Autochanger = yes
-}
-\end{verbatim}
-\normalsize
-
-Note that BOTH of the above server-dir.conf Storage resources use the same
-'autochanger1' Device resource from server-sd.conf.
-
-My backup jobs run consecutively, one after the other, so only one of the
-above Storage resources is being used by Bacula file daemons at any given
-time. I don't know if this would cause problems at a site that runs more than
-one backup in parallel to a single tape device.
-
-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 it uses the 'autochanger1-int'
-Storage resource. On the other hand, the 'Public1-Backup' Job is intended to
-back up a machine on the external network, so it uses the 'autochanger1-ext'
-Storage resource.
-
-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.
-
-\subsubsection*{How Does It Work?}
-\index[general]{How Does It Work? }
-\index[general]{Work!How Does It }
-\addcontentsline{toc}{subsubsection}{How Does It Work?}
-
-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-int', which we have defined in server-dir.conf as having the
-address:port of server.int.mydomain.tld:9103.
-\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-ext', which we have defined in server-dir.conf as having the
-address:port of firewall.mydomain.tld:9103.
-\item public1-fd connects to firewall.mydomain.tld:9103 and begins sending
- files.
- \end{enumerate}
-
-\subsubsection*{Important Note}
-\index[general]{Important Note }
-\index[general]{Note!Important }
-\addcontentsline{toc}{subsubsection}{Important Note}
-
-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'.
-
-\subsubsection*{Firewall Problems}
-\index[general]{Firewall Problems}
-\index[general]{Problems!Firewalls}
-\addcontentsline{toc}{subsubsection}{Firewall Problems}
-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.
+++ /dev/null
-#!/usr/bin/perl -w
-# Fixes various things within tex files.
-
-use strict;
-
-my %args;
-
-
-sub get_includes {
- # Get a list of include files from the top-level tex file.
- my (@list,$file);
-
- foreach my $filename (@_) {
- $filename or next;
- # Start with the top-level latex file so it gets checked too.
- push (@list,$filename);
-
- # Get a list of all the html files in the directory.
- open IF,"<$filename" or die "Cannot open input file $filename";
- while (<IF>) {
- chomp;
- push @list,"$1.tex" if (/\\include\{(.*?)\}/);
- }
-
- close IF;
- }
- return @list;
-}
-
-sub convert_files {
- my (@files) = @_;
- my ($linecnt,$filedata,$output,$itemcnt,$indentcnt,$cnt);
-
- $cnt = 0;
- foreach my $file (@files) {
- # Open the file and load the whole thing into $filedata. A bit wasteful but
- # easier to deal with, and we don't have a problem with speed here.
- $filedata = "";
- open IF,"<$file" or die "Cannot open input file $file";
- while (<IF>) {
- $filedata .= $_;
- }
- close IF;
-
- # We look for a line that starts with \item, and indent the two next lines (if not blank)
- # by three spaces.
- my $linecnt = 3;
- $indentcnt = 0;
- $output = "";
- # Process a line at a time.
- foreach (split(/\n/,$filedata)) {
- $_ .= "\n"; # Put back the return.
- # If this line is less than the third line past the \item command,
- # and the line isn't blank and doesn't start with whitespace
- # add three spaces to the start of the line. Keep track of the number
- # of lines changed.
- if ($linecnt < 3 and !/^\\item/) {
- if (/^[^\n\s]/) {
- $output .= " " . $_;
- $indentcnt++;
- } else {
- $output .= $_;
- }
- $linecnt++;
- } else {
- $linecnt = 3;
- $output .= $_;
- }
- /^\\item / and $linecnt = 1;
- }
-
-
- # This is an item line. We need to process it too. If inside a \begin{description} environment, convert
- # \item {\bf xxx} to \item [xxx] or \item [{xxx}] (if xxx contains '[' or ']'.
- $itemcnt = 0;
- $filedata = $output;
- $output = "";
- my ($before,$descrip,$this,$between);
-
- # Find any \begin{description} environment
- while ($filedata =~ /(\\begin[\s\n]*\{[\s\n]*description[\s\n]*\})(.*?)(\\end[\s\n]*\{[\s\n]*description[\s\n]*\})/s) {
- $output .= $` . $1;
- $filedata = $3 . $';
- $descrip = $2;
-
- # Search for \item {\bf xxx}
- while ($descrip =~ /\\item[\s\n]*\{[\s\n]*\\bf[\s\n]*/s) {
- $descrip = $';
- $output .= $`;
- ($between,$descrip) = find_matching_brace($descrip);
- if (!$descrip) {
- $linecnt = $output =~ tr/\n/\n/;
- print STDERR "Missing matching curly brace at line $linecnt in $file\n" if (!$descrip);
- }
-
- # Now do the replacement.
- $between = '{' . $between . '}' if ($between =~ /\[|\]/);
- $output .= "\\item \[$between\]";
- $itemcnt++;
- }
- $output .= $descrip;
- }
- $output .= $filedata;
-
- # If any hyphens or \item commnads were converted, save the file.
- if ($indentcnt or $itemcnt) {
- open OF,">$file" or die "Cannot open output file $file";
- print OF $output;
- close OF;
- print "$indentcnt indent", ($indentcnt == 1) ? "" : "s"," added in $file\n";
- print "$itemcnt item", ($itemcnt == 1) ? "" : "s"," Changed in $file\n";
- }
-
- $cnt += $indentcnt + $itemcnt;
- }
- return $cnt;
-}
-
-sub find_matching_brace {
- # Finds text up to the next matching brace. Assumes that the input text doesn't contain
- # the opening brace, but we want to find text up to a matching closing one.
- # Returns the text between the matching braces, followed by the rest of the text following
- # (which does not include the matching brace).
- #
- my $str = shift;
- my ($this,$temp);
- my $cnt = 1;
-
- while ($cnt) {
- # Ignore verbatim constructs involving curly braces, or if the character preceding
- # the curly brace is a backslash.
- if ($str =~ /\\verb\*?\{.*?\{|\\verb\*?\}.*?\}|\{|\}/s) {
- $this .= $`;
- $str = $';
- $temp = $&;
-
- if ((substr($this,-1,1) eq '\\') or
- $temp =~ /^\\verb/) {
- $this .= $temp;
- next;
- }
-
- $cnt += ($temp eq '{') ? 1 : -1;
- # If this isn't the matching curly brace ($cnt > 0), include the brace.
- $this .= $temp if ($cnt);
- } else {
- # No matching curly brace found.
- return ($this . $str,'');
- }
- }
- return ($this,$str);
-}
-
-sub check_arguments {
- # Checks command-line arguments for ones starting with -- puts them into
- # a hash called %args and removes them from @ARGV.
- my $args = shift;
- my $i;
-
- for ($i = 0; $i < $#ARGV; $i++) {
- $ARGV[$i] =~ /^\-+/ or next;
- $ARGV[$i] =~ s/^\-+//;
- $args{$ARGV[$i]} = "";
- delete ($ARGV[$i]);
-
- }
-}
-
-##################################################################
-# MAIN ####
-##################################################################
-
-my @includes;
-my $cnt;
-
-check_arguments(\%args);
-die "No Files given to Check\n" if ($#ARGV < 0);
-
-# Examine the file pointed to by the first argument to get a list of
-# includes to test.
-@includes = get_includes(@ARGV);
-
-$cnt = convert_files(@includes);
-print "No lines changed\n" unless $cnt;
+++ /dev/null
-%
-% This is frenchle.sty (informations en francais ci-dessous.tex)
-% This is the light version of THE multilingual "FrenchPro" package for LaTeX.
-% Copyright Bernard Gaulle, 2000-2005, Copyright notice is LPLL.
-%% checksum = "44374 1961 3022 79243"
-% If you want to have informations about the professional version
-% ask Bernard GAULLE <frenchprobg -At- free.fr>, otherwise <frenchlebg -AT- free.fr>.
-%
-% Cette extension << french allegee >> a pour objectif de resoudre un maximum
-% de problemes de francisation de LaTeX sans avoir a connaitre la moindre
-% commande complementaire ; la seule chose a faire est de saisir :
-% \usepackage{frenchle} si vous travaillez sans babel ;
-% \usepackage[frenchle]{babel} sinon ; dans ce cas il faut
-% avoir installe frenchle.ldf en plus de frenchle.sty
-% OU \usepackage[french]{babel} et dans ce dernier cas il faut avoir
-% installe french.ldf en plus de frenchle.sty.
-% mais le mieux avec babel est de coder : \documentclass[french]{classe}
-% puis : \usepackage{babel}
-% car ainsi l'option french est passée a toutes les extensions.
-% L'extension frenchle fait plein de choses pour vous au niveau typographique
-% (espacement de la ponctuation, composition des notes, etc.) ainsi que
-% pour la mise en page (figures, tableaux, listes, etc.), la traduction des
-% libelles usuels de LaTeX ou enfin la francisation des classes de documents
-% dont la classe << letter >>.
-% La documentation a propos de frenchle est disponible sur le serveur
-% a l'url http://frenche.free.fr/frenchle.pdf ou sur ctan.
-%
-% Concernant la cesure des mots il est necessaire que votre format LaTeX
-% contienne les motifs de cesure du francais. Consultez a ce sujet la
-% FAQ de francisation a http://www.frenchpro6.com/screen.pdf/FAQscreen.pdf
-% ou sur ctan.
-%
-% La version professionnelle peut vous apporter encore plein d'autres
-% facilites. Si vous ne trouvez pas la documentation a ce sujet, demandez-la
-% a Bernard Gaulle <frenchprobg -CHEZ- free.fr>.
-%
-\expandafter\ifx\csname frenchTeXmods\endcsname\relax%
-\else \endinput \fi%
-\def\frenchname{frenchle}%
-\def\frenchpack{frenchle}%
-\def\ds@french{}%
-\def\ds@pmfrench{\pmfrench}%
-{\catcode`\@=11{%
- \ifx\@unexpandable@protect\undefined\let\protect\empty%
- \else\let\protect\@unexpandable@protect%
- \fi%
- \xdef\FSfd{18 f\'evrier 2005}%
- \xdef\FSfv{V5,991}%
- \xdef\frenchstyleid{\FSfv\space-- \FSfd\space --}%
-}}%
- \edef\FSfd{2005/02/18 }%
-\NeedsTeXFormat{LaTeX2e}[1996/12/01]%
-\let\auxWARNINGi=\@gobble%
-\def\@txt@msg#1{#1}%
-\def\@gobbleopt[#1]{}%
-\def\f@issue#1#2{#1{#2}\@ifnextchar[{\@gobbleopt}{}%
- }%
-\newif\ifECM%
-\def\ErrFrench{\f@issue\@fW{-26- %
- \@txt@msg{Erreur d\'etect\'ee dans \frenchname.sty !}%
- \@txt@msg{(voir p.ex. le fichier language.dat)}%
- }}%
-\def\ifFTY{\ErrFrench}\def\ifFTR{\ErrFrench}\def\ifFG{\ErrFrench}%
-\def\ifFLA{\ErrFrench}\def\ifFMA{\ErrFrench}\def\ifFH{\ErrFrench}%
-\def\ifArG{\ErrFrench}\def\ifFTSW{\ErrFrench}\def\ifFW{\ErrFrench}%
-\edef\GOfrench{`\string @}%
-\ifnum\catcode\GOfrench=11%
- \let\resetat\relax%
- \else\edef\resetat{\noexpand\catcode\GOfrench=\the\catcode\GOfrench}%
- \makeatletter\fi%
-\let\@currnameORI\@currname%
-\xdef\@currname{\frenchname}%
-{\def\'{\string\'}%
- \ProvidesPackage{\frenchname}%
- [\FSfd\space The \frenchpack\space package /\FSfv/]%
-}%
-\def\GOfrench{babel}\ifx\@currnameORI\GOfrench%
- \ifx\undefined\babel@core@loaded\input babel.def\relax\fi%
- \ifx\undefined\babel@core@loaded%
- \let\babel@core@loaded\main@language\fi%
- \fi%
-\let\FSfv=\undefined%
-\IfFileExists{frlpatch.sty}{\def\FSfd@patch{unknown}}{\let\FSfd@patch\FSfd}%
-\if@compatibility%
- \f@issue\typeout{^^J -68-
- \@txt@msg{ERROR: \frenchpack\space is no more running }%
- \@txt@msg{with 2.09 emulation, sorry!}%
- }\expandafter\stop%
-\fi%
-\ifx\l@french\undefined\f@issue\typeout{^^J -20-
- \@txt@msg{WARNING:}%
- \@txt@msg{the French language is undefined in your format.}%
- }%
-\fi%
-\fontencoding{\encodingdefault}\selectfont%
- \def\@temp@{OT1}\ifx\@temp@\f@encoding%
- \def\@temp@{\global\ECMfalse}%
- \else\def\@temp@{LO1}\ifx\@temp@\f@encoding%
- \def\@temp@{\global\ECMfalse}%
- \else%
- \def\@temp@{\global\ECMtrue}%
- \fi%
- \fi%
-\@temp@%
-\def\@tempa{\let\ifEightBitOutput\iffalse}%
-\ifx\EightBitOutputfalse\undefined\expandafter\@tempa\fi%
-\ifECM\else\ifx\charsubdef\undefined%
- \def\@tempa{\noexpand\dGs}%
- \ifx\@tempa\dGs\else%
- \ifx\@kb@msgIIIX\relax\else%
- \f@issue\typeout{^^J -29- %
- \@txt@msg{***Warning***\string: TeX engine in use along with CM fonts}%
- \@txt@msg{(as in current TeX format) isn't sufficient to hyphenate}%
- \@txt@msg{words containing diacritics (like in French).}%
- }%
- \fi%
- \fi%
-\fi\fi%
-\ifx\undefined\@dblarg%
-\long\def\@dblarg#1{\@ifnextchar[{#1}{\@xdblarg{#1}}}}%
-\long\def\@xdblarg#1#2{#1[{#2}]{#2}}%
-\fi%
-\newdimen\@FrDimen%
-\def\usualmessages{\let\ifEightBitOutput\iftrue}%
- \ifnum\inputlineno=-1\def\@o@l{.}%
- \else\def\@o@l{ (\`a la ligne \the\inputlineno).}\fi%
- \expandafter\let\expandafter\@aiguORI\expandafter=%
- \csname OT\string1\string\'\endcsname%
- \expandafter\let\expandafter\@gravORI\expandafter=%
- \csname OT\string1\string\`\endcsname%
- \expandafter\let\expandafter\@acchORI\expandafter=%
- \csname OT\string1\string\^\endcsname%
- \expandafter\let\expandafter\@tremORI\expandafter=%
- \csname OT\string1\string\"\endcsname%
- \expandafter\let\expandafter\@cediORI\expandafter=%
- \csname OT\string1\string\c\endcsname%
-\let\@tempc\relax%
-\ifx\today\undefined\let\today\cejour\fi%
-\ifx\today\undefined\f@issue\typeout{^^J -52- %
- \@txt@msg{Error: the \frenchpack\space package doesn't run in }%
- \@txt@msg{such minimal document class, sorry!}%
- }\expandafter\stop%
-\fi%
-{\def\GOfrench{\global\let\ifEightBitOutput\iffalse}%
- \let\add@accent\@gobble\edef\@tempa{\`{}}%
- \def\@tempb{{\setbox \@tempboxa \hbox {}\accent 18 }}%
- \ifx\@tempa\@tempb%
- \expandafter%
- \GOfrench%
- \fi%
-}%
-\def\@fW#1{{\let\@nobraces\@firstofone%
- \ifEightBitOutput%
- \setbox\@tempboxa\hbox{\`\space}%
- \ifx\charsubdef\undefined\else%
- \let\add@accent\@gobble%
- \def\'##1{\expandafter\@nobraces\@aiguORI##1}%
- \def\`##1{\expandafter\@nobraces\@gravORI##1}%
- \def\^##1{\expandafter\@nobraces\@acchORI##1}%
- \fi%
- \else%
- \let\protect\string\let\add@accent\@gobble%
- \fi%
- \edef\@tempa{#1}\typeout{\@tempa}}}%
-{\def\ier{er}%
-\f@issue%
-\@fW{^^J -23- \@txt@msg{Extension \string : \frenchpack\space}%
- \@txt@msg{\frenchstyleid\space(B.Gaulle)}%
- }%
-}%
-\let\ifFW\iftrue%
-\def\@fw#1{{\let\@NoFr\relax%
- \ifFW\kbtypeout%
- {^^J \frenchname.sty \string : #1\@o@l}%
- \fi%
- }}%
- %
-\ifx\kbtypeout\undefined%
-\def\@kbtypeout[#1]#2{\ifEightBitOutput\let\@typeset@protect\protect\fi%
- \let\@inpenc@undefined@\@gobble%
- \edef\f@tempa{#2\empty}%
- #1{\f@tempa}\egroup}%
-\def\kbtypeout{\kbIO[\typeout]}%
-\def\kbIO{\bgroup%
- \ifECM\fontencoding{OT1}\selectfont\fi%
- %
- \let\@nobraces\@firstofone%
- \let\protect\string%
- \ifEightBitOutput%
- \def\'##1{\expandafter\@nobraces\@aiguORI##1}%
- \def\`##1{\expandafter\@nobraces\@gravORI##1}%
- \def\^##1{\expandafter\@nobraces\@acchORI##1}%
- \def\"##1{\expandafter\@nobraces\@tremORI##1}%
- \def\c##1{\expandafter\@nobraces\@cediORI##1}%
- \csname @kbspecials\endcsname%
- \else%
- \let\add@accent\@gobble%
- \def\set@display@protect{\let\protect\noexpand}%
- \fi%
- \@kbtypeout}%
-\fi%
-\ifx\@kbtypeout\undefined%
- \def\@kbtypeout[#1]#2{#1{#2}\egroup}%
-\fi%
-\def\@tempb{\let\ifEightBitOutput\iffalse}%
-\ifx\kbtypeout\typeout%
- \long\def\@tempa{\add@accent{19}}%
- \ifx\@tempa\@aiguORI\expandafter\@tempb\fi%
-\def\@fw#1{\ifFW\bgroup\let\@nobraces\@firstofone%
- \ifEightBitOutput%
- \ifx\charsubdef\undefined\else%
- \def\'##1{\expandafter\@nobraces\@aiguORI##1}%
- \def\`##1{\expandafter\@nobraces\@gravORI##1}%
- \fi%
- \else%
- \let\protect\string\let\add@accent\@gobble%
- \fi%
- \@kbtypeout[\typeout]{^^J \frenchname.sty \string : #1\@o@l}%
- \fi%
- }%
-\fi
-\def\@Ffnt#1{\f@issue\@fw{-2- \@txt@msg{fichier #1 non trouv\'e}%
- }[#1]}%
-\def\@finput#1{\InputIfFileExists{#1}{}{\@Ffnt{#1}}}%
-\def\@NoFr{\f@issue\@fw{-3- %
- \@txt@msg{\frenchpack\space n'est pas actif ici !}%
- }}%
-\let\ifFrench\iffalse%
-\ifx\addto\undefined%
- \def\addto#1#2{\ifx#1\@undefined\def#1{#2}%
- \else\ifx#1\relax\def #1{#2}%
- \else{\toks@\expandafter{#1#2}%
- \xdef#1{\the\toks@}}%
- \fi%
- \fi%
- }%
-\fi%
-\def\fraddto#1#2{\addto{#1}{#2}%
- \ifFrench\french\else\english\fi}%
-\ifx\MakeRobustCommand\undefined%
-\def\MakeRobustCommand#1{\expandafter\expandafter\expandafter%
- \let\expandafter\expandafter\csname #1 \endcsname%
- \csname #1\endcsname%
- \expandafter%
- \edef\csname #1\endcsname{\expandafter\protect%
- \expandafter\noexpand\csname #1 \endcsname}
- }%
-\fi%
-\ifx\DocInput\undefined\else%
- \let\fr@di\DocInput\def\DocInput#1{%
- \ifFrench\english\fr@di{#1}\french%
- \else\fr@di{#1}%
- \fi\relax}%
-\fi%
-\ifx\url\undefined\else%
- \let\fr@ul\url\def\url#1{%
- \ifFrench\english\fr@ul{#1}\french%
- \else\fr@ul{#1}%
- \fi\relax}%
-\fi%
-\ifx\xy\undefined\else%
- \let\fr@xy\xy\def\xy{%
- \ifFrench\nofrenchguillemets\DFPdp\fi\fr@xy}%
-\fi%
-\ifx\hyper@n@rmalise\undefined\else%
- \let\fr@hne\hyper@n@rmalise\def\fr@hnr#1#2{\fr@hne{#1}{#2}}%
- \def\hyper@n@rmalise{\ifFrench\english\expandafter\fr@hnr%
- \else\expandafter\fr@hne\fi}%
-\fi%
-\ifx\PDFSCR@Info\undefined\else%
- \def\@seccntformat#1{\protect\textcolor{section\thesection@level}%
- {\expandafter\upshape\csname the#1\endcsname}\quad}%
-\fi%
-\ifx\listing\undefined\else%
- \let\fr@li\listing%
-\edef\listing{\noexpand\@protected@testopt\noexpand\listing%
- \expandafter\noexpand\csname\string\listing\endcsname {1}}%
- \ifx\fr@li\listing%
- \def\listing{%
- \ifFrench\expandafter\english\expandafter\fr@li%
- \else\expandafter\fr@li%
- \fi}%
- \else%
- \long\def\listing{%
- \ifFrench\expandafter\english\expandafter\fr@li%
- \else\expandafter\fr@li%
- \fi\relax}%
- \fi%
-\fi%
-\ifx\inputlisting\undefined\else%
- \let\fr@PL\lst@ProcessListing\def\lst@ProcessListing[#1]{%
- \ifFrench\english\fr@PL[#1]\french%
- \else\fr@PL[#1]%
- \fi\relax}%
-\fi%
-\ifx\lstlisting\undefined\else%
- \let\fr@lsi\lstlisting\long\def\lstlisting{%
- \ifFrench\expandafter\english\expandafter\fr@lsi%
- \else\expandafter\fr@lsi%
- \fi}%
-\fi%
-\ifx\lstinputlisting\undefined\else%
- \let\fr@PL\lst@ProcessListing\def\lst@ProcessListing[#1]{%
- \ifFrench\english\fr@PL[#1]\french%
- \else\fr@PL[#1]%
- \fi}%
-\fi%
- \def\@ifFTYfalse{\let\ifFTY\iffalse}%
- \def\@ifFTYback{\let\ifFTY\if@Back}%
- \let\if@PMF\iffalse%
-\f@issue%
-\@fW{ -24- %
- \@txt@msg{\frenchname.sty utilise dans ce document le codage de fonte }%
- \@txt@msg{\f@encoding.^^J}%
- }%
-\f@issue%
-\@fW{ -25- \@txt@msg{\frenchname.sty affiche ici ses messages en }%
-\@txt@msg{\ifEightBitOutput8-bits.\else7-bits << \string\`a la TeX >>.\fi}%
-\@txt@msg{^^J^^J}%
- }%
-\def\CheckSevenBits/#1{\def\@tempa##1##2/##3{\ifx##2\empty\else%
- \f@issue%
- \@fw{-51- %
- \@txt@msg{ERREUR : ce document n'a pas \'et\'e converti en 8-bits...}%
- }%
- \expandafter ##3\fi}\expandafter\@tempa\noexpand#1}%
-\@ifundefined{tt}{\def\tt{\fontfamily{\ttdefault}\selectfont}}{}%
-\edef\lq{\string`}\edef\rq{\string'}%
-\let\@cilq='%
-\edef\lqq{\string`\string`}\edef\rqq{\string'\string'}%
-\edef\pointvirgule{\string;}%
-\edef\deuxpoints{\string:}%
-\let\@cidp=:%
-\edef\pointexclamation{\string!}%
-\edef\pointinterrogation{\string?}%
-\edef\inferieura{\string<}%
-\edef\superieura{\string>}%
-\edef\dittomark{\string"}%
-\let\f@par\par%
-\let\@SLQ\lq%
-\def\@SRQ@{^\bgroup\prim@s}%
-\def\@SRQ{\ifmmode\expandafter\@SRQ@\else\rq\fi}%
-\newif\ifFH%
-\let\@noBDfr\@nodocument%
-\def\frenchhyphenation{\@noBDfr}%
-\def\nofrenchhyphenation{\@noBDfr}%
-\def\frenchtypography{\@noBDfr}%
-\def\regularmathcomma{\@noBDfr}%
-\def\frenchmathcomma{\@noBDfr}%
-\def\frenchwarnings{\@noBDfr}%
-\def\nofrenchwarnings{\@noBDfr}%
-\def\nofrenchtypography{\@noBDfr}%
-\def\nofrenchtranslation{\@noBDfr}%
-\def\frenchtranslation{\@noBDfr}%
-\ifx\RIfM@\undefined%
-\def\nofrenchguillemets{\@noBDfr}%
-\def\frenchguillemets{\@noBDfr}%
-\fi%
-\global\let\ifCLAfrench\iffalse%
-\def\ConstantLayout{\@noBDfr}%
-\def\nofrenchmacros{\@noBDfr}%
-\def\frenchmacros{\@noBDfr}%
-\def\automaticlettrine{\@noBDfr}%
-\def\noautomaticlettrine{\@noBDfr}%
-\def\noeveryparguillemets{\@noBDfr}%
-\def\everyparguillemets{\@noBDfr}%
-\def\nofrenchlayout{\@noBDfr}%
-\def\frenchlayout{\@noBDfr}%
-\def\indentfirst{\@noBDfr}%
-\def\nonindentfirst{\@noBDfr}%
-\def\NouveauLangage{\@noBDfr}%
-\def\letpunctutionactivefor{\@noBDfr}%
-\def\@tempa{\let\ifarticle\iffalse}%
-\ifx\ifarticle\undefined\expandafter\@tempa\fi%
-\ifx\@seminarerr\undefined\else\ifarticle\else%
-\let\@soORI\shipout%
-\def\shipout#1#2{\def\@tempa{slide}\def\@tempb{slide*}%
- {\ifx\@tempa\@currenvir\let\protect\noexpand%
- \else\ifx\@tempb\@currenvir\let\protect\noexpand\fi%
- \fi%
- \@soORI#1#2}%
- \global\let\shipout\@soORI%
- }%
-\fi\fi%
-\let\h@yphenation\hyphenation%
-\long\def\f@hyphenation#1{\bgroup%
- \let\par\space%
- \def\-{ }%
- \let\allowhyphens\undefined%
- \csname accenthyphcodes\endcsname%
- \lowercase{\edef\@tempa{#1}}%
- \h@yphenation{\@tempa}\egroup}%
-\def\@tempa{\let\iffrenchbibliography\iftrue}%
-\ifx\iffrenchbibliography\undefined\expandafter\@tempa\fi%
-\ifx\nombre\undefined\else\let\@nomORI\nombre\fi%
-\begingroup\obeyspaces%
-\gdef\@@nombre{\ifFTY\@mathcomma\obeyspaces\let =\,\fi}%
-\endgroup%
-\def\@nombre#1{\bgroup\let\ifFTY\iftrue\def\@tempa{#1}%
- \def\,{\ifmmode\mskip\thinmuskip\fi}%
- \if@filesw{\immediate\openout\@inputcheck=\jobname.tmp%
- \let\protect\noexpand%
- \ifmmode%
- \immediate\write\@inputcheck{\protect\makeatletter%
- \protect\@@nombre%
- \@tempa\ignorespaces}%
- \else%
- \immediate\write\@inputcheck{\protect\makeatletter%
- \protect\@@nombre%
- $\@tempa$\ignorespaces}%
- \fi%
- \immediate\closeout\@inputcheck%
- }%
- \immediate\openin\@inputcheck=\jobname.tmp%
- \immediate\read\@inputcheck to\@tempa%
- \immediate\closein\@inputcheck%
- \def\@tempa{{\input{\jobname.tmp}}}%
- \fi%
- \@tempa\egroup%
- }%
-\ifx\nombre\undefined\DeclareRobustCommand*{\nombre}{\@nombre}\fi%
-\ifx\WindowsUnits\undefined%
- \def\WindowsUnits{\@wu}\fi%
-\def\FileName{\bgroup%
- \def\@FNenc@loop##1##2{\@tempcnta`##1\relax%
- \loop\catcode\@tempcnta=11%
- \ifnum\@tempcnta<`##2\relax%
- \advance\@tempcnta\@ne%
- \repeat}%
- \@FNenc@loop\^^A\^^H%
- \@FNenc@loop\^^K\^^K%
- \@FNenc@loop\^^N\^^_%
- \@FNenc@loop\^^?\^^ff%
- \@FileName}%
-\def\@FileName#1{\gdef\theFileName{#1}\egroup}%
-\def\@ifo{%
-\def\kbIO{\bgroup%
- \ifECM\fontencoding{OT1}\selectfont\fi%
- \ifFTY\expandafter\nofrenchtypography\fi%
- \let\@nobraces\@firstofone%
- \let\protect\string%
- \ifEightBitOutput%
- \def\'####1{\expandafter\@nobraces\@aiguORI####1}%
- \def\`####1{\expandafter\@nobraces\@gravORI####1}%
- \def\^####1{\expandafter\@nobraces\@acchORI####1}%
- \def\"####1{\expandafter\@nobraces\@tremORI####1}%
- \def\c####1{\expandafter\@nobraces\@cediORI####1}%
- \csname @kbspecials\endcsname%
- \else%
- \let\add@accent\@gobble%
- \def\set@display@protect{\let\protect\noexpand}%
- \fi%
- \@kbtypeout}%
-\let\s@owhyphens\showhyphens%
-\let\@dsORI\dospecials%
-\@ifundefined{@sanitize}{\def\@sanitize{\relax}}{}%
-\let\@saORI\@sanitize%
-\def\frenchhyphenation{%
- \ifFH\else\FHtrue%
- \edef\@uchORI{\the\uchyph}%
- \def\@Hif{\ifFH}\let\@Hfi\fi%
- \lccode `\'=`\'%
- \ifx\flowercase\undefined\else\def\lowercase{\flowercase}\fi%
- \@ifundefined{allowhyphens}{%
- \def\allowhyphens{\ifhmode\nobreak\hskip\z@skip\fi}}{}%
- \@ifundefined{lefthyphenmin}{}%
- {\lefthyphenmin=2\righthyphenmin=3}%
- \@whatUCH%
- \def\@tempa####1{{\accenthyphcodes\h@yphenation{####1}}}%
- \ifx\@tempa\hyphenation\f@issue%
- \@fw{-41- \@txt@msg{your format is out of date, }%
- \@txt@msg{please run initex again!}%
- }\stop%
- \fi%
- \def\accenthyphcodes{%
- \let\@typeset@protect\protect%
- \ifx\protect\noexpand\else%
- \ifECM\else\fontencoding{T1}%
- \let\pickup@font\@gobble%
- \let\size@update\relax\selectfont%
- \fi\fi}%
- \let\hyphenation\f@hyphenation%
- \def\showhyphens####1{\bgroup%
- \csname accenthyphcodes\endcsname%
- \protected@edef\@tempa{####1}%
- \s@owhyphens{\@tempa}\egroup}%
- \fi}%
-\def\nofrenchhyphenation{%
- \ifFH\FHfalse%
- \lccode`\'=0%
- \let\hyphenation\h@yphenation%
- \let\showhyphens\s@owhyphens%
- \ifx\lowercaseORI\undefined\else\let\lowercase\lowercaseORI\fi%
- \@ifundefined{lefthyphenmin}{}%
- {\lefthyphenmin=2\righthyphenmin=3}%
- \uchyph=\@uchORI%
- \fi}%
-\@tempcnta=\the\mathcode`,\@tempcntb=\the\mathcode`,%
-\divide\@tempcnta by 4096\relax%
-\multiply\@tempcnta by -4096\relax%
-\advance\@tempcntb by \@tempcnta%
-\edef\@tempb{\noexpand\mathcode`,=\the\@tempcntb}%
-\advance\@tempcntb by 24576\relax%
-\edef\@tempa{\noexpand\mathcode`,=\the\@tempcntb}%
-\edef\regularmathcomma{%
- \noexpand\def\noexpand\@mathcomma{\@tempa}%
- \noexpand\@mathcomma}%
-\def\@tempa{\if\space\next\else\mathord\fi\mathcomma}%
-\let\ifFTY\iftrue%
-\ifx\@tempa\sm@rtcomma%
- \def\frenchmathcomma{%
- \def\@mathcomma{\ifFTY\mathcode`\,="8000\fi}%
- \@mathcomma}%
-\else%
-\edef\frenchmathcomma{%
- \noexpand\def\noexpand\@mathcomma%
- {\noexpand\ifFTY\@tempb\noexpand\fi}%
- \noexpand\@mathcomma}%
-\fi%
-\frenchmathcomma%
-\def\ifFTY{\ErrFrench}%
-\def\nofrenchtypography{%
- \let\ifFTY\iffalse\let\if@Back\ifFTY%
-\expandafter\let\csname OT1\string\textbackslash \endcsname\undefined%
- \nofrenchguillemets%
- \sloppy%
- \nonfrenchspacing%
- \regularmathcomma%
- }%
-\def\frenchtypography{%
- \let\ifFTY\iftrue\let\if@Back\ifFTY%
-\expandafter\let\csname OT1\string\textbackslash \endcsname\@boiORI%
- \let\ifLPA\iffalse%
- \typedspaces%
- \edef\@tempa{\the\vfuzz}%
- \fussy%
- \vfuzz=\@tempa%
- \frenchspacing%
- \frenchmathcomma%
- }%
-\def\nofrenchtranslation{%
- \let\ifFTR\iffalse\@cORI}%
-\def\frenchtranslation{%
- \let\ifFTR\iftrue\captionsfrench}%
-\let\nofrenchguillemets\relax%
-\def\@tempa{\global\let\ifCLA\iffalse}%
-\ifx\ifCLA\undefined\expandafter\@tempa\fi%
-\def\ConstantLayout{\global\let\ifCLA\iftrue%
- \expandafter\let\csname ifCLA\languagename\endcsname\iftrue%
- \def\@tempa{\let\ifbbbbfixlanguage\iftrue}%
- \ifx\ifbbbbfixlanguage\undefined\@tempa\fi%
- \def\@tempa{\ifbbbbfixlanguage\else%
- \f@issue%
- \@fw{-85- \@txt@msg{Attention \string: l'option fixlanguage }%
- \@txt@msg{n'a pas ete fournie a l'appel de babelbib}%
- }\fi%
- }%
- \ifx\@nodocument\relax\@tempa%
- \else\ifx\btxselectlanguage\undefined%
- \PassOptionsToPackage{fixlanguage}{babelbib}%
- \else\@tempa%
- \fi%
- \fi%
- \let\ConstantLayout\relax}%
-\def\nofrenchlayout{\nofrenchtrivsep%
- \let\ifFLA\iffalse\@EIM}%
-\def\frenchlayout{%
- \let\ifFLA\iftrue\everyparguillemets%
- \@FIM\@FL\let\@FL\empty\noautomaticlettrine%
- \frenchtrivsep}%
-\def\frenchwarnings{\let\ifFW\iftrue%
- \frenchtrivsepwarnings}%
-\def\nofrenchwarnings{\let\ifFW\iffalse%
- }%
-}%
-\ifx\@ufo\undefined%
- \let\@ufo\empty%
-\fi%
- \def\prim@s{\prime\futurelet\@let@token\pr@m@s}%
- \def\pr@m@s{\ifx\@cilq\@let@token\expandafter\pr@@@s%
- \else\ifx^\@let@token\expandafter\expandafter\expandafter\pr@@@t%
- \else\egroup\fi%
- \fi}%
-\let\@fsORI\frenchspacing%
-\def\frenchspacing{\@fsORI\ifECM\sfcode`\(=0\sfcode`\)=1000\fi}%
-\catcode`<=\active\catcode`>=\active\catcode`'=\active%
-\catcode`:=\active\catcode``=\active%
-\let<=\inferieura\let>=\superieura%
-\def\@Fstr{\def<{\@LSG}\def>{\@RSG}\def`{\@SLQ}\def'{\@SRQ}%
- \def:{\deuxpoints}%
- \let\dGs\empty}%
-\def\@LiN{\let\@sogORI<\let\@sfgORI>\let\@lqORI`\let\@rqORI'%
- \let\@dpORI:\@Fstr\@ifFTYfalse}%
-\def\@LiB{\let<\@sogORI\let>\@sfgORI\let`\@lqORI\let'\@rqORI%
- \let:\@dpORI\@ifFTYback}%
-\catcode\lq:=12%
-\let\@s@ORI\special%
-\def\newcount{\alloc@0\count\countdef\insc@unt}%
-\def\newdimen{\alloc@1\dimen\dimendef\insc@unt}%
-\def\newbox{\alloc@4\box\chardef\insc@unt}%
-\let\ifFTY\iffalse%
-\ifx\vref\undefined\else%
-\@ifpackageloaded{varioref}{\def\@vrfCode{%
- \@gG{vr}{vref}{/}{1}%
- \@gG{vpr}{vpageref}{1}{1}%
- \@gG{vprr}{vpagerefrange}{1}{2}%
- \def\reftextpagerange##1##2{%
- pages~\pageref{##1}\ifFTY -\else --\fi\pageref{##2}}%
- }%
- }{}%
-\fi%
-\def\ifFTY{\ErrFrench}%
-\@ifclassloaded{beamer}{\let\l@chapter\empty%
- \def\beamer@captiontemplate{\small\structure%
- {\insertcaptionname\captionseparator\space}%
- \insertcaption}
- }{}%
-\def\GOfrench{%
- \def\special##1{\@ifFTYfalse\bgroup\@Fstr\@s@ORI{##1}%
- \egroup\@ifFTYback}%
- \let\@noBDfr\relax%
- {\catcode\lq\<=\active\ifx<\undefined\else\global%
- \let\@mLSG<\global%
- \def\@LSG{\ifmmode\@mLSG\else\inferieura\fi}\fi}%
- {\catcode\lq\>=\active\ifx>\undefined\else\global%
- \let\@mRSG>\global%
- \def\@RSG{\ifmmode\@mRSG\else\superieura\fi}\fi}%
-\if@PMF\def\pmfrench{}\def\noeveryparguillemets{}\def\@stared{}%
- \def\@desarm{}\def\@qquotes{}\def\@staring{}\def\@fniv2{}\fi%
-\def\sm@llerthree{\protect\sm@ller\protect\sm@ller\protect\sm@ller}
-\@ifundefined{smaller}{\def\sm@ller{\small}%
- \let\sm@llerthree\scriptsize%
- \def\l@rger{\large}}%
- {\ifx\undefined\sm@ller%
- \let\sm@ller\smaller\fi}%
-\@ifundefined{footnotesize}{%
- \def\footnotesize{\sm@ller\sm@ller}}{}%
-\@ifundefined{Huge}{%
- \def\Huge{\l@rger\l@rger\l@rger\l@rger\l@rger}}{}%
-\def\noresetatpart{\ifFLA\let\cl@part\empty\fi}%
-\def\noresetatchapter{\ifFLA\let\cl@chapter\empty\fi}%
-\@ifundefined{chapter}{}{}%
-\@ifundefined{c@chapter}{\newcounter{chapter}}{\@addtoreset{chapter}{part}}%
-\@ifundefined{quotation}{\def\quotation{}}{}%
-\ifx\tableofcontents\undefined%
- \else\let\@tocORI\tableofcontents\fi%
-\ifx\pdfstringdef\undefined%
- \else\let\contentslineORI\contentsline\fi%
-\@ifundefined{l@chapter}{%
-\def\@tempa{%
- \def\l@chapter####1####2{\addpenalty{-\@highpenalty}%
- \vskip 1.0em plus\p@\@tempdima 1.5em%
- \begingroup%
- \parindent \z@ \rightskip \@pnumwidth \parfillskip -\@pnumwidth%
- \bfseries \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip%
- ####1\nobreak\hfil \nobreak\hbox to\@pnumwidth{\hss ####2}\par%
- \penalty\@highpenalty%
- \endgroup}}%
-\ifx\RIfM@\undefined\@tempa%
- \else%
- \ifx\fr@RIfM@cls\undefined\@tempa
-\fi%
-\fi}{}%
-\@ifundefined{theHchapter}{}%
- {\renewcommand{\theHchapter}{\arabic{part}.\arabic{chapter}}}%
- \def\@gG##1##2##3##4{%
- \def\@temp@{\expandafter\let\csname @##1@ORI\endcsname=}%
- \expandafter\@temp@\csname ##2\endcsname%
- \if##3\empty%
- \if2##4%
- \expandafter\def\csname ##2\endcsname####1####2%
- {\protect\atgG{##1}{{####1}{####2}}}%
- \else%
- \if3##4%
- \expandafter\def\csname ##2\endcsname####1####2####3%
- {\protect\atgG{##1}{{####1}{####2}{####3}}}%
- \else%
- \expandafter\def\csname ##2\endcsname####1%
- {\protect\atgG{##1}{{####1}}}%
- \fi%
- \fi%
- \else%
- \if/##3\expandafter\def\csname ##2\endcsname{\protect\atgH{##1}}%
- \else%
- \if2##4\expandafter\def\csname ##2\endcsname{\protect\atgN{##1}}%
- \else\expandafter\def\csname ##2\endcsname{\protect\atgM{##1}}%
- \fi%
- \fi%
- \fi}%
- \def\atgG##1##2{\bgroup\@ifFTYfalse\@Fstr%
- \expandafter\csname @##1@ORI\endcsname##2\egroup}%
- \def\atgH##1##2{\bgroup\@ifFTYfalse\@Fstr%
- \expandafter\csname @##1@ORI\endcsname{##2}\egroup}%
- \def\atgM##1{\@ifNextNB[{\@gM@@{##1}}{\@gM@@{##1}[\empty]}%
- }%
- \def\atgN##1{\@ifNextNB[{\@gM@@@{##1}}{\@gM@@@{##1}[\empty]}%
- }%
- \def\@gM@@##1[##2]##3{\@gM@@@{##1}[##2]{##3}{}}%
- \def\@gM@@@##1[##2]##3##4{\bgroup\@ifFTYfalse\@Fstr%
- \xdef\@temp@{\noexpand\@gG@{##3}{##4}}\egroup%
- \ifx\empty##2\let\@gG@=\empty%
- \else\protected@edef\@gG@{[##2]}\fi%
- \let\@typeset@protect\protect%
- \protected@edef\@temp@{\noexpand\expandafter%
- \noexpand\expandafter%
- \noexpand\csname @##1@ORI\noexpand\endcsname%
- \@temp@}\@temp@}%
-\ifx\babel@sanitize@arg\undefined\else%
-\def\babel@sanitize@arg##1{##1}%
-\wlog{\frenchname.sty\string: use of the babel package force me to nullify %
- \noexpand\babel@sanitize@arg.}%
-\fi%
-\ifx\ifthenelse\undefined\else\let\@iTeORI\ifthenelse%
- \long\def\ifthenelse##1##2##3{\@ifFTYfalse\@iTeORI{##1}%
- {\@ifFTYback##2}{\@ifFTYback##3}}%
-\fi%
-\ifx\texttt\undefined\else\@gG{xt}{texttt}{/}{1}\fi%
-\ifx\hyperbaseurl\undefined\else\@gG{hl}{hyperbaseurl}{/}{1}\fi%
-\ifx\Ginclude@graphics\undefined\else\@gG{ig}%
- {Ginclude@graphics}{/}{1}\fi%
-\ifx\NAT@citex\undefined%
- \ifx\cite\undefined\else\@gG{c}{cite}{1}{1}\fi%
- \ifx\citeyear\undefined\else\@gG{cy}{citeyear}{/}{1}\fi%
-\else%
- \let\@cxORI\@citex%
- \def\@citex[##1][##2]##3{\@ifFTYfalse%
- \let\mbox\mboxORI%
- \@cxORI[##1][##2]{##3}\aftergroup\@ifFTYback}%
-\@gG{fc}{fullcite}{1}{1}%
-\@gG{cin}{citation}{/}{1}%
-\def\@lbibitem[##1]##2{\protected@edef\jb@key{##2}\def\jb@tempb{##1}}%
-\fi%
-\ifx\nocite\undefined\else\@gG{nc}{nocite}{/}{1}\fi%
-\ifx\backcite\undefined\else\@gG{bkc}{backcite}{//}{2}\fi%
-\ifx\bibitem\undefined\else\let\@biORI\bibitem%
- \def\bibitem{\@LiN\@ifNextNB[{\@bi@cb}{\@bi@ca}%
- }%
- \def\@bi@ca##1{\@biORI{##1}\@LiB}%
- \def\@bi@cb[##1]##2{\@biORI[##1]{##2}\@LiB}%
-\fi%
-\expandafter\ifx\string\bt@@item\undefined%
- \else\@gG{bti}{\string\bt@@item}{1}{1}%
- \fi%
-\ifx\vref\undefined\else%
- \ifx\reftextvario\undefined\let\@vrfCode\undefined%
-\fi\fi%
-\ifx\ref\undefined\else\@gG{r}{ref}{/}{1}\fi%
-\ifx\tag\undefined\else\@gG{tG}{tag}{/}{1}\fi%
-\ifx\pageref\undefined\else\let\pageref@ORI\pageref%
- \let\f@pageref\pageref\@gG{fpr}{f@pageref}{/}{1}%
- \def\pageref{\ifFTY\expandafter\f@pageref\else%
- \expandafter\pageref@ORI\fi}%
-\fi%
-\csname @vrfCode\endcsname%
-\xdef\@lim{}\let\ifMOVING\iffalse%
-\ifx\sf@@sub@label\undefined\else\@gG{ss}{sf@@sub@label}{/}{1}\fi%
-\def\@temp@{%
- \def\label{\protect\@LabeL}%
- \def\@LabeL####1{\@ifFTYfalse\if@labelsinmargin\ifMOVING%
- \xdef\@lim{\ifx\@lim\empty\else\@lim\@@par\relax\fi[####1]}%
- \gdef\@lim@{\@ifFTYfalse\hbadness=\@M\tt\@lim\@ifFTYback}%
- \else\marginpar{%
- \@ifFTYfalse\hbadness=\@M\tt[####1]\@ifFTYback}\fi\fi%
- %
- \bgroup\@Fstr\@lORI{####1}\egroup\@ifFTYback}%
- }%
-\ifx\fr@RIfM@cls\undefined\else%
-\let\@mtORI\maketitle%
-\def\maketitle{{\@mtORI}}%
-\fi%
-\ifx\label\undefined\else\let\@lORI\label%
- \@temp@%
- \let\ltx@label\label%
-\fi%
-\ifx\@newl@bel\undefined\else\@gG{nl}{@newl@bel}{//}{3}\fi%
-\def\@temp@{%
- \let\@aclORI\addcontentsline%
- \global\let\ifCG\iftrue%
- \def\addcontentsline####1####2####3{\@ifFTYfalse\bgroup\@Fstr%
- \@aclORI{####1}{####2}{####3}\egroup\@ifFTYback}%
- }%
-\@ifundefined{addcontentsline}{\gdef\addcontentsline##1##2##3{}}%
- {\@temp@}%
-\let\ifFrench\iffalse%
-\def\@temp@{%
- \def\index{\bgroup\ifFrench\@DFP\fi%
- \expandafter\egroup\@iORI}%
- }%
-\ifx\index\undefined\else\let\@iORI\index%
- \@temp@%
-\fi%
-\ifx\list\undefined\else%
- \let\@liORI\list%
-\fi%
- \let\@topsepORI\topsep%
- \let\@partopsepORI\partopsep%
- \let\@itemsepORI\itemsep%
- \let\@parsepORI\parsep%
-\def\warn@seps{\def\topsep{\@w@s{\string\topsep}\@topsepORI}%
- \def\partopsep{\@w@s{\string\partopsep}\@partopsepORI}%
- \def\itemsep{\@w@s{\string\itemsep}\@itemsepORI}%
- \def\parsep{\@w@s{\string\parsep}\@parsepORI}%
- \def\@tempa{verse}\def\@tempb{quotation}%
- \ifx\@tempa\@currenvir\let\@w@s\@gobble\else%
- \ifx\@tempb\@currenvir\let\@w@s\@gobble\fi%
- \fi%
- }%
-\def\@w@s##1{\ifFTSW\f@issue%
- \@fw{-58- \@txt@msg{valeur de \string##1 ignor\'ee}%
- }[##1]\fi}%
-\def\org@seps{\let\topsep\@topsepORI%
- \let\partopsep\@partopsepORI%
- \let\itemsep\@itemsepORI%
- \let\parsep\@parsepORI%
- }%
-\def\list##1##2{\def\@inAlist{}\@liORI{##1}{%
- \ifx\@trivlist\@tlORI\else\warn@seps\fi%
- ##2\org@seps}}%
-\ifx\@makecaption\undefined\else\let\@mcORI\@makecaption\fi%
-\ifx\captionseparator\undefined%
- \def\captionseparator{~--}%
-\fi%
-\let\ifFTY\iffalse%
-\ifx\@contdelim\undefined\else%
- \let\@cdORI\@contdelim%
- \def\@contdelim{\ifFTY\space\else\@cdORI\fi}%
-\fi%
-\def\ifFTY{\ErrFrench}%
-\ifx\captionfont\undefined%
- \let\captionfont\emph%
- \else\let\@cfORI\captionfont%
- \def\captionlabelfont{\upshape}%
- \def\captionfont{\itshape\@cfORI}%
- \ifx\captionlabeldelim\undefined\else%
- \let\captionlabeldelim\captionseparator%
- \let\captionseparator\empty%
- \fi%
-\fi%
-\def\@makecaption##1##2{\ifFTY%
- \def\@secondofmany####1####2\void{####2}%
- \def\@tempa{\@secondofmany##2\void}%
- \ifx\@tempa\empty%
- \let\captionseparator\empty%
- \fi%
- \@mcORI{##1}{\relax%
- \captionfont{##2}}%
- \else\@mcORI{##1}{##2}\fi}%
-\def\@temp@{%
- \def\thanks####1{\global\let\@makefntext\fr@makefntext%
- \bgroup%
- \ifFTY\ifhmode\ifdim\lastskip>\z@\unskip\fi\nobreak\fi%
- \def\@footnotemark{\hbox{\@textsuperscript{\normalfont\,\@thefnmark}}}%
- \fi\let\ifFTY\iffalse\@thORI{####1}%
- \egroup}%
- }%
-\ifx\thanks\undefined\else\let\@thORI\thanks\@temp@\fi%
-\let\ifFTY\iffalse%
-\ifx\@makefnmark\undefined\else\let\@mfnmORI\@makefnmark%
-\def\@makefnmark{\ifFTY\hbox{\@textsuperscript{\normalfont%
- \ifx\thefootnote\relax\else\,\fi%
- \@thefnmark}}%
- \else\@mfnmORI\fi}%
-\fi%
-\def\@temp@{\long\def\fr@makefntext####1{%
- \bgroup%
- \ifFTY\def\@tempa{footnote}\let\@tfnORI\@thefnmark%
- \ifx\@tempa\@mpfn%
- \def\@thefnmark{%
- %
- \egroup\egroup%
- \long\def\@tempa{\fnsymbol{footnote}}%
- \ifx\@tempa\thefootnote%
- \expandafter\raise+0.55ex%
- \fi%
- \hbox\bgroup\textnormal\bgroup%
- \def\@temp@{%
-\ifx\fr@RIfM@cls\undefined%
-\ifx\thanks\relax\else\kern-1.1\parindent\fi%
-\else \kern-\parindent%
-\fi%
- \@ifnextchar\relax{\def\@temp@{\hphantom{.}\kern+0.25em}}%
- {\def\@temp@{.\kern+0.25em}}%
- }%
- \expandafter\@temp@\@tfnORI\@temp@%
- }%
- \leavevmode\kern+0.5em%
- \else\def\@thefnmark{\@tfnORI\,}\fi%
- \fi\@mfntORI{####1}\egroup}%
- }%
- \let\@mfntORI\@makefntext\@temp@%
- \let\@makefntext\fr@makefntext%
-\def\ifFTY{\ErrFrench}%
-\let\@fntORI\@footnotetext%
-\long\def\@footnotetext##1{\bgroup\let\if@labelsinmargin\iffalse%
- \@fntORI{##1}\egroup}%
-\let\@fnORI\footnote%
-\def\footnote{\bgroup%
- \def\index{\@ifnextchar[{\f@index}%
- {\f@index@}%
- }%
- \def\f@index[####1]####2{\@ifFTYfalse\@iORI[####1]{####2}%
- \@ifFTYback}%
- \def\f@index@####1{\@ifFTYfalse\@iORI{####1}\@ifFTYback}%
- \ifFTY\ifhmode\ifdim\lastskip>\z@\unskip\fi%
- \nobreak\fi\fi%
- \ifmmode\let\@fnORI\fr@footnote\fi%
- \@ifNextNB[%
- \@Footnote\@Fntnorm}%
-\long\def\@Footnote[##1]##2{\@fnORI[##1]{##2}%
- \egroup\@ifNextNBc\footnote\refmark\@Fntcoma{}}%
-\long\def\@Fntnorm##1{\@fnORI{##1}%
- \egroup\@ifNextNBc\footnote\refmark\@Fntcoma{}}%
-\def\@Fntcoma{\ifFLA\@textsuperscript{,}\nobreak\fi}%
-\def\@Fxloat##1[##2]{\@xfORI{##1}[##2]\csname @Fend\@currenvir\endcsname}%
-\let\@fgeORI\figure\let\@efgeORI\endfigure%
-\def\@temp@{\let\@fgeORI\figure%
- \def\figure{\let\ifMOVING\iftrue%
- \let\if@minipage\iftrue%
- \@set@fr@fn@%
- \ifx\@xfORI\undefined%
- \let\@xfORI\@xfloat\let\@xfloat\@Fxloat%
- \fi%
- \@fgeORI}}%
-\ifx\figure\undefined\let\@temp@\relax\fi\@temp@%
-\def\@Fendfigure{\let\@efgeORI\endfigure%
- \def\endfigure{\@efgeORI%
- \ifx\@lim\empty\else\marginpar{\@lim@}%
- \xdef\@lim{}\fi\let\ifMOVING\iffalse}}%
-\ifx\endfigure\undefined\let\@Fendfigure\relax\fi%
-\let\@cnORI\caption%
-\def\@tablescaption{\@dblarg\@t@blescaption}%
-\let\mboxORI\mbox%
-\def\mbox##1{\leavevmode\hbox{\protect\@set@fr@fn@##1}}%
-\def\@set@fr@fn@{\ifFrench\let\footnote\fr@footnote\fi}%
-\def\fr@footnote{\@ifNextNB[\fr@fn@{\fr@fn@[]}%
- }%
-\def\fr@fn@[##1]##2{\footnotemark%
- \f@issue%
- \@fw{-8- \@txt@msg{\string\footnotetext{##2} perdu.}
- \@txt@msg{Coder \'event. \string\protect\string\footnote}%
- }[##2]%
- }%
-\def\@t@blescaption[##1]##2{\let\cur@fn\footnote%
- \let\footnote\fr@footnote%
- \@cnORI[##1]{##2}\let\footnote\cur@fn}%
-\def\@temp@{%
- \let\@tbeORI\table%
- \def\table{\let\ifMOVING\iftrue%
- \let\if@minipage\iftrue%
- \ifFLA\begingroup%
- \def\@mpfn{mpfootnote}%
- \def\thempfn{\thempfootnote}\c@mpfootnote\z@%
- \ifx\@captype\undefined\def\@captype{table}\fi%
- \let\caption\@tablescaption%
- \let\@footnotetext\@mpfootnotetext\fi%
- \ifx\@xfORI\undefined%
- \let\@xfORI\@xfloat\let\@xfloat\@Fxloat%
- \fi%
- \@tbeORI}%
- \expandafter\let%
- \expandafter\@dbtbeORI\csname table*\endcsname%
- \expandafter\def\csname table*\endcsname{\let\ifMOVING\iftrue%
- \let\if@minipage\iftrue%
- \ifFLA\begingroup%
- \def\@mpfn{mpfootnote}%
- \def\thempfn{\thempfootnote}\c@mpfootnote\z@%
- \ifx\@captype\undefined\def\@captype{table}\fi%
- \let\caption\@tablescaption%
- \let\@footnotetext\@mpfootnotetext\fi%
- \ifx\@xfORI\undefined%
- \let\@xfORI\@xfloat\let\@xfloat\@Fxloat%
- \fi%
- \@dbtbeORI}%
- }%
-\ifx\table\undefined\let\@temp@\relax\fi\@temp@%
-\def\@Fendtable{%
- \let\@etORI\endtable%
- \def\endtable{\ifFLA\par%
- \vskip-\lastskip%
- \ifvoid\@mpfootins\else\vskip\skip\@mpfootins%
- \footnoterule\unvbox\@mpfootins\fi%
- \fi\@etORI\ifFLA\endgroup\fi%
- \ifx\@lim\empty\else\marginpar{\@lim@}%
- \xdef\@lim{}\fi\let\ifMOVING\iffalse}%
- }%
-\ifx\endtable\undefined\let\@Fendtable\relax\fi%
-\def\@temp@{\def\endtable{\ifFLA\endgroup%
- \expandafter\let\csname endtable*\endcsname\endtable%
- \fi}%
- }%
-\ifx\endtable\relax\@temp@%
-\fi%
-\expandafter\def\csname @Fendtable*\endcsname{%
- \expandafter\let%
- \expandafter\@dbetORI\csname endtable*\endcsname%
- \expandafter\def%
- \csname endtable*\endcsname{\ifFLA\par%
- \vskip-\lastskip%
- \ifvoid\@mpfootins\else\vskip\skip\@mpfootins%
- \footnoterule\unvbox\@mpfootins\fi%
- \fi\@dbetORI\ifFLA\endgroup\fi%
- \ifx\@lim\empty\else\marginpar{\@lim@}%
- \xdef\@lim{}\fi\let\ifMOVING\iffalse}%
- }%
-\expandafter\ifx\csname endtable*\endcsname\relax%
- \expandafter\let\csname endtable*\endcsname\endtable%
-\fi%
-\expandafter\ifx\csname\string\table\endcsname\undefined\else%
- \expandafter\let\expandafter\BfigureORI\csname\string\figure\endcsname%
- \expandafter\def\csname\string\figure\endcsname{\@Fendfigure\BfigureORI}%
- \expandafter\let\expandafter\BtableORI\csname\string\table\endcsname%
- \expandafter\def\csname\string\table\endcsname{\@Fendtable\BtableORI}%
-\fi%
-\ifx\undefined\Hy@PDFDef\let\Hy@PDFDef\pdfstringdef\fi%
-\ifx\undefined\Hy@PDFDef\else%
- \let\@hpdORI\Hy@PDFDef%
- \def\Hy@PDFDef##1##2{\@ifFTYfalse\afterassignment%
- \@Fstr\@hpdORI{##1}{##2}\@ifFTYback}%
-\fi%
-\ifx\pdfstringdef\undefined\else%
- \let\pdfstringdef\Hy@PDFDef%
-\fi%
- \let\@lti\labelitemi\let\@ltii\labelitemii%
- \let\@ltiii\labelitemiii\let\@ltiv\labelitemiv%
- \@ifo%
- \let\@ifo\undefined%
- \@doFh%
- \let\@doFh\undefined%
- \let\hyphex\undefined\let\frhyphex\undefined%
- \let\@temp@\undefined%
- \let\ifFTY\iffalse\let\ifFTR\iffalse%
- \let\ifFLA\iffalse\let\ifFMA\iffalse\let\ifFH\iffalse%
-\def\@tempa##1{\o@everypar{\rl@everypar##1}}%
-\ifx\@tempa\everypar\let\TeXeverypar\o@everypar%
-\else\let\TeXeverypar=\everypar%
-\fi%
- \ifx \TeXXeTstate \undefined%
- \edef \next {\ifx \beginL \undefined 00\else 01\fi}%
- \else%
- \edef \next {\ifnum \TeXXeTstate = 0 00\else 01\fi}%
- \fi%
- \if \next\let\beginL\relax\let\beginR\relax%
- \else%
- \edef\@fepORI{{\the\TeXeverypar}}%
- \def\@SetBFWdirection{\csname begin%
- \beginFWdirection\endcsname}%
- \TeXeverypar={\@SetBFWdirection%
- \let\@SetBFWdirection\relax%
- {\let\@nodocument\relax%
- \@fepORI}}%
- \fi%
- \let\ErrFrench\@Ffnt\def\@Ffnt##1{}%
-\ifx\undefined\babel@core@loaded%
-\protected@write\@auxout{}{\protect%
-\csname auxWARNINGi\protect\endcsname{\protect\typeout%
- {-34- this file and other auxiliary files require to %
- use the following}}}%
-\protected@write\@auxout{}{\protect%
-\csname auxWARNINGi\protect\endcsname{\protect\typeout%
- {-34- LaTeX packages: \frenchname!}}}%
-\protected@write\@auxout{}{\protect%
-\csname auxWARNINGi\protect\endcsname{\protect\typeout%
- {-34- check \protect\protect\protect\usepackage%
- \protect\space or remove these files.%
- Typesetting is aborted!}%
- \protect\stop}}%
-\fi%
-\@finput{frlpatch.sty}%
- \ifx\FSfd@patch\FSfd\else
- \f@issue%
- \@fw{-42- %
- \@txt@msg{The French patch file (frlpatch.sty) is not suitable^^J}%
- \@txt@msg{for this version of the "\frenchpack" package dated \FSfd}%
- }%
- \batchmode\@@end%
- \fi%
- \let\@Ffnt\ErrFrench\let\ErrFrench\undefined%
- \IfFileExists{\frenchname.cfg}{%
- \f@issue%
- \@fw{-48- \@txt@msg{Lecture du fichier de }%
- \@txt@msg{configuration de \frenchpack}%
- }%
- \@finput{\frenchname.cfg}}{}%
- \beginlanguage}%
- \let\@dORI\document%
- \def\document{%
- \ifx\noxcomment\undefined\else%
- \global\let\@x@hk\xcomment@hook\global\noxcomment\fi%
- \ifx\btxselectlanguage\undefined%
- \else\ifx\babel@savevariable\undefined%
- \f@issue\@fw{-87- %
- \@txt@msg{ERREUR \string: }%
- \@txt@msg{babelbib s'utilise uniquement avec babel}%
- }%
- \stop%
- \fi%
- \fi%
- \ifx\@bglngpk\babel@savevariable%
- \else%
- \f@issue\@fw{-71- %
- \@txt@msg{ATTENTION : }%
- \@txt@msg{si babel est utilis\'e, mettre \frenchname\space en option}%
- }%
- \fi\let\@bglngpk\undefined%
- \@dORI%
- \GOfrench%
- \let\GOfrench\undefined%
- \ifx\noxcomment\undefined\else\let\xcomment@hook\@x@hk%
- \expandafter\xcomment@hook\fi}%
-\@makeother`\@makeother<\@makeother>\@makeother'%
-\let\enddocumentasusual\enddocument%
- \def\enddocument{\def\@tempa{\AtEndDocument{\french\clearpage%
- \global\let\ifCLA\iffalse%
- \let\ifCLAfrench\iffalse%
- \endfrench}}%
- \csname f@lastpage\endcsname%
- \@CGroup%
- \ifFLA%
- \@tempa%
- \def\@tempa{empty}\ifx\@specialstyle\@tempa%
- \else\gdef\@specialstyle{french}\fi%
- \fi%
- \let\GOfrench\relax%
- \switchtolanguage\englishTeXmods%
- %
- \ifx\undefined\babel@core@loaded\else%
- \ifx\@testdef\undefined\else%
- \@gG{@td}{@testdef}{//}{3}\fi%
- \fi%
- %
-\ifx\ConfigureToc\undefined\else%
- \let\@ifFTYfalse\relax\let\@ifFTYback\relax%
- \@Fstr\let\@Fstr\relax%
-\fi%
- \enddocumentasusual%
- }%
-\let\@whatUCH\relax%
-\def\@eatDP{\@ifNextNB:{\@gobble}{}}%
-\def\f@ffrench{\ifx\listoffigures\relax\else%
- \figurename~\thefigure\ifFTY\captionseparator\fi\fi%
- \ifFTY\expandafter\@eatDP\fi}%
-\def\f@tfrench{\ifx\listoftables\relax\else%
- \tablename~\thetable\ifFTY\captionseparator\fi\fi%
- \ifFTY\expandafter\@eatDP\fi}%
-\def\unnumberedcaptions#1{\@noBDfr%
- %
- \expandafter\let\csname listof#1s\endcsname\relax%
- \ifx\listoffigures\relax\ifx\listoftables\relax%
- \let\unnumberedcaptions\undefined%
- \fi\fi%
- }%
-%===== traitement de l'anglais =====%
-\def\beginlanguage{% might be used at \begin{document} time
- \ifx\selectlanguage\undefined\english%
- \else\selectlanguage{english}\fi}%
-\edef\beginFWdirection{L}% write Left to right
-\ifx\undefined\babel@core@loaded%
- \DeclareOption{english}{\def\beginlanguage{% language to start
- \ifx\selectlanguage\undefined\english%
- \else\selectlanguage{english}\fi}%
- }%
- \ProcessOptions% English option need, at least, to be processed.
-\fi%
-\expandafter\ifx\csname englishTeXmods\endcsname\relax%.\ifundefined
-\else \endinput \fi%........ \then go ahead \else do nothing \fi
-\ifx\@ifundefined\undefined%
-\long\def\@ifundefined#1#2#3{\expandafter\ifx\csname%.......... \@ifundefined
- #1\endcsname\relax#2\else#3\fi}%
-\fi%
-\let\ifCLAenglish\iffalse%
-\def\@tempa{\global\let\ifCLA\iffalse%
- }%
-\ifx\ifCLA\undefined\expandafter\@tempa\fi%
-
-\global\let\ifnonenglishheadings\iffalse%english style allows english headings!
-\gdef\captionsenglish{%...................................... \captionsenglish
- \ifx\captionsnames\captionsenglish\else
- \def\pagename{page}%
- \def\refname{References}%
- \def\abstractname{Abstract}%
-\ifx\bibname\undefined\else%
- \def\bibname{Bibliography}%
-\fi%
-\ifx\btxselectlanguage\undefined% Don't call \bibsenglish if babelbib loaded.
- \csname bibsenglish\endcsname%
-\fi%
- \def\contentsname{Table of Contents}%
- \def\listfigurename{List of Figures}%
- \def\listtablename{List of Tables}%
-\ifx\listalgorithmname\undefined\else%
- \def\ALG@name{algorithm}%
- \def\listalgorithmname{List of \ALG@name s}%
-\fi%
- \def\indexname{Index}%
- \def\seename{\emph{see}}% used normally in makeidx.sty
- \def\seealsoname{\emph{see also}}% added macro \seealso
- \def\figurename{Figure}%
- \def\tablename{Table}%
- \def\partname{Part}%
- \def\glossaryname{Glossary}%
- \def\kwname{\textbf{Keywords}: }%
- \def\draftname{DRAFT}%
- \def\prefacename{Preface}%
-\ifx\proofname\undefined\else%
- \def\proofname{Proof}%
-\fi%
-\ifx\opening\undefined\else%
- \def\headtoname{To}%
- \def\ccname{cc}%
- \def\enclname{Encl}%
- \def\PSname{PS:}% Post-Scriptum
- \def\Objectname{Subject:}% Subject of the letter
- \def\YourRefname{Your Ref:}% Your reference number
- \def\OurRefname{Our Ref:}% Our reference number
- \def\emailname{email:}% Email address
-\fi%
-\ifx\slidename\undefined\else%
- \def\slidename{Slide}%
-\fi%
-\ifx\notesname\undefined\else%
- \def\notesname{Notes}%
-\fi%
-\ifnonenglishheadings% Bypass to a LaTeX slight bug...
-\else%
- \def\chaptername{Chapter}%
-\fi%
- \def\appendixname{Appendix}%
- \fi%
-\let\captionsnames\captionsenglish%
-}%
-\@ifundefined{englishTeXmods}{%................................ \englishTeXmods
- \gdef\englishTeXmods{%\captionsnames are normally restored by prev. langua.
- \ifCLA
- \ifCLAenglish%
- \ifx\captionsnames\captionsenglish%
- \else\captionsenglish\dateenglish%
- \fi%
- \fi%
- \else%
- \ifx\captionsnames\captionsenglish%
- \else\captionsenglish\dateenglish%
- \fi%
- \fi%
- \csname @xtrasenglish\endcsname%
- \def\languagename{english}% set it for mlp.
- \let\switchtolanguage\endenglish%
- }%
- }{}%
-\ifx\dateenglish\undefined%...................................... \dateenglish
-\def\dateenglish{\def\today{\ifcase\day\or 1st\or 2nd\or 3rd\or 4th\or 5th\or
- 6th\or 7th\or 8th\or 9th\or 10th\or 11th\or 12th\or 13th\or 14th\or 15th\or
- 16th\or 17th\or 18th\or 19th\or 20th\or 21st\or 22nd\or 23rd\or 24th\or
- 25th\or 26th\or 27th\or 28th\or 29th\or 30th\or 31st\fi~\ifcase\month\or
- January\or February\or March\or April\or May\or June\or July\or August\or
- September\or October\or November\or December\fi\space \number\year}}%
-\fi%
-\ifx\undefined\babel@core@loaded%
- \edef\extrasenglish{}\def\@xtrasenglish{\extrasenglish}% for other packages.
-\else% the date mechanism
- \let\extrasenglish\englishTeXmods%
-\fi%
-\@ifundefined{english}{\gdef\english{\relax}}{}% Default............ \english
-\@ifundefined{switchtolanguage}{%............................ \switchtolanguage
- \gdef\switchtolanguage#1{#1}}{}%
-\let\@enstORI\switchtolanguage% save original switchtolanguage if any.
-\let\englishORI\english% assuming \language=x was set here
-\def\endenglish{\let\switchtolanguage\@enstORI%
- \ignorespaces}% but they are not after \end{english} !
-\let\noextrasenglish\endenglish%
-\def\english{\switchtolanguage\englishTeXmods\englishORI%...... Final \english
- \ignorespaces}% but they are not after \begin{english} !
-\english% Ready now to activate the mechanism [english is the default language]
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%===================================%
-\def\languagename{french}%
-\let\ifnonenglishheadings\iftrue%
-\def\datefrench{%
-\def\todayfrench{\ifx\ier\undefined\def\ier{er}\fi%
- \ifnum\day=1\relax 1\ier%
- \else \number\day\fi%
- \space\ifcase\month\or janvier\or f\'evrier\or mars\or %
- avril\or mai\or juin\or juillet\or ao\^ut\or septembre\or %
- octobre\or novembre\or d\'ecembre\fi \space\number\year}%
-}\datefrench%
-\if@filesw
- \def\ordinalSecondNam{{s}econd}%
- \def\ordinalSecondName{{s}econde}%
-\else%
- \def\ordinalSecondNam{{d}euxi\`eme}%
- \let\ordinalSecondName\ordinalSecondNam%
-\fi%
- \def\@osn#1#2{\expandafter\ifx\csname#1osn\endcsname%
- \relax#2\else\csname#1osn\endcsname\fi}%
- \def\ordinal#1{\ifcase\value{#1}\or {p}remier%
- \or\@osn{#1}{\ordinalSecondNam}\else\ordin@l{#1}\fi}%
- \def\ordin@l#1{\ifcase\value{#1}\or\or\or %
- {t}roisi\`eme\if@filesw{\protected@write\@auxout{}{%
- \protect\expandafter%
- \protect\gdef\protect\csname#1osn%
- \protect\endcsname%
- {{d}euxi\`eme}}}%
- \fi%
- \or {q}uatri\`eme\or {c}inqui\`eme\or {s}ixi\`eme\or %
- {s}epti\`eme\or {h}uiti\`eme\or {n}euvi\`eme\or {d}ixi\`eme\or %
- {o}nzi\`eme\or {d}ouzi\`eme\or {t}reizi\`eme\or {q}uatorzi\`eme\or %
- {q}uinzi\`eme\or {s}eizi\`eme\or {d}ix-septi\`eme\or {d}ix-huiti\`eme\or %
- {d}ix-neuvi\`eme\or {v}ingti\`eme\fi}%
- \def\ordinale#1{\ifcase\value{#1}\or {p}remi\`ere%
- \or\@osn{#1}{\ordinalSecondName}\else\ordin@l{#1}\fi}%
- \def\Ordinal{\expandafter\uppercase\ordinal}%
- \def\Ordinale{\expandafter\uppercase\ordinale}%
-\def\captionsfrench{%
- \ifFTR%
- \ifx\captionsnames\captionsfrench\else%
- \let\@tdORI\today%
- \let\f@fORI\fnum@figure%
- \let\f@tORI\fnum@table%
- \let\@cnsORI\captionsnames%
- \def\pagename{page}%
- \def\refname{R\'ef\'erences}%
- \def\abstractname{R\'esum\'e}%
-\ifx\bibname\undefined\else%
- \def\bibname{Bibliographie}%
-\fi%
-\ifx\btxselectlanguage\undefined%
- \csname bibsfrench\endcsname%
-\fi%
- \def\contentsname{Table des mati\`eres}%
- \def\listfigurename{Table des figures}%
- \def\listtablename{Liste des tableaux}%
-\ifx\listalgorithmname\undefined\else%
- \def\ALG@name{algorithme}%
- \def\listalgorithmname{Liste des \ALG@name s}%
-\fi%
- \def\indexname{Index}%
- \def\seename{\emph{voir}}%
- \def\seealsoname{\emph{voir aussi}}%
- \def\figurename{\textsc{Fig.}}%
- \def\tablename{\textsc{Tab.}}%
- \def\sommairename{Sommaire}%
- \def\partname{%
- \ignorespaces\Ordinale{part}\space partie%
- \@RPtNoInDoc\noexpand\@RPtNoInToc}%
- \def\glossaryname{Glossaire}%
- \def\kwname{\textbf{Mots-cl\'e} : }%
- \def\draftname{- \noexpand\351preuve -}%
- \def\prefacename{Pr\'eface}%
-\ifx\proofname\undefined\else\def\proofname{D\'emonstration}\fi%
-\ifx\fr@RIfM@cls\undefined%
- \let\fnum@figure\f@ffrench%
- \let\fnum@table\f@tfrench%
- \def\@RPtNoInToc{}%
- \def\@RPtNoInDoc{\def\thepart{}}%
- \else\def\@RPtNoInToc##1.{.}%
- \def\@RPtNoInDoc##1\thepart{}%
-\fi%
-\ifx\opening\undefined\else%
- \def\headtoname{}%
- \def\ccname{c.c. }%
- \def\enclname{P.j. }%
- \def\PSname{P.-S. :}%
- \def\Objectname{Objet :}%
- \def\YourRefname{v/r\'ef. :}%
- \def\OurRefname{n/r\'ef. :}%
- \def\emailname{m.\'el. :}%
-\fi%
-\ifx\slidename\undefined\else%
- \def\slidename{Transparent}%
- \def\listslidename{Liste des transparents}%
-\fi%
-\ifx\notesname\undefined\else%
- \def\notesname{Notes}%
-\fi%
- \def\chaptername{Chapitre}%
- \def\appendixname{Annexe}%
- \let\captionsnames\captionsfrench%
- \fi%
- \let\today\todayfrench%
-\def\@cORI{\@cnsORI%
- \let\today\@tdORI%
- \let\fnum@figure\f@fORI%
- \let\fnum@table\f@tORI}%
-\fi%
-}%
-\let\@tlORI\@trivlist%
-\def\frenchtrivsepwarnings{\let\ifFTSW\iftrue}%
-\def\nofrenchtrivsepwarnings{\let\ifFTSW\iffalse}%
-\long\def\frtrivseplengths#1{%
- \nofrenchtrivsepwarnings%
- \long\def\fr@tsl{#1}%
- }%
-\def\fr@tsl{\setlength{\parsep}{0.2ex plus 0.1ex minus 0.1ex}%
- \setlength{\itemsep}{0.2ex plus 0.1ex minus 0.1ex}%
- \setlength{\topsep}{0.4ex plus 0.2ex minus 0.2ex}%
- \setlength{\partopsep}{1.6ex plus 0.8ex minus 0.8ex}%
- }%
-\def\frenchtrivsep{\ifFLA\def\@trivlist{%
- \fr@tsl\@tlORI}%
- \fi}
-\def\nofrenchtrivsep{\let\@trivlist\@tlORI}%
-\@ifundefined{@afterindenttrue}{\let\@afterindenttrue\relax%
- \let\@afterindentfalse\relax}{}%
-\let\@aifORI\@afterindentfalse%
-\edef\@piORI{\the\parindent}%
-\begingroup \catcode `| =0 \catcode `[ = 1 \catcode`] =2%
- \catcode `\{=12 \catcode `\}=12 \catcode`\\=12%
- |gdef|@xversatim#1\end{versatim}[#1|end[versatim]]%
- |endgroup%
-\let\@FIM@\relax%
-\def\fr@idf{\let\@afterindentfalse\@afterindenttrue\@afterindenttrue}%
-\def\fr@nidf{\let\@afterindentfalse\@aifORI\@afterindentfalse}%
-\ifx\titlespacing\undefined%
- \let\which@indent\fr@idf%
-\else\let\which@indent\fr@nidf%
-\fi%
-\def\fr@lbi{\def\labelitemi{\@FIM@--}\def\labelitemii{\@FIM@--}%
- \def\labelitemiii{\@FIM@--}\def\labelitemiv{\@FIM@--}%
- }%
-\long\def\frlabelitems#1{\ifFLA\long\def\fr@lbi{#1}%
- \fr@lbi\fi}%
-\def\@FIM{%
- \fr@lbi%
- \def\indentfirst{\ifFLA\fr@idf\fi}%
- \def\nonindentfirst{\ifFLA\fr@nidf\fi}%
- \which@indent%
-}%
-\def\@temp@{%
-\let\@ps@fp\ps@firstpage%
-\def\@opening{%
-\let\@wideletter\relax%
-\let\emailadd\@empty\let\@yourref\@empty\let\@ourref\@empty%
-\let\@object\@empty%
- \def\ps@firstpage{\ifFLA%
- \advance\topmargin by -20\p@%
- %
- \def\@oddhead{\ifx\undefined\formhead\else%
- \bgroup\hss\formhead\hss\egroup\fi}%
- \def\@oddfoot{\raisebox{-45\p@}[\z@]%
- {\hbox to \textwidth{%
- \ifcase \@ptsize\relax%
- \normalsize%
- \or \sm@ller%
- \or \footnotesize%
- \fi%
- %
- \ifx\undefined\formfoot\hfill\else%
- \bgroup\hss\formfoot\hss\egroup\fi%
- }}\hss}%
- \def\@evenhead{}\def\@evenfoot{}%
- \else\@ps@fp\fi}%
- \long\def\opening####1{%
- \ifFLA%
- \advance\indentedwidth by -0.25\longindentation%
- \advance\longindentation by 0.22\textwidth%
- \advance\parindent by 1.5em%
- %
- \let\nopagenumbers\relax%
- \thispagestyle{firstpage}%
- %
- \raggedbottom%
- \ifx\@empty\fromlocation\location{Le}\fi%
- \ifx\@empty\fromaddress\let\fromaddress\space\fi%
- {\raggedright\hspace*{-0.25\indentedwidth}%
- \parbox[t]{0.5\textwidth}{\ignorespaces%
- \vbox to 0\p@{\fromaddress\vss}}%
- \\*[1.75\baselineskip]%
- \par}%
- \ifx\@empty\toname%
- %
- {\raggedleft\bgroup\fromlocation\space\@date\egroup\par}%
- \else%
- {\raggedleft\begin{tabular}{l}\ignorespaces%
- \toname\\ \toaddress\\*[6\parskip]%
- \fromlocation\space\@date\end{tabular}\par}%
- \fi%
- \ifx\@empty\@ourref\else%
- {\raggedright \hspace*{-0.25\indentedwidth}%
- \OurRefname\space\@ourref \par}%
- \fi%
- \ifx\@empty\@yourref\else%
- {\raggedright \hspace*{-0.25\indentedwidth}%
- \YourRefname\space\@yourref \par}%
- \fi%
- \ifx\@empty\@object\else%
- {\raggedright \hspace*{-0.25\indentedwidth}%
- \textbf{\Objectname}\space\@object \par}%
- \fi%
- \par\vspace*{3\parskip}%
- \noindent####1\hfill\vspace*{3\parskip}%
- \@wideletter%
- \else\@oORI{####1}%
- \fi}}%
-\def\@closing{%
- \def\closing{\fclosing@[9]}%
- \def\fclosing{\@ifNextNB[{\fclosing@}{\fclosing@[9]}%
- }%
- \long\def\fclosing@[####1]####2{%
- \ifFLA%
- \par%
- \vspace{\parskip}\stopbreaks%
- \ignorespaces ####2\\[####1\medskipamount]%
- \ifx\@empty\fromaddress\else%
- \hspace*{-0.25\indentedwidth}%
- \hspace*{\longindentation}\fi%
- {\raggedright\begin{tabular}{l}\ignorespaces%
- \ifx\@empty\fromsig%
- \fromname%
- \else \fromsig \fi%
- \ifx\@empty\emailadd\else\\{\footnotesize%
- \emph{\emailname} \emailadd}\fi%
- \strut\end{tabular}}\par%
- \vskip 0pt plus 1fil%
- \else\@cloORI{####2}%
- \fi}%
- \def\endletter{\ifFLA\vskip 0pt plus 3fil\fi%
- \@elORI}}%
-\@ifundefined{opening}{\def\@opening{}\def\@closing{}}%
- {\let\@oORI\opening\let\@cloORI\closing%
- \let\@elORI\endletter%
- \@opening\@closing}%
-}%
-\ifx\opening\undefined\let\@temp@\relax\fi%
-\@temp@%
-\def\@tempa{\let\fr@RIfM@cls\undefined}%
-\let\fr@RIfM@cls\RIfM@%
- \ifx\RIfM@\undefined\else%
- \expandafter\ifx\csname @classname\endcsname\relax\@tempa%
- \else\def\@tempb#1#2#3#4\@nil{%
- \if#1a\if#2m\if#3s\else\@tempa\fi%
- \else\@tempa\fi\else\@tempa\fi}%
- \expandafter\@tempb\@classname\@nil%
- \fi%
- \fi%
-\def\@temp@{\def\ps@french{\if@fancyplain\ps@plain@fancy\else\ps@plain\fi}}%
-\ifx\ps@fancyplain\undefined%
- \ifx\fr@RIfM@cls\undefined\def\ps@french{}%
- \else\def\ps@french{\global\topskip\normaltopskip}%
- \fi%
-\else\@temp@%
-\fi%
-\let\ps@frenchORI\ps@french%
-\let\@sdORI\secdef%
-\def\nofrenchpagestyle{\let\secdef\@sdORI}%
-\def\frenchpagestyle{%
- \def\secdef{\ifFLA\thispagestyle{french}\fi\@sdORI}%
- }%
-\frenchpagestyle%
-\ifx\aliaspagestyle\undefined%
-\def\nobeginingfolio{\let\ps@french\ps@empty}%
-\else%
-\def\nobeginingfolio{\let\ps@french\ps@empty%
- \aliaspagestyle{chapter}{empty}%
- }%
-\fi%
-\def\beginingfolio{\let\ps@french\ps@frenchORI%
- \frenchpagestyle}%
-\def\@EIM{\def\labelitemi{\@lti}\def\labelitemii{\@ltii}%
- \def\labelitemiii{\@ltiii}\def\labelitemiv{\@ltiv}%
- \let\@afterindentfalse\@aifORI\@afterindentfalse%
- \parindent\@piORI}%
-\let\@FL\relax%
-\def\nonfrench{\ifFrench\@DFP%
- \def\@temp@{\@AFP}%
- \else\@NoFr\def\@temp@{\relax}\fi%
- \def\endnonfrench{\@temp@\ignorespaces}%
- \ignorespaces}%
-\def\@dospecialsfrench{\do\`\do'\@dsversa}%
-\def\@dsversa{%
- \do\ \do\\\do\{\do\}\do\$\do\&\do\#\do\|\do\^^K\do\_\do\^^A\do\%\do\~%$emacs
- \do\!\do\?\do\;\do\:\do\<\do\>\do\^\do\"}%
-\def\@sanitizefrench{%
- \@saORI%
- \@makeother\!\@makeother\?\@makeother\;\@makeother\:%
- \@makeother\`\@makeother'\@makeother\<\@makeother\>%
- \@makeother\^\@makeother\"}%
-\def\@ifNextNB#1#2#3{\let\@tempe=#1\def\@tempa{#2}\def\@tempb{#3}\futurelet%
- \@tempc\@Fifnch}%
- \def\@Fifnch{\ifx \@tempc \@tempe\let\@tempd\@tempa%
- \else\let\@tempd\@tempb\fi\@tempd}%
-\def\@ifNextNBc#1#2#3#4{\let\@tempe=#1\let\@tempf=#2%
- \def\@tempa{#3}\def\@tempb{#4}\futurelet%
- \@tempc\@Fifnchc}%
- \def\@Fifnchc{\ifx\@tempc\@tempf\@tempa\else\@Fifnch\fi}%
-\def\@skiplastspace{\ifdim\lastskip>\z@\unskip\penalty\@M\fi}%
-\let\ifFrench\iftrue%
-\def\@AFP{%
- \let\dospecials\@dospecialsfrench%
- \let\@sanitize\@sanitizefrench%
- \AFPdp\AFPinfsup}%
-\def\AFPdp{\ifFrench\catcode`\!=\active\catcode`\?=\active%
- \catcode`\;=\active\catcode`\:=\active\fi}%
-\let\AFPinfsup\relax%
-\def\AFPq{\ifFrench\catcode`'=\active\catcode``=\active\fi}%
-\def\AFPdq{\catcode`"=\active}%
-\def\@DFP{%
- \DFPq\DFPinfsup\ifLPA\else\DFPdp%
- \let\dospecials\@dsORI%
- \let\@sanitize\@saORI\fi}%
-\def\DFPq{\ifFrench\catcode``=12\catcode`'=12\fi}%
-\let\DFPinfsup\relax%
-\def\DFPdp{\ifFrench\catcode`;=12\catcode`:=12%
- \catcode`!=12\catcode`?=12\fi}%
-\def\DFPdq{\catcode`"=12}%
-\let\ifLPA\iffalse%
-\let\ifFG\iffalse%
-\def\@tempa#1{\f@issue%
- \@fw{-13- \@txt@msg{le caract\`ere "#1" est d\'ej\`a actif}%
- }[#1]%
- \let\@tempb\next\let\@tempc\empty}%
-\let\@tempb\empty%
-\AFPdp%
-\let\ifWTS\iffalse%
-\def\@WTS{\relax\ifmmode\else\ifhmode%
- \ifdim\lastskip>\z@\unskip\fi%
- \fi\fi}%
-\def\@tempc{%
-\def;{\ifFTY\protect\@PV%
- \else\ifWTS\@WTS\fi\string;\fi}%
- }%
-\def\@tempd{\@tempa{\string;}}%
-\ifx;\undefined\def\@tempd{}\fi\@tempd\@tempc%
-\def\@PV{\relax\ifmmode\string;\else%
- \ifhmode\ifUSP\unskip\space\fi%
- \ifdim\lastskip>\z@\unskip\penalty\@M\,\fi%
- \fi\string;\fi}%
-\def\@tempc{%
-\def:{\ifFTY\protect\@DP%
- \else\ifWTS\@WTS\fi\string:\fi}%
- }%
-\def\@tempd{\@tempa{\string:}}%
-\ifx:\undefined\def\@tempd{}\fi\@tempd\@tempc%
-\@ifundefined{@beginparpenalty}{\def\@beginparpenalty=#1{\penalty#1}}{}%
-\def\@DP{\relax\ifmmode\string:\else%
- \ifhmode\ifUSP\unskip\space\fi%
- \ifdim\lastskip>\z@\unskip\penalty\@M\,\fi%
- \fi%
- \string:%
- \@beginparpenalty=\@M\relax%
- \fi}%
-\def\@wu#1{\@@wu#1,\void}%
-\def\@@wu#1,#2{\ifx#1\empty\else\@@@wu #1\fi%
- \def\@tempa{\@@wu#2}%
- \ifx#2\void\else\expandafter\@tempa\fi%
- }%
-\def\@@@wu#1=#2{\expandafter\edef\csname #1\endcsname:{#2\string:}}%
-\ifx\hhline\undefined\else\let\@hhlORI\hhline%
- \def\hhline{\omit\ifFrench\let:\@cidp\fi%
- \expandafter\@gobble\@hhlORI}%
-\fi%
-\def\@tempc{%
-\def!{\ifFTY\protect\@PE%
- \else\ifWTS\@WTS\fi\string!\fi}%
- }%
-\def\@tempd{\@tempa{\string!}}%
-\ifx!\undefined\def\@tempd{}\fi\@tempd\@tempc%
-\def\@PE{\ifmmode\string!\else%
- \ifhmode\ifUSP\unskip\space\fi%
- \ifdim\lastskip>\z@\unskip\penalty\@M\,\fi%
- \fi%
- \string!\fi}%
-\def\@tempc{%
-\def?{\ifFTY\protect\@PI%
- \else\ifWTS\@WTS\fi\string?\fi}%
- }%
-\def\@tempd{\@tempa{\string?}}%
-\ifx?\undefined\def\@tempd{}\fi\@tempd\@tempc%
-\def\@PI{\relax\ifmmode\string?\else%
- \ifhmode\ifUSP\unskip\space\fi%
- \ifdim\lastskip>\z@\unskip\penalty\@M%
- \hskip +0.09em plus 0.07667em%
- \fi%
- \fi%
- \string?\fi}%
-\ifx\@tempb\next\let\AFPdp\empty\f@issue%
- \@fw{-13b- %
- \@txt@msg{la double ponctuation est alors d\'esactiv\'ee}}\fi%
-\let\ifLPA\ErrFrench%
-\let\ifFG\ErrFrench%
-\let\@aORI\@array%
-\def\@array{}%
-\DFPdp\AFPdp%
-\ifx\AFPdp\empty\else%
-\def\@array{\let\noexpand\@tempa=\noexpand!%
- \def\noexpand!{\noexpand\string\noexpand!}%
- \edef\noexpand\@tempb{##1}%
- \let\noexpand!=\noexpand\@tempa}%
-\fi%
-\catcode`<=13\catcode`>=13%
-\let\ifArG\iftrue%
-\edef\@array[#1]{\edef\noexpand\@tempb{#1}%
- \noexpand\ifArG\noexpand\else%
- \noexpand\ifnum\catcode`\noexpand<=\active%
- \noexpand\ifmmode\let\noexpand<\noexpand\inferieura%
- \let\noexpand>\noexpand\superieura%
- \noexpand\fi\noexpand\fi\@array%
- \noexpand\fi%
- \noexpand\@aORI[{\noexpand\@tempb}]}%
-\let\@eaORI\eqnarray%
-\def\eqnarray{\ifArG\else\ifnum\catcode`<=\active%
- \let<\inferieura\let>\superieura%
- \fi\fi\@eaORI}%
-\ifx\@@array\undefined\else%
- \let\@@aORI\@@array%
-\def\@@array{\ifArG\else\ifnum\catcode`<=\active%
- \let<\inferieura\let>\superieura%
- \fi\fi\@@aORI}%
-\fi%
-\catcode`<=12\catcode`>=12%
-\DFPdp%
-\let\@CGroup\relax\let\@@FG\relax%
-\let\@LG\relax%
-\def\@normalrq{\relax\ifmmode^\prime\else\@frq\fi}%
-\def\@frq{{\catcode`'=12{\ifNEQ\ifECM\char\rq001%
- \else\char\rq023\hbox{}\fi%
- \else\string'\fi}}}%
-\AFPq%
-\def`{\protect\@PLQ}%
- \let\@PLQ@\lq%
- \def\@PLQ{\ifmmode\string`\let\@PLQ@\relax%
- \else\ifNED\let\@PLQ@\@PLQn\fi%
- \ifhmode\let\@PLQ@\@PLQn\fi%
- \fi\@PLQ@}%
- \def\@PLQn{\@ifNextNB`{\protect\@OQ}%
- {\ifNEQ\ifECM\char\rq000\hbox{}%
- \else\char\rq022\hbox{}\fi%
- \else\string`\fi}%
- }%
- \def\@OQ`{\ifNED\protect\@LG\else\string``\fi}%
-\def'{\protect\@PRQ}%
- \let\@PRQ@\rq%
- \def\@PRQ{\ifmmode\let\@PRQ@\@SRQ@%
- \else\ifhmode\let\@PRQ@\@PRQn\fi%
- \fi\@PRQ@}%
- \def\@@FGp'{\@@FG}%
- \def\@PRQn{\let\@PRQ@\rq%
- \@ifNextNB'{\ifNED\let\@PRQn@\@@FGp%
- \else\let\@PRQn@\relax\string'\fi\@PRQn@}%
- {\protect\@normalrq}}%
-\let\ifNED\iffalse%
-\let\ifNEQ\iffalse%
-\DFPq%
-\def\untypedspaces{\@noBDfr%
- \let\ifUSP\iftrue}%
-\def\typedspaces{\@noBDfr%
- \let\ifUSP\iffalse}%
-\let\if@labelsinmargin\iffalse%
-\let\ifFG\iffalse%
-\let\ifFrench\iffalse%
-{\def\@genMLhyph{\@ifundefined{french}{}{\gdef\fhyph{\french}}%
- \@ifundefined{english}{}{\gdef\ehyph{\english}}}%
-\@ifundefined{fhyph}{\@genMLhyph}{}%
-}%
-\gdef\frenchTeXmods{%
- \global\let\ifFrench\iftrue%
-\ifCLA%
- \ifCLAfrench%
- \@AFP%
- \frenchtypography\frenchtranslation\frenchlayout%
- \fi%
-\else%
- \@AFP%
- \frenchtypography\frenchtranslation\frenchlayout%
-\fi%
- \frenchmacros\frenchwarnings%
- \let\@HifORI\@Hif\let\@HfiORI\@Hfi%
- \frenchhyphenation%
- \csname @xtrasfrench\endcsname%
- \ifx\GOfrench\undefined%
- \csname beginL\endcsname%
- \fi%
- \def\languagename{french}%
- \@ufo%
- \let\switchtolanguage\endfrench%
- \ignorespaces%
- }%
-\ifx\undefined\babel@core@loaded%
- \edef\extrasfrench{}\def\@xtrasfrench{\extrasfrench}%
- \DeclareOption{french}{\def\beginlanguage{%
- \ifx\babel@savevariable%
- \undefined\french%
- \else\endenglish\selectlanguage{french}\fi}%
- }%
- \DeclareOption{english}{\def\beginlanguage{%
- \ifx\babel@savevariable%
- \undefined\english%
- \else\selectlanguage{english}\fi}%
- }%
-\else\let\extrasfrench\frenchTeXmods%
- \AtBeginDocument{%
- \def\@tempa{\protect\@LabeL}%
- \ifx\@tempa\label\else%
- \let\@lORI\label\let\label\@tempa\fi%
- \def\@tempa{\protect\atgH{r}}%
- \ifx\@tempa\ref\else\@gG{r}{ref}{/}{1}\fi%
- }%
-\fi%
-\@ifundefined{switchtolanguage}{%
- \def\switchtolanguage#1{#1}}{}%
-\let\@stlORI\switchtolanguage
-\def\@DFPtestANDset{%
- \ifx\ifFrench\iffalse%
- \f@issue\@fw{-71- %
- \@txt@msg{ATTENTION : }%
- \@txt@msg{si babel est utilis\'e, mettre \frenchname\space en option}%
- }%
- \fi%
- \let\@DFPtestANDset\@DFP%
- \@DFP}%
-\def\endfrench{%
-\ifCLAfrench\else%
- \@DFPtestANDset%
- \nofrenchtypography\nofrenchtranslation\nofrenchlayout%
-\fi%
- \nofrenchmacros%
- \nofrenchhyphenation%
- \let\@Hif\@HifORI\let\@Hfi\@HfiORI%
- \let\switchtolanguage\@stlORI%
- \let\ifFrench\iffalse\@stlORI%
- \ignorespaces}%
-\let\noextrasfrench\endfrench%
-\@ifundefined{englishTeXmods}{\gdef\englishTeXmods{}}{}%
-\global\let\@Hif\empty\global\let\@Hfi\empty%
-\global\let\if@FE\iffalse%
-\newif\if@more\@moretrue%
-\def\@doFh{%
-\def\f@ERRdat{\f@issue%
- \errmessage{-9- \@txt@msg{Corrupted/absent language.dat file.}%
- }\global\let\french\@@end%
- }%
- \bgroup%
- \let\ORIGfrench\french%
- \newcount\@FrCount%
-\def\tl@ng##1{}%
-\def\@rhef##1/##2 /{\def\@tempa{##2}%
- \def\@tempb{##1}%
- \def\@tempc{\ifx\space\@tempa\else%
- \expandafter\gdef\csname ##1@hefn\endcsname{##2\relax}%
- \if@FE\expandafter\@@input##2\relax\fi\fi}%
- \ifx\undefined\@excn\@tempc%
- \else\ifx\@tempb\@excn\@tempc\fi\fi}%
-\gdef\NouveauLangage[##1]##2{%
- \expandafter\@ifundefined{l@##2}{}%
- {%
- \chardef\l@no##1\expandafter\if\csname l@##2\endcsname\l@no\else%
- \edef\l@no{##1}\expandafter%
- %
- \ifx\csname l@##2\endcsname\l@no%
- \else\f@issue\typeout{^^J \frenchname.sty \string: -27- %
- \@txt@msg{language \l@no\space (##2) was initially }%
- \@txt@msg{(at initex) numbered \csname l@##2\endcsname\space(ERROR!)}%
- }[##2]\f@ERRdat%
- \fi\fi}%
- \expandafter\tl@ng\csname##2TeXmods\endcsname%
- \expandafter\gdef\csname##2 \endcsname%
- {\expandafter\switchtolanguage\csname ##2TeXmods\endcsname%
- \@Hif\language=##1\@Hfi\relax}%
- \expandafter\gdef\csname##2\endcsname%
- {\protect\csname##2 \endcsname}%
- }%
-\edef\@temp@{=}%
-\def\@langue##1##2 ##3 ##4/##5{\def\@tempa{=}\def\@tempb{##1}%
- \ifx\@tempa\@tempb%
- \ifnum\@FrCount > 0 \advance\@FrCount by -1\fi%
- \relax%
- \expandafter\NouveauLangage\expandafter[\the\@FrCount]{##2}%
- \ifnum\@FrCount \@temp@ 0 \@FrCount= -1\fi%
- \else\edef\@temp@{<}\@l@ngue##1##2 ##3 ##4/{##5}%
- \fi}%
-\def\@l@ngue##1 ##2 ##3/##4{\NouveauLangage[##4]{##1}%
- %
- \@rhef##1/##3/%
- }%
-\let\hyphenation\f@hyphenation%
-\openin\@inputcheck = language.dat \def\@tempb{}%
-\ifeof\@inputcheck\@Ffnt{language.dat}%
- \ifx\undefined\french %
- \else\xdef\@PrevF{\french}%
- \gdef\french{\switchtolanguage\frenchTeXmods\@PrevF}%
- {\@PrevF\f@issue\@fw{-15- %
- \@txt@msg{le langage \frenchname\space porte le }%
- \@txt@msg{num\'ero \the\language}%
- }}%
- \fi%
- \ifx\undefined\l@english %
- \def\l@english{0}%
- \fi%
- \ifx\undefined\english %
- \else\xdef\@PrevE{\language=\l@english}%
- \gdef\english{\switchtolanguage\englishTeXmods\@PrevE}%
- {\@PrevE\f@issue\@fw{-16 %
- \@txt@msg{the English language\space is numbered }%
- \@txt@msg{\the\language}%
- }}%
- \fi
-\else\@FrCount=-1%
-\loop \endlinechar=-1 \read\@inputcheck to \@lineD \endlinechar`\^^M%
- \ifx\@lineD\empty \else \advance\@FrCount by 1%
- \edef\@lineD{\@lineD\space\space/{\the\@FrCount}}%
- \expandafter\@langue\@lineD%
- \fi%
- \ifeof\@inputcheck \@morefalse \fi%
- \if@more\repeat%
-\fi\closein\@inputcheck%
-\let\hyphenation\@hyphenation%
-\def\@MLtst{\@ifundefined{fhyph}%
- {\if@PMF\gdef\french{\switchtolanguage\frenchTeXmods}%
- \f@issue%
- \@fw{-19- %
- \@txt@msg{utilisation du langage interne num\'ero \the\language}%
- }%
- \else\f@issue%
- \typeout{^^J \frenchname.sty: -20b-
- \@txt@msg{the French language is undefined (ERROR!)}%
- }\f@ERRdat\fi}%
- {\gdef\french{\switchtolanguage\frenchTeXmods\fhyph}%
- \gdef\english{\switchtolanguage\englishTeXmods\ehyph}%
- }%
- }%
-\@ifundefined{french}{\@MLtst}{}%
-\@ifundefined{endenglish}{\global\let\endenglish\french}{}%
-\gdef\tl@ng##1{\ifx ##1\relax\f@issue%
- \@fw{-21- \@txt@msg{##1 n'est pas d\'efini}%
- }[##1]\fi}%
-\ifx\ORIGfrench\french\f@ERRdat\fi%
- \egroup%
- }%
-\ifx\vert\undefined\else\let\@bvORI\vert\fi%
-\def\@fwVIIIII{\f@issue%
- \kbtypeout{^^J -73- \@txt@msg{ERREUR avec AmSTeX : }%
- \@txt@msg{\frenchname.sty a \'et\'e charg\'e trop t\^ot !}%
- }\stop}%
-\ifx\RIfM@\undefined%
-\def\vert{\ifx\RIfM@\undefined\expandafter\@bvORI\else\expandafter%
- \@fwVIIIII\fi}%
-\else%
-\def\vert{\@bvORI}%
-\fi%
-\let\@currname\@currnameORI%
-\def\languagename{english}%
-\def\beginlanguage{%
- \ifx\babel@savevariable%
- \undefined\french%
- \else\endenglish\selectlanguage{french}\fi%
- }%
-\let\@bglngpk\babel@savevariable%
-\ifx\pg@add@to\undefined\else%
-\def\pg@begin{\begingroup}%
-\def\pg@end{\endgroup}%
-\fi%
-\edef\beginFWdirection{L}%
-\ifx\undefined\babel@core@loaded\ProcessOptions*%
- \else%
- \PackageInfo{\frenchname}%
- {Initialisation de l'option \frenchname\space pour Babel}%
- \GOfrench\let\GOfrench\relax%
-\fi%
-\let\@FW\undefined%
-\resetat%
-\PassOptionsToPackage{french}{varioref}%
-\PassOptionsToPackage{french}{pdfscreen}%
-\endinput%
+++ /dev/null
-%%
-%%
-
-\section*{Qu'est-ce que Bacula ?}
-\label{_ChapterStart41}
-\index[general]{Qu'est-ce que Bacula ? }
-\index[general]{Bacula!Qu'est-ce que }
-\addcontentsline{toc}{section}{Qu'est-ce que Bacula ?}
-
-{\bf Bacula} est un jeu de programmes qui vous permet (ou \`a l'administrateur
-syst\`eme) de faire des sauvegardes, restaurations, et v\'erifications des
-donn\'ees d'un ordinateur sur un r\'eseau h\'et\'erog\`ene. Bacula peut
-fonctionner compl\`etement sur un seul ordinateur. Il est capable de
-sauvegarder sur des supports vari\'es, y compris disques et cartouches.
-
-En termes
-techniques, il s'agit d'un programme de sauvegarde Client/Serveur. Bacula est
-relativement facile d'utilisation et efficace, tout en offant de nombreuses
-fonctions avanc\'ees de gestion de stockage qui facilitent la recherche et la
-restauration de fichiers perdus ou endommag\'es. Gr\^ace \`a sa conception
-modulaire, Bacula est \'echelonnable depuis le simple syst\`eme constitu\'e
-d'un ordinateur, jusqu'au syst\`eme de plusieurs centaines d'ordinateurs
-diss\'emin\'es sur un vaste r\'eseau.
-
-\subsection*{Qui a besoin de Bacula ?}
-\index[general]{Qui a besoin de Bacula ? }
-\index[general]{Bacula!Qui a besoin de }
-\addcontentsline{toc}{subsection}{Qui a besoin de Bacula ?}
-
-Si vous utilisez actuellement un programme tel que {\bf tar}, {\bf dump}, ou
-{\bf bru} pour sauvegarder vos donn\'ees, et aimeriez une solution r\'eseau,
-plus de flexibilit\'e, ou les commodit\'es d'un catalogue, Bacula vous
-procurera certainement les fonctions suppl\'ementaires que vous recherchez.
-Cependant, si vous avez peu d'exp\'erience des syst\`emes Unix ou si vous
-n'avez pas l'exp\'erience d'un syst\`eme de sauvegarde sophistiqu\'e, nous ne
-vous recommandons pas l'utilisation de Bacula, car il est beaucoup plus
-difficile \`a installer et utiliser que {\bf tar} ou {\bf dump}.
-
-Si vous attendez de Bacula qu'il se comporte comme les programmes simples
-mentionn\'es ci-dessus et qu'il \'ecrive sur toute cartouche ins\'er\'ee dans le
-lecteur, vous \'eprouverez des difficult\'es \`a travailler avec Bacula. Bacula
-est con\c {c}u pour prot\'eger vos donn\'ees en suivant les r\`egles que vous sp\'ecifiez,
-ce qui signifie que la r\'eutilisation d'une cartouche ne se fera qu'en dernier
-ressort. Il est possible de "contraindre" Bacula \`a \'ecraser toute cartouche dans
-le lecteur, mais il est plus facile et plus efficace d'utiliser un outil
-plus basique pour ce genre d'op\'erations.
-
-Si vous utilisez {\bf Amanda} et aimeriez un programme de sauvegarde qui peut
-\'ecrire sur plusieurs volumes (qui ne soit pas limit\'e par la capacit\'e de vos
-cartouches), Bacula peut certainement satisfaire vos besoins, d'autant que
-plusieurs de nos utilisateurs estiment que Bacula est plus simple \`a
-installer et utiliser que d'autres programmes \'equivalents.
-
-Si vous utilisez actuellement un logiciel commercial sophistiqu\'e tel que
-{\bf Legato Networker}, {\bf ARCserveIT}, {\bf Arkeia}, ou {\bf
-PerfectBackup+}, vous pourriez \^etre interess\'e par Bacula qui fournit la
-plupart de leurs fonctions et qui est un logiciel libre sous licence GNU
-version 2.
-
-\subsection*{Composants ou Services de Bacula}
-\index[general]{Bacula!Composants ou Services de }
-\index[general]{Composants ou Services de Bacula }
-\addcontentsline{toc}{subsection}{Composants ou Services de Bacula}
-
-Bacula est constitu\'e des cinq composants ou services majeurs suivants :
-
-\includegraphics{./bacula-applications.eps}
-(remerciements \`a Aristedes Maniatis pour ce sch\'ema et le suivant)
-
-\begin{itemize}
-\item
- \label{DirDef}
- Le service {\bf Bacula Director
-\label{a1}
-} est le programme qui supervise toutes les op\'erations de sauvegarde,
-restauration, v\'erification et archivage. L'administrateur syst\`eme utilise
-le Bacula Director pour planifier les sauvegardes et restaurer les fichiers.
-Pour plus de d\'etails, consultez la section concernant la conception du Daemon Director
-dans la documentation pour d\'eveloppeurs. Le Director est ex\'ecut\'e en tant que {\it daemon}
-ou service (c'est \`a dire en tâche de fond).
-\item
- \label{UADef}
- Le service {\bf Bacula Console} est le programme qui permet \`a
-l'administrateur ou \`a l'utilisateur de communiquer avec le {\bf Bacula
-Director} (voir ci-dessus). Actuellement, le service Bacula Console est
-disponible en trois versions. La premi\`ere et la plus simple est
-d'ex\'ecuter le programme Console dans une fen\^etre shell (i.e. interface
-TTY). La plupart des administrateurs syst\`eme trouveront cette m\'ethode
-parfaitement ad\'equate. La seconde version est une interface graphique GNOME
-qui est loin d'\^etre compl\`ete, mais est
-tout \`a fait fonctionnelle puisqu'elle poss\`ede la plupart des
-possibilit\'es de la Console shell. La troisi\`eme version est une interface
-graphique wxWidgets qui permet de s\'electionner interactivement les fichiers
-\`a restaurer. Elle int\`egre la plupart des fonctionnalit\'es de la console
-shell, permet la compl\'etion automatique avec la touche tabulation, et
-fournit une aide instantan\'ee relative \`a la commande que vous \^etes en
-train de taper. Pour plus de d\'etails, consultez la section
-\ilink{Conception de la Console Bacula}{_ConsoleChapter} dans la documentation
-pour d\'eveloppeurs.
-\item
- \label{FDDef}
- Le service {\bf Bacula File} (ou programme client) est le programme install\'e
-sur la machine \`a sauvegarder. Il est sp\'ecifique au syst\`eme sur lequel
-il est ex\'ecut\'e et a la charge de fournir les attributs des fichiers et
-les donn\'ees requis par le Director. Les Services File sont aussi charg\'es
-de la partie d\'ependant du syst\`eme de fichiers lors de la restauration des
-attributs de fichiers et des donn\'ees. Pour plus de d\'etails, consultez le
-document sur la conception du File Daemon dans le Guide pour Developpeurs. Ce
-programme est ex\'ecut\'e en tant que service sur la machine \`a sauvegarder,
-et la documentation s'y r\'ef\`ere parfois en tant que Client (par exemple
-dans les fichiers de configuration de Bacula). En plus du File Daemon pour
-Unix/Linux, il existe un File Daemon pour Windows (usuellement distribu\'e au
-format binaire). Le File Daemon Windows fonctionne sur toutes les versions
-actuelles de Windows (NT, 2000, XP, 2003 et peut-\^etre aussi 98 et Me).
-\item
- \label{SDDef}
- Le service {\bf Bacula Storage} est le programme qui transf\`ere les donn\'ees
-et les attributs de fichiers aux m\'edia physiques ou aux volumes et les
-restitue lors de restaurations. En d'autres termes, Le storage Daemon est
-responsable des op\'erations de lecture et d'\'ecriture sur vos cartouches (ou
-autres m\'edia de stockage, comme par exemple des fichiers). Pour plus de
-d\'etails consultez la Documentation Pour D\'eveloppeurs sur la conception du
-Storage Daemon.
-\item
- \label{DBDefinition}
- Les services {\bf Catalogue} ont pour t\^ache de maintenir \`a jour la base de
-donn\'ees des index de fichiers et volumes pour tous les fichiers
-sauvegard\'es. Les services {\bf Catalogue} permettent \`a l'administrateur
-syst\`eme ou \`a l'utilisateur de localiser rapidement et restaurer n'importe
-quel fichier. Les services Catalogue de Bacula le placent dans une
-cat\'egorie diff\'erente de programmes tels que tar et bru, puisque le
-catalogue Bacula maintient un enregistrement de chaque volume utilis\'e,
-chaque job ex\'ecut\'e et chaque fichier sauvegard\'e ce qui permet des
-restaurations et une gestion de volumes efficaces. Bacula supporte
-actuellement trois bases de donn\'ees diff\'erentes, MySQL, PostgreSQL, et
-SQLite. L'une des trois doit \^etre choisie \`a la compilation de {\bf
-Bacula}.
-
-Les trois bases de donn\'ees actuellement support\'ees (MySQL, PostgreSQL, ou
-SQLite) fournissent de nombreuses fonctions telles l'indexation rapide,
-requ\^etes arbitraires, et s\'ecurit\'e. Bien que nous pr\'evoyions de
-supporter d'autres bases de donn\'ees SQL majeures, l'impl\'ementation
-actuelle s'interface seulement avec MySQL, PostgreSQL, et SQLite. Pour plus
-de d\'etails consultez le
-\ilink{document sur la conception des Services Catalogue
-}{_ChapterStart30}.
-
-Les RPMs pour MySQL et PostgreSQL font partie de la distribution Red Hat.
-Sinon, il est tout \`a fait ais\'e de les construire \`a partir des sources.
-Consultez le chapitre
-\ilink{ Installer et configurer MySQL}{_ChapterStart} ou
-\ilink{ Installer et configurer PostgreSQL}{_ChapterStart10} de
-ce document pour plus de d\'etails. Pour plus d'informations sur MySQL et
-PostgreSQL, consultez
-\elink{www.mysql.com}{http://www.mysql.com} ou
-\elink{www.postgresql.org}{http://www.postgresql.org}.
-
-Configurer et construire SQLite est encore plus facile. Pour les d\'etails de
-configuration de SQLite, consultez le chapitre
-\ilink{Installer et Configurer SQLite}{_ChapterStart33} de ce
-document.
-\item
- \label{MonDef}
- Le service {\bf Bacula Monitor} est le programme qui permet \`a
-l'administrateur ou \`a l'utilisateur de contr\^oler le statut des {\it
-daemons} Bacula ({\bf Bacula Directors}, {\bf Bacula File Daemons} et {\bf
-Bacula Storage Daemons}) (voir ci-dessus). Actuellement, la seule version
-disponible est une version GTK+, qui fonctionne avec Gnome et KDE (ainsi que
-tout gestionnaire de fen\^etre qui respecte le standard system tray
-FreeDesktop.org).
-\end{itemize}
-
-Pour r\'ealiser avec succ\`es les op\'erations de sauvegarde et restauration,
-les quatre services suivants doivent \^etre configur\'es et lanc\'es : le
-Director Daemon, le File Daemon, le Storage Daemon et MySQL, PostgreSQL ou
-SQLite.
-
-\subsection*{Configuration de Bacula}
-\index[general]{Configuration de Bacula }
-\index[general]{Bacula!Configuration de }
-\addcontentsline{toc}{subsection}{Configuration de Bacula}
-
-Pour que Bacula comprenne votre syst\`eme, quels clients vous voulez
-sauvegarder et comment, vous devez cr\'eer un certain nombre de fichiers de
-configuration. La suite brosse un tableau de ces op\'erations.
-
-\includegraphics{./bacula-objects.eps}
-
-\subsection*{Conventions utilis\'ees dans ce document}
-\index[general]{Conventions utilis\'ees dans ce document }
-\index[general]{Document!Conventions utilis\'ees dans ce }
-\addcontentsline{toc}{subsection}{Conventions utilis\'ees dans ce document}
-
-{\bf Bacula} est en constante \'evolution, par cons\'equent, ce manuel ne sera
-pas toujours en accord avec le code. Si un objet de ce manuel est
-pr\'ec\'ed\'e d'un ast\'erisque (*), cela signifie que cette fonctionnalit\'e
-particuli\`ere n'est pas impl\'ement\'ee. S'il est pr\'ec\'ed\'e d'un signe
-plus (+), cela indique que la fonction est peut-\^etre partiellement
-impl\'ement\'ee.
-
-Si vous lisez la version de ce manuel fournie avec les sources de Bacula, le
-paragraphe ci-dessus reste vrai. En revanche, si vous lisez la version en
-ligne :
-\elink{www.bacula.org/manual}{http://www.bacula.org/manual}, veuillez garder
-\`a l'esprit que cette version d\'ecrit la version courante de d\'eveloppement
-de Bacula (celle du CVS) qui peut contenir des fonctionnalit\'es qui
-n'existent pas dans la version "officielle". De m\^eme, il est
-g\'en\'eralement un peu \`a la tra{\^\i}ne derri\`ere le code.
-
-\subsection*{D\'emarrage rapide}
-\index[general]{D\'emarrage rapide }
-\index[general]{Rapide!D\'emarrage }
-\addcontentsline{toc}{subsection}{D\'emarrage rapide}
-
-Pour faire fonctionner Bacula rapidement, nous vous recommandons de commencer
-par parcourir la section Terminologie ci-dessous, de passer rapidement en
-revue le chapitre suivant intitul\'e
-\ilink{L'\'etat actuel de Bacula}{_ChapterStart2}, puis le
-\ilink{Guide de d\'emarrage rapide de Bacula}{_ChapterStart37},
-qui vous donnera une vue d'ensemble de la mise en oeuvre de Bacula . Apr\`es
-quoi vous devriez poursuivre avec le chapitre sur
-\ilink{ L'installation de Bacula}{_ChapterStart17}, puis le chapitre
-\ilink{Comment configurer Bacula}{_ChapterStart16}, et finalement,
-le chapitre \ilink{Ex\'ecuter Bacula}{_ChapterStart1}.
-
-\subsection*{Terminologie}
-\index[general]{Terminologie }
-\addcontentsline{toc}{subsection}{Terminologie}
-
-Pour faciliter la communication autour de ce projet, nous fournissons ici les
-d\'efinitions de la terminologie que nous utilisons.
-
-\begin{description}
-
-\item [Administrateur]
- \index[sd]{Administrateur }
- La ou les personne(s) responsable(s) de l'administration du syst\`eme Bacula.
-
-
-\item [Sauvegarde]
- \index[sd]{Sauvegarde }
- Nous utilisons ce terme pour un job Bacula qui sauvegarde des fichiers.
-
-\item [Fichier Bootstrap (Bootstrap File)]
- \index[sd]{Fichier Bootstrap (Bootstrap File) }
- Le bootstrap est un fichier ASCII qui contient, sous une forme compacte, les
-commandes qui permettent \`a Bacula ou \`a l'utilitaire autonome {\bf
-bextract} de restaurer les contenus d'un ou plusieurs volumes, par exemple,
-l'\'etat courant d'un syst\`eme qui vient d'\^etre sauvegard\'e. Avec un
-fichier bootstrap, Bacula peut restaurer votre syst\`eme sans catalogue. Vous
-pouvez cr\'eer un fichier bootstrap depuis un catalogue pour extraire le
-fichier que vous voulez.
-
-\item [Catalogue]
- \index[sd]{Catalogue }
- Le catalogue est utilis\'e pour stocker des informations sommaires concernant
-les Jobs et Clients, les fichiers qui ont \'et\'e sauvegard\'es ainsi que le
-ou les volume(s) o\`u ils ont \'et\'e sauvegard\'es. L'information stock\'ee
-dans le catalogue permet \`a l'administrateur ou aux utilisateurs de
-d\'eterminer quels jobs ont \'et\'e ex\'ecut\'es, leur statut, ainsi que
-d'importantes caract\'eristiques de chaque fichier sauvegard\'e. Le catalogue
-est une ressource en ligne, mais ne contient pas les donn\'ees pour les
-fichiers sauvegard\'es. La plupart des informations stock\'ees dans le
-catalogue le sont aussi sur les volumes de sauvegarde (i.e. cartouches). Bien
-sur, les cartouches auront aussi une copie du fichier en plus de ses attributs
- (voir ci-dessus).
-
-La fonction Catalogue est de celles qui distinguent Bacula de simples
-programmes de sauvegarde et archivage tels que {\bf dump} et {\bf tar}.
-
-\item [Client]
- \index[sd]{Client }
- Dans la terminologie de Bacula, le mot Client d\'esigne une machine
-sauvegard\'ee, et est synonyme de File service ou File Daemon. Nous nous y
-r\'ef\'erons assez souvent par "le FD". Un client est d\'efini dans une
-ressource de fichier de configuration.
-
-\item [Console]
- \index[sd]{Console }
- Le programme qui interface le Director, permettant \`a l'administrateur de
-contr\^oler Bacula.
-
-\item [Daemon]
- \index[sd]{Daemon }
- Terminologie Unix pour un programme toujours pr\'esent en arri\`ere plan pour
-prendre en charge une t\^ache donn\'ee. Sur les syst\`emes Windows, ainsi que
-certains Linux, les {\it daemons} sont appel\'es {\bf Services}.
-
-\item [Directive]
- \index[sd]{Directive }
- Le terme directive est utilis\'e pour d\'esigner une entr\'ee ou
-enregistrement \`a l'int\'erieur d'une ressource dans un fichier de
-configuration qui d\'efinit un \'el\'ement sp\'ecifique. Par exemple, la
-directive {\bf Name} d\'efinit le nom de la ressource.
-
-\item [Director]
- \index[sd]{Director }
- Le principal {\it daemon} serveur de Bacula qui planifie et dirige toutes
-les op\'erations de Bacula. Occasionnellement, nous le d\'esignons par "le
-DIR".
-
-\item [Differentielle (Differential)]
- \index[sd]{Differentielle (Differential) }
- Une sauvegarde qui inclut tous les fichiers modifi\'es depuis le lancement de
-la derni\`ere sauvegarde compl\`ete (Full). Notez que d'autres logiciels de
-sauvegarde peuvent d\'efinir ceci diff\'eremment.
-
-\item [Attributs de fichiers]
- \index[sd]{Attributs de fichiers }
- Les Attributs de fichiers sont toutes les informations n\'ecessaires au sujet
-d'un fichier pour l'identifier, et toutes ses propri\'et\'es telles taille,
-date de cr\'eation, date de modification, permission, etc. En principe, les
-attributs sont int\'egralement manipul\'es par Bacula de sorte que
-l'utilisateur n'a jamais \`a s'en pr\'eoccuper. Les attributs n'incluent pas
-les donn\'ees du fichier.
-
-\item [File Daemon]
- \index[sd]{File Daemon }
- Le {\it daemon} ex\'ecut\'e sur l'ordinateur client \`a sauvegarder. Il est
-aussi d\'esign\'e par Service Fichier (File Service) et parfois Service Client
-ou FD.
-
-\item [
- \label{FileSetDef}
- FileSet]
-\index[sd]{a name }
-Un FileSet est une ressource d'un fichier de configuration qui d\'efinit les
-fichiers \`a sauvegarder. Il consiste en une liste de fichiers ou
-r\'epertoires inclus, une liste de fichiers ou r\'epertoires exclus et la
-fa\c{c}on dont les fichiers seront stock\'es (compression, chiffrement,
-signatures). Pour plus de d\'etails consultez le paragraphe
-\ilink{D\'efinition de la Ressource FileSet}{FileSetResource}
-dans le chapitre Director de ce document.
-
-\item [Incrementale]
- \index[sd]{Incrementale }
- Une sauvegarde qui inclut tous les fichiers modifi\'es depuis le lancement de
-la derni\`ere sauvegarde compl\`ete (Full), diff\'erentielle, ou
-incr\'ementale. Normalement sp\'ecifi\'e dans la directive {\bf Level}
-(niveau) dans la d\'efinition de la ressource Job, ou dans une ressource
-Schedule.
-
-\item [
- \label{JobDef}
- Job]
-\index[sd]{a name }
-Un Job Bacula est une ressource de configuration qui d\'efinit le travail que
-Bacula doit effectuer pour sauvegarder ou restaurer un client particulier. Un
-Job consiste en un {\bf Type}, (Type : backup, restore, verify, etc.), un
-{\bf Niveau} (Level : full, incremental, ...), un {\bf FileSet}, et un lieu de
-{\bf Stockage} o\`u \'ecrire les fichiers (Storage device, Media Pool). Pour
-plus de d\'etails consultez le chapitre
-\ilink{D\'efinition des Ressources Job}{JobResource} de ce
-document.
-
-\item [Monitor]
- \index[sd]{Monitor }
- Le programme qui s'interface avec chacun des {\it daemons} pour permettre \`a
-l'utilisateur ou \`a l'administrateur de surveiller le statut de Bacula.
-
-\item [Resource]
- \index[sd]{Resource }
- Une ressource est une partie d'un fichier de configuration qui d\'efinit une
-unit\'e sp\'ecifique d'information disponible pour Bacula. Par exemple, la
-ressource {\bf Job} d\'efinit toutes les propri\'et\'es d'un Job sp\'ecifique
-: nom, schedule (planification), volume pool, type de sauvegarde, niveau de
-sauvegarde, etc.
-
-\item [Restore]
- \index[sd]{Restore }
- Une Restore est une ressource de configuration qui d\'ecrit l'op\'eration de
-restauration d'un fichier (perdu ou endommag\'e) depuis un medium de
-sauvegarde. C'est l'op\'eration r\'eciproque d'une sauvegarde, sauf que, dans
-la plupart des cas, une restauration concernera un petit ensemble de fichiers
-tandis qu'une sauvegarde concerne le plus souvent l'ensemble des fichiers
-d'un syst\`eme. Bien sur, apr\`es une d\'efaillance de disque(s), Bacula peut
-\^etre appel\'e \`a effectuer une restauration compl\`ete de tous les
-fichiers qui \'etaient sur le syst\`eme.
-
-\item [Schedule]
- \index[sd]{Schedule }
- Un Schedule est une ressource de configuration qui d\'efinit le moment de
-l'ex\'ecution du Job Bacula. Pour utiliser un schedule, la ressource Job se
-r\'ef\`ere au nom du Schedule. Pour plus de d\'etails, consultez la
-\ilink{D\'efinition de la ressource Schedule}{ScheduleResource}
-dans le chapitre Director de ce document.
-
-\item [Service]
- \index[sd]{Service }
- Terminologie Windows pour d\'esigner un {\it daemon} -- Voir plus haut. Elle
-est maintenant fr\'equemment utilis\'ee dans les environnements Unix aussi.
-
-\item [Adresses de stockage]
- \index[sd]{Adresses de stockage }
- Les informations retourn\'ees par les Storage services qui localisent de
-fa\c{c}on unique les fichiers sur un medium de sauvegarde. Elles consistent
-en deux parties : l'une appartient \`a chaque fichier sauvegard\'e, l'autre
-\`a l'ensemble du Job. Normalement, cette information est sauvegard\'ee dans
-le catalogue de sorte que l'utilisateur n'a pas besoin de connaissances
-particuli\`eres des adresses de stockage. L'adresse de stockage inclut les
-attributs de fichiers (voir plus haut) ainsi que la localisation unique de
-l'information sur le volume de sauvegarde.
-
-\item [Storage Daemon]
- \index[sd]{Storage Daemon }
- Le Storage Daemon, parfois d\'esign\'e par "SD" est le programme qui
-\'ecrit les attributs et les donn\'ees sur un Volume de Stockage (Storage
-Volume) (Usuellement une cartouche ou un disque).
-
-\item [Session]
- \index[sd]{Session }
- D\'esigne en principe le dialogue interne entre le File Daemon et le Storage
-Daemon. Le File Daemon ouvre une {\bf session} avec le Storage Daemon pour
-sauvegarder un Fileset, ou pour le restaurer. Une session est associ\'ee \`a
-un et un seul Job Bacula (voir plus haut).
-
-\item [Verify]
- \index[sd]{Verify }
- Il s'agit d'un job qui compare les attributs du fichier actuel aux attributs
-qui ont \'et\'e pr\'ealablement stock\'es dans le catalogue Bacula. Cette
-fonction peut \^etre utilis\'ee pour d\'etecter les modifications de
-syst\`emes de fichiers critiques, \`a la fa\c{c}on de {\bf Tripwire}. L'un
-des avantages majeurs de l'utilisation de Bacula pour cette t\^ache est que
-sur la machine que vous voulez prot\'eger, vous pouvez n'ex\'ecuter que le
-File Daemon. Le Director, le Storage Daemon et le catalogue peuvent r\'esider
-sur une autre machine. Par cons\'equent si votre serveur est un jour
-compromis, il est peu probable que la base de donn\'ees de v\'erification ait
-\'et\'e trifouill\'ee.
-
-Verify peut aussi \^etre utilis\'e pour s'assurer que les donn\'ees les plus
-r\'ecemment \'ecrites sur un volume sont coh\'erentes avec ce qui figure dans
-le catalogue (c-\`a-d il compare les attributs de fichiers), ou encore,
-confronter le contenu du volume aux fichiers originaux sur le disque.
-
-\item [*Archive]
- \index[sd]{*Archive }
- Une op\'eration d'archivage est effectu\'ee apr\`es une sauvegarde, et
-consiste en l'exclusion des volumes sur lesquels les donn\'ees sont
-sauvegard\'ees de l'utilisation courante. Ces volumes sont marqu\'es
-"Archived", et ne sont plus utilis\'es pour sauvegarder des fichiers. Tous
-les fichiers contenus sur un Volume Archive sont supprim\'es du catalogue.
-PAS ENCORE IMPLEMENTE.
-
-\item [*Update]
- \index[sd]{*Update }
- Une op\'eration Update synchronise les fichiers du syst\`eme distant sur ceux
-du local. Ceci est l'\'equivalent d'une fonctionnalit\'e {\bf rdist}. PAS
-ENCORE IMPLEMENTE.
-
-\item [P\'eriode de r\'etention]
- \index[sd]{P\'eriode de r\'etention }
- Bacula reconnait plusieurs sortes de p\'eriodes de r\'etention. Les plus
-importantes sont la p\'eriode de r\'etention des fichiers, la p\'eriode de
-r\'etention des jobs et la p\'eriode de r\'etention des volumes. Chacune de
-ces p\'eriodes de r\'etention d\'esigne la dur\'ee pendant laquelle
-l'enregistrement sp\'ecifique sera conserv\'e dans le catalogue. Ceci ne doit
-pas \^etre confondu avec le temps pendant lequel les donn\'ees sauvegard\'ees
-sur un volume sont valides.
-
-La p\'eriode de r\'etention des fichiers d\'etermine la dur\'ee pendant
-laquelle les enregistrements concernant les fichiers seront gard\'es dans le
-catalogue. Cette p\'eriode est importante car le volume des enregistrements
-relatifs aux fichiers occupe, de loin, le plus d'espace dans la base de
-donn\'ees. Par cons\'equent, vous devez vous assurer qu'un "\'elagage"
-(NDT : pruning) r\'egulier de ces enregistrements est effectu\'e. (Voir la
-commande {\bf retention} de la Console pour plus de d\'etails sur ce sujet).
-
-La p\'eriode de r\'etention des jobs est la dur\'ee pendant laquelle les
-enregistrements relatifs aux jobs seront conserv\'es dans le catalogue. Notez
-que tous les enregistrements relatifs aux fichiers sont attach\'es aux jobs
-qui ont sauvegard\'e ces fichiers. Les enregistrements relatifs aux fichiers
-peuvent \^etre purg\'es tout en conservant ceux relatifs aux jobs. Dans ce
-cas, l'information concernant les jobs ex\'ecut\'es restera disponible, mais
-pas les d\'etails des fichiers sauvegard\'es. Normalement, lorsqu'un job est
-purg\'e, tous les enregistrements concernant les fichiers qu'il a
-sauvegard\'e le sont aussi.
-
-La p\'eriode de r\'etention des volumes est la
-dur\'ee minimale de conservation d'un volume avant qu'il ne soit
-r\'eutilis\'e. Bacula n'effacera, en principe, jamais un volume qui contient
-la seule copie de sauvegarde d'un fichier. Dans les conditions id\'eales, le
-catalogue maintiendrait les entr\'ees pour tous les fichiers sauvegard\'es
-pour tous les volumes courants. Une fois qu'un volume est \'ecras\'e, les
-fichiers qui \'etaient sauvegard\'es dessus sont automatiquement effac\'es du
-catalogue. Cependant, s'il y a un tr\`es gros pool de volumes ou si un volume
-n'est jamais \'ecras\'e, le catalogue pourrait devenir \'enorme. Pour
-maintenir le catalogue dans des proportions g\'erables, les informations de
-sauvegarde devraient \^etre supprim\'ees apr\`es une p\'eriode de r\'etention
-des fichiers d\'efinie.
-
-\item [Scan]
- \index[sd]{Scan }
- Une op\'eration de scan consiste en un balayage du contenu d'un volume ou
-d'une s\'erie de volumes. Ces volumes et les informations concernant les
-fichiers qu'ils contiennent sont restaur\'es vers le catalogue Bacula. Une
-fois ces informations restaur\'ees, les fichiers sauvegard\'es sur ces
-volumes pourront \^etre ais\'ement restaur\'es. Cette fonction est
-particuli\`erement utile si certains volumes ou jobs ont d\'epass\'e leur
-p\'eriode de r\'etention et ont \'et\'e \'elagu\'es ou purg\'es du
-catalogue. Le balayage des donn\'ees des volumes est effectu\'e en utilisant
-le programme {\bf bscan}. Consultez la
-\ilink{section bscan }{bscan} du chapitre sur les utilitaires
-Bacula de ce manuel pour plus de d\'etails.
-
-\item [Volume]
- \index[sd]{Volume }
- Un volume est une unit\'e d'archivage, usuellement une cartouche ou un
-fichier nomm\'e sur disque o\`u Bacula stocke les donn\'ees pour un ou
-plusieurs jobs de sauvegarde. Tous les volumes Bacula ont un label unique
-(logiciel) \'ecrit sur le volume par Bacula afin qu'il puisse \^etre assur\'e de
-lire le bon volume. (En principe, il ne devrait pas y avoir de
-confusion avec des fichiers disques, mais avec des cartouches, il est facile
-de monter la mauvaise).
-\end{description}
-
-\subsection*{Ce que Bacula n'est pas}
-\index[general]{Ce que Bacula n'est pas }
-\index[general]{Pas!Ce que Bacula n'est }
-\addcontentsline{toc}{subsection}{Ce que Bacula n'est pas}
-
-{\bf Bacula} est un programme de sauvegarde, restauration et v\'erification,
-ce n'est pas un syst\`eme complet de disaster recovery
-\label{c}
-\`a lui seul, mais il peut en \^etre une partie clef si vous planifiez
-soigneusement et suivez les instructions incluses dans le chapitre
-\ilink{ Plan de reprise d'activit\'e avec Bacula}{_ChapterStart38} de
-ce manuel.
-
-Avec la planification appropri\'ee, telle que d\'ecrite dans le chapitre sur le
-plan de reprise d'activit\'e, {\bf Bacula} peut devenir la pi\`ece centrale de
-votre plan de reprise d'activit\'e. Par exemple, si vous avez cr\'e\'e un(e)
-disque(tte) boot d'urgence et un(e) disque(tte) de secours Bacula pour
-sauvegarder les informations de partitionnement courantes de votre disque dur,
-et maintenu un jeu de sauvegardes complet de votre syst\`eme, il est possible
-de reconstruire compl\`etement votre syst\`eme "depuis le m\'etal brut"
-(NDT : From bare metal)
-\label{d1}
-.
-
-Si vous avez utilis\'e la directive {\bf WriteBootstrap} dans votre job ou
-quelque autre moyen pour sauvegarder un fichier bootstrap valide, vous pourrez
-l'utiliser pour extraire les fichiers n\'ecessaires (sans utiliser le
-catalogue et sans chercher manuellement les fichiers \`a restaurer).
-
-\subsection*{Interactions entre les services Bacula}
-\index[general]{Bacula!Interactions entre les services }
-\index[general]{Interactions entre les services Bacula }
-\addcontentsline{toc}{subsection}{Interactions entre les services Bacula}
-
-Le diagramme fonctionnel suivant montre les interactions typiques entre les
-services Bacula pour un job de type sauvegarde. Chaque bloc repr\'esente en
-g\'en\'eral un processus s\'epar\'e (normalement un {\it daemon}). En
-g\'en\'eral, le director surveille le flux d'informations. Il maintient aussi
-le catalogue. \includegraphics{./flow.eps}
+++ /dev/null
-%%
-%/
-
-\section*{Bacula Developer Notes}
-\label{_ChapterStart10}
-\index{Bacula Developer Notes }
-\index{Notes!Bacula Developer }
-\addcontentsline{toc}{section}{Bacula Developer Notes}
-
-\subsection*{General}
-\index{General }
-\addcontentsline{toc}{subsection}{General}
-
-This document is intended mostly for developers and describes the the general
-framework of making Bacula source changes.
-
-\subsubsection*{Contributions}
-\index{Contributions }
-\addcontentsline{toc}{subsubsection}{Contributions}
-
-Contributions from programmers are broken into two groups. The first are
-contributions that are aids and not essential to Bacula. In general, these
-will be scripts or will go into and examples or contributions directory.
-
-The second class of contributions are those which will be integrated with
-Bacula and become an essential part. Within this class of contributions, there
-are two hurdles to surmount. One is getting your patch accepted, and two is
-dealing with copyright issues. The rest of this document describes some of the
-requirements for such code.
-
-\subsubsection*{Patches}
-\index{Patches }
-\addcontentsline{toc}{subsubsection}{Patches}
-
-Subject to the copyright assignment described below, your patches should be
-sent in {\bf diff -u} format relative to the current contents of the Source
-Forge CVS, which is the easiest for me to understand. If you plan on doing
-significant development work over a period of time, after having your first
-patch reviewed and approved, you will be eligible for having CVS access so
-that you can commit your changes directly to the CVS repository. To do so, you
-will need a userid on Source Forge.
-
-\subsubsection*{Copyrights}
-\index{Copyrights }
-\addcontentsline{toc}{subsubsection}{Copyrights}
-
-To avoid future problems concerning changing licensing or copyrights, all code
-contributions more than a hand full of lines must be in the Public Domain or
-have the copyright assigned to Kern Sibbald as in the current code. Note,
-prior to November 2004, the code was copyrighted by Kern Sibbald and John
-Walker.
-
-Your name should be clearly indicated as the author of the code, and you must
-be extremely careful not to violate any copyrights or use other people's code
-without acknowledging it. The purpose of this requirement is to avoid future
-copyright, patent, or intellectual property problems. To understand on
-possible source of future problems, please examine the difficulties Mozilla is
-(was?) having finding previous contributors at
-\elink{
-http://www.mozilla.org/MPL/missing.html}
-{http://www.mozilla.org/MPL/missing.html}. The other important issue is to
-avoid copyright, patent, or intellectual property violations as are currently
-(May 2003) being claimed by SCO against IBM.
-
-Although the copyright will be held by Kern, each developer is expected to
-indicate that he wrote and/or modified a particular module (or file) and any
-other sources. The copyright assignment may seem a bit unusual, but in
-reality, it is not. Most large projects require this. In fact, the paperwork
-associated with making contributions to the Free Software Foundation, was for
-me unsurmountable.
-
-If you have any doubts about this, please don't hesitate to ask. Our (John and
-my) track records with Autodesk are easily available; early
-programmers/founders/contributors and later employees had substantial shares
-of the company, and no one founder had a controlling part of the company. Even
-though Microsoft created many millionaires among early employees, the politics
-of Autodesk (during our time at the helm) is in stark contrast to Microsoft
-where the majority of the company is still tightly held among a few.
-
-Items not needing a copyright assignment are: most small changes,
-enhancements, or bug fixes of 5-10 lines of code, and documentation.
-
-\subsubsection*{Copyright Assignment}
-\index{Copyright Assignment }
-\index{Assignment!Copyright }
-\addcontentsline{toc}{subsubsection}{Copyright Assignment}
-
-Since this is not a commercial enterprise, and I prefer to believe in
-everyone's good faith, developers can assign the copyright by explicitly
-acknowledging that they do so in their first submission. This is sufficient if
-the developer is independent, or an employee of a not-for-profit organization
-or a university. Any developer that wants to contribute and is employed by a
-company must get a copyright assignment from his employer. This is to avoid
-misunderstandings between the employee, the company, and the Bacula project.
-
-\subsubsection*{Corporate Assignment Statement}
-\index{Statement!Corporate Assignment }
-\index{Corporate Assignment Statement }
-\addcontentsline{toc}{subsubsection}{Corporate Assignment Statement}
-
-The following statement must be filled out by the employer, signed, and mailed
-to my address (please ask me for my address and I will email it -- I'd prefer
-not to include it here).
-
-\footnotesize
-\begin{verbatim}
-Copyright release and transfer statement.
- <On company letter head>
- To: Kern Sibbald
- Concerning: Copyright release and transfer
- <Company, Inc> is hereby agrees that <names-of-developers> and
- other employees of <Company, Inc> are authorized to develop
- code for and contribute code to the Bacula project for an
- undetermined period of time. The copyright as well as all
- other rights to and interests in such contributed code are
- hereby transferred to Kern Sibbald.
- Signed in <City, Country> on <Date>:
- <Name of Person>, <Position in Company, Inc>
-This release/transfer statement must be sent to:
-Kern Sibbald
-Address-to-be-given
-\end{verbatim}
-\normalsize
-
-\subsubsection*{Developing Bacula}
-\index{Developing Bacula }
-\index{Bacula!Developing }
-\addcontentsline{toc}{subsubsection}{Developing Bacula}
-
-Typically the simplest way to develop Bacula is to open one xterm window
-pointing to the source directory you wish to update; a second xterm window at
-the top source directory level, and a third xterm window at the bacula
-directory \lt{}top\gt{}/src/bacula. After making source changes in one of the
-directories, in the top source directory xterm, build the source, and start
-the daemons by entering:
-
-make and
-
-./startit then in the enter:
-
-./console or
-
-./gnome-console to start the Console program. Enter any commands for testing.
-For example: run kernsverify full.
-
-Note, the instructions here to use {\bf ./startit} are different from using a
-production system where the administrator starts Bacula by entering {\bf
-./bacula start}. This difference allows a development version of {\bf Bacula}
-to be run on a computer at the same time that a production system is running.
-The {\bf ./startit} strip starts {\bf Bacula} using a different set of
-configuration files, and thus permits avoiding conflicts with any production
-system.
-
-To make additional source changes, exit from the Console program, and in the
-top source directory, stop the daemons by entering:
-
-./stopit then repeat the process.
-
-\subsubsection*{Debugging}
-\index{Debugging }
-\addcontentsline{toc}{subsubsection}{Debugging}
-
-Probably the first thing to do is to turn on debug output.
-
-A good place to start is with a debug level of 20 as in {\bf ./startit -d20}.
-The startit command starts all the daemons with the same debug level.
-Alternatively, you can start the appropriate daemon with the debug level you
-want. If you really need more info, a debug level of 60 is not bad, and for
-just about everything a level of 200.
-
-\subsubsection*{Using a Debugger}
-\index{Using a Debugger }
-\index{Debugger!Using a }
-\addcontentsline{toc}{subsubsection}{Using a Debugger}
-
-If you have a serious problem such as a segmentation fault, it can usually be
-found quickly using a good multiple thread debugger such as {\bf gdb}. For
-example, suppose you get a segmentation violation in {\bf bacula-dir}. You
-might use the following to find the problem:
-
-\lt{}start the Storage and File daemons\gt{}
-cd dird
-gdb ./bacula-dir
-run -f -s -c ./dird.conf
-\lt{}it dies with a segmentation fault\gt{}
-where
-The {\bf -f} option is specified on the {\bf run} command to inhibit {\bf
-dird} from going into the background. You may also want to add the {\bf -s}
-option to the run command to disable signals which can potentially interfere
-with the debugging.
-
-As an alternative to using the debugger, each {\bf Bacula} daemon has a built
-in back trace feature when a serious error is encountered. It calls the
-debugger on itself, produces a back trace, and emails the report to the
-developer. For more details on this, please see the chapter in the main Bacula
-manual entitled ``What To Do When Bacula Crashes (Kaboom)''.
-
-\subsubsection*{Memory Leaks}
-\index{Leaks!Memory }
-\index{Memory Leaks }
-\addcontentsline{toc}{subsubsection}{Memory Leaks}
-
-Because Bacula runs routinely and unattended on client and server machines, it
-may run for a long time. As a consequence, from the very beginning, Bacula
-uses SmartAlloc to ensure that there are no memory leaks. To make detection of
-memory leaks effective, all Bacula code that dynamically allocates memory MUST
-have a way to release it. In general when the memory is no longer needed, it
-should be immediately released, but in some cases, the memory will be held
-during the entire time that Bacula is executing. In that case, there MUST be a
-routine that can be called at termination time that releases the memory. In
-this way, we will be able to detect memory leaks. Be sure to immediately
-correct any and all memory leaks that are printed at the termination of the
-daemons.
-
-\subsubsection*{Special Files}
-\index{Files!Special }
-\index{Special Files }
-\addcontentsline{toc}{subsubsection}{Special Files}
-
-Kern uses files named 1, 2, ... 9 with any extension as scratch files. Thus
-any files with these names are subject to being rudely deleted at any time.
-
-\subsubsection*{When Implementing Incomplete Code}
-\index{Code!When Implementing Incomplete }
-\index{When Implementing Incomplete Code }
-\addcontentsline{toc}{subsubsection}{When Implementing Incomplete Code}
-
-Please identify all incomplete code with a comment that contains {\bf
-***FIXME***}, where there are three asterisks (*) before and after the word
-FIXME (in capitals) and no intervening spaces. This is important as it allows
-new programmers to easily recognize where things are partially implemented.
-
-\subsubsection*{Bacula Source File Structure}
-\index{Structure!Bacula Source File }
-\index{Bacula Source File Structure }
-\addcontentsline{toc}{subsubsection}{Bacula Source File Structure}
-
-The distribution generally comes as a tar file of the form {\bf
-bacula.x.y.z.tar.gz} where x, y, and z are the version, release, and update
-numbers respectively.
-
-Once you detar this file, you will have a directory structure as follows:
-
-\footnotesize
-\begin{verbatim}
-|
-|- depkgs
- |- mtx (autochanger control program + tape drive info)
- |- sqlite (SQLite database program)
-|- depkgs-win32
- |- pthreads (Native win32 pthreads library -- dll)
- |- zlib (Native win32 zlib library)
- |- wx (wxWidgets source code)
-|- bacula (main source directory containing configuration
- | and installation files)
- |- autoconf (automatic configuration files, not normally used
- | by users)
- |- doc (documentation directory)
- |- home-page (Bacula's home page source)
- |- html-manual (html document directory)
- |- techlogs (Technical development notes);
- |- intl (programs used to translate)
- |- platforms (OS specific installation files)
- |- redhat (Red Hat installation)
- |- solaris (Sun installation)
- |- freebsd (FreeBSD installation)
- |- irix (Irix installation -- not tested)
- |- unknown (Default if system not identified)
- |- po (translations of source strings)
- |- src (source directory; contains global header files)
- |- cats (SQL catalog database interface directory)
- |- console (bacula user agent directory)
- |- dird (Director daemon)
- |- filed (Unix File daemon)
- |- win32 (Win32 files to make bacula-fd be a service)
- |- findlib (Unix file find library for File daemon)
- |- gnome-console (GNOME version of console program)
- |- lib (General Bacula library)
- |- stored (Storage daemon)
- |- tconsole (Tcl/tk console program -- not yet working)
- |- testprogs (test programs -- normally only in Kern's tree)
- |- tools (Various tool programs)
- |- win32 (Native Win32 File daemon)
- |- baculafd (Visual Studio project file)
- |- compat (compatibility interface library)
- |- filed (links to src/filed)
- |- findlib (links to src/findlib)
- |- lib (links to src/lib)
- |- console (beginning of native console program)
- |- wx-console (wxWidget console Win32 specific parts)
- |- wx-console (wxWidgets console main source program)
-|- regress (Regression scripts)
- |- bin (temporary directory to hold Bacula installed binaries)
- |- build (temporary directory to hold Bacula source)
- |- scripts (scripts and .conf files)
- |- tests (test scripts)
- |- tmp (temporary directory for temp files)
-\end{verbatim}
-\normalsize
-
-\subsubsection*{Header Files}
-\index{Header Files }
-\index{Files!Header }
-\addcontentsline{toc}{subsubsection}{Header Files}
-
-Please carefully follow the scheme defined below as it permits in general only
-two header file includes per C file, and thus vastly simplifies programming.
-With a large complex project like Bacula, it isn't always easy to ensure that
-the right headers are invoked in the right order (there are a few kludges to
-make this happen -- i.e. in a few include files because of the chicken and egg
-problem, certain references to typedefs had to be replaced with {\bf void} ).
-
-Every file should include {\bf bacula.h}. It pulls in just about everything,
-with very few exceptions. If you have system dependent ifdefing, please do it
-in {\bf baconfig.h}. The version number and date are kept in {\bf version.h}.
-
-Each of the subdirectories (console, cats, dird, filed, findlib, lib, stored,
-...) contains a single directory dependent include file generally the name of
-the directory, which should be included just after the include of {\bf
-bacula.h}. This file (for example, for the dird directory, it is {\bf dird.h})
-contains either definitions of things generally needed in this directory, or
-it includes the appropriate header files. It always includes {\bf protos.h}.
-See below.
-
-Each subdirectory contains a header file named {\bf protos.h}, which contains
-the prototypes for subroutines exported by files in that directory. {\bf
-protos.h} is always included by the main directory dependent include file.
-
-\subsubsection*{Programming Standards}
-\index{Standards!Programming }
-\index{Programming Standards }
-\addcontentsline{toc}{subsubsection}{Programming Standards}
-
-For the most part, all code should be written in C unless there is a burning
-reason to use C++, and then only the simplest C++ constructs will be used.
-Note, Bacula is slowly evolving to use more and more C++.
-
-Code should have some documentation -- not a lot, but enough so that I can
-understand it. Look at the current code, and you will see that I document more
-than most, but am definitely not a fanatic.
-
-I prefer simple linear code where possible. Gotos are strongly discouraged
-except for handling an error to either bail out or to retry some code, and
-such use of gotos can vastly simplify the program.
-
-Remember this is a C program that is migrating to a {\bf tiny} subset of C++,
-so be conservative in your use of C++ features.
-
-\subsubsection*{Do Not Use}
-\index{Use!Do Not }
-\index{Do Not Use }
-\addcontentsline{toc}{subsubsection}{Do Not Use}
-
-\begin{itemize}
-\item STL -- it is totally incomprehensible.
- \end{itemize}
-
-\subsubsection*{Avoid if Possible}
-\index{Possible!Avoid if }
-\index{Avoid if Possible }
-\addcontentsline{toc}{subsubsection}{Avoid if Possible}
-
-\begin{itemize}
-\item Returning a malloc'ed buffer from a subroutine -- someone will forget
- to release it.
-\item Using reference variables -- it allows subroutines to create side
- effects.
-\item Heap allocation (malloc) unless needed -- it is expensive.
-\item Templates -- they can create portability problems.
-\item Fancy or tricky C or C++ code, unless you give a good explanation of
- why you used it.
-\item Too much inheritance -- it can complicate the code, and make reading it
- difficult (unless you are in love with colons)
- \end{itemize}
-
-\subsubsection*{Do Use Whenever Possible}
-\index{Possible!Do Use Whenever }
-\index{Do Use Whenever Possible }
-\addcontentsline{toc}{subsubsection}{Do Use Whenever Possible}
-
-\begin{itemize}
-\item Locking and unlocking within a single subroutine.
-\item Malloc and free within a single subroutine.
-\item Comments and global explanations on what your code or algorithm does.
- \end{itemize}
-
-\subsubsection*{Indenting Standards}
-\index{Standards!Indenting }
-\index{Indenting Standards }
-\addcontentsline{toc}{subsubsection}{Indenting Standards}
-
-I cannot stand code indented 8 columns at a time. This makes the code
-unreadable. Even 4 at a time uses a lot of space, so I have adopted indenting
-3 spaces at every level. Note, indention is the visual appearance of the
-source on the page, while tabbing is replacing a series of up to 8 spaces from
-a tab character.
-
-The closest set of parameters for the Linux {\bf indent} program that will
-produce reasonably indented code are:
-
-\footnotesize
-\begin{verbatim}
--nbad -bap -bbo -nbc -br -brs -c36 -cd36 -ncdb -ce -ci3 -cli0
--cp36 -d0 -di1 -ndj -nfc1 -nfca -hnl -i3 -ip0 -l85 -lp -npcs
--nprs -npsl -saf -sai -saw -nsob -nss -nbc -ncs -nbfda
-\end{verbatim}
-\normalsize
-
-You can put the above in your .indent.pro file, and then just invoke indent on
-your file. However, be warned. This does not produce perfect indenting, and it
-will mess up C++ class statements pretty badly.
-
-Braces are required in all if statements (missing in some very old code). To
-avoid generating too many lines, the first brace appears on the first line
-(e.g. of an if), and the closing brace is on a line by itself. E.g.
-
-\footnotesize
-\begin{verbatim}
- if (abc) {
- some_code;
- }
-\end{verbatim}
-\normalsize
-
-Just follow the convention in the code. Originally I indented case clauses
-under a switch(), but now I prefer non-indented cases.
-
-\footnotesize
-\begin{verbatim}
- switch (code) {
- case 'A':
- do something
- break;
- case 'B':
- again();
- break;
- default:
- break;
- }
-\end{verbatim}
-\normalsize
-
-Avoid using // style comments except for temporary code or turning off debug
-code. Standard C comments are preferred (this also keeps the code closer to
-C).
-
-Attempt to keep all lines less than 85 characters long so that the whole line
-of code is readable at one time. This is not a rigid requirement.
-
-Always put a brief description at the top of any new file created describing
-what it does and including your name and the date it was first written. Please
-don't forget any Copyrights and acknowledgments if it isn't 100\% your code.
-Also, include the Bacula copyright notice that is in {\bf src/c}.
-
-In general you should have two includes at the top of the an include for the
-particular directory the code is in, for includes are needed, but this should
-be rare.
-
-In general (except for self-contained packages), prototypes should all be put
-in {\bf protos.h} in each directory.
-
-Always put space around assignment and comparison operators.
-
-\footnotesize
-\begin{verbatim}
- a = 1;
- if (b >= 2) {
- cleanup();
- }
-\end{verbatim}
-\normalsize
-
-but your can compress things in a {\bf for} statement:
-
-\footnotesize
-\begin{verbatim}
- for (i=0; i < del.num_ids; i++) {
- ...
-\end{verbatim}
-\normalsize
-
-Don't overuse the inline if (?:). A full {\bf if} is preferred, except in a
-print statement, e.g.:
-
-\footnotesize
-\begin{verbatim}
- if (ua->verbose \&& del.num_del != 0) {
- bsendmsg(ua, _("Pruned %d %s on Volume %s from catalog.\n"), del.num_del,
- del.num_del == 1 ? "Job" : "Jobs", mr->VolumeName);
- }
-\end{verbatim}
-\normalsize
-
-Leave a certain amount of debug code (Dmsg) in code you submit, so that future
-problems can be identified. This is particularly true for complicated code
-likely to break. However, try to keep the debug code to a minimum to avoid
-bloating the program and above all to keep the code readable.
-
-Please keep the same style in all new code you develop. If you include code
-previously written, you have the option of leaving it with the old indenting
-or re-indenting it. If the old code is indented with 8 spaces, then please
-re-indent it to Bacula standards.
-
-If you are using {\bf vim}, simply set your tabstop to 8 and your shiftwidth
-to 3.
-
-\subsubsection*{Tabbing}
-\index{Tabbing }
-\addcontentsline{toc}{subsubsection}{Tabbing}
-
-Tabbing (inserting the tab character in place of spaces) is as normal on all
-Unix systems -- a tab is converted space up to the next column multiple of 8.
-My editor converts strings of spaces to tabs automatically -- this results in
-significant compression of the files. Thus, you can remove tabs by replacing
-them with spaces if you wish. Please don't confuse tabbing (use of tab
-characters) with indenting (visual alignment of the code).
-
-\subsubsection*{Don'ts}
-\index{Don'ts }
-\addcontentsline{toc}{subsubsection}{Don'ts}
-
-Please don't use:
-
-\footnotesize
-\begin{verbatim}
-strcpy()
-strcat()
-strncpy()
-strncat();
-sprintf()
-snprintf()
-\end{verbatim}
-\normalsize
-
-They are system dependent and un-safe. These should be replaced by the Bacula
-safe equivalents:
-
-\footnotesize
-\begin{verbatim}
-char *bstrncpy(char *dest, char *source, int dest_size);
-char *bstrncat(char *dest, char *source, int dest_size);
-int bsnprintf(char *buf, int32_t buf_len, const char *fmt, ...);
-int bvsnprintf(char *str, int32_t size, const char *format, va_list ap);
-\end{verbatim}
-\normalsize
-
-See src/lib/bsys.c for more details on these routines.
-
-Don't use the {\bf \%lld} or the {\bf \%q} printf format editing types to edit
-64 bit integers -- they are not portable. Instead, use {\bf \%s} with {\bf
-edit\_uint64()}. For example:
-
-\footnotesize
-\begin{verbatim}
- char buf[100];
- uint64_t num = something;
- char ed1[50];
- bsnprintf(buf, sizeof(buf), "Num=%s\n", edit_uint64(num, ed1));
-\end{verbatim}
-\normalsize
-
-The edit buffer {\bf ed1} must be at least 27 bytes long to avoid overflow.
-See src/lib/edit.c for more details. If you look at the code, don't start
-screaming that I use {\bf lld}. I actually use subtle trick taught to me by
-John Walker. The {\bf lld} that appears in the editing routine is actually
-{\bf \#define} to a what is needed on your OS (usually ``lld'' or ``q'') and
-is defined in autoconf/configure.in for each OS. C string concatenation causes
-the appropriate string to be concatenated to the ``\%''.
-
-Also please don't use the STL or Templates or any complicated C++ code.
-
-\subsubsection*{Message Classes}
-\index{Classes!Message }
-\index{Message Classes }
-\addcontentsline{toc}{subsubsection}{Message Classes}
-
-Currently, there are four classes of messages: Debug, Error, Job, and Memory.
-
-\subsubsection*{Debug Messages}
-\index{Messages!Debug }
-\index{Debug Messages }
-\addcontentsline{toc}{subsubsection}{Debug Messages}
-
-Debug messages are designed to be turned on at a specified debug level and are
-always sent to STDOUT. There are designed to only be used in the development
-debug process. They are coded as:
-
-DmsgN(level, message, arg1, ...) where the N is a number indicating how many
-arguments are to be substituted into the message (i.e. it is a count of the
-number arguments you have in your message -- generally the number of percent
-signs (\%)). {\bf level} is the debug level at which you wish the message to
-be printed. message is the debug message to be printed, and arg1, ... are the
-arguments to be substituted. Since not all compilers support \#defines with
-varargs, you must explicitly specify how many arguments you have.
-
-When the debug message is printed, it will automatically be prefixed by the
-name of the daemon which is running, the filename where the Dmsg is, and the
-line number within the file.
-
-Some actual examples are:
-
-Dmsg2(20, ``MD5len=\%d MD5=\%s\textbackslash{}n'', strlen(buf), buf);
-
-Dmsg1(9, ``Created client \%s record\textbackslash{}n'', client->hdr.name);
-
-\subsubsection*{Error Messages}
-\index{Messages!Error }
-\index{Error Messages }
-\addcontentsline{toc}{subsubsection}{Error Messages}
-
-Error messages are messages that are related to the daemon as a whole rather
-than a particular job. For example, an out of memory condition my generate an
-error message. They are coded as:
-
-EmsgN(error-code, level, message, arg1, ...) As with debug messages, you must
-explicitly code the of arguments to be substituted in the message. error-code
-indicates the severity or class of error, and it may be one of the following:
-
-\addcontentsline{lot}{table}{Message Error Code Classes}
-\begin{longtable}{lp{3in}}
-{{\bf M\_ABORT} } & {Causes the daemon to immediately abort. This should be
-used only in extreme cases. It attempts to produce a traceback. } \\
-{{\bf M\_ERROR\_TERM} } & {Causes the daemon to immediately terminate. This
-should be used only in extreme cases. It does not produce a traceback. } \\
-{{\bf M\_FATAL} } & {Causes the daemon to terminate the current job, but the
-daemon keeps running } \\
-{{\bf M\_ERROR} } & {Reports the error. The daemon and the job continue
-running } \\
-{{\bf M\_WARNING} } & {Reports an warning message. The daemon and the job
-continue running } \\
-{{\bf M\_INFO} } & {Reports an informational message. }
-
-\end{longtable}
-
-There are other error message classes, but they are in a state of being
-redesigned or deprecated, so please do not use them. Some actual examples are:
-
-
-Emsg1(M\_ABORT, 0, ``Cannot create message thread: \%s\textbackslash{}n'',
-strerror(status));
-
-Emsg3(M\_WARNING, 0, ``Connect to File daemon \%s at \%s:\%d failed. Retrying
-...\textbackslash{}n'', client-\gt{}hdr.name, client-\gt{}address,
-client-\gt{}port);
-
-Emsg3(M\_FATAL, 0, ``bdird\lt{}filed: bad response from Filed to \%s command:
-\%d \%s\textbackslash{}n'', cmd, n, strerror(errno));
-
-\subsubsection*{Job Messages}
-\index{Job Messages }
-\index{Messages!Job }
-\addcontentsline{toc}{subsubsection}{Job Messages}
-
-Job messages are messages that pertain to a particular job such as a file that
-could not be saved, or the number of files and bytes that were saved.
-
-\subsubsection*{Memory Messages}
-\index{Messages!Memory }
-\index{Memory Messages }
-\addcontentsline{toc}{subsubsection}{Memory Messages}
-
-Memory messages are messages that are edited into a memory buffer. Generally
-they are used in low level routines such as the low level device file dev.c in
-the Storage daemon or in the low level Catalog routines. These routines do not
-generally have access to the Job Control Record and so they return error
-messages reformatted in a memory buffer. Mmsg() is the way to do this.
+++ /dev/null
-%%
-%%
-
-\section*{GNU General Public License}
-\label{_ChapterStart20}
-\index[general]{GNU General Public License }
-\index[general]{License!GNU General Public }
-\addcontentsline{toc}{section}{GNU General Public License}
-
-\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}
-
-
-\subsection*{Table of Contents}
-\index[general]{Table of Contents }
-\index[general]{Contents!Table of }
-\addcontentsline{toc}{subsection}{Table of Contents}
-
-\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}
-
-
-\subsection*{
-\ilink{GNU GENERAL PUBLIC LICENSE}{TOC1}}
-\label{SEC1}
-\index[general]{GNU GENERAL PUBLIC LICENSE }
-\index[general]{LICENSE!GNU GENERAL PUBLIC }
-\addcontentsline{toc}{subsection}{GNU GENERAL PUBLIC LICENSE}
-
-Version 2, June 1991
-
-\footnotesize
-\begin{verbatim}
-Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
-\end{verbatim}
-\normalsize
-
-\subsection*{
-\ilink{Preamble}{TOC2}}
-\label{SEC2}
-\index[general]{Preamble }
-\addcontentsline{toc}{subsection}{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.
-
-\subsection*{
-\ilink{TERMS AND CONDITIONS}{TOC3}}
-\label{SEC3}
-\index[general]{CONDITIONS!TERMS AND }
-\index[general]{TERMS AND CONDITIONS }
-\addcontentsline{toc}{subsection}{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
-
-\subsection*{
-\ilink{How to Apply These Terms to Your New Programs}{TOC4}}
-\label{SEC4}
-\index[general]{Programs!How to Apply These Terms to Your New }
-\index[general]{How to Apply These Terms to Your New Programs }
-\addcontentsline{toc}{subsection}{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}
-{\it one line to give the program's name and an idea of what it does.}
-Copyright (C) {\it yyyy} {\it 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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) {\it year} {\it 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.
-{\it 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., 59 Temple Place - Suite 330, Boston, MA 02111,
-USA
-
-Updated: 3 Jan 2000 rms
+++ /dev/null
-img28.png\ 1./properties-security-advanced-owner.eps
-img9.png\ 1./bimagemgr2.eps
-img8.png\ 1./bimagemgr1.eps
-img3.png\ 1./bacula-objects.eps
-img6.png\ 1./Conf-Diagram.eps
-img23.png\ 1./running.eps
-img24.png\ 1./error.eps
-img18.png\ 1./win32-start.eps
-img2.png\ 1./bacula-applications.eps
-img17.png\ 1./win32-service-ok.eps
-img26.png\ 1./view-only.eps
-img19.png\ 1./win32-finish.eps
-img15.png\ 1./win32-location.eps
-img16.png\ 1./win32-service.eps
-img13.png\ 1./win32-welcome.eps
-img12.png\ 1./win32-nsis.eps
-img10.png\ 1./bimagemgr3.eps
-img14.png\ 1./win32-pkg.eps
-img4.png\ 1./flow.eps
-img21.png\ 1./tray-icon.eps
-img1.png\ 1./bacula-logo.eps
-img20.png\ 1./idle.eps
-img22.png\ 1./menu.eps
-img27.png\ 1./properties-security.eps
-img5.png\ 1./Bacula-tray-monitor.eps
-img25.png\ 1./access-is-denied.eps
-img29.png\ 1./confirm.eps
+++ /dev/null
-\batchmode
-
-
-\documentclass[11pt,a4paper]{book}
-\RequirePackage{ifthen}
-
-
-\usepackage{html}
-\usepackage{float}
-\usepackage{graphicx}
-\usepackage{bacula}
-\usepackage{longtable}
-\usepackage{makeidx}
-\usepackage{index}
-\usepackage{setspace}
-\usepackage{hyperref}
-\usepackage{url}
-\usepackage{french}
-
-
-\makeindex
-\newindex{dir}{ddx}{dnd}{Index du Director}
-\newindex{fd}{fdx}{fnd}{Index du File Daemon}
-\newindex{sd}{sdx}{snd}{Index du Storage Daemon}
-\newindex{console}{cdx}{cnd}{Index du Console}
-\newindex{general}{idx}{ind}{Index G\'en\'eral}
-
-
-\sloppy
-
-
-
-
-\usepackage[dvips]{color}
-
-
-\pagecolor[gray]{.7}
-
-\usepackage[latin1]{inputenc}
-
-
-
-\makeatletter
-
-\makeatletter
-\count@=\the\catcode`\_ \catcode`\_=8
-\newenvironment{tex2html_wrap}{}{}%
-\catcode`\<=12\catcode`\_=\count@
-\newcommand{\providedcommand}[1]{\expandafter\providecommand\csname #1\endcsname}%
-\newcommand{\renewedcommand}[1]{\expandafter\providecommand\csname #1\endcsname{}%
- \expandafter\renewcommand\csname #1\endcsname}%
-\newcommand{\newedenvironment}[1]{\newenvironment{#1}{}{}\renewenvironment{#1}}%
-\let\newedcommand\renewedcommand
-\let\renewedenvironment\newedenvironment
-\makeatother
-\let\mathon=$
-\let\mathoff=$
-\ifx\AtBeginDocument\undefined \newcommand{\AtBeginDocument}[1]{}\fi
-\newbox\sizebox
-\setlength{\hoffset}{0pt}\setlength{\voffset}{0pt}
-\addtolength{\textheight}{\footskip}\setlength{\footskip}{0pt}
-\addtolength{\textheight}{\topmargin}\setlength{\topmargin}{0pt}
-\addtolength{\textheight}{\headheight}\setlength{\headheight}{0pt}
-\addtolength{\textheight}{\headsep}\setlength{\headsep}{0pt}
-\setlength{\textwidth}{349pt}
-\newwrite\lthtmlwrite
-\makeatletter
-\let\realnormalsize=\normalsize
-\global\topskip=2sp
-\def\preveqno{}\let\real@float=\@float \let\realend@float=\end@float
-\def\@float{\let\@savefreelist\@freelist\real@float}
-\def\liih@math{\ifmmode$\else\bad@math\fi}
-\def\end@float{\realend@float\global\let\@freelist\@savefreelist}
-\let\real@dbflt=\@dbflt \let\end@dblfloat=\end@float
-\let\@largefloatcheck=\relax
-\let\if@boxedmulticols=\iftrue
-\def\@dbflt{\let\@savefreelist\@freelist\real@dbflt}
-\def\adjustnormalsize{\def\normalsize{\mathsurround=0pt \realnormalsize
- \parindent=0pt\abovedisplayskip=0pt\belowdisplayskip=0pt}%
- \def\phantompar{\csname par\endcsname}\normalsize}%
-\def\lthtmltypeout#1{{\let\protect\string \immediate\write\lthtmlwrite{#1}}}%
-\newcommand\lthtmlhboxmathA{\adjustnormalsize\setbox\sizebox=\hbox\bgroup\kern.05em }%
-\newcommand\lthtmlhboxmathB{\adjustnormalsize\setbox\sizebox=\hbox to\hsize\bgroup\hfill }%
-\newcommand\lthtmlvboxmathA{\adjustnormalsize\setbox\sizebox=\vbox\bgroup %
- \let\ifinner=\iffalse \let\)\liih@math }%
-\newcommand\lthtmlboxmathZ{\@next\next\@currlist{}{\def\next{\voidb@x}}%
- \expandafter\box\next\egroup}%
-\newcommand\lthtmlmathtype[1]{\gdef\lthtmlmathenv{#1}}%
-\newcommand\lthtmllogmath{\dimen0\ht\sizebox \advance\dimen0\dp\sizebox
- \ifdim\dimen0>.95\vsize
- \lthtmltypeout{%
-*** image for \lthtmlmathenv\space is too tall at \the\dimen0, reducing to .95 vsize ***}%
- \ht\sizebox.95\vsize \dp\sizebox\z@ \fi
- \lthtmltypeout{l2hSize %
-:\lthtmlmathenv:\the\ht\sizebox::\the\dp\sizebox::\the\wd\sizebox.\preveqno}}%
-\newcommand\lthtmlfigureA[1]{\let\@savefreelist\@freelist
- \lthtmlmathtype{#1}\lthtmlvboxmathA}%
-\newcommand\lthtmlpictureA{\bgroup\catcode`\_=8 \lthtmlpictureB}%
-\newcommand\lthtmlpictureB[1]{\lthtmlmathtype{#1}\egroup
- \let\@savefreelist\@freelist \lthtmlhboxmathB}%
-\newcommand\lthtmlpictureZ[1]{\hfill\lthtmlfigureZ}%
-\newcommand\lthtmlfigureZ{\lthtmlboxmathZ\lthtmllogmath\copy\sizebox
- \global\let\@freelist\@savefreelist}%
-\newcommand\lthtmldisplayA{\bgroup\catcode`\_=8 \lthtmldisplayAi}%
-\newcommand\lthtmldisplayAi[1]{\lthtmlmathtype{#1}\egroup\lthtmlvboxmathA}%
-\newcommand\lthtmldisplayB[1]{\edef\preveqno{(\theequation)}%
- \lthtmldisplayA{#1}\let\@eqnnum\relax}%
-\newcommand\lthtmldisplayZ{\lthtmlboxmathZ\lthtmllogmath\lthtmlsetmath}%
-\newcommand\lthtmlinlinemathA{\bgroup\catcode`\_=8 \lthtmlinlinemathB}
-\newcommand\lthtmlinlinemathB[1]{\lthtmlmathtype{#1}\egroup\lthtmlhboxmathA
- \vrule height1.5ex width0pt }%
-\newcommand\lthtmlinlineA{\bgroup\catcode`\_=8 \lthtmlinlineB}%
-\newcommand\lthtmlinlineB[1]{\lthtmlmathtype{#1}\egroup\lthtmlhboxmathA}%
-\newcommand\lthtmlinlineZ{\egroup\expandafter\ifdim\dp\sizebox>0pt %
- \expandafter\centerinlinemath\fi\lthtmllogmath\lthtmlsetinline}
-\newcommand\lthtmlinlinemathZ{\egroup\expandafter\ifdim\dp\sizebox>0pt %
- \expandafter\centerinlinemath\fi\lthtmllogmath\lthtmlsetmath}
-\newcommand\lthtmlindisplaymathZ{\egroup %
- \centerinlinemath\lthtmllogmath\lthtmlsetmath}
-\def\lthtmlsetinline{\hbox{\vrule width.1em \vtop{\vbox{%
- \kern.1em\copy\sizebox}\ifdim\dp\sizebox>0pt\kern.1em\else\kern.3pt\fi
- \ifdim\hsize>\wd\sizebox \hrule depth1pt\fi}}}
-\def\lthtmlsetmath{\hbox{\vrule width.1em\kern-.05em\vtop{\vbox{%
- \kern.1em\kern0.8 pt\hbox{\hglue.17em\copy\sizebox\hglue0.8 pt}}\kern.3pt%
- \ifdim\dp\sizebox>0pt\kern.1em\fi \kern0.8 pt%
- \ifdim\hsize>\wd\sizebox \hrule depth1pt\fi}}}
-\def\centerinlinemath{%
- \dimen1=\ifdim\ht\sizebox<\dp\sizebox \dp\sizebox\else\ht\sizebox\fi
- \advance\dimen1by.5pt \vrule width0pt height\dimen1 depth\dimen1
- \dp\sizebox=\dimen1\ht\sizebox=\dimen1\relax}
-
-\def\lthtmlcheckvsize{\ifdim\ht\sizebox<\vsize
- \ifdim\wd\sizebox<\hsize\expandafter\hfill\fi \expandafter\vfill
- \else\expandafter\vss\fi}%
-\providecommand{\selectlanguage}[1]{}%
-\makeatletter \tracingstats = 1
-
-
-\begin{document}
-\pagestyle{empty}\thispagestyle{empty}\lthtmltypeout{}%
-\lthtmltypeout{latex2htmlLength hsize=\the\hsize}\lthtmltypeout{}%
-\lthtmltypeout{latex2htmlLength vsize=\the\vsize}\lthtmltypeout{}%
-\lthtmltypeout{latex2htmlLength hoffset=\the\hoffset}\lthtmltypeout{}%
-\lthtmltypeout{latex2htmlLength voffset=\the\voffset}\lthtmltypeout{}%
-\lthtmltypeout{latex2htmlLength topmargin=\the\topmargin}\lthtmltypeout{}%
-\lthtmltypeout{latex2htmlLength topskip=\the\topskip}\lthtmltypeout{}%
-\lthtmltypeout{latex2htmlLength headheight=\the\headheight}\lthtmltypeout{}%
-\lthtmltypeout{latex2htmlLength headsep=\the\headsep}\lthtmltypeout{}%
-\lthtmltypeout{latex2htmlLength parskip=\the\parskip}\lthtmltypeout{}%
-\lthtmltypeout{latex2htmlLength oddsidemargin=\the\oddsidemargin}\lthtmltypeout{}%
-\makeatletter
-\if@twoside\lthtmltypeout{latex2htmlLength evensidemargin=\the\evensidemargin}%
-\else\lthtmltypeout{latex2htmlLength evensidemargin=\the\oddsidemargin}\fi%
-\lthtmltypeout{}%
-\makeatother
-\setcounter{page}{1}
-\onecolumn
-
-% !!! IMAGES START HERE !!!
-
-\stepcounter{chapter}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{chapter}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{section}
-{\newpage\clearpage
-\lthtmlfigureA{figure29254}%
-\begin{figure}\vbox{\include{migration}
-}\end{figure}%
-\lthtmlfigureZ
-\lthtmlcheckvsize\clearpage}
-
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{section}
-{\newpage\clearpage
-\lthtmlfigureA{figure29775}%
-\begin{figure}\vbox{\include{dataencryption}
-}\end{figure}%
-\lthtmlfigureZ
-\lthtmlcheckvsize\clearpage}
-
-\stepcounter{chapter}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{chapter}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{chapter}
-\stepcounter{chapter}
-\stepcounter{chapter}
-\stepcounter{section}
-\stepcounter{chapter}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{section}
-
-\end{document}
+++ /dev/null
-# This module does multiple indices, supporting the style of the LaTex 'index'
-# package.
-
-# Version Information:
-# 16-Feb-2005 -- Original Creation. Karl E. Cunningham
-# 14-Mar-2005 -- Clarified and Consolodated some of the code.
-# Changed to smoothly handle single and multiple indices.
-
-# Two LaTeX index formats are supported...
-# --- SINGLE INDEX ---
-# \usepackage{makeidx}
-# \makeindex
-# \index{entry1}
-# \index{entry2}
-# \index{entry3}
-# ...
-# \printindex
-#
-# --- MULTIPLE INDICES ---
-#
-# \usepackage{makeidx}
-# \usepackage{index}
-# \makeindex -- latex2html doesn't care but LaTeX does.
-# \newindex{ref1}{ext1}{ext2}{title1}
-# \newindex{ref2}{ext1}{ext2}{title2}
-# \newindex{ref3}{ext1}{ext2}{title3}
-# \index[ref1]{entry1}
-# \index[ref1]{entry2}
-# \index[ref3]{entry3}
-# \index[ref2]{entry4}
-# \index{entry5}
-# \index[ref3]{entry6}
-# ...
-# \printindex[ref1]
-# \printindex[ref2]
-# \printindex[ref3]
-# \printindex
-# ___________________
-#
-# For the multiple-index style, each index is identified by the ref argument to \newindex, \index,
-# and \printindex. A default index is allowed, which is indicated by omitting the optional
-# argument. The default index does not require a \newindex command. As \index commands
-# are encountered, their entries are stored according
-# to the ref argument. When the \printindex command is encountered, the stored index
-# entries for that argument are retrieved and printed. The title for each index is taken
-# from the last argument in the \newindex command.
-# While processing \index and \printindex commands, if no argument is given the index entries
-# are built into a default index. The title of the default index is simply "Index".
-# This makes the difference between single- and multiple-index processing trivial.
-#
-# Another method can be used by omitting the \printindex command and just using \include to
-# pull in index files created by the makeindex program. These files will start with
-# \begin{theindex}. This command is used to determine where to print the index. Using this
-# approach, the indices will be output in the same order as the newindex commands were
-# originally found (see below). Using a combination of \printindex and \include{indexfile} has not
-# been tested and may produce undesireable results.
-#
-# The index data are stored in a hash for later sorting and output. As \printindex
-# commands are handled, the order in which they were found in the tex filea is saved,
-# associated with the ref argument to \printindex.
-#
-# We use the original %index hash to store the index data into. We append a \002 followed by the
-# name of the index to isolate the entries in different indices from each other. This is necessary
-# so that different indices can have entries with the same name. For the default index, the \002 is
-# appended without the name.
-#
-# Since the index order in the output cannot be determined if the \include{indexfile}
-# command is used, the order will be assumed from the order in which the \newindex
-# commands were originally seen in the TeX files. This order is saved as well as the
-# order determined from any printindex{ref} commands. If \printindex commnads are used
-# to specify the index output, that order will be used. If the \include{idxfile} command
-# is used, the order of the original newindex commands will be used. In this case the
-# default index will be printed last since it doesn't have a corresponding \newindex
-# command and its order cannot be determined. Mixing \printindex and \include{idxfile}
-# commands in the same file is likely to produce less than satisfactory results.
-#
-#
-# The hash containing index data is named %indices. It contains the following data:
-#{
-# 'title' => {
-# $ref1 => $indextitle ,
-# $ref2 => $indextitle ,
-# ...
-# },
-# 'newcmdorder' => [ ref1, ref2, ..., * ], # asterisk indicates the position of the default index.
-# 'printindorder' => [ ref1, ref2, ..., * ], # asterisk indicates the position of the default index.
-#}
-
-
-# Globals to handle multiple indices.
-my %indices;
-
-# This tells the system to use up to 7 words in index entries.
-$WORDS_IN_INDEX = 10;
-
-# KEC 2-18-05
-# Handles the \newindex command. This is called if the \newindex command is
-# encountered in the LaTex source. Gets the index ref and title from the arguments.
-# Saves the index ref and title.
-# Note that we are called once to handle multiple \newindex commands that are
-# newline-separated.
-sub do_cmd_newindex {
- my $data = shift;
- # The data is sent to us as fields delimited by their ID #'s. We extract the
- # fields.
- foreach my $line (split("\n",$data)) {
- my @fields = split (/(?:\<\#\d+?\#\>)+/,$line);
-
- # The index name and title are the second and fourth fields in the data.
- if ($line =~ /^</ or $line =~ /^\\newindex/) {
- my ($indexref,$indextitle) = ($fields[1],$fields[4]);
- $indices{'title'}{$indexref} = $indextitle;
- push (@{$indices{'newcmdorder'}},$indexref);
- }
- }
-}
-
-
-# KEC -- Copied from makeidx.perl and modified to do multiple indices.
-# Processes an \index entry from the LaTex file.
-# Gets the optional argument from the index command, which is the name of the index
-# into which to place the entry.
-# Drops the brackets from the index_name
-# Puts the index entry into the html stream
-# Creates the tokenized index entry (which also saves the index entry info
-sub do_real_index {
- local($_) = @_;
- local($pat,$idx_entry,$index_name);
- # catches opt-arg from \index commands for index.sty
- $index_name = &get_next_optional_argument;
- $index_name = "" unless defined $index_name;
- # Drop leading and trailing brackets from the index name.
- $index_name =~ s/^\[|\]$//g;
-
- $idx_entry = &missing_braces unless (
- (s/$next_pair_pr_rx/$pat=$1;$idx_entry=$2;''/e)
- ||(s/$next_pair_rx/$pat=$1;$idx_entry=$2;''/e));
-
- if ($index_name and defined $idx_entry and
- !defined $indices{'title'}{$index_name}) {
- print STDERR "\nInvalid Index Name: \\index \[$index_name\]\{$idx_entry\}\n";
- }
-
- $idx_entry = &named_index_entry($pat, $idx_entry,$index_name);
- $idx_entry.$_;
-}
-
-# Creates and saves an index entry in the index hashes.
-# Modified to do multiple indices.
-# Creates an index_key that allows index entries to have the same characteristics but be in
-# different indices. This index_key is the regular key with the index name appended.
-# Save the index order for the entry in the %index_order hash.
-sub named_index_entry {
- local($br_id, $str, $index_name) = @_;
- my ($index_key);
- # escape the quoting etc characters
- # ! -> \001
- # @ -> \002
- # | -> \003
- $* = 1; $str =~ s/\n\s*/ /g; $* = 0; # remove any newlines
- # protect \001 occurring with images
- $str =~ s/\001/\016/g; # 0x1 to 0xF
- $str =~ s/\\\\/\011/g; # Double backslash -> 0xB
- $str =~ s/\\;SPMquot;/\012/g; # \;SPMquot; -> 0xC
- $str =~ s/;SPMquot;!/\013/g; # ;SPMquot; -> 0xD
- $str =~ s/!/\001/g; # Exclamation point -> 0x1
- $str =~ s/\013/!/g; # 0xD -> Exclaimation point
- $str =~ s/;SPMquot;@/\015/g; # ;SPMquot;@ to 0xF
- $str =~ s/@/\002/g; # At sign -> 0x2
- $str =~ s/\015/@/g; # 0xF to At sign
- $str =~ s/;SPMquot;\|/\017/g; # ;SMPquot;| to 0x11
- $str =~ s/\|/\003/g; # Vertical line to 0x3
- $str =~ s/\017/|/g; # 0x11 to vertical line
- $str =~ s/;SPMquot;(.)/\1/g; # ;SPMquot; -> whatever the next character is
- $str =~ s/\012/;SPMquot;/g; # 0x12 to ;SPMquot;
- $str =~ s/\011/\\\\/g; # 0x11 to double backslash
- local($key_part, $pageref) = split("\003", $str, 2);
-
- # For any keys of the form: blablabla!blablabla, which want to be split at the
- # exclamation point, replace the ! with a comma and a space. We don't do it
- # that way for this index.
- $key_part =~ s/\001/, /g;
- local(@keys) = split("\001", $key_part);
- # If TITLE is not yet available use $before.
- $TITLE = $saved_title if (($saved_title)&&(!($TITLE)||($TITLE eq $default_title)));
- $TITLE = $before unless $TITLE;
- # Save the reference
- local($words) = '';
- if ($SHOW_SECTION_NUMBERS) { $words = &make_idxnum; }
- elsif ($SHORT_INDEX) { $words = &make_shortidxname; }
- else { $words = &make_idxname; }
- local($super_key) = '';
- local($sort_key, $printable_key, $cur_key);
- foreach $key (@keys) {
- $key =~ s/\016/\001/g; # revert protected \001s
- ($sort_key, $printable_key) = split("\002", $key);
- #
- # RRM: 16 May 1996
- # any \label in the printable-key will have already
- # created a label where the \index occurred.
- # This has to be removed, so that the desired label
- # will be found on the Index page instead.
- #
- if ($printable_key =~ /tex2html_anchor_mark/ ) {
- $printable_key =~ s/><tex2html_anchor_mark><\/A><A//g;
- local($tmpA,$tmpB) = split("NAME=\"", $printable_key);
- ($tmpA,$tmpB) = split("\"", $tmpB);
- $ref_files{$tmpA}='';
- $index_labels{$tmpA} = 1;
- }
- #
- # resolve and clean-up the hyperlink index-entries
- # so they can be saved in an index.pl file
- #
- if ($printable_key =~ /$cross_ref_mark/ ) {
- local($label,$id,$ref_label);
- # $printable_key =~ s/$cross_ref_mark#(\w+)#(\w+)>$cross_ref_mark/
- $printable_key =~ s/$cross_ref_mark#([^#]+)#([^>]+)>$cross_ref_mark/
- do { ($label,$id) = ($1,$2);
- $ref_label = $external_labels{$label} unless
- ($ref_label = $ref_files{$label});
- '"' . "$ref_label#$label" . '">' .
- &get_ref_mark($label,$id)}
- /geo;
- }
- $printable_key =~ s/<\#[^\#>]*\#>//go;
- #RRM
- # recognise \char combinations, for a \backslash
- #
- $printable_key =~ s/\&\#;\'134/\\/g; # restore \\s
- $printable_key =~ s/\&\#;\`<BR> /\\/g; # ditto
- $printable_key =~ s/\&\#;*SPMquot;92/\\/g; # ditto
- #
- # $sort_key .= "@$printable_key" if !($printable_key); # RRM
- $sort_key .= "@$printable_key" if !($sort_key); # RRM
- $sort_key =~ tr/A-Z/a-z/;
- if ($super_key) {
- $cur_key = $super_key . "\001" . $sort_key;
- $sub_index{$super_key} .= $cur_key . "\004";
- } else {
- $cur_key = $sort_key;
- }
-
- # Append the $index_name to the current key with a \002 delimiter. This will
- # allow the same index entry to appear in more than one index.
- $index_key = $cur_key . "\002$index_name";
-
- $index{$index_key} .= "";
-
- #
- # RRM, 15 June 1996
- # if there is no printable key, but one is known from
- # a previous index-entry, then use it.
- #
- if (!($printable_key) && ($printable_key{$index_key}))
- { $printable_key = $printable_key{$index_key}; }
-# if (!($printable_key) && ($printable_key{$cur_key}))
-# { $printable_key = $printable_key{$cur_key}; }
- #
- # do not overwrite the printable_key if it contains an anchor
- #
- if (!($printable_key{$index_key} =~ /tex2html_anchor_mark/ ))
- { $printable_key{$index_key} = $printable_key || $key; }
-# if (!($printable_key{$cur_key} =~ /tex2html_anchor_mark/ ))
-# { $printable_key{$cur_key} = $printable_key || $key; }
-
- $super_key = $cur_key;
- }
- #
- # RRM
- # page-ranges, from |( and |) and |see
- #
- if ($pageref) {
- if ($pageref eq "\(" ) {
- $pageref = '';
- $next .= " from ";
- } elsif ($pageref eq "\)" ) {
- $pageref = '';
- local($next) = $index{$index_key};
-# local($next) = $index{$cur_key};
- # $next =~ s/[\|] *$//;
- $next =~ s/(\n )?\| $//;
- $index{$index_key} = "$next to ";
-# $index{$cur_key} = "$next to ";
- }
- }
-
- if ($pageref) {
- $pageref =~ s/\s*$//g; # remove trailing spaces
- if (!$pageref) { $pageref = ' ' }
- $pageref =~ s/see/<i>see <\/i> /g;
- #
- # RRM: 27 Dec 1996
- # check if $pageref corresponds to a style command.
- # If so, apply it to the $words.
- #
- local($tmp) = "do_cmd_$pageref";
- if (defined &$tmp) {
- $words = &$tmp("<#0#>$words<#0#>");
- $words =~ s/<\#[^\#]*\#>//go;
- $pageref = '';
- }
- }
- #
- # RRM: 25 May 1996
- # any \label in the pageref section will have already
- # created a label where the \index occurred.
- # This has to be removed, so that the desired label
- # will be found on the Index page instead.
- #
- if ($pageref) {
- if ($pageref =~ /tex2html_anchor_mark/ ) {
- $pageref =~ s/><tex2html_anchor_mark><\/A><A//g;
- local($tmpA,$tmpB) = split("NAME=\"", $pageref);
- ($tmpA,$tmpB) = split("\"", $tmpB);
- $ref_files{$tmpA}='';
- $index_labels{$tmpA} = 1;
- }
- #
- # resolve and clean-up any hyperlinks in the page-ref,
- # so they can be saved in an index.pl file
- #
- if ($pageref =~ /$cross_ref_mark/ ) {
- local($label,$id,$ref_label);
- # $pageref =~ s/$cross_ref_mark#(\w+)#(\w+)>$cross_ref_mark/
- $pageref =~ s/$cross_ref_mark#([^#]+)#([^>]+)>$cross_ref_mark/
- do { ($label,$id) = ($1,$2);
- $ref_files{$label} = ''; # ???? RRM
- if ($index_labels{$label}) { $ref_label = ''; }
- else { $ref_label = $external_labels{$label}
- unless ($ref_label = $ref_files{$label});
- }
- '"' . "$ref_label#$label" . '">' . &get_ref_mark($label,$id)}/geo;
- }
- $pageref =~ s/<\#[^\#>]*\#>//go;
-
- if ($pageref eq ' ') { $index{$index_key}='@'; }
- else { $index{$index_key} .= $pageref . "\n | "; }
- } else {
- local($thisref) = &make_named_href('',"$CURRENT_FILE#$br_id",$words);
- $thisref =~ s/\n//g;
- $index{$index_key} .= $thisref."\n | ";
- }
- #print "\nREF: $sort_key : $index_key :$index{$index_key}";
-
- #join('',"<A NAME=$br_id>$anchor_invisible_mark<\/A>",$_);
-
- "<A NAME=\"$br_id\">$anchor_invisible_mark<\/A>";
-}
-
-
-# KEC. -- Copied from makeidx.perl, then modified to do multiple indices.
-# Feeds the index entries to the output. This is called for each index to be built.
-#
-# Generates a list of lookup keys for index entries, from both %printable_keys
-# and %index keys.
-# Sorts the keys according to index-sorting rules.
-# Removes keys with a 0x01 token. (duplicates?)
-# Builds a string to go to the index file.
-# Adds the index entries to the string if they belong in this index.
-# Keeps track of which index is being worked on, so only the proper entries
-# are included.
-# Places the index just built in to the output at the proper place.
-{ my $index_number = 0;
-sub add_real_idx {
- print "\nDoing the index ... Index Number $index_number\n";
- local($key, @keys, $next, $index, $old_key, $old_html);
- my ($idx_ref,$keyref);
- # RRM, 15.6.96: index constructed from %printable_key, not %index
- @keys = keys %printable_key;
-
- while (/$idx_mark/) {
- # Get the index reference from what follows the $idx_mark and
- # remove it from the string.
- s/$idxmark\002(.*?)\002/$idxmark/;
- $idx_ref = $1;
- $index = '';
- # include non- makeidx index-entries
- foreach $key (keys %index) {
- next if $printable_key{$key};
- $old_key = $key;
- if ($key =~ s/###(.*)$//) {
- next if $printable_key{$key};
- push (@keys, $key);
- $printable_key{$key} = $key;
- if ($index{$old_key} =~ /HREF="([^"]*)"/i) {
- $old_html = $1;
- $old_html =~ /$dd?([^#\Q$dd\E]*)#/;
- $old_html = $1;
- } else { $old_html = '' }
- $index{$key} = $index{$old_key} . $old_html."</A>\n | ";
- };
- }
- @keys = sort makeidx_keysort @keys;
- @keys = grep(!/\001/, @keys);
- my $cnt = 0;
- foreach $key (@keys) {
- my ($keyref) = $key =~ /.*\002(.*)/;
- next unless ($idx_ref eq $keyref); # KEC.
- $index .= &add_idx_key($key);
- $cnt++;
- }
- print "$cnt Index Entries Added\n";
- $index = '<DD>'.$index unless ($index =~ /^\s*<D(D|T)>/);
- $index_number++; # KEC.
- if ($SHORT_INDEX) {
- print "(compact version with Legend)";
- local($num) = ( $index =~ s/\<D/<D/g );
- if ($num > 50 ) {
- s/$idx_mark/$preindex<HR><DL>\n$index\n<\/DL>$preindex/o;
- } else {
- s/$idx_mark/$preindex<HR><DL>\n$index\n<\/DL>/o;
- }
- } else {
- s/$idx_mark/<DL COMPACT>\n$index\n<\/DL>/o; }
- }
-}
-}
-
-# KEC. Copied from latex2html.pl and modified to support multiple indices.
-# The bibliography and the index should be treated as separate sections
-# in their own HTML files. The \bibliography{} command acts as a sectioning command
-# that has the desired effect. But when the bibliography is constructed
-# manually using the thebibliography environment, or when using the
-# theindex environment it is not possible to use the normal sectioning
-# mechanism. This subroutine inserts a \bibliography{} or a dummy
-# \textohtmlindex command just before the appropriate environments
-# to force sectioning.
-sub add_bbl_and_idx_dummy_commands {
- local($id) = $global{'max_id'};
-
- s/([\\]begin\s*$O\d+$C\s*thebibliography)/$bbl_cnt++; $1/eg;
- ## if ($bbl_cnt == 1) {
- s/([\\]begin\s*$O\d+$C\s*thebibliography)/$id++; "\\bibliography$O$id$C$O$id$C $1"/geo;
- #}
- $global{'max_id'} = $id;
- # KEC. Modified to global substitution to place multiple index tokens.
- s/[\\]begin\s*($O\d+$C)\s*theindex/\\textohtmlindex$1/go;
- # KEC. Modified to pick up the optional argument to \printindex
- s/[\\]printindex\s*(\[.*?\])?/
- do { (defined $1) ? "\\textohtmlindex $1" : "\\textohtmlindex []"; } /ego;
- &lib_add_bbl_and_idx_dummy_commands() if defined(&lib_add_bbl_and_idx_dummy_commands);
-}
-
-# KEC. Copied from latex2html.pl and modified to support multiple indices.
-# For each textohtmlindex mark found, determine the index titles and headers.
-# We place the index ref in the header so the proper index can be generated later.
-# For the default index, the index ref is blank.
-#
-# One problem is that this routine is called twice.. Once for processing the
-# command as originally seen, and once for processing the command when
-# doing the name for the index file. We can detect that by looking at the
-# id numbers (or ref) surrounding the \theindex command, and not incrementing
-# index_number unless a new id (or ref) is seen. This has the side effect of
-# having to unconventionally start the index_number at -1. But it works.
-#
-# Gets the title from the list of indices.
-# If this is the first index, save the title in $first_idx_file. This is what's referenced
-# in the navigation buttons.
-# Increment the index_number for next time.
-# If the indexname command is defined or a newcommand defined for indexname, do it.
-# Save the index TITLE in the toc
-# Save the first_idx_file into the idxfile. This goes into the nav buttons.
-# Build index_labels if needed.
-# Create the index headings and put them in the output stream.
-
-{ my $index_number = 0; # Will be incremented before use.
- my $first_idx_file; # Static
- my $no_increment = 0;
-
-sub do_cmd_textohtmlindex {
- local($_) = @_;
- my ($idxref,$idxnum,$index_name);
-
- # We get called from make_name with the first argument = "\001noincrement". This is a sign
- # to not increment $index_number the next time we are called. We get called twice, once
- # my make_name and once by process_command. Unfortunately, make_name calls us just to set the name
- # but doesn't use the result so we get called a second time by process_command. This works fine
- # except for cases where there are multiple indices except if they aren't named, which is the case
- # when the index is inserted by an include command in latex. In these cases we are only able to use
- # the index number to decide which index to draw from, and we don't know how to increment that index
- # number if we get called a variable number of times for the same index, as is the case between
- # making html (one output file) and web (multiple output files) output formats.
- if (/\001noincrement/) {
- $no_increment = 1;
- return;
- }
-
- # Remove (but save) the index reference
- s/^\s*\[(.*?)\]/{$idxref = $1; "";}/e;
-
- # If we have an $idxref, the index name was specified. In this case, we have all the
- # information we need to carry on. Otherwise, we need to get the idxref
- # from the $index_number and set the name to "Index".
- if ($idxref) {
- $index_name = $indices{'title'}{$idxref};
- } else {
- if (defined ($idxref = $indices{'newcmdorder'}->[$index_number])) {
- $index_name = $indices{'title'}{$idxref};
- } else {
- $idxref = '';
- $index_name = "Index";
- }
- }
-
- $idx_title = "Index"; # The name displayed in the nav bar text.
-
- # Only set $idxfile if we are at the first index. This will point the
- # navigation panel to the first index file rather than the last.
- $first_idx_file = $CURRENT_FILE if ($index_number == 0);
- $idxfile = $first_idx_file; # Pointer for the Index button in the nav bar.
- $toc_sec_title = $index_name; # Index link text in the toc.
- $TITLE = $toc_sec_title; # Title for this index, from which its filename is built.
- if (%index_labels) { &make_index_labels(); }
- if (($SHORT_INDEX) && (%index_segment)) { &make_preindex(); }
- else { $preindex = ''; }
- local $idx_head = $section_headings{'textohtmlindex'};
- local($heading) = join(''
- , &make_section_heading($TITLE, $idx_head)
- , $idx_mark, "\002", $idxref, "\002" );
- local($pre,$post) = &minimize_open_tags($heading);
- $index_number++ unless ($no_increment);
- $no_increment = 0;
- join('',"<BR>\n" , $pre, $_);
-}
-}
-
-# Returns an index key, given the key passed as the first argument.
-# Not modified for multiple indices.
-sub add_idx_key {
- local($key) = @_;
- local($index, $next);
- if (($index{$key} eq '@' )&&(!($index_printed{$key}))) {
- if ($SHORT_INDEX) { $index .= "<DD><BR>\n<DT>".&print_key."\n<DD>"; }
- else { $index .= "<DT><DD><BR>\n<DT>".&print_key."\n<DD>"; }
- } elsif (($index{$key})&&(!($index_printed{$key}))) {
- if ($SHORT_INDEX) {
- $next = "<DD>".&print_key."\n : ". &print_idx_links;
- } else {
- $next = "<DT>".&print_key."\n<DD>". &print_idx_links;
- }
- $index .= $next."\n";
- $index_printed{$key} = 1;
- }
-
- if ($sub_index{$key}) {
- local($subkey, @subkeys, $subnext, $subindex);
- @subkeys = sort(split("\004", $sub_index{$key}));
- if ($SHORT_INDEX) {
- $index .= "<DD>".&print_key unless $index_printed{$key};
- $index .= "<DL>\n";
- } else {
- $index .= "<DT>".&print_key."\n<DD>" unless $index_printed{$key};
- $index .= "<DL COMPACT>\n";
- }
- foreach $subkey (@subkeys) {
- $index .= &add_sub_idx_key($subkey) unless ($index_printed{$subkey});
- }
- $index .= "</DL>\n";
- }
- return $index;
-}
-
-1; # Must be present as the last line.
+++ /dev/null
-%%
-%%
-
-\section*{Installer Bacula}
-\label{_ChapterStart17}
-\index[general]{Installer Bacula }
-\index[general]{Bacula!Installer }
-\addcontentsline{toc}{section}{Installer Bacula}
-
-\subsection*{Pr\'erequis}
-\index[general]{Pr\'erequis }
-\addcontentsline{toc}{subsection}{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.
-
-\subsection*{Distribution des fichiers source}
-\index[general]{fichiers source}
-\index[general]{distrribution fichiers}
-\addcontentsline{toc}{subsection}{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}
-
-\subsection*{Mettre Bacula \`a jour}
-\index[general]{Mettre Bacula \`a jour }
-\index[general]{Jour!Mettre Bacula \`a }
-\addcontentsline{toc}{subsection}{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 <installed-scripts-dir> (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
-
-\subsection*{Paquetage de D\'ependences}
-\label{Dependency}
-\index[general]{Paquetage de D\'ependences}
-\index[general]{Paquetage!D\'ependences}
-\addcontentsline{toc}{subsection}{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.
-
-\subsection*{Syst\`emes Support\'es}
-\label{Systems}
-\index[general]{Syst\`emes Support\'es }
-\addcontentsline{toc}{subsection}{Syst\`emes Support\'es}
-
-Veuillez consulter la section
-\ilink{ Syst\`emes support\'es}{SupportedOSes} du chapitre
-D\'emarrer avec Bacula de ce manuel.
-
-\subsection*{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}{subsection}{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 <vos-options>
- \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.
-
-\subsection*{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}{subsection}{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.
-
-\subsection*{D\'emarrage rapide}
-\index[general]{D\'emarrage rapide }
-\index[general]{Rapide!D\'emarrage }
-\addcontentsline{toc}{subsection}{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
-
-\subsection*{Options de la commande {\bf configure}}
-\label{Options}
-\index[general]{Options de la commande configure }
-\index[general]{Configure!Options de la commande }
-\addcontentsline{toc}{subsection}{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.
-
-\subsection*{Options recommand\'ees pour la plupart des syst\`emes}
-\index[general]{Options recommand\'ees pour la plupart des syst\`emes }
-\addcontentsline{toc}{subsection}{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.
-
-\subsection*{RedHat}
-\index[general]{RedHat }
-\addcontentsline{toc}{subsection}{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)
-
-\subsection*{Solaris}
-\index[general]{Solaris }
-\addcontentsline{toc}{subsection}{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
-
-
-\subsection*{FreeBSD}
-\index[general]{FreeBSD }
-\addcontentsline{toc}{subsection}{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.
-
-\subsection*{Win32}
-\index[general]{Win32 }
-\addcontentsline{toc}{subsection}{Win32}
-
-Pour installer la version binaire Win32 du File Daemon, consultez le chapitre
-\ilink{ Installation sur syst\`emes Win32}{_ChapterStart7} de ce
-document.
-
-\subsection*{Syst\`emes Windows avec CYGWIN install\'e}
-\label{Win32}
-\index[general]{Syst\`emes Windows avec CYGWIN install\'e }
-\addcontentsline{toc}{subsection}{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.
-
-\subsection*{Le script Configure de Kern}
-\index[general]{Le script Configure de Kern }
-\index[general]{Kern!Le script Configure de }
-\addcontentsline{toc}{subsection}{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
-
-\subsection*{Installer Bacula}
-\index[general]{Installer Bacula }
-\index[general]{Bacula!Installer }
-\addcontentsline{toc}{subsection}{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}
-
-
-\subsection*{Compiler un File Daemon (ou Client)}
-\index[general]{Compiler un File Daemon (ou Client) }
-\index[general]{Client!Compiler un File Daemon ou }
-\addcontentsline{toc}{subsection}{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}
-
-\subsection*{D\'emarrage automatique des Daemons}
-\index[general]{Daemons!D\'emarrage automatique des }
-\index[general]{D\'emarrage automatique des Daemons }
-\addcontentsline{toc}{subsection}{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
-
-\subsection*{Autres notes concernant la compilation}
-\index[general]{Autres notes concernant la compilation }
-\index[general]{Compilation!Autres notes concernant la }
-\addcontentsline{toc}{subsection}{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}
-
-\subsection*{Installer Tray Monitor}
-\index[general]{Monitor!Installer Tray }
-\index[general]{Installer Tray Monitor }
-\addcontentsline{toc}{subsection}{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.
-
-\subsubsection*{GNOME}
-\index[general]{GNOME }
-\addcontentsline{toc}{subsubsection}{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)
-
-\subsubsection*{KDE}
-\index[general]{KDE }
-\addcontentsline{toc}{subsubsection}{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}.
-
-\subsubsection*{Autres gestionnaires de fen\^etres}
-\index[general]{Autres gestionnaires de fen\^etres }
-\addcontentsline{toc}{subsubsection}{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.
-
-\subsection*{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.
+++ /dev/null
-%%
-%%
-
-\section*{The Bacula internal database is no longer supported, please do not
-use it.}
-\label{_ChapterStart42}
-\index[general]{Use it!Bacula internal database is no longer supported please
-do not }
-\index[general]{Bacula internal database is no longer supported, please do not
-use it. }
-\addcontentsline{toc}{section}{Bacula internal database is no longer
-supported, please do not use it.}
-
-\subsection*{Internal Bacula Database}
-\index[general]{Internal Bacula Database }
-\index[general]{Database!Internal Bacula }
-\addcontentsline{toc}{subsection}{Internal Bacula Database}
-
-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.
+++ /dev/null
-%%
-%%
-
-\section*{What To Do When Bacula Crashes (Kaboom)}
-\label{_ChapterStart47}
-\index[general]{Kaboom!What To Do When Bacula Crashes }
-\index[general]{What To Do When Bacula Crashes (Kaboom) }
-\addcontentsline{toc}{section}{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.
-
-\subsection*{Traceback}
-\index[general]{Traceback }
-\addcontentsline{toc}{subsection}{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 an installed copy of {\bf gdb} (the GNU debugger), and it
- must be on {\bf Bacula's} path.
-\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.
- \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 | mail -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.
-
-\subsection*{Testing The Traceback}
-\index[general]{Traceback!Testing The }
-\index[general]{Testing The Traceback }
-\addcontentsline{toc}{subsection}{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).
-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} 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 the {\bf mail} program doesn't work or is not on the default
-path. On some systems, it is preferable to use {\bf Mail} rather than {\bf
-mail}.
-
-\subsection*{Getting A Traceback On Other Systems}
-\index[general]{Getting A Traceback On Other Systems }
-\index[general]{Systems!Getting A Traceback On Other }
-\addcontentsline{toc}{subsection}{Getting A Traceback On Other Systems}
-
-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 gdb}
-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.
-\label{ManuallyDebugging}
-
-\subsection*{Manually Running Bacula Under The Debugger}
-\index[general]{Manually Running Bacula Under The Debugger }
-\index[general]{Debugger!Manually Running Bacula Under The }
-\addcontentsline{toc}{subsection}{Manually Running Bacula Under The Debugger}
-
-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}
-
-\subsection*{Getting Debug Output from Bacula}
-\index[general]{Getting Debug Output from Bacula }
-\addcontentsline{toc}{subsection}{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).
+++ /dev/null
-# This file serves as a place to put initialization code and constants to
-# affect the behavior of latex2html for generating the bacula manuals.
-
-# $LINKPOINT specifies what filename to use to link to when creating
-# index.html. Not that this is a hard link.
-$LINKPOINT='"$OVERALL_TITLE"';
-
-
-# The following must be the last line of this file.
-1;
+++ /dev/null
-%%
-%%
-
-\section*{GNU Lesser General Public License}
-\label{_ChapterStart49}
-\index[general]{GNU Lesser General Public License }
-\index[general]{License!GNU Lesser General Public }
-\addcontentsline{toc}{section}{GNU Lesser General Public License}
-
-\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.
-
-\subsection*{Table of Contents}
-\index[general]{Table of Contents }
-\index[general]{Contents!Table of }
-\addcontentsline{toc}{subsection}{Table of Contents}
-
-\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}
-
-
-\subsection*{
-\ilink{GNU LESSER GENERAL PUBLIC LICENSE}{TOC12}}
-\label{SEC12}
-\index[general]{LICENSE!GNU LESSER GENERAL PUBLIC }
-\index[general]{GNU LESSER GENERAL PUBLIC LICENSE }
-\addcontentsline{toc}{subsection}{GNU LESSER GENERAL PUBLIC LICENSE}
-
-Version 2.1, February 1999
-
-\footnotesize
-\begin{verbatim}
-Copyright (C) 1991, 1999 Free Software Foundation, Inc.
-59 Temple Place, Suite 330, Boston, MA 02111-1307 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
-
-\subsection*{
-\ilink{Preamble}{TOC23}}
-\label{SEC23}
-\index[general]{Preamble }
-\addcontentsline{toc}{subsection}{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.
-
-\subsection*{
-\ilink{TERMS AND CONDITIONS}{TOC34}}
-\label{SEC34}
-\index[general]{CONDITIONS!TERMS AND }
-\index[general]{TERMS AND CONDITIONS }
-\addcontentsline{toc}{subsection}{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
-
-\subsection*{
-\ilink{How to Apply These Terms to Your New Libraries}{TOC45}}
-\label{SEC45}
-\index[general]{Libraries!How to Apply These Terms to Your New }
-\index[general]{How to Apply These Terms to Your New Libraries }
-\addcontentsline{toc}{subsection}{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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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., 59 Temple Place - Suite 330, Boston, MA 02111,
-USA
-
-Updated: 27 Nov 2000 paulv
+++ /dev/null
-%%
-%%
-
-\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}{\url{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}{\url{http://www.bacula.org}}.
-
-% TODO: Point to appendix that has it
-
-
-\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-2007
-Free Software Foundation Europe e.V.
-
-Portions may be copyrighted by other people (ATT, the Free Software
-Foundation, ...). These files are released under the GPL 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 John Walker.
-
-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.
-
-\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/FLA-bacula.en.pdf}{\url{http://www.bacula.org/FLA-bacula.en.pdf}}
-
-and should be filled out then sent to:
-
-\begin{quote}
- Free Software Foundation Europe \\
- Freedom Task Force \\
- Sumatrastrasse 25 \\
- 8006 Z\"{u}rich \\
- Switzerland \\
-\end{quote}
-
-Please note that the above address is different from the officially
-registered office mentioned in the document. 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.
+++ /dev/null
-%%
-%%
-
-\section*{\includegraphics{./md5.eps}}
-\label{_ChapterStart}
-\addcontentsline{toc}{section}{}
-
-\subsection*{Command Line Message Digest Utility }
-\index{Utility!Command Line Message Digest }
-\index{Command Line Message Digest Utility }
-\addcontentsline{toc}{subsection}{Command Line Message Digest Utility}
-
-
-This page describes {\bf md5}, a command line utility usable on either Unix or
-MS-DOS/Windows, which generates and verifies message digests (digital
-signatures) using the MD5 algorithm. This program can be useful when
-developing shell scripts or Perl programs for software installation, file
-comparison, and detection of file corruption and tampering.
-
-\subsubsection*{NAME}
-\index{NAME }
-\addcontentsline{toc}{subsubsection}{NAME}
-
-{\bf md5} - generate / check MD5 message digest
-
-\subsubsection*{SYNOPSIS}
-\index{SYNOPSIS }
-\addcontentsline{toc}{subsubsection}{SYNOPSIS}
-
-{\bf md5} [ {\bf -c}{\it signature} ] [ {\bf -u} ] [ {\bf -d}{\it input\_text}
-| {\it infile} ] [ {\it outfile} ]
-
-\subsubsection*{DESCRIPTION}
-\index{DESCRIPTION }
-\addcontentsline{toc}{subsubsection}{DESCRIPTION}
-
-A {\it message digest} is a compact digital signature for an arbitrarily long
-stream of binary data. An ideal message digest algorithm would never generate
-the same signature for two different sets of input, but achieving such
-theoretical perfection would require a message digest as long as the input
-file. Practical message digest algorithms compromise in favour of a digital
-signature of modest size created with an algorithm designed to make
-preparation of input text with a given signature computationally infeasible.
-Message digest algorithms have much in common with techniques used in
-encryption, but to a different end; verification that data have not been
-altered since the signature was published.
-
-Many older programs requiring digital signatures employed 16 or 32 bit {\it
-cyclical redundancy codes} (CRC) originally developed to verify correct
-transmission in data communication protocols, but these short codes, while
-adequate to detect the kind of transmission errors for which they were
-intended, are insufficiently secure for applications such as electronic
-commerce and verification of security related software distributions.
-
-The most commonly used present-day message digest algorithm is the 128 bit MD5
-algorithm, developed by Ron Rivest of the
-\elink{MIT}{http://web.mit.edu/}
-\elink{Laboratory for Computer Science}{http://www.lcs.mit.edu/} and
-\elink{RSA Data Security, Inc.}{http://www.rsa.com/} The algorithm, with a
-reference implementation, was published as Internet
-\elink{RFC 1321}{http://www.fourmilab.ch/md5/rfc1321.html} in April 1992, and
-was placed into the public domain at that time. Message digest algorithms such
-as MD5 are not deemed ``encryption technology'' and are not subject to the
-export controls some governments impose on other data security products.
-(Obviously, the responsibility for obeying the laws in the jurisdiction in
-which you reside is entirely your own, but many common Web and Mail utilities
-use MD5, and I am unaware of any restrictions on their distribution and use.)
-
-The MD5 algorithm has been implemented in numerous computer languages
-including C,
-\elink{Perl}{http://www.perl.org/}, and
-\elink{Java}{http://www.javasoft.com/}; if you're writing a program in such a
-language, track down a suitable subroutine and incorporate it into your
-program. The program described on this page is a {\it command line}
-implementation of MD5, intended for use in shell scripts and Perl programs (it
-is much faster than computing an MD5 signature directly in Perl). This {\bf
-md5} program was originally developed as part of a suite of tools intended to
-monitor large collections of files (for example, the contents of a Web site)
-to detect corruption of files and inadvertent (or perhaps malicious) changes.
-That task is now best accomplished with more comprehensive packages such as
-\elink{Tripwire}{ftp://coast.cs.purdue.edu/pub/COAST/Tripwire/}, but the
-command line {\bf md5} component continues to prove useful for verifying
-correct delivery and installation of software packages, comparing the contents
-of two different systems, and checking for changes in specific files.
-
-\subsubsection*{OPTIONS}
-\index{OPTIONS }
-\addcontentsline{toc}{subsubsection}{OPTIONS}
-
-\begin{description}
-
-\item [{\bf -c}{\it signature} ]
- \index{-csignature }
- Computes the signature of the specified {\it infile} or the string supplied
-by the {\bf -d} option and compares it against the specified {\it signature}.
-If the two signatures match, the exit status will be zero, otherwise the exit
-status will be 1. No signature is written to {\it outfile} or standard
-output; only the exit status is set. The signature to be checked must be
-specified as 32 hexadecimal digits.
-
-\item [{\bf -d}{\it input\_text} ]
- \index{-dinput\_text }
- A signature is computed for the given {\it input\_text} (which must be quoted
-if it contains white space characters) instead of input from {\it infile} or
-standard input. If input is specified with the {\bf -d} option, no {\it
-infile} should be specified.
-
-\item [{\bf -u} ]
- Print how-to-call information.
- \end{description}
-
-\subsubsection*{FILES}
-\index{FILES }
-\addcontentsline{toc}{subsubsection}{FILES}
-
-If no {\it infile} or {\bf -d} option is specified or {\it infile} is a single
-``-'', {\bf md5} reads from standard input; if no {\it outfile} is given, or
-{\it outfile} is a single ``-'', output is sent to standard output. Input and
-output are processed strictly serially; consequently {\bf md5} may be used in
-pipelines.
-
-\subsubsection*{BUGS}
-\index{BUGS }
-\addcontentsline{toc}{subsubsection}{BUGS}
-
-The mechanism used to set standard input to binary mode may be specific to
-Microsoft C; if you rebuild the DOS/Windows version of the program from source
-using another compiler, be sure to verify binary files work properly when read
-via redirection or a pipe.
-
-This program has not been tested on a machine on which {\tt int} and/or {\tt
-long} are longer than 32 bits.
-
-\subsection*{
-\elink{Download md5.zip}{http://www.fourmilab.ch/md5/md5.zip} (Zipped
-archive)}
-\index{Archive!Download md5.zip Zipped }
-\index{Download md5.zip (Zipped archive) }
-\addcontentsline{toc}{subsection}{Download md5.zip (Zipped archive)}
-
-The program is provided as
-\elink{md5.zip}{http://www.fourmilab.ch/md5/md5.zip}, a
-\elink{Zipped}{http://www.pkware.com/} archive containing an ready-to-run
-Win32 command-line executable program, {\tt md5.exe} (compiled using Microsoft
-Visual C++ 5.0), and in source code form along with a {\tt Makefile} to build
-the program under Unix.
-
-\subsubsection*{SEE ALSO}
-\index{ALSO!SEE }
-\index{SEE ALSO }
-\addcontentsline{toc}{subsubsection}{SEE ALSO}
-
-{\bf sum}(1)
-
-\subsubsection*{EXIT STATUS}
-\index{STATUS!EXIT }
-\index{EXIT STATUS }
-\addcontentsline{toc}{subsubsection}{EXIT STATUS}
-
-{\bf md5} returns status 0 if processing was completed without errors, 1 if
-the {\bf -c} option was specified and the given signature does not match that
-of the input, and 2 if processing could not be performed at all due, for
-example, to a nonexistent input file.
-
-\subsubsection*{COPYING}
-\index{COPYING }
-\addcontentsline{toc}{subsubsection}{COPYING}
-
-\begin{quote}
-This software is in the public domain. Permission to use, copy, modify, and
-distribute this software and its documentation for any purpose and without
-fee is hereby granted, without any conditions or restrictions. This software
-is provided ``as is'' without express or implied warranty.
-\end{quote}
-
-\subsubsection*{ACKNOWLEDGEMENTS}
-\index{ACKNOWLEDGEMENTS }
-\addcontentsline{toc}{subsubsection}{ACKNOWLEDGEMENTS}
-
-The MD5 algorithm was developed by Ron Rivest. The public domain C language
-implementation used in this program was written by Colin Plumb in 1993.
-{\it
-\elink{by John Walker}{http://www.fourmilab.ch/}
-January 6th, MIM }
+++ /dev/null
-%%
-%%
-
-\section*{Storage Media Output Format}
-\label{_ChapterStart9}
-\index{Format!Storage Media Output }
-\index{Storage Media Output Format }
-\addcontentsline{toc}{section}{Storage Media Output Format}
-
-\subsection*{General}
-\index{General }
-\addcontentsline{toc}{subsection}{General}
-
-This document describes the media format written by the Storage daemon. The
-Storage daemon reads and writes in units of blocks. Blocks contain records.
-Each block has a block header followed by records, and each record has a
-record header followed by record data.
-
-This chapter is intended to be a technical discussion of the Media Format and
-as such is not targeted at end users but rather at developers and system
-administrators that want or need to know more of the working details of {\bf
-Bacula}.
-
-\subsection*{Definitions}
-\index{Definitions }
-\addcontentsline{toc}{subsection}{Definitions}
-
-\begin{description}
-
-\item [Block]
- \index{Block }
- A block represents the primitive unit of information that the Storage daemon
-reads and writes to a physical device. Normally, for a tape device, it will
-be the same as a tape block. The Storage daemon always reads and writes
-blocks. A block consists of block header information followed by records.
-Clients of the Storage daemon (the File daemon) normally never see blocks.
-However, some of the Storage tools (bls, bscan, bextract, ...) may be use
-block header information. In older Bacula tape versions, a block could
-contain records (see record definition below) from multiple jobs. However,
-all blocks currently written by Bacula are block level BB02, and a given
-block contains records for only a single job. Different jobs simply have
-their own private blocks that are intermingled with the other blocks from
-other jobs on the Volume (previously the records were intermingled within
-the blocks). Having only records from a single job in any give block
-permitted moving the VolumeSessionId and VolumeSessionTime (see below) from
-each record heading to the Block header. This has two advantages: 1. a block
-can be quickly rejected based on the contents of the header without reading
-all the records. 2. because there is on the average more than one record per
-block, less data is written to the Volume for each job.
-
-\item [Record]
- \index{Record }
- A record consists of a Record Header, which is managed by the Storage daemon
-and Record Data, which is the data received from the Client. A record is the
-primitive unit of information sent to and from the Storage daemon by the
-Client (File daemon) programs. The details are described below.
-
-\item [JobId]
- \index{JobId }
- A number assigned by the Director daemon for a particular job. This number
-will be unique for that particular Director (Catalog). The daemons use this
-number to keep track of individual jobs. Within the Storage daemon, the JobId
-may not be unique if several Directors are accessing the Storage daemon
-simultaneously.
-
-\item [Session]
- \index{Session }
- A Session is a concept used in the Storage daemon corresponds one to one to a
-Job with the exception that each session is uniquely identified within the
-Storage daemon by a unique SessionId/SessionTime pair (see below).
-
-\item [VolSessionId]
- \index{VolSessionId }
- A unique number assigned by the Storage daemon to a particular session (Job)
-it is having with a File daemon. This number by itself is not unique to the
-given Volume, but with the VolSessionTime, it is unique.
-
-\item [VolSessionTime]
- \index{VolSessionTime }
- A unique number assigned by the Storage daemon to a particular Storage daemon
-execution. It is actually the Unix time\_t value of when the Storage daemon
-began execution cast to a 32 bit unsigned integer. The combination of the
-{\bf VolSessionId} and the {\bf VolSessionTime} for a given Storage daemon is
-guaranteed to be unique for each Job (or session).
-
-\item [FileIndex]
- \index{FileIndex }
- A sequential number beginning at one assigned by the File daemon to the files
-within a job that are sent to the Storage daemon for backup. The Storage
-daemon ensures that this number is greater than zero and sequential. Note,
-the Storage daemon uses negative FileIndexes to flag Session Start and End
-Labels as well as End of Volume Labels. Thus, the combination of
-VolSessionId, VolSessionTime, and FileIndex uniquely identifies the records
-for a single file written to a Volume.
-
-\item [Stream]
- \index{Stream }
- While writing the information for any particular file to the Volume, there
-can be any number of distinct pieces of information about that file, e.g. the
-attributes, the file data, ... The Stream indicates what piece of data it
-is, and it is an arbitrary number assigned by the File daemon to the parts
-(Unix attributes, Win32 attributes, data, compressed data,\ ...) of a file
-that are sent to the Storage daemon. The Storage daemon has no knowledge of
-the details of a Stream; it simply represents a numbered stream of bytes. The
-data for a given stream may be passed to the Storage daemon in single record,
-or in multiple records.
-
-\item [Block Header]
- \index{Block Header }
- A block header consists of a block identification (``BB02''), a block length
-in bytes (typically 64,512) a checksum, and sequential block number. Each
-block starts with a Block Header and is followed by Records. Current block
-headers also contain the VolSessionId and VolSessionTime for the records
-written to that block.
-
-\item [Record Header]
- \index{Record Header }
- A record header contains the Volume Session Id, the Volume Session Time, the
-FileIndex, the Stream, and the size of the data record which follows. The
-Record Header is always immediately followed by a Data Record if the size
-given in the Header is greater than zero. Note, for Block headers of level
-BB02 (version 1.27 and later), the Record header as written to tape does not
-contain the Volume Session Id and the Volume Session Time as these two
-fields are stored in the BB02 Block header. The in-memory record header does
-have those fields for convenience.
-
-\item [Data Record]
- \index{Data Record }
- A data record consists of a binary stream of bytes and is always preceded by
-a Record Header. The details of the meaning of the binary stream of bytes are
-unknown to the Storage daemon, but the Client programs (File daemon) defines
-and thus knows the details of each record type.
-
-\item [Volume Label]
- \index{Volume Label }
- A label placed by the Storage daemon at the beginning of each storage volume.
-It contains general information about the volume. It is written in Record
-format. The Storage daemon manages Volume Labels, and if the client wants, he
-may also read them.
-
-\item [Begin Session Label]
- \index{Begin Session Label }
- The Begin Session Label is a special record placed by the Storage daemon on
-the storage medium as the first record of an append session job with a File
-daemon. This record is useful for finding the beginning of a particular
-session (Job), since no records with the same VolSessionId and VolSessionTime
-will precede this record. This record is not normally visible outside of the
-Storage daemon. The Begin Session Label is similar to the Volume Label except
-that it contains additional information pertaining to the Session.
-
-\item [End Session Label]
- \index{End Session Label }
- The End Session Label is a special record placed by the Storage daemon on the
-storage medium as the last record of an append session job with a File
-daemon. The End Session Record is distinguished by a FileIndex with a value
-of minus two (-2). This record is useful for detecting the end of a
-particular session since no records with the same VolSessionId and
-VolSessionTime will follow this record. This record is not normally visible
-outside of the Storage daemon. The End Session Label is similar to the Volume
-Label except that it contains additional information pertaining to the
-Session.
-\end{description}
-
-\subsection*{Storage Daemon File Output Format}
-\index{Format!Storage Daemon File Output }
-\index{Storage Daemon File Output Format }
-\addcontentsline{toc}{subsection}{Storage Daemon File Output Format}
-
-The file storage and tape storage formats are identical except that tape
-records are by default blocked into blocks of 64,512 bytes, except for the
-last block, which is the actual number of bytes written rounded up to a
-multiple of 1024 whereas the last record of file storage is not rounded up.
-The default block size of 64,512 bytes may be overridden by the user (some
-older tape drives only support block sizes of 32K). Each Session written to
-tape is terminated with an End of File mark (this will be removed later).
-Sessions written to file are simply appended to the end of the file.
-
-\subsection*{Overall Format}
-\index{Format!Overall }
-\index{Overall Format }
-\addcontentsline{toc}{subsection}{Overall Format}
-
-A Bacula output file consists of Blocks of data. Each block contains a block
-header followed by records. Each record consists of a record header followed
-by the record data. The first record on a tape will always be the Volume Label
-Record.
-
-No Record Header will be split across Bacula blocks. However, Record Data may
-be split across any number of Bacula blocks. Obviously this will not be the
-case for the Volume Label which will always be smaller than the Bacula Block
-size.
-
-To simplify reading tapes, the Start of Session (SOS) and End of Session (EOS)
-records are never split across blocks. If this is about to happen, Bacula will
-write a short block before writing the session record (actually, the SOS
-record should always be the first record in a block, excepting perhaps the
-Volume label).
-
-Due to hardware limitations, the last block written to the tape may not be
-fully written. If your drive permits backspace record, Bacula will backup over
-the last record written on the tape, re-read it and verify that it was
-correctly written.
-
-When a new tape is mounted Bacula will write the full contents of the
-partially written block to the new tape ensuring that there is no loss of
-data. When reading a tape, Bacula will discard any block that is not totally
-written, thus ensuring that there is no duplication of data. In addition,
-since Bacula blocks are sequentially numbered within a Job, it is easy to
-ensure that no block is missing or duplicated.
-
-\subsection*{Serialization}
-\index{Serialization }
-\addcontentsline{toc}{subsection}{Serialization}
-
-All Block Headers, Record Headers, and Label Records are written using
-Bacula's serialization routines. These routines guarantee that the data is
-written to the output volume in a machine independent format.
-
-\subsection*{Block Header}
-\index{Header!Block }
-\index{Block Header }
-\addcontentsline{toc}{subsection}{Block Header}
-
-The format of the Block Header (version 1.27 and later) is:
-
-\footnotesize
-\begin{verbatim}
- uint32_t CheckSum; /* Block check sum */
- uint32_t BlockSize; /* Block byte size including the header */
- uint32_t BlockNumber; /* Block number */
- char ID[4] = "BB02"; /* Identification and block level */
- uint32_t VolSessionId; /* Session Id for Job */
- uint32_t VolSessionTime; /* Session Time for Job */
-\end{verbatim}
-\normalsize
-
-The Block header is a fixed length and fixed format and is followed by Record
-Headers and Record Data. The CheckSum field is a 32 bit checksum of the block
-data and the block header but not including the CheckSum field. The Block
-Header is always immediately followed by a Record Header. If the tape is
-damaged, a Bacula utility will be able to recover as much information as
-possible from the tape by recovering blocks which are valid. The Block header
-is written using the Bacula serialization routines and thus is guaranteed to
-be in machine independent format. See below for version 2 of the block header.
-
-
-\subsection*{Record Header}
-\index{Header!Record }
-\index{Record Header }
-\addcontentsline{toc}{subsection}{Record Header}
-
-Each binary data record is preceded by a Record Header. The Record Header is
-fixed length and fixed format, whereas the binary data record is of variable
-length. The Record Header is written using the Bacula serialization routines
-and thus is guaranteed to be in machine independent format.
-
-The format of the Record Header (version 1.27 or later) is:
-
-\footnotesize
-\begin{verbatim}
- int32_t FileIndex; /* File index supplied by File daemon */
- int32_t Stream; /* Stream number supplied by File daemon */
- uint32_t DataSize; /* size of following data record in bytes */
-\end{verbatim}
-\normalsize
-
-This record is followed by the binary Stream data of DataSize bytes, followed
-by another Record Header record and the binary stream data. For the definitive
-definition of this record, see record.h in the src/stored directory.
-
-Additional notes on the above:
-
-\begin{description}
-
-\item [The {\bf VolSessionId} ]
- \index{VolSessionId }
- is a unique sequential number that is assigned by the Storage Daemon to a
-particular Job. This number is sequential since the start of execution of the
-daemon.
-
-\item [The {\bf VolSessionTime} ]
- \index{VolSessionTime }
- is the time/date that the current execution of the Storage Daemon started. It
-assures that the combination of VolSessionId and VolSessionTime is unique for
-every jobs written to the tape, even if there was a machine crash between two
-writes.
-
-\item [The {\bf FileIndex} ]
- \index{FileIndex }
- is a sequential file number within a job. The Storage daemon requires this
-index to be greater than zero and sequential. Note, however, that the File
-daemon may send multiple Streams for the same FileIndex. In addition, the
-Storage daemon uses negative FileIndices to hold the Begin Session Label, the
-End Session Label, and the End of Volume Label.
-
-\item [The {\bf Stream} ]
- \index{Stream }
- is defined by the File daemon and is used to identify separate parts of the
-data saved for each file (Unix attributes, Win32 attributes, file data,
-compressed file data, sparse file data, ...). The Storage Daemon has no idea
-of what a Stream is or what it contains except that the Stream is required to
-be a positive integer. Negative Stream numbers are used internally by the
-Storage daemon to indicate that the record is a continuation of the previous
-record (the previous record would not entirely fit in the block).
-
-For Start Session and End Session Labels (where the FileIndex is negative),
-the Storage daemon uses the Stream field to contain the JobId. The current
-stream definitions are:
-
-\footnotesize
-\begin{verbatim}
-STREAM_UNIX_ATTRIBUTES 1 /* Generic Unix attributes */
-STREAM_FILE_DATA 2 /* Standard uncompressed data */
-STREAM_MD5_SIGNATURE 3 /* MD5 signature for the file */
-STREAM_GZIP_DATA 4 /* GZip compressed file data */
-STREAM_WIN32_ATTRIBUTES 5 /* Windows attributes (superset of Unix) */
-STREAM_SPARSE_DATA 6 /* Sparse data stream */
-STREAM_SPARSE_GZIP_DATA 7 /* Sparse data stream compressed by GZIP */
-STREAM_PROGRAM_NAMES 8 /* program names for program data */
-STREAM_PROGRAM_DATA 9 /* Data needing program */
-STREAM_SHA1_SIGNATURE 10 /* SHA1 signature for the file */
-STREAM_WIN32_DATA 11 /* Win32 BackupRead data */
-STREAM_WIN32_GZIP_DATA 12 /* Gzipped Win32 BackupRead data */
-
-\end{verbatim}
-\normalsize
-
-\item [The {\bf DataSize} ]
- \index{DataSize }
- is the size in bytes of the binary data record that follows the Session
-Record header. The Storage Daemon has no idea of the actual contents of the
-binary data record. For standard Unix files, the data record typically
-contains the file attributes or the file data. For a sparse file the first
-64 bits of the file data contains the storage address for the data block.
-\end{description}
-
-The Record Header is never split across two blocks. If there is not enough
-room in a block for the full Record Header, the block is padded to the end
-with zeros and the Record Header begins in the next block. The data record, on
-the other hand, may be split across multiple blocks and even multiple physical
-volumes. When a data record is split, the second (and possibly subsequent)
-piece of the data is preceded by a new Record Header. Thus each piece of data
-is always immediately preceded by a Record Header. When reading a record, if
-Bacula finds only part of the data in the first record, it will automatically
-read the next record and concatenate the data record to form a full data
-record.
-
-\subsection*{Version BB02 Block Header}
-\index{Version BB02 Block Header }
-\index{Header!Version BB02 Block }
-\addcontentsline{toc}{subsection}{Version BB02 Block Header}
-
-Each session or Job has its own private block. As a consequence, the SessionId
-and SessionTime are written once in each Block Header and not in the Record
-Header. So, the second and current version of the Block Header BB02 is:
-
-\footnotesize
-\begin{verbatim}
- uint32_t CheckSum; /* Block check sum */
- uint32_t BlockSize; /* Block byte size including the header */
- uint32_t BlockNumber; /* Block number */
- char ID[4] = "BB02"; /* Identification and block level */
- uint32_t VolSessionId; /* Applies to all records */
- uint32_t VolSessionTime; /* contained in this block */
-\end{verbatim}
-\normalsize
-
-As with the previous version, the BB02 Block header is a fixed length and
-fixed format and is followed by Record Headers and Record Data. The CheckSum
-field is a 32 bit CRC checksum of the block data and the block header but not
-including the CheckSum field. The Block Header is always immediately followed
-by a Record Header. If the tape is damaged, a Bacula utility will be able to
-recover as much information as possible from the tape by recovering blocks
-which are valid. The Block header is written using the Bacula serialization
-routines and thus is guaranteed to be in machine independent format.
-
-\subsection*{Version 2 Record Header}
-\index{Version 2 Record Header }
-\index{Header!Version 2 Record }
-\addcontentsline{toc}{subsection}{Version 2 Record Header}
-
-Version 2 Record Header is written to the medium when using Version BB02 Block
-Headers. The memory representation of the record is identical to the old BB01
-Record Header, but on the storage medium, the first two fields, namely
-VolSessionId and VolSessionTime are not written. The Block Header is filled
-with these values when the First user record is written (i.e. non label
-record) so that when the block is written, it will have the current and unique
-VolSessionId and VolSessionTime. On reading each record from the Block, the
-VolSessionId and VolSessionTime is filled in the Record Header from the Block
-Header.
-
-\subsection*{Volume Label Format}
-\index{Volume Label Format }
-\index{Format!Volume Label }
-\addcontentsline{toc}{subsection}{Volume Label Format}
-
-Tape volume labels are created by the Storage daemon in response to a {\bf
-label} command given to the Console program, or alternatively by the {\bf
-btape} program. created. Each volume is labeled with the following information
-using the Bacula serialization routines, which guarantee machine byte order
-independence.
-
-For Bacula versions 1.27 and later, the Volume Label Format is:
-
-\footnotesize
-\begin{verbatim}
- char Id[32]; /* Bacula 1.0 Immortal\n */
- uint32_t VerNum; /* Label version number */
- /* VerNum 11 and greater Bacula 1.27 and later */
- btime_t label_btime; /* Time/date tape labeled */
- btime_t write_btime; /* Time/date tape first written */
- /* The following are 0 in VerNum 11 and greater */
- float64_t write_date; /* Date this label written */
- float64_t write_time; /* Time this label written */
- char VolName[128]; /* Volume name */
- char PrevVolName[128]; /* Previous Volume Name */
- char PoolName[128]; /* Pool name */
- char PoolType[128]; /* Pool type */
- char MediaType[128]; /* Type of this media */
- char HostName[128]; /* Host name of writing computer */
- char LabelProg[32]; /* Label program name */
- char ProgVersion[32]; /* Program version */
- char ProgDate[32]; /* Program build date/time */
-\end{verbatim}
-\normalsize
-
-Note, the LabelType (Volume Label, Volume PreLabel, Session Start Label, ...)
-is stored in the record FileIndex field of the Record Header and does not
-appear in the data part of the record.
-
-\subsection*{Session Label}
-\index{Label!Session }
-\index{Session Label }
-\addcontentsline{toc}{subsection}{Session Label}
-
-The Session Label is written at the beginning and end of each session as well
-as the last record on the physical medium. It has the following binary format:
-
-
-\footnotesize
-\begin{verbatim}
- char Id[32]; /* Bacula Immortal ... */
- uint32_t VerNum; /* Label version number */
- uint32_t JobId; /* Job id */
- uint32_t VolumeIndex; /* sequence no of vol */
- /* Prior to VerNum 11 */
- float64_t write_date; /* Date this label written */
- /* VerNum 11 and greater */
- btime_t write_btime; /* time/date record written */
- /* The following is zero VerNum 11 and greater */
- float64_t write_time; /* Time this label written */
- char PoolName[128]; /* Pool name */
- char PoolType[128]; /* Pool type */
- char JobName[128]; /* base Job name */
- char ClientName[128];
- /* Added in VerNum 10 */
- char Job[128]; /* Unique Job name */
- char FileSetName[128]; /* FileSet name */
- uint32_t JobType;
- uint32_t JobLevel;
-\end{verbatim}
-\normalsize
-
-In addition, the EOS label contains:
-
-\footnotesize
-\begin{verbatim}
- /* The remainder are part of EOS label only */
- uint32_t JobFiles;
- uint64_t JobBytes;
- uint32_t start_block;
- uint32_t end_block;
- uint32_t start_file;
- uint32_t end_file;
- uint32_t JobErrors;
-\end{verbatim}
-\normalsize
-
-In addition, for VerNum greater than 10, the EOS label contains (in addition
-to the above):
-
-\footnotesize
-\begin{verbatim}
- uint32_t JobStatus /* Job termination code */
-\end{verbatim}
-\normalsize
-
-: Note, the LabelType (Volume Label, Volume PreLabel, Session Start Label,
-...) is stored in the record FileIndex field and does not appear in the data
-part of the record. Also, the Stream field of the Record Header contains the
-JobId. This permits quick filtering without actually reading all the session
-data in many cases.
-
-\subsection*{Overall Storage Format}
-\index{Format!Overall Storage }
-\index{Overall Storage Format }
-\addcontentsline{toc}{subsection}{Overall Storage Format}
-
-\footnotesize
-\begin{verbatim}
- Current Bacula Tape Format
- 6 June 2001
- Version BB02 added 28 September 2002
- Version BB01 is the old deprecated format.
- A Bacula tape is composed of tape Blocks. Each block
- has a Block header followed by the block data. Block
- Data consists of Records. Records consist of Record
- Headers followed by Record Data.
- :=======================================================:
- | |
- | Block Header (24 bytes) |
- | |
- |-------------------------------------------------------|
- | |
- | Record Header (12 bytes) |
- | |
- |-------------------------------------------------------|
- | |
- | Record Data |
- | |
- |-------------------------------------------------------|
- | |
- | Record Header (12 bytes) |
- | |
- |-------------------------------------------------------|
- | |
- | ... |
- Block Header: the first item in each block. The format is
- shown below.
- Partial Data block: occurs if the data from a previous
- block spills over to this block (the normal case except
- for the first block on a tape). However, this partial
- data block is always preceded by a record header.
- Record Header: identifies the Volume Session, the Stream
- and the following Record Data size. See below for format.
- Record data: arbitrary binary data.
- Block Header Format BB02
- :=======================================================:
- | CheckSum (uint32_t) |
- |-------------------------------------------------------|
- | BlockSize (uint32_t) |
- |-------------------------------------------------------|
- | BlockNumber (uint32_t) |
- |-------------------------------------------------------|
- | "BB02" (char [4]) |
- |-------------------------------------------------------|
- | VolSessionId (uint32_t) |
- |-------------------------------------------------------|
- | VolSessionTime (uint32_t) |
- :=======================================================:
- BBO2: Serves to identify the block as a
- Bacula block and also servers as a block format identifier
- should we ever need to change the format.
- BlockSize: is the size in bytes of the block. When reading
- back a block, if the BlockSize does not agree with the
- actual size read, Bacula discards the block.
- CheckSum: a checksum for the Block.
- BlockNumber: is the sequential block number on the tape.
- VolSessionId: a unique sequential number that is assigned
- by the Storage Daemon to a particular Job.
- This number is sequential since the start
- of execution of the daemon.
- VolSessionTime: the time/date that the current execution
- of the Storage Daemon started. It assures
- that the combination of VolSessionId and
- VolSessionTime is unique for all jobs
- written to the tape, even if there was a
- machine crash between two writes.
- Record Header Format BB02
- :=======================================================:
- | FileIndex (int32_t) |
- |-------------------------------------------------------|
- | Stream (int32_t) |
- |-------------------------------------------------------|
- | DataSize (uint32_t) |
- :=======================================================:
- FileIndex: a sequential file number within a job. The
- Storage daemon enforces this index to be
- greater than zero and sequential. Note,
- however, that the File daemon may send
- multiple Streams for the same FileIndex.
- The Storage Daemon uses negative FileIndices
- to identify Session Start and End labels
- as well as the End of Volume labels.
- Stream: defined by the File daemon and is intended to be
- used to identify separate parts of the data
- saved for each file (attributes, file data,
- ...). The Storage Daemon has no idea of
- what a Stream is or what it contains.
- DataSize: the size in bytes of the binary data record
- that follows the Session Record header.
- The Storage Daemon has no idea of the
- actual contents of the binary data record.
- For standard Unix files, the data record
- typically contains the file attributes or
- the file data. For a sparse file
- the first 64 bits of the data contains
- the storage address for the data block.
- Volume Label
- :=======================================================:
- | Id (32 bytes) |
- |-------------------------------------------------------|
- | VerNum (uint32_t) |
- |-------------------------------------------------------|
- | label_date (float64_t) |
- | label_btime (btime_t VerNum 11 |
- |-------------------------------------------------------|
- | label_time (float64_t) |
- | write_btime (btime_t VerNum 11 |
- |-------------------------------------------------------|
- | write_date (float64_t) |
- | 0 (float64_t) VerNum 11 |
- |-------------------------------------------------------|
- | write_time (float64_t) |
- | 0 (float64_t) VerNum 11 |
- |-------------------------------------------------------|
- | VolName (128 bytes) |
- |-------------------------------------------------------|
- | PrevVolName (128 bytes) |
- |-------------------------------------------------------|
- | PoolName (128 bytes) |
- |-------------------------------------------------------|
- | PoolType (128 bytes) |
- |-------------------------------------------------------|
- | MediaType (128 bytes) |
- |-------------------------------------------------------|
- | HostName (128 bytes) |
- |-------------------------------------------------------|
- | LabelProg (32 bytes) |
- |-------------------------------------------------------|
- | ProgVersion (32 bytes) |
- |-------------------------------------------------------|
- | ProgDate (32 bytes) |
- |-------------------------------------------------------|
- :=======================================================:
-
- Id: 32 byte Bacula identifier "Bacula 1.0 immortal\n"
- (old version also recognized:)
- Id: 32 byte Bacula identifier "Bacula 0.9 mortal\n"
- LabelType (Saved in the FileIndex of the Header record).
- PRE_LABEL -1 Volume label on unwritten tape
- VOL_LABEL -2 Volume label after tape written
- EOM_LABEL -3 Label at EOM (not currently implemented)
- SOS_LABEL -4 Start of Session label (format given below)
- EOS_LABEL -5 End of Session label (format given below)
- VerNum: 11
- label_date: Julian day tape labeled
- label_time: Julian time tape labeled
- write_date: Julian date tape first used (data written)
- write_time: Julian time tape first used (data written)
- VolName: "Physical" Volume name
- PrevVolName: The VolName of the previous tape (if this tape is
- a continuation of the previous one).
- PoolName: Pool Name
- PoolType: Pool Type
- MediaType: Media Type
- HostName: Name of host that is first writing the tape
- LabelProg: Name of the program that labeled the tape
- ProgVersion: Version of the label program
- ProgDate: Date Label program built
- Session Label
- :=======================================================:
- | Id (32 bytes) |
- |-------------------------------------------------------|
- | VerNum (uint32_t) |
- |-------------------------------------------------------|
- | JobId (uint32_t) |
- |-------------------------------------------------------|
- | write_btime (btime_t) VerNum 11 |
- |-------------------------------------------------------|
- | 0 (float64_t) VerNum 11 |
- |-------------------------------------------------------|
- | PoolName (128 bytes) |
- |-------------------------------------------------------|
- | PoolType (128 bytes) |
- |-------------------------------------------------------|
- | JobName (128 bytes) |
- |-------------------------------------------------------|
- | ClientName (128 bytes) |
- |-------------------------------------------------------|
- | Job (128 bytes) |
- |-------------------------------------------------------|
- | FileSetName (128 bytes) |
- |-------------------------------------------------------|
- | JobType (uint32_t) |
- |-------------------------------------------------------|
- | JobLevel (uint32_t) |
- |-------------------------------------------------------|
- | FileSetMD5 (50 bytes) VerNum 11 |
- |-------------------------------------------------------|
- Additional fields in End Of Session Label
- |-------------------------------------------------------|
- | JobFiles (uint32_t) |
- |-------------------------------------------------------|
- | JobBytes (uint32_t) |
- |-------------------------------------------------------|
- | start_block (uint32_t) |
- |-------------------------------------------------------|
- | end_block (uint32_t) |
- |-------------------------------------------------------|
- | start_file (uint32_t) |
- |-------------------------------------------------------|
- | end_file (uint32_t) |
- |-------------------------------------------------------|
- | JobErrors (uint32_t) |
- |-------------------------------------------------------|
- | JobStatus (uint32_t) VerNum 11 |
- :=======================================================:
- * => fields deprecated
- Id: 32 byte Bacula Identifier "Bacula 1.0 immortal\n"
- LabelType (in FileIndex field of Header):
- EOM_LABEL -3 Label at EOM
- SOS_LABEL -4 Start of Session label
- EOS_LABEL -5 End of Session label
- VerNum: 11
- JobId: JobId
- write_btime: Bacula time/date this tape record written
- write_date: Julian date tape this record written - deprecated
- write_time: Julian time tape this record written - deprecated.
- PoolName: Pool Name
- PoolType: Pool Type
- MediaType: Media Type
- ClientName: Name of File daemon or Client writing this session
- Not used for EOM_LABEL.
-\end{verbatim}
-\normalsize
-
-\subsection*{Unix File Attributes}
-\index{Unix File Attributes }
-\index{Attributes!Unix File }
-\addcontentsline{toc}{subsection}{Unix File Attributes}
-
-The Unix File Attributes packet consists of the following:
-
-\lt{}File-Index\gt{} \lt{}Type\gt{}
-\lt{}Filename\gt{}@\lt{}File-Attributes\gt{}@\lt{}Link\gt{}
-@\lt{}Extended-Attributes@\gt{} where
-
-\begin{description}
-
-\item [@]
- represents a byte containing a binary zero.
-
-\item [FileIndex]
- \index{FileIndex }
- is the sequential file index starting from one assigned by the File daemon.
-
-\item [Type]
- \index{Type }
- is one of the following:
-
-\footnotesize
-\begin{verbatim}
-#define FT_LNKSAVED 1 /* hard link to file already saved */
-#define FT_REGE 2 /* Regular file but empty */
-#define FT_REG 3 /* Regular file */
-#define FT_LNK 4 /* Soft Link */
-#define FT_DIR 5 /* Directory */
-#define FT_SPEC 6 /* Special file -- chr, blk, fifo, sock */
-#define FT_NOACCESS 7 /* Not able to access */
-#define FT_NOFOLLOW 8 /* Could not follow link */
-#define FT_NOSTAT 9 /* Could not stat file */
-#define FT_NOCHG 10 /* Incremental option, file not changed */
-#define FT_DIRNOCHG 11 /* Incremental option, directory not changed */
-#define FT_ISARCH 12 /* Trying to save archive file */
-#define FT_NORECURSE 13 /* No recursion into directory */
-#define FT_NOFSCHG 14 /* Different file system, prohibited */
-#define FT_NOOPEN 15 /* Could not open directory */
-#define FT_RAW 16 /* Raw block device */
-#define FT_FIFO 17 /* Raw fifo device */
-\end{verbatim}
-\normalsize
-
-\item [Filename]
- \index{Filename }
- is the fully qualified filename.
-
-\item [File-Attributes]
- \index{File-Attributes }
- consists of the 13 fields of the stat() buffer in ASCII base64 format
-separated by spaces. These fields and their meanings are shown below. This
-stat() packet is in Unix format, and MUST be provided (constructed) for ALL
-systems.
-
-\item [Link]
- \index{Link }
- when the FT code is FT\_LNK or FT\_LNKSAVED, the item in question is a Unix
-link, and this field contains the fully qualified link name. When the FT code
-is not FT\_LNK or FT\_LNKSAVED, this field is null.
-
-\item [Extended-Attributes]
- \index{Extended-Attributes }
- The exact format of this field is operating system dependent. It contains
-additional or extended attributes of a system dependent nature. Currently,
-this field is used only on WIN32 systems where it contains a ASCII base64
-representation of the WIN32\_FILE\_ATTRIBUTE\_DATA structure as defined by
-Windows. The fields in the base64 representation of this structure are like
-the File-Attributes separated by spaces.
-\end{description}
-
-The File-attributes consist of the following:
-
-\addcontentsline{lot}{table}{File Attributes}
-\begin{longtable}{|l|l|l|l|l|}
- \hline
-\multicolumn{1}{|c| }{\bf Field No. } & \multicolumn{1}{c| }{\bf Stat Name }
-& \multicolumn{1}{c| }{\bf Unix } & \multicolumn{1}{c| }{\bf Win98/NT } &
-\multicolumn{1}{c| }{\bf MacOS } \\
- \hline
-\multicolumn{1}{|c| }{1 } & {st\_dev } & {Device number of filesystem } &
-{Drive number } & {vRefNum } \\
- \hline
-\multicolumn{1}{|c| }{2 } & {st\_ino } & {Inode number } & {Always 0 } &
-{fileID/dirID } \\
- \hline
-\multicolumn{1}{|c| }{3 } & {st\_mode } & {File mode } & {File mode } &
-{777 dirs/apps; 666 docs; 444 locked docs } \\
- \hline
-\multicolumn{1}{|c| }{4 } & {st\_nlink } & {Number of links to the file } &
-{Number of link (only on NTFS) } & {Always 1 } \\
- \hline
-\multicolumn{1}{|c| }{5 } & {st\_uid } & {Owner ID } & {Always 0 } &
-{Always 0 } \\
- \hline
-\multicolumn{1}{|c| }{6 } & {st\_gid } & {Group ID } & {Always 0 } &
-{Always 0 } \\
- \hline
-\multicolumn{1}{|c| }{7 } & {st\_rdev } & {Device ID for special files } &
-{Drive No. } & {Always 0 } \\
- \hline
-\multicolumn{1}{|c| }{8 } & {st\_size } & {File size in bytes } & {File
-size in bytes } & {Data fork file size in bytes } \\
- \hline
-\multicolumn{1}{|c| }{9 } & {st\_blksize } & {Preferred block size } &
-{Always 0 } & {Preferred block size } \\
- \hline
-\multicolumn{1}{|c| }{10 } & {st\_blocks } & {Number of blocks allocated }
-& {Always 0 } & {Number of blocks allocated } \\
- \hline
-\multicolumn{1}{|c| }{11 } & {st\_atime } & {Last access time since epoch }
-& {Last access time since epoch } & {Last access time -66 years } \\
- \hline
-\multicolumn{1}{|c| }{12 } & {st\_mtime } & {Last modify time since epoch }
-& {Last modify time since epoch } & {Last access time -66 years } \\
- \hline
-\multicolumn{1}{|c| }{13 } & {st\_ctime } & {Inode change time since epoch
-} & {File create time since epoch } & {File create time -66 years }
-\\ \hline
-
-\end{longtable}
-
-\subsection*{Old Depreciated Tape Format}
-\index{Old Depreciated Tape Format }
-\index{Format!Old Depreciated Tape }
-\addcontentsline{toc}{subsection}{Old Depreciated Tape Format}
-
-The format of the Block Header (version 1.26 and earlier) is:
-
-\footnotesize
-\begin{verbatim}
- uint32_t CheckSum; /* Block check sum */
- uint32_t BlockSize; /* Block byte size including the header */
- uint32_t BlockNumber; /* Block number */
- char ID[4] = "BB01"; /* Identification and block level */
-\end{verbatim}
-\normalsize
-
-The format of the Record Header (version 1.26 or earlier) is:
-
-\footnotesize
-\begin{verbatim}
- uint32_t VolSessionId; /* Unique ID for this session */
- uint32_t VolSessionTime; /* Start time/date of session */
- int32_t FileIndex; /* File index supplied by File daemon */
- int32_t Stream; /* Stream number supplied by File daemon */
- uint32_t DataSize; /* size of following data record in bytes */
-\end{verbatim}
-\normalsize
-
-\footnotesize
-\begin{verbatim}
- Current Bacula Tape Format
- 6 June 2001
- Version BB01 is the old deprecated format.
- A Bacula tape is composed of tape Blocks. Each block
- has a Block header followed by the block data. Block
- Data consists of Records. Records consist of Record
- Headers followed by Record Data.
- :=======================================================:
- | |
- | Block Header |
- | (16 bytes version BB01) |
- |-------------------------------------------------------|
- | |
- | Record Header |
- | (20 bytes version BB01) |
- |-------------------------------------------------------|
- | |
- | Record Data |
- | |
- |-------------------------------------------------------|
- | |
- | Record Header |
- | (20 bytes version BB01) |
- |-------------------------------------------------------|
- | |
- | ... |
- Block Header: the first item in each block. The format is
- shown below.
- Partial Data block: occurs if the data from a previous
- block spills over to this block (the normal case except
- for the first block on a tape). However, this partial
- data block is always preceded by a record header.
- Record Header: identifies the Volume Session, the Stream
- and the following Record Data size. See below for format.
- Record data: arbitrary binary data.
- Block Header Format BB01 (deprecated)
- :=======================================================:
- | CheckSum (uint32_t) |
- |-------------------------------------------------------|
- | BlockSize (uint32_t) |
- |-------------------------------------------------------|
- | BlockNumber (uint32_t) |
- |-------------------------------------------------------|
- | "BB01" (char [4]) |
- :=======================================================:
- BBO1: Serves to identify the block as a
- Bacula block and also servers as a block format identifier
- should we ever need to change the format.
- BlockSize: is the size in bytes of the block. When reading
- back a block, if the BlockSize does not agree with the
- actual size read, Bacula discards the block.
- CheckSum: a checksum for the Block.
- BlockNumber: is the sequential block number on the tape.
- VolSessionId: a unique sequential number that is assigned
- by the Storage Daemon to a particular Job.
- This number is sequential since the start
- of execution of the daemon.
- VolSessionTime: the time/date that the current execution
- of the Storage Daemon started. It assures
- that the combination of VolSessionId and
- VolSessionTime is unique for all jobs
- written to the tape, even if there was a
- machine crash between two writes.
- Record Header Format BB01 (deprecated)
- :=======================================================:
- | VolSessionId (uint32_t) |
- |-------------------------------------------------------|
- | VolSessionTime (uint32_t) |
- |-------------------------------------------------------|
- | FileIndex (int32_t) |
- |-------------------------------------------------------|
- | Stream (int32_t) |
- |-------------------------------------------------------|
- | DataSize (uint32_t) |
- :=======================================================:
- VolSessionId: a unique sequential number that is assigned
- by the Storage Daemon to a particular Job.
- This number is sequential since the start
- of execution of the daemon.
- VolSessionTime: the time/date that the current execution
- of the Storage Daemon started. It assures
- that the combination of VolSessionId and
- VolSessionTime is unique for all jobs
- written to the tape, even if there was a
- machine crash between two writes.
- FileIndex: a sequential file number within a job. The
- Storage daemon enforces this index to be
- greater than zero and sequential. Note,
- however, that the File daemon may send
- multiple Streams for the same FileIndex.
- The Storage Daemon uses negative FileIndices
- to identify Session Start and End labels
- as well as the End of Volume labels.
- Stream: defined by the File daemon and is intended to be
- used to identify separate parts of the data
- saved for each file (attributes, file data,
- ...). The Storage Daemon has no idea of
- what a Stream is or what it contains.
- DataSize: the size in bytes of the binary data record
- that follows the Session Record header.
- The Storage Daemon has no idea of the
- actual contents of the binary data record.
- For standard Unix files, the data record
- typically contains the file attributes or
- the file data. For a sparse file
- the first 64 bits of the data contains
- the storage address for the data block.
- Volume Label
- :=======================================================:
- | Id (32 bytes) |
- |-------------------------------------------------------|
- | VerNum (uint32_t) |
- |-------------------------------------------------------|
- | label_date (float64_t) |
- |-------------------------------------------------------|
- | label_time (float64_t) |
- |-------------------------------------------------------|
- | write_date (float64_t) |
- |-------------------------------------------------------|
- | write_time (float64_t) |
- |-------------------------------------------------------|
- | VolName (128 bytes) |
- |-------------------------------------------------------|
- | PrevVolName (128 bytes) |
- |-------------------------------------------------------|
- | PoolName (128 bytes) |
- |-------------------------------------------------------|
- | PoolType (128 bytes) |
- |-------------------------------------------------------|
- | MediaType (128 bytes) |
- |-------------------------------------------------------|
- | HostName (128 bytes) |
- |-------------------------------------------------------|
- | LabelProg (32 bytes) |
- |-------------------------------------------------------|
- | ProgVersion (32 bytes) |
- |-------------------------------------------------------|
- | ProgDate (32 bytes) |
- |-------------------------------------------------------|
- :=======================================================:
-
- Id: 32 byte Bacula identifier "Bacula 1.0 immortal\n"
- (old version also recognized:)
- Id: 32 byte Bacula identifier "Bacula 0.9 mortal\n"
- LabelType (Saved in the FileIndex of the Header record).
- PRE_LABEL -1 Volume label on unwritten tape
- VOL_LABEL -2 Volume label after tape written
- EOM_LABEL -3 Label at EOM (not currently implemented)
- SOS_LABEL -4 Start of Session label (format given below)
- EOS_LABEL -5 End of Session label (format given below)
- label_date: Julian day tape labeled
- label_time: Julian time tape labeled
- write_date: Julian date tape first used (data written)
- write_time: Julian time tape first used (data written)
- VolName: "Physical" Volume name
- PrevVolName: The VolName of the previous tape (if this tape is
- a continuation of the previous one).
- PoolName: Pool Name
- PoolType: Pool Type
- MediaType: Media Type
- HostName: Name of host that is first writing the tape
- LabelProg: Name of the program that labeled the tape
- ProgVersion: Version of the label program
- ProgDate: Date Label program built
- Session Label
- :=======================================================:
- | Id (32 bytes) |
- |-------------------------------------------------------|
- | VerNum (uint32_t) |
- |-------------------------------------------------------|
- | JobId (uint32_t) |
- |-------------------------------------------------------|
- | *write_date (float64_t) VerNum 10 |
- |-------------------------------------------------------|
- | *write_time (float64_t) VerNum 10 |
- |-------------------------------------------------------|
- | PoolName (128 bytes) |
- |-------------------------------------------------------|
- | PoolType (128 bytes) |
- |-------------------------------------------------------|
- | JobName (128 bytes) |
- |-------------------------------------------------------|
- | ClientName (128 bytes) |
- |-------------------------------------------------------|
- | Job (128 bytes) |
- |-------------------------------------------------------|
- | FileSetName (128 bytes) |
- |-------------------------------------------------------|
- | JobType (uint32_t) |
- |-------------------------------------------------------|
- | JobLevel (uint32_t) |
- |-------------------------------------------------------|
- | FileSetMD5 (50 bytes) VerNum 11 |
- |-------------------------------------------------------|
- Additional fields in End Of Session Label
- |-------------------------------------------------------|
- | JobFiles (uint32_t) |
- |-------------------------------------------------------|
- | JobBytes (uint32_t) |
- |-------------------------------------------------------|
- | start_block (uint32_t) |
- |-------------------------------------------------------|
- | end_block (uint32_t) |
- |-------------------------------------------------------|
- | start_file (uint32_t) |
- |-------------------------------------------------------|
- | end_file (uint32_t) |
- |-------------------------------------------------------|
- | JobErrors (uint32_t) |
- |-------------------------------------------------------|
- | JobStatus (uint32_t) VerNum 11 |
- :=======================================================:
- * => fields deprecated
- Id: 32 byte Bacula Identifier "Bacula 1.0 immortal\n"
- LabelType (in FileIndex field of Header):
- EOM_LABEL -3 Label at EOM
- SOS_LABEL -4 Start of Session label
- EOS_LABEL -5 End of Session label
- VerNum: 11
- JobId: JobId
- write_btime: Bacula time/date this tape record written
- write_date: Julian date tape this record written - deprecated
- write_time: Julian time tape this record written - deprecated.
- PoolName: Pool Name
- PoolType: Pool Type
- MediaType: Media Type
- ClientName: Name of File daemon or Client writing this session
- Not used for EOM_LABEL.
-\end{verbatim}
-\normalsize
+++ /dev/null
-%%
-%%
-
-\section*{Bacula Memory Management}
-\label{_ChapterStart7}
-\index{Management!Bacula Memory }
-\index{Bacula Memory Management }
-\addcontentsline{toc}{section}{Bacula Memory Management}
-
-\subsection*{General}
-\index{General }
-\addcontentsline{toc}{subsection}{General}
-
-This document describes the memory management routines that are used in Bacula
-and is meant to be a technical discussion for developers rather than part of
-the user manual.
-
-Since Bacula may be called upon to handle filenames of varying and more or
-less arbitrary length, special attention needs to be used in the code to
-ensure that memory buffers are sufficiently large. There are four
-possibilities for memory usage within {\bf Bacula}. Each will be described in
-turn. They are:
-
-\begin{itemize}
-\item Statically allocated memory.
-\item Dynamically allocated memory using malloc() and free().
-\item Non-pooled memory.
-\item Pooled memory.
- \end{itemize}
-
-\subsubsection*{Statically Allocated Memory}
-\index{Statically Allocated Memory }
-\index{Memory!Statically Allocated }
-\addcontentsline{toc}{subsubsection}{Statically Allocated Memory}
-
-Statically allocated memory is of the form:
-
-\footnotesize
-\begin{verbatim}
-char buffer[MAXSTRING];
-\end{verbatim}
-\normalsize
-
-The use of this kind of memory is discouraged except when you are 100\% sure
-that the strings to be used will be of a fixed length. One example of where
-this is appropriate is for {\bf Bacula} resource names, which are currently
-limited to 127 characters (MAX\_NAME\_LENGTH). Although this maximum size may
-change, particularly to accommodate Unicode, it will remain a relatively small
-value.
-
-\subsubsection*{Dynamically Allocated Memory}
-\index{Dynamically Allocated Memory }
-\index{Memory!Dynamically Allocated }
-\addcontentsline{toc}{subsubsection}{Dynamically Allocated Memory}
-
-Dynamically allocated memory is obtained using the standard malloc() routines.
-As in:
-
-\footnotesize
-\begin{verbatim}
-char *buf;
-buf = malloc(256);
-\end{verbatim}
-\normalsize
-
-This kind of memory can be released with:
-
-\footnotesize
-\begin{verbatim}
-free(buf);
-\end{verbatim}
-\normalsize
-
-It is recommended to use this kind of memory only when you are sure that you
-know the memory size needed and the memory will be used for short periods of
-time -- that is it would not be appropriate to use statically allocated
-memory. An example might be to obtain a large memory buffer for reading and
-writing files. When {\bf SmartAlloc} is enabled, the memory obtained by
-malloc() will automatically be checked for buffer overwrite (overflow) during
-the free() call, and all malloc'ed memory that is not released prior to
-termination of the program will be reported as Orphaned memory.
-
-\subsubsection*{Pooled and Non-pooled Memory}
-\index{Memory!Pooled and Non-pooled }
-\index{Pooled and Non-pooled Memory }
-\addcontentsline{toc}{subsubsection}{Pooled and Non-pooled Memory}
-
-In order to facility the handling of arbitrary length filenames and to
-efficiently handle a high volume of dynamic memory usage, we have implemented
-routines between the C code and the malloc routines. The first is called
-``Pooled'' memory, and is memory, which once allocated and then released, is
-not returned to the system memory pool, but rather retained in a Bacula memory
-pool. The next request to acquire pooled memory will return any free memory
-block. In addition, each memory block has its current size associated with the
-block allowing for easy checking if the buffer is of sufficient size. This
-kind of memory would normally be used in high volume situations (lots of
-malloc()s and free()s) where the buffer length may have to frequently change
-to adapt to varying filename lengths.
-
-The non-pooled memory is handled by routines similar to those used for pooled
-memory, allowing for easy size checking. However, non-pooled memory is
-returned to the system rather than being saved in the Bacula pool. This kind
-of memory would normally be used in low volume situations (few malloc()s and
-free()s), but where the size of the buffer might have to be adjusted
-frequently.
-
-\paragraph*{Types of Memory Pool:}
-
-Currently there are three memory pool types:
-
-\begin{itemize}
-\item PM\_NOPOOL -- non-pooled memory.
-\item PM\_FNAME -- a filename pool.
-\item PM\_MESSAGE -- a message buffer pool.
-\item PM\_EMSG -- error message buffer pool.
- \end{itemize}
-
-\paragraph*{Getting Memory:}
-
-To get memory, one uses:
-
-\footnotesize
-\begin{verbatim}
-void *get_pool_memory(pool);
-\end{verbatim}
-\normalsize
-
-where {\bf pool} is one of the above mentioned pool names. The size of the
-memory returned will be determined by the system to be most appropriate for
-the application.
-
-If you wish non-pooled memory, you may alternatively call:
-
-\footnotesize
-\begin{verbatim}
-void *get_memory(size_t size);
-\end{verbatim}
-\normalsize
-
-The buffer length will be set to the size specified, and it will be assigned
-to the PM\_NOPOOL pool (no pooling).
-
-\paragraph*{Releasing Memory:}
-
-To free memory acquired by either of the above two calls, use:
-
-\footnotesize
-\begin{verbatim}
-void free_pool_memory(void *buffer);
-\end{verbatim}
-\normalsize
-
-where buffer is the memory buffer returned when the memory was acquired. If
-the memory was originally allocated as type PM\_NOPOOL, it will be released to
-the system, otherwise, it will be placed on the appropriate Bacula memory pool
-free chain to be used in a subsequent call for memory from that pool.
-
-\paragraph*{Determining the Memory Size:}
-
-To determine the memory buffer size, use:
-
-\footnotesize
-\begin{verbatim}
-size_t sizeof_pool_memory(void *buffer);
-\end{verbatim}
-\normalsize
-
-\paragraph*{Resizing Pool Memory:}
-
-To resize pool memory, use:
-
-\footnotesize
-\begin{verbatim}
-void *realloc_pool_memory(void *buffer);
-\end{verbatim}
-\normalsize
-
-The buffer will be reallocated, and the contents of the original buffer will
-be preserved, but the address of the buffer may change.
-
-\paragraph*{Automatic Size Adjustment:}
-
-To have the system check and if necessary adjust the size of your pooled
-memory buffer, use:
-
-\footnotesize
-\begin{verbatim}
-void *check_pool_memory_size(void *buffer, size_t new-size);
-\end{verbatim}
-\normalsize
-
-where {\bf new-size} is the buffer length needed. Note, if the buffer is
-already equal to or larger than {\bf new-size} no buffer size change will
-occur. However, if a buffer size change is needed, the original contents of
-the buffer will be preserved, but the buffer address may change. Many of the
-low level Bacula subroutines expect to be passed a pool memory buffer and use
-this call to ensure the buffer they use is sufficiently large.
-
-\paragraph*{Releasing All Pooled Memory:}
-
-In order to avoid orphaned buffer error messages when terminating the program,
-use:
-
-\footnotesize
-\begin{verbatim}
-void close_memory_pool();
-\end{verbatim}
-\normalsize
-
-to free all unused memory retained in the Bacula memory pool. Note, any memory
-not returned to the pool via free\_pool\_memory() will not be released by this
-call.
-
-\paragraph*{Pooled Memory Statistics:}
-
-For debugging purposes and performance tuning, the following call will print
-the current memory pool statistics:
-
-\footnotesize
-\begin{verbatim}
-void print_memory_pool_stats();
-\end{verbatim}
-\normalsize
-
-an example output is:
-
-\footnotesize
-\begin{verbatim}
-Pool Maxsize Maxused Inuse
- 0 256 0 0
- 1 256 1 0
- 2 256 1 0
-\end{verbatim}
-\normalsize
+++ /dev/null
-%%
-%%
-
-\section*{La ressource Messages}
-\label{_ChapterStart15}
-\index[general]{Ressource!Messages}
-\index[general]{Messages Ressource}
-\addcontentsline{toc}{section}{Ressource Messages}
-
-\subsection*{La ressource Messages}
-\label{MessageResource}
-\index[general]{Ressource!Messages}
-\index[general]{Messages Ressource}
-\addcontentsline{toc}{subsection}{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
+++ /dev/null
-%%
-%%
-
-\section*{Monitor Configuration}
-\label{_MonitorChapter}
-\index[general]{Monitor Configuration }
-\index[general]{Configuration!Monitor }
-\addcontentsline{toc}{section}{Monitor Configuration}
-
-\subsection*{General}
-\index[general]{General }
-\addcontentsline{toc}{subsection}{General}
-
-The Monitor configuration file is a stripped down version of the Director
-configuration file, mixed with a Console configuration file. It simply
-contains the information necessary to contact Directors, Clients, and Storage
-daemons you want to monitor.
-
-For a general discussion of configuration file and resources including the
-data types recognized by {\bf Bacula}, please see the
-\ilink{Configuration}{_ChapterStart16} chapter of this manual.
-
-The following Monitor Resource definition must be defined:
-
-\begin{itemize}
-\item
- \ilink{Monitor}{MonitorResource} -- to define the Monitor's
- name used to connect to all the daemons and the password used to connect to
-the Directors. Note, you must not define more than one Monitor resource in
-the Monitor configuration file.
-\item At least one
- \ilink{Client}{ClientResource1},
- \ilink{Storage}{StorageResource1} or
-\ilink{Director}{DirectorResource2} resource, to define the
-daemons to monitor.
-\end{itemize}
-
-\subsection*{The Monitor Resource}
-\label{MonitorResource}
-\index[general]{Monitor Resource }
-\index[general]{Resource!Monitor }
-\addcontentsline{toc}{subsection}{Monitor Resource}
-
-The Monitor resource defines the attributes of the Monitor running on the
-network. The parameters you define here must be configured as a Director
-resource in Clients and Storages configuration files, and as a Console
-resource in Directors configuration files.
-
-\begin{description}
-
-\item [Monitor]
- \index[fd]{Monitor }
- Start of the Monitor records.
-
-\item [Name = \lt{}name\gt{}]
- \index[fd]{Name }
- Specify the Director name used to connect to Client and Storage, and the
-Console name used to connect to Director. This record is required.
-
-\item [Password = \lt{}password\gt{}]
- \index[fd]{Password }
- Where the password is the password needed for Directors to accept the Console
-connection. This password must be identical to the {\bf Password} specified
-in the {\bf Console} resource of the
-\ilink{Director's configuration}{_ChapterStart40} file. This
-record is required if you wish to monitor Directors.
-
-\item [Refresh Interval = \lt{}time\gt{}]
- \index[fd]{Refresh Interval }
- Specifies the time to wait between status requests to each daemon. It can't
-be set to less than 1 second, or more than 10 minutes, and the default value
-is 5 seconds.
-\end{description}
-
-\subsection*{The Director Resource}
-\label{DirectorResource2}
-\index[general]{Director Resource }
-\index[general]{Resource!Director }
-\addcontentsline{toc}{subsection}{Director Resource}
-
-The Director resource defines the attributes of the Directors that are
-monitored by this Monitor.
-
-As you are not permitted to define a Password in this resource, to avoid
-obtaining full Director privileges, you must create a Console resource in the
-\ilink{Director's configuration}{_ChapterStart40} file, using the
-Console Name and Password defined in the Monitor resource. To avoid security
-problems, you should configure this Console resource to allow access to no
-other daemons, and permit the use of only two commands: {\bf status} and {\bf
-.status} (see below for an example).
-
-You may have multiple Director resource specifications in a single Monitor
-configuration file.
-
-\begin{description}
-
-\item [Director]
- \index[fd]{Director }
- Start of the Director records.
-
-\item [Name = \lt{}name\gt{}]
- \index[fd]{Name }
- The Director name used to identify the Director in the list of monitored
-daemons. It is not required to be the same as the one defined in the Director's
-configuration file. This record is required.
-
-\item [DIRPort = \lt{}port-number\gt{}]
- \index[fd]{DIRPort }
- Specify the port to use to connect to the Director. This value will most
-likely already be set to the value you specified on the {\bf
-\verb:--:with-base-port} option of the {\bf ./configure} command. This port must be
-identical to the {\bf DIRport} specified in the {\bf Director} resource of
-the
-\ilink{Director's configuration}{_ChapterStart40} file. The
-default is 9101 so this record is not normally specified.
-
-\item [Address = \lt{}address\gt{}]
- \index[fd]{Address }
- Where the address is a host name, a fully qualified domain name, or a network
-address used to connect to the Director. This record is required.
-\end{description}
-
-\subsection*{The Client Resource}
-\label{ClientResource1}
-\index[general]{Resource!Client }
-\index[general]{Client Resource }
-\addcontentsline{toc}{subsection}{Client Resource}
-
-The Client resource defines the attributes of the Clients that are monitored
-by this Monitor.
-
-You must create a Director resource in the
-\ilink{Client's configuration}{_ChapterStart25} file, using the
-Director Name defined in the Monitor resource. To avoid security problems, you
-should set the {\bf Monitor} directive to {\bf Yes} in this Director resource.
-
-
-You may have multiple Director resource specifications in a single Monitor
-configuration file.
-
-\begin{description}
-
-\item [Client (or FileDaemon)]
- \index[fd]{Client (or FileDaemon) }
- Start of the Client records.
-
-\item [Name = \lt{}name\gt{}]
- \index[fd]{Name }
- The Client name used to identify the Director in the list of monitored
-daemons. It is not required to be the same as the one defined in the Client's
-configuration file. This record is required.
-
-\item [Address = \lt{}address\gt{}]
- \index[fd]{Address }
- Where the address is a host name, a fully qualified domain name, or a network
-address in dotted quad notation for a Bacula File daemon. This record is
-required.
-
-\item [FD Port = \lt{}port-number\gt{}]
- \index[fd]{FD Port }
- Where the port is a port number at which the Bacula File daemon can be
-contacted. The default is 9102.
-
-\item [Password = \lt{}password\gt{}]
- \index[fd]{Password }
- This is the password to be used when establishing a connection with the File
-services, so the Client configuration file on the machine to be backed up
-must have the same password defined for this Director. This record is
-required.
-\end{description}
-
-\subsection*{The Storage Resource}
-\label{StorageResource1}
-\index[general]{Resource!Storage }
-\index[general]{Storage Resource }
-\addcontentsline{toc}{subsection}{Storage Resource}
-
-The Storage resource defines the attributes of the Storages that are monitored
-by this Monitor.
-
-You must create a Director resource in the
-\ilink{Storage's configuration}{_ChapterStart31} file, using the
-Director Name defined in the Monitor resource. To avoid security problems, you
-should set the {\bf Monitor} directive to {\bf Yes} in this Director resource.
-
-
-You may have multiple Director resource specifications in a single Monitor
-configuration file.
-
-\begin{description}
-
-\item [Storage]
- \index[fd]{Storage }
- Start of the Storage records.
-
-\item [Name = \lt{}name\gt{}]
- \index[fd]{Name }
- The Storage name used to identify the Director in the list of monitored
-daemons. It is not required to be the same as the one defined in the Storage's
-configuration file. This record is required.
-
-\item [Address = \lt{}address\gt{}]
- \index[fd]{Address }
- Where the address is a host name, a fully qualified domain name, or a network
-address in dotted quad notation for a Bacula Storage daemon. This record is
-required.
-
-\item [SD Port = \lt{}port\gt{}]
- \index[fd]{SD Port }
- Where port is the port to use to contact the storage daemon for information
-and to start jobs. This same port number must appear in the Storage resource
-of the Storage daemon's configuration file. The default is 9103.
-
-\item [Password = \lt{}password\gt{}]
- \index[sd]{Password }
- This is the password to be used when establishing a connection with the
-Storage services. This same password also must appear in the Director
-resource of the Storage daemon's configuration file. This record is required.
-
-\end{description}
-
-\subsection*{Tray Monitor Security}
-\index[general]{Tray Monitor Security}
-\addcontentsline{toc}{subsection}{Tray Monitor Security}
-
-There is no security problem in relaxing the permissions on
-tray-monitor.conf as long as FD, SD and DIR are configured properly, so
-the passwords contained in this file only gives access to the status of
-the daemons. It could be a security problem if you consider the status
-information as potentially dangereous (I don't think it is the case).
-
-Concerning Director's configuration: \\
-In tray-monitor.conf, the password in the Monitor resource must point to
-a restricted console in bacula-dir.conf (see the documentation). So, if
-you use this password with bconsole, you'll only have access to the
-status of the director (commands status and .status).
-It could be a security problem if there is a bug in the ACL code of the
-director.
-
-Concerning File and Storage Daemons' configuration:\\
-In tray-monitor.conf, the Name in the Monitor resource must point to a
-Director resource in bacula-fd/sd.conf, with the Monitor directive set
-to Yes (once again, see the documentation).
-It could be a security problem if there is a bug in the code which check
-if a command is valid for a Monitor (this is very unlikely as the code
-is pretty simple).
-
-
-\subsection*{Sample Tray Monitor configuration}
-\label{SampleConfiguration1}
-\index[general]{Sample Tray Monitor configuration}
-\addcontentsline{toc}{subsection}{Sample Tray Monitor configuration}
-
-An example Tray Monitor configuration file might be the following:
-
-\footnotesize
-\begin{verbatim}
-#
-# Bacula Tray Monitor Configuration File
-#
-Monitor {
- Name = rufus-mon # password for Directors
- Password = "GN0uRo7PTUmlMbqrJ2Gr1p0fk0HQJTxwnFyE4WSST3MWZseR"
- RefreshInterval = 10 seconds
-}
-
-Client {
- Name = rufus-fd
- Address = rufus
- FDPort = 9102 # password for FileDaemon
- Password = "FYpq4yyI1y562EMS35bA0J0QC0M2L3t5cZObxT3XQxgxppTn"
-}
-Storage {
- Name = rufus-sd
- Address = rufus
- SDPort = 9103 # password for StorageDaemon
- Password = "9usxgc307dMbe7jbD16v0PXlhD64UVasIDD0DH2WAujcDsc6"
-}
-Director {
- Name = rufus-dir
- DIRport = 9101
- address = rufus
-}
-\end{verbatim}
-\normalsize
-
-\subsubsection*{Sample File daemon's Director record.}
-\index[general]{Sample File daemon's Director record. }
-\index[general]{Record!Sample File daemon's Director }
-\addcontentsline{toc}{subsubsection}{Sample File daemon's Director record.}
-
-Click
-\ilink{here to see the full example.}{SampleClientConfiguration}
-
-
-\footnotesize
-\begin{verbatim}
-#
-# Restricted Director, used by tray-monitor to get the
-# status of the file daemon
-#
-Director {
- Name = rufus-mon
- Password = "FYpq4yyI1y562EMS35bA0J0QC0M2L3t5cZObxT3XQxgxppTn"
- Monitor = yes
-}
-\end{verbatim}
-\normalsize
-
-\subsubsection*{Sample Storage daemon's Director record.}
-\index[general]{Record!Sample Storage daemon's Director }
-\index[general]{Sample Storage daemon's Director record. }
-\addcontentsline{toc}{subsubsection}{Sample Storage daemon's Director record.}
-
-Click
-\ilink{here to see the full example.}{SampleConfiguration}
-
-\footnotesize
-\begin{verbatim}
-#
-# Restricted Director, used by tray-monitor to get the
-# status of the storage daemon
-#
-Director {
- Name = rufus-mon
- Password = "9usxgc307dMbe7jbD16v0PXlhD64UVasIDD0DH2WAujcDsc6"
- Monitor = yes
-}
-\end{verbatim}
-\normalsize
-
-\subsubsection*{Sample Director's Console record.}
-\index[general]{Record!Sample Director's Console }
-\index[general]{Sample Director's Console record. }
-\addcontentsline{toc}{subsubsection}{Sample Director's Console record.}
-
-Click
-\ilink{here to see the full
-example.}{SampleDirectorConfiguration}
-
-\footnotesize
-\begin{verbatim}
-#
-# Restricted console used by tray-monitor to get the status of the director
-#
-Console {
- Name = Monitor
- Password = "GN0uRo7PTUmlMbqrJ2Gr1p0fk0HQJTxwnFyE4WSST3MWZseR"
- CommandACL = status, .status
-}
-\end{verbatim}
-\normalsize
+++ /dev/null
-#!/bin/sh
-#
-# Bacula interface to mtx autoloader
-#
-# Created OCT/31/03 by Alexander Kuehn, derived from Ludwig Jaffe's script
-#
-# Works with the HP C1537A L708 DDS3
-#
-#set -x
-# these are the labels of the tapes in each virtual slot, not the slots!
-labels="PSE-0001 PSE-0002 PSE-0003 PSE-0004 PSE-0005 PSE-0006 PSE-0007 PSE-0008 PSE-0009 PSE-0010 PSE-0011 PSE-0012"
-
-# who to send a mail to?
-recipient=root@localhost
-logfile=/var/log/mtx.log
-
-# Delay in seconds how often to check whether a new tape has been inserted
-TAPEDELAY=10 # the default is every 10 seconds
-echo `date` ":" $@ >>$logfile
-
-# change this if mt is not in the path (use different quotes!)
-mt=`which mt`
-grep=`which grep`
-#
-# how to run the console application?
-console="/usr/local/sbin/console -c /usr/local/etc/console.conf"
-
-command="$1"
-
-#TAPEDRIVE0 holds the device/name of your 1st and only drive (Bacula supports only 1 drive currently)
-#Read TAPEDRIVE from command line parameters
-if [ -z "$2" ] ; then
- TAPEDRIVE0=/dev/nsa0
-else
- TAPEDRIVE0=$2
-fi
-
-#Read slot from command line parameters
-if [ -z "$3" ] ; then
- slot=`expr 1`
-else
- slot=`expr $3`
-fi
-
-if [ -z "$command" ] ; then
- echo ""
- echo "The mtx-changer script for Bacula"
- echo "---------------------------------"
- echo ""
- echo "usage: mtx-changer <command> <devicename of tapedrive> [slot]"
- echo " mtx-changer"
- echo ""
- echo "Valid commands:"
- echo ""
- echo "unload Unloads a tape into the slot"
- echo " from where it was loaded."
- echo "load <slot> Loads a tape from the slot <slot>"
- echo "list Lists full storage slots"
- echo "loaded Gives slot from where the tape was loaded."
- echo " 0 means the tape drive is empty."
- echo "slots Gives Number of avialable slots."
- echo "volumes List avialable slots and the label of the."
- echo " tape in it (slot:volume)"
- echo "Example:"
- echo " mtx-changer load /dev/nst0 1 loads a tape from slot1"
- echo " mtx-changer %a %o %S "
- echo ""
- exit 0
-fi
-
-
-case "$command" in
- unload)
- # At first do mt -f /dev/st0 offline to unload the tape
- #
- # Check if you want to fool me
- echo "unmount"|$console >/dev/null 2>/dev/null
- echo "mtx-changer: Checking if drive is loaded before we unload. Request unload" >>$logfile
- if $mt -f $TAPEDRIVE0 status >/dev/null 2>/dev/null ; then # mt says status ok
- echo "mtx-changer: Doing mt -f $TAPEDRIVE0 rewoffl to rewind and unload the tape!" >>$logfile
- $mt -f $TAPEDRIVE0 rewoffl
- else
- echo "mtx-changer: *** Don't fool me! *** The Drive $TAPEDRIVE0 is empty." >>$logfile
- fi
- exit 0
- ;;
-
- load)
- #Let's check if drive is loaded before we load it
- echo "mtx-changer: Checking if drive is loaded before we load. I Request loaded" >>$logfile
- LOADEDVOL=`echo "status Storage"|$console|$grep $TAPEDRIVE0|grep ^Device|grep -v "not open."|grep -v "ERR="|grep -v "no Bacula volume is mounted"|sed -e s/^.*Volume\ //|cut -d\" -f2`
-# if [ -z "$LOADEDVOL" ] ; then # this is wrong, becaus Bacula would try to use the tape if we mount it!
-# LOADEDVOL=`echo "mount"|$console|$grep $TAPEDRIVE0|grep Device|grep -v "not open."|grep -v "ERR="|sed -e s/^.*Volume\ //|cut -d\" -f2`
-# if [ -z "$LOADEDVOL" ] ; then
-# echo "mtx-changer: The Drive $TAPEDRIVE0 is empty." >>$logfile
-# else # restore state?
-# if [ $LOADEDVOL = $3 ] ; then # requested Volume mounted -> exit
-# echo "mtx-changer: *** Don't fool me! *** Tape $LOADEDVOL is already in drive $TAPEDRIVE0!" >>$logfile
-# exit
-# else # oops, wrong volume
-# echo "unmount"|$console >/dev/null 2>/dev/null
-# fi
-# fi
-# fi
- if [ -z "$LOADEDVOL" ] ; then
- echo "unmount"|$console >/dev/null 2>/dev/null
- LOADEDVOL=0
- else
- #Check if you want to fool me
- if [ $LOADEDVOL = $3 ] ; then
- echo "mtx-changer: *** Don't fool me! *** Tape $LOADEDVOL is already in drive $TAPEDRIVE0!" >>$logfile
- exit
- fi
- echo "mtx-changer: The Drive $TAPEDRIVE0 is loaded with the tape $LOADEDVOL" >>$logfile
- echo "mtx-changer: Unmounting..." >>$logfile
- echo "unmount"|$console >/dev/null 2>/dev/null
- fi
- echo "mtx-changer: Unloading..." >>$logfile
- echo "mtx-changer: Doing mt -f $TAPEDRIVE0 rewoffl to rewind and unload the tape!" >>$logfile
- mt -f $TAPEDRIVE0 rewoffl 2>/dev/null
- #Now we can load the drive as desired
- echo "mtx-changer: Doing mtx -f $1 $2 $3" >>$logfile
- # extract label for the mail
- count=`expr 1`
- for label in $labels ; do
- if [ $slot -eq $count ] ; then volume=$label ; fi
- count=`expr $count + 1`
- done
-
- mail -s "Bacula needs volume $volume." $recipient <<END_OF_DATA
-Please insert volume $volume from slot $slot into $TAPEDRIVE0 .
-Kind regards,
-Bacula.
-END_OF_DATA
- sleep 15
- $mt status >/dev/null 2>/dev/null
- while [ $? -ne 0 ] ; do
- sleep $TAPEDELAY
- $mt status >/dev/null 2>/dev/null
- done
- mail -s "Bacula says thank you." $recipient <<END_OF_DATA
-Thank you for inserting the new tape! (I requested volume $volume from slot $slot.)
-Kind regards,
-Bacula.
-END_OF_DATA
- echo "Successfully loaded a tape into drive $TAPEDRIVE0 (requested $volume from slot $slot)." >>$logfile
- echo "Loading finished." ; >>$logfile
- echo "$slot"
- exit 0
- ;;
-
- list)
- echo "mtx-changer: Requested list" >>$logfile
- LOADEDVOL=`echo "status Storage"|$console|$grep $TAPEDRIVE0|grep ^Device|grep -v "not open."|grep -v "ERR="|grep -v "no Bacula volume is mounted"|sed -e s/^.*Volume\ //|cut -d\" -f2`
- if [ -z $LOADEDVOL ] ; then # try mounting
- LOADEDVOL=`echo "mount"|$console|$grep $TAPEDRIVE0|grep Device|grep -v "not open."|grep -v "ERR="|sed -e s/^.*Volume\ //|cut -d\" -f2`
- if [ -z $LOADEDVOL ] ; then # no luck
- LOADEDVOL="_no_tape"
- else # restore state
- echo "unmount"|$console >/dev/null 2>/dev/null
- fi
- fi
- count=`expr 1`
- for label in $labels ; do
- if [ "$label" != "$LOADEDVOL" ] ; then
- printf "$count "
- fi
- count=`expr $count + 1`
- done
- printf "\n"
- ;;
-
- loaded)
- echo "mtx-changer: Request loaded, dev $TAPEDRIVE0" >>$logfile
- LOADEDVOL=`echo "status Storage"|$console|$grep $TAPEDRIVE0|grep ^Device|grep -v "not open."|grep -v "ERR="|grep -v "no Bacula volume is mounted"|sed -e s/^.*Volume\ //|cut -d\" -f2`
- if [ -z $LOADEDVOL ] ; then
- LOADEDVOL=`echo "mount"|$console|$grep $TAPEDRIVE0|grep Device|grep -v "not open."|grep -v "ERR="|grep -v "no Bacula volume is mounted"|sed -e s/^.*Volume\ //|cut -d\" -f2`
- if [ -z "$LOADEDVOL" ] ; then # no luck
- echo "$TAPEDRIVE0 not mounted!" >>$logfile
- else # restore state
- echo "unmount"|$console >/dev/null 2>/dev/null
- fi
- fi
- if [ -z "$LOADEDVOL" ] ; then
- LOADEDVOL="_no_tape" >>$logfile
- echo "0"
- else
- count=`expr 1`
- for label in $labels ; do
- if [ $LOADEDVOL = $label ] ; then echo $count ; fi
- count=`expr $count + 1`
- done
- fi
- exit 0
- ;;
-
- slots)
- echo "mtx-changer: Request slots" >>$logfile
- count=`expr 0`
- for label in $labels ; do
- count=`expr $count + 1`
- done
- echo $count
- ;;
-
- volumes)
- echo "mtx-changer: Request volumes" >>$logfile
- count=`expr 1`
- for label in $labels ; do
- printf "$count:$label "
- count=`expr $count + 1`
- done
- printf "\n"
- ;;
-esac
+++ /dev/null
-%%
-%%
-
-\section*{Installing and Configuring MySQL}
-\label{_ChapterStart}
-\index[general]{MySQL!Installing and Configuring }
-\index[general]{Installing and Configuring MySQL }
-\addcontentsline{toc}{section}{Installing and Configuring MySQL}
-
-\subsection*{Installing and Configuring MySQL -- Phase I}
-\index[general]{Installing and Configuring MySQL -- Phase I }
-\index[general]{Phase I!Installing and Configuring MySQL -- }
-\addcontentsline{toc}{subsection}{Installing and Configuring MySQL -- Phase I}
-
-If you use the ./configure \verb:--:with-mysql=mysql-directory statement for
-configuring {\bf Bacula}, you will need MySQL version 3.23.53 or later
-installed in the {\bf mysql-directory}.
-Bacula has been tested on MySQL version 4.1.12 and works providing
-you are running it in the default installation that is compatible
-with MySQL 3.23.x. If you are using one of the new modes such
-as ANSI/ISO compatibility, you may experience problems.
-
-If MySQL is installed in the standard system location, you need only enter
-{\bf \verb:--:with-mysql} since the configure program will search all the
-standard locations. If you install MySQL in your home directory or some
-other non-standard directory, you will need to provide the full path to it.
-
-Installing and Configuring MySQL is not difficult but can be confusing the
-first time. As a consequence, below, we list the steps that we used to install
-it on our machines. Please note that our configuration leaves MySQL without
-any user passwords. This may be an undesirable situation if you have other
-users on your system.
-
-Beginning with Bacula version 1.31, the thread safe version of the
-MySQL client library is used, and hence you must add the {\bf
-\verb:--:enable-thread-safe-client} option to the {\bf ./configure} as shown below:
-
-\begin{enumerate}
-\item Download MySQL source code from
- \elink{www.mysql.com/downloads}{http://www.mysql.com/downloads}
-
-\item Detar it with something like:
-
- {\bf tar xvfz mysql-filename}
-
-Note, the above command requires GNU tar. If you do not have GNU tar, a
-command such as:
-
-{\bf zcat mysql-filename | tar xvf -
-
-} will probably accomplish the same thing.
-
-\item cd {\bf mysql-source-directory}
-
- where you replace {\bf mysql-source-directory} with the directory name where
- you put the MySQL source code.
-
-\item ./configure \verb:--:enable-thread-safe-client \verb:--:prefix=mysql-directory
-
- where you replace {\bf mysql-directory} with the directory name where you
- want to install mysql. Normally for system wide use this is /usr/local/mysql.
- In my case, I use \~kern/mysql.
-
-\item make
-
- This takes a bit of time.
-
-\item make install
-
- This will put all the necessary binaries, libraries and support files into
- the {\bf mysql-directory} that you specified above.
-
-\item ./scripts/mysql\_install\_db
-
- This will create the necessary MySQL databases for controlling user access.
-Note, this script can also be found in the {\bf bin} directory in the
-installation directory
-
-\end{enumerate}
-
-The MySQL client library {\bf mysqlclient} requires the gzip compression
-library {\bf libz.a} or {\bf libz.so}. If you are using rpm packages, these
-libraries are in the {\bf libz-devel} package. On Debian systems, you will
-need to load the {\bf zlib1g-dev} package. If you are not using rpms or debs,
-you will need to find the appropriate package for your system.
-
-At this point, you should return to completing the installation of {\bf
-Bacula}. Later after Bacula is installed, come back to this chapter to
-complete the installation. Please note, the installation files used in the
-second phase of the MySQL installation are created during the Bacula
-Installation.
-
-\label{mysql_phase2}
-\subsection*{Installing and Configuring MySQL -- Phase II}
-\index[general]{Installing and Configuring MySQL -- Phase II }
-\index[general]{Phase II!Installing and Configuring MySQL -- }
-\addcontentsline{toc}{subsection}{Installing and Configuring MySQL -- Phase
-II}
-
-At this point, you should have built and installed MySQL, or already have a
-running MySQL, and you should have configured, built and installed {\bf
-Bacula}. If not, please complete these items before proceeding.
-
-Please note that the {\bf ./configure} used to build {\bf Bacula} will need to
-include {\bf \verb:--:with-mysql=mysql-directory}, where {\bf mysql-directory} is the
-directory name that you specified on the ./configure command for configuring
-MySQL. This is needed so that Bacula can find the necessary include headers
-and library files for interfacing to MySQL.
-
-{\bf Bacula} will install scripts for manipulating the database (create,
-delete, make tables etc) into the main installation directory. These files
-will be of the form *\_bacula\_* (e.g. create\_bacula\_database). These files
-are also available in the \lt{}bacula-src\gt{}/src/cats directory after
-running ./configure. If you inspect create\_bacula\_database, you will see
-that it calls create\_mysql\_database. The *\_bacula\_* files are provided for
-convenience. It doesn't matter what database you have chosen;
-create\_bacula\_database will always create your database.
-
-Now you will create the Bacula MySQL database and the tables that Bacula uses.
-
-
-\begin{enumerate}
-\item Start {\bf mysql}. You might want to use the {\bf startmysql} script
- provided in the Bacula release.
-
-\item cd \lt{}install-directory\gt{}
- This directory contains the Bacula catalog interface routines.
-
-\item ./grant\_mysql\_privileges
- This script creates unrestricted access rights for the user {\bf bacula}.
- You may want to modify it to suit your situation. Please
- note that none of the userids, including root, are password protected.
- If you need more security, please assign a password to the root user
- and to bacula. The program {\bf mysqladmin} can be used for this.
-
-\item ./create\_mysql\_database
- This script creates the MySQL {\bf bacula} database. The databases you
- create as well as the access databases will be located in
- \lt{}install-dir\gt{}/var/ in a subdirectory with the name of the
- database, where \lt{}install-dir\gt{} is the directory name that you
- specified on the {\bf \verb:--:prefix} option. This can be important to
- know if you want to make a special backup of the Bacula database or to
- check its size.
-
-\item ./make\_mysql\_tables
- This script creates the MySQL tables used by {\bf Bacula}.
-\end{enumerate}
-
-Each of the three scripts (grant\_mysql\_privileges, create\_mysql\_database
-and make\_mysql\_tables) allows the addition of a command line argument. This
-can be useful for specifying the user and or password. For example, you might
-need to add {\bf -u root} to the command line to have sufficient privilege to
-create the Bacula tables.
-
-To take a closer look at the access privileges that you have setup with the
-above, you can do:
-
-\footnotesize
-\begin{verbatim}
-mysql-directory/bin/mysql -u root mysql
-select * from user;
-\end{verbatim}
-\normalsize
-
-\subsection*{Re-initializing the Catalog Database}
-\index[general]{Database!Re-initializing the Catalog }
-\index[general]{Re-initializing the Catalog Database }
-\addcontentsline{toc}{subsection}{Re-initializing the Catalog Database}
-
-After you have done some initial testing with {\bf Bacula}, you will probably
-want to re-initialize the catalog database and throw away all the test Jobs
-that you ran. To do so, you can do the following:
-
-\footnotesize
-\begin{verbatim}
- cd <install-directory>
- ./drop_mysql_tables
- ./make_mysql_tables
-\end{verbatim}
-\normalsize
-
-Please note that all information in the database will be lost and you will be
-starting from scratch. If you have written on any Volumes, you must write an
-end of file mark on the volume so that Bacula can reuse it. Do so with:
-
-\footnotesize
-\begin{verbatim}
- (stop Bacula or unmount the drive)
- mt -f /dev/nst0 rewind
- mt -f /dev/nst0 weof
-\end{verbatim}
-\normalsize
-
-Where you should replace {\bf /dev/nst0} with the appropriate tape drive
-device name for your machine.
-
-\subsection*{Linking Bacula with MySQL}
-\index[general]{Linking Bacula with MySQL }
-\index[general]{MySQL!Linking Bacula with }
-\addcontentsline{toc}{subsection}{Linking Bacula with MySQL}
-
-After configuring Bacula with
-
-./configure \verb:--:enable-thread-safe-client \verb:--:prefix=\lt{}mysql-directory\gt{}
-where \lt{}mysql-directory\gt{} is in my case {\bf /home/kern/mysql}, you may
-have to configure the loader so that it can find the MySQL shared libraries.
-If you have previously followed this procedure and later add the {\bf
-\verb:--:enable-thread-safe-client} options, you will need to rerun the {\bf
-ldconfig} program shown below. If you put MySQL in a standard place such as
-{\bf /usr/lib} or {\bf /usr/local/lib} this will not be necessary, but in my
-case it is. The description that follows is Linux specific. For other
-operating systems, please consult your manuals on how to do the same thing:
-
-First edit: {\bf /etc/ld.so.conf} and add a new line to the end of the file
-with the name of the mysql-directory. In my case, it is:
-
-/home/kern/mysql/lib/mysql then rebuild the loader's cache with:
-
-/sbin/ldconfig If you upgrade to a new version of {\bf MySQL}, the shared
-library names will probably change, and you must re-run the {\bf
-/sbin/ldconfig} command so that the runtime loader can find them.
-
-Alternatively, your system my have a loader environment variable that can be
-set. For example, on a Solaris system where I do not have root permission, I
-use:
-
-LD\_LIBRARY\_PATH=/home/kern/mysql/lib/mysql
-
-Finally, if you have encryption enabled in MySQL, you may need to add {\bf
--lssl -lcrypto} to the link. In that case, you can either export the
-appropriate LDFLAGS definition, or alternatively, you can include them
-directly on the ./configure line as in:
-
-\footnotesize
-\begin{verbatim}
-LDFLAGS="-lssl -lcyrpto" \
- ./configure \
- <your-options>
-\end{verbatim}
-\normalsize
-
-\subsection*{Installing MySQL from RPMs}
-\index[general]{MySQL!Installing from RPMs}
-\index[general]{Installing MySQL from RPMs}
-\addcontentsline{toc}{subsection}{Installing MySQL from RPMs}
-If you are installing MySQL from RPMs, you will need to install
-both the MySQL binaries and the client libraries. The client
-libraries are ususally found in a devel package, so you must
-install:
-
-\footnotesize
-\begin{verbatim}
- mysql
- mysql-devel
-\end{verbatim}
-\normalsize
-
-This will be the same with most other package managers too.
-
-\subsection*{Upgrading MySQL}
-\index[general]{Upgrading MySQL }
-\index[general]{Upgrading!MySQL }
-\addcontentsline{toc}{subsection}{Upgrading MySQL}
-If you upgrade MySQL, you must reconfigure, rebuild, and re-install
-Bacula otherwise you are likely to get bizarre failures. If you
-install from rpms and you upgrade MySQL, you must also rebuild Bacula.
-You can do so by rebuilding from the source rpm. To do so, you may need
-to modify the bacula.spec file to account for the new MySQL version.
+++ /dev/null
-%%
-%%
-
-\section*{TCP/IP Network Protocol}
-\label{_ChapterStart5}
-\index{TCP/IP Network Protocol }
-\index{Protocol!TCP/IP Network }
-\addcontentsline{toc}{section}{TCP/IP Network Protocol}
-
-\subsection*{General}
-\index{General }
-\addcontentsline{toc}{subsection}{General}
-
-This document describes the TCP/IP protocol used by Bacula to communicate
-between the various daemons and services. The definitive definition of the
-protocol can be found in src/lib/bsock.h, src/lib/bnet.c and
-src/lib/bnet\_server.c.
-
-Bacula's network protocol is basically a ``packet oriented'' protocol built on
-a standard TCP/IP streams. At the lowest level all packet transfers are done
-with read() and write() requests on system sockets. Pipes are not used as they
-are considered unreliable for large serial data transfers between various
-hosts.
-
-Using the routines described below (bnet\_open, bnet\_write, bnet\_recv, and
-bnet\_close) guarantees that the number of bytes you write into the socket
-will be received as a single record on the other end regardless of how many
-low level write() and read() calls are needed. All data transferred are
-considered to be binary data.
-
-\subsection*{bnet and Threads}
-\index{Threads!bnet and }
-\index{Bnet and Threads }
-\addcontentsline{toc}{subsection}{bnet and Threads}
-
-These bnet routines work fine in a threaded environment. However, they assume
-that there is only one reader or writer on the socket at any time. It is
-highly recommended that only a single thread access any BSOCK packet. The
-exception to this rule is when the socket is first opened and it is waiting
-for a job to start. The wait in the Storage daemon is done in one thread and
-then passed to another thread for subsequent handling.
-
-If you envision having two threads using the same BSOCK, think twice, then you
-must implement some locking mechanism. However, it probably would not be
-appropriate to put locks inside the bnet subroutines for efficiency reasons.
-
-\subsection*{bnet\_open}
-\index{Bnet\_open }
-\addcontentsline{toc}{subsection}{bnet\_open}
-
-To establish a connection to a server, use the subroutine:
-
-BSOCK *bnet\_open(void *jcr, char *host, char *service, int port, int *fatal)
-bnet\_open(), if successful, returns the Bacula sock descriptor pointer to be
-used in subsequent bnet\_send() and bnet\_read() requests. If not successful,
-bnet\_open() returns a NULL. If fatal is set on return, it means that a fatal
-error occurred and that you should not repeatedly call bnet\_open(). Any error
-message will generally be sent to the JCR.
-
-\subsection*{bnet\_send}
-\index{Bnet\_send }
-\addcontentsline{toc}{subsection}{bnet\_send}
-
-To send a packet, one uses the subroutine:
-
-int bnet\_send(BSOCK *sock) This routine is equivalent to a write() except
-that it handles the low level details. The data to be sent is expected to be
-in sock-\gt{}msg and be sock-\gt{}msglen bytes. To send a packet, bnet\_send()
-first writes four bytes in network byte order than indicate the size of the
-following data packet. It returns:
-
-\footnotesize
-\begin{verbatim}
- Returns 0 on failure
- Returns 1 on success
-\end{verbatim}
-\normalsize
-
-In the case of a failure, an error message will be sent to the JCR contained
-within the bsock packet.
-
-\subsection*{bnet\_fsend}
-\index{Bnet\_fsend }
-\addcontentsline{toc}{subsection}{bnet\_fsend}
-
-This form uses:
-
-int bnet\_fsend(BSOCK *sock, char *format, ...) and it allows you to send a
-formatted messages somewhat like fprintf(). The return status is the same as
-bnet\_send.
-
-\subsection*{Additional Error information}
-\index{Information!Additional Error }
-\index{Additional Error information }
-\addcontentsline{toc}{subsection}{Additional Error information}
-
-Fro additional error information, you can call {\bf is\_bnet\_error(BSOCK
-*bsock)} which will return 0 if there is no error or non-zero if there is an
-error on the last transmission. The {\bf is\_bnet\_stop(BSOCK *bsock)}
-function will return 0 if there no errors and you can continue sending. It
-will return non-zero if there are errors or the line is closed (no more
-transmissions should be sent).
-
-\subsection*{bnet\_recv}
-\index{Bnet\_recv }
-\addcontentsline{toc}{subsection}{bnet\_recv}
-
-To read a packet, one uses the subroutine:
-
-int bnet\_recv(BSOCK *sock) This routine is similar to a read() except that it
-handles the low level details. bnet\_read() first reads packet length that
-follows as four bytes in network byte order. The data is read into
-sock-\gt{}msg and is sock-\gt{}msglen bytes. If the sock-\gt{}msg is not large
-enough, bnet\_recv() realloc() the buffer. It will return an error (-2) if
-maxbytes is less than the record size sent. It returns:
-
-\footnotesize
-\begin{verbatim}
- * Returns number of bytes read
- * Returns 0 on end of file
- * Returns -1 on hard end of file (i.e. network connection close)
- * Returns -2 on error
-\end{verbatim}
-\normalsize
-
-It should be noted that bnet\_recv() is a blocking read.
-
-\subsection*{bnet\_sig}
-\index{Bnet\_sig }
-\addcontentsline{toc}{subsection}{bnet\_sig}
-
-To send a ``signal'' from one daemon to another, one uses the subroutine:
-
-int bnet\_sig(BSOCK *sock, SIGNAL) where SIGNAL is one of the following:
-
-\begin{enumerate}
-\item BNET\_EOF - deprecated use BNET\_EOD
-\item BNET\_EOD - End of data stream, new data may follow
-\item BNET\_EOD\_POLL - End of data and poll all in one
-\item BNET\_STATUS - Request full status
-\item BNET\_TERMINATE - Conversation terminated, doing close()
-\item BNET\_POLL - Poll request, I'm hanging on a read
-\item BNET\_HEARTBEAT - Heartbeat Response requested
-\item BNET\_HB\_RESPONSE - Only response permitted to HB
-\item BNET\_PROMPT - Prompt for UA
- \end{enumerate}
-
-\subsection*{bnet\_strerror}
-\index{Bnet\_strerror }
-\addcontentsline{toc}{subsection}{bnet\_strerror}
-
-Returns a formated string corresponding to the last error that occurred.
-
-\subsection*{bnet\_close}
-\index{Bnet\_close }
-\addcontentsline{toc}{subsection}{bnet\_close}
-
-The connection with the server remains open until closed by the subroutine:
-
-void bnet\_close(BSOCK *sock)
-
-\subsection*{Becoming a Server}
-\index{Server!Becoming a }
-\index{Becoming a Server }
-\addcontentsline{toc}{subsection}{Becoming a Server}
-
-The bnet\_open() and bnet\_close() routines described above are used on the
-client side to establish a connection and terminate a connection with the
-server. To become a server (i.e. wait for a connection from a client), use the
-routine {\bf bnet\_thread\_server}. The calling sequence is a bit complicated,
-please refer to the code in bnet\_server.c and the code at the beginning of
-each daemon as examples of how to call it.
-
-\subsection*{Higher Level Conventions}
-\index{Conventions!Higher Level }
-\index{Higher Level Conventions }
-\addcontentsline{toc}{subsection}{Higher Level Conventions}
-
-Within Bacula, we have established the convention that any time a single
-record is passed, it is sent with bnet\_send() and read with bnet\_recv().
-Thus the normal exchange between the server (S) and the client (C) are:
-
-\footnotesize
-\begin{verbatim}
-S: wait for connection C: attempt connection
-S: accept connection C: bnet_send() send request
-S: bnet_recv() wait for request
-S: act on request
-S: bnet_send() send ack C: bnet_recv() wait for ack
-\end{verbatim}
-\normalsize
-
-Thus a single command is sent, acted upon by the server, and then
-acknowledged.
-
-In certain cases, such as the transfer of the data for a file, all the
-information or data cannot be sent in a single packet. In this case, the
-convention is that the client will send a command to the server, who knows
-that more than one packet will be returned. In this case, the server will
-enter a loop:
-
-\footnotesize
-\begin{verbatim}
-while ((n=bnet_recv(bsock)) > 0) {
- act on request
-}
-if (n < 0)
- error
-\end{verbatim}
-\normalsize
-
-The client will perform the following:
-
-\footnotesize
-\begin{verbatim}
-bnet_send(bsock);
-bnet_send(bsock);
-...
-bnet_sig(bsock, BNET_EOD);
-\end{verbatim}
-\normalsize
-
-Thus the client will send multiple packets and signal to the server when all
-the packets have been sent by sending a zero length record.
+++ /dev/null
-%%
-%%
-
-\section*{The Old FileSet Resource}
-\label{_ChapterStart}
-\label{FileSetResource}
-\index[general]{Resource!Old FileSet }
-\index[general]{Old FileSet Resource }
-\addcontentsline{toc}{section}{Old FileSet Resource}
-
-Note, this form of the FileSet resource still works but has been replaced by a
-new more flexible form in Bacula version 1.34.3. As a consequence, you are
-encouraged to convert to the new form as this one is deprecated and will be
-removed in a future version.
-
-The FileSet resource defines what files are to be included in a backup job. At
-least one {\bf FileSet} resource is required. It consists of a list of files
-or directories to be included, a list of files or directories to be excluded
-and the various backup options such as compression, encryption, and signatures
-that are to be applied to each file.
-
-Any change to the list of the included files will cause Bacula to
-automatically create a new FileSet (defined by the name and an MD5 checksum of
-the Include contents). Each time a new FileSet is created, Bacula will ensure
-that the first backup is always a Full save.
-
-\begin{description}
-
-\item {\bf FileSet}
-\index[dir]{FileSet }
-Start of the FileSet records. At least one {\bf FileSet} resource must be
-defined.
-
-\item {\bf Name = \lt{}name\gt{}}
-\index[dir]{Name }
-The name of the FileSet resource. This record is required.
-
-\item {\bf Include = \lt{}processing-options\gt{}
-\ \ \{ \lt{}file-list\gt{} \}
-}
-\index[dir]{Include }
-
-The Include resource specifies the list of files and/or directories to be
-included in the backup job. There can be any number of {\bf Include} {\bf
-file-list} specifications within the FileSet, each having its own set of {\bf
-processing-options}. Normally, the {\bf file-list} consists of one file or
-directory name per line. Directory names should be specified without a
-trailing slash. Wild-card (or glob matching) does not work when used in an
-Include list. It does work in an Exclude list though. Just the same, any
-asterisk (*), question mark (?), or left-bracket ([) must be preceded by a
-slash (\textbackslash{}\textbackslash{}) if you want it to represent the
-literal character.
-
-You should {\bf always} specify a full path for every directory and file that
-you list in the FileSet. In addition, on Windows machines, you should {\bf
-always} prefix the directory or filename with the drive specification (e.g.
-{\bf c:/xxx}) using Unix directory name separators (forward slash). However,
-within an {\bf Exclude} where for some reason the exclude will not work with a
-prefixed drive letter. If you want to specify a drive letter in exclusions on
-Win32 systems, you can do so by specifying:
-
-\footnotesize
-\begin{verbatim}
- Exclude = { /cygdrive/d/archive/Mulberry }
-\end{verbatim}
-\normalsize
-
-where in this case, the {\bf /cygdrive/d} \&nsbp; is Cygwin's way of referring
-to drives on Win32 (thanks to Mathieu Arnold for this tip).
-
-Bacula's default for processing directories is to recursively descend in the
-directory saving all files and subdirectories. Bacula will not by default
-cross file systems (or mount points in Unix parlance). This means that if you
-specify the root partition (e.g. {\bf /}), Bacula will save only the root
-partition and not any of the other mounted file systems. Similarly on Windows
-systems, you must explicitly specify each of the drives you want saved (e.g.
-{\bf c:/} and {\bf d:/} ...). In addition, at least for Windows systems, you
-will most likely want to enclose each specification within double quotes. The
-{\bf df} command on Unix systems will show you which mount points you must
-specify to save everything. See below for an example.
-
-Take special care not to include a directory twice or Bacula will backup the
-same files two times wasting a lot of space on your archive device. Including
-a directory twice is very easy to do. For example:
-
-\footnotesize
-\begin{verbatim}
- Include = { / /usr }
-\end{verbatim}
-\normalsize
-
-on a Unix system where /usr is a subdirectory (rather than a mounted
-filesystem) will cause /usr to be backed up twice. In this case, on Bacula
-versions prior to 1.32f-5-09Mar04 due to a bug, you will not be able to
-restore hard linked files that were backed up twice.
-
-The {\bf \lt{}processing-options\gt{}} is optional. If specified, it is a list
-of {\bf keyword=value} options to be applied to the file-list. Multiple
-options may be specified by separating them with spaces. These options are
-used to modify the default processing behavior of the files included. Since
-there can be multiple {\bf Include} sets, this permits effectively specifying
-the desired options (compression, encryption, ...) on a file by file basis.
-The options may be one of the following:
-
-\begin{description}
-
-\item {\bf compression=GZIP}
-\index[fd]{compression }
-All files saved will be software compressed using the GNU ZIP compression
-format. The compression is done on a file by file basis by the File daemon.
-If there is a problem reading the tape in a single record of a file, it will
-at most affect that file and none of the other files on the tape. Normally
-this option is {\bf not} needed if you have a modern tape drive as the drive
-will do its own compression. However, compression is very important if you
-are writing your Volumes to a file, and it can also be helpful if you have a
-fast computer but a slow network.
-
-Specifying {\bf GZIP} uses the default compression level six (i.e. {\bf GZIP}
-is identical to {\bf GZIP6}). If you want a different compression level (1
-through 9), you can specify it by appending the level number with no
-intervening spaces to {\bf GZIP}. Thus {\bf compression=GZIP1} would give
-minimum compression but the fastest algorithm, and {\bf compression=GZIP9}
-would give the highest level of compression, but requires more computation.
-According to the GZIP documentation, compression levels greater than 6
-generally give very little extra compression but are rather CPU intensive.
-
-\item {\bf signature=MD5}
-\index[fd]{signature }
-An MD5 signature will be computed for all files saved. Adding this option
-generates about 5\% extra overhead for each file saved. In addition to the
-additional CPU time, the MD5 signature adds 16 more bytes per file to your
-catalog. We strongly recommend that this option be specified as a default
-for all files.
-
-\item {\bf signature=SHA1}
-\index[fd]{signature }
-An SHA1 signature will be computed for all The SHA1 algorithm is purported to
-be some what slower than the MD5 algorithm, but at the same time is
-significantly better from a cryptographic point of view (i.e. much fewer
-collisions, much lower probability of being hacked.) It adds four more bytes
-than the MD5 signature. We strongly recommend that either this option or MD5
-be specified as a default for all files. Note, only one of the two options
-MD5 or SHA1 can be computed for any file.
-
-\item {\bf *encryption=\lt{}algorithm\gt{}}
-\index[fd]{*encryption }
-All files saved will be encrypted using one of the following algorithms (NOT
-YET IMPLEMENTED):
-
-\begin{description}
-
-\item {\bf *AES}
-\index[fd]{*AES }
-\end{description}
-
-\item {\bf verify=\lt{}options\gt{}}
-\index[fd]{verify }
-The options letters specified are used when running a {\bf Verify
-Level=Catalog} job, and may be any combination of the following:
-
-\begin{description}
-
-\item {\bf i}
-compare the inodes
-
-\item {\bf p}
-compare the permission bits
-
-\item {\bf n}
-compare the number of links
-
-\item {\bf u}
-compare the user id
-
-\item {\bf g}
-compare the group id
-
-\item {\bf s}
-compare the size
-
-\item {\bf a}
-compare the access time
-
-\item {\bf m}
-compare the modification time (st\_mtime)
-
-\item {\bf c}
-compare the change time (st\_ctime)
-
-\item {\bf s}
-report file size decreases
-
-\item {\bf 5}
-compare the MD5 signature
-
-\item {\bf 1}
-compare the SHA1 signature
-\end{description}
-
-A useful set of general options on the {\bf Level=Catalog} verify is {\bf
-pins5} i.e. compare permission bits, inodes, number of links, size, and MD5
-changes.
-
-\item {\bf onefs=yes|no}
-\index[fd]{onefs }
-If set to {\bf yes} (the default), {\bf Bacula} will remain on a single file
-system. That is it will not backup file systems that are mounted on a
-subdirectory. In this case, you must explicitly list each file system you
-want saved. If you set this option to {\bf no}, Bacula will backup all
-mounted file systems (i.e. traverse mount points) that are found within the
-{\bf FileSet}. Thus if you have NFS or Samba file systems mounted on a
-directory included in your FileSet, they will also be backed up. Normally, it
-is preferable to set {\bf onefs=yes} and to explicitly name each file system
-you want backed up. See the example below for more details.
-\label{portable}
-
-\item {\bf portable=yes|no}
-\index[fd]{portable }
-If set to {\bf yes} (default is {\bf no}), the Bacula File daemon will backup
-Win32 files in a portable format. By default, this option is set to {\bf
-no}, which means that on Win32 systems, the data will be backed up using
-Windows API calls and on WinNT/2K/XP, the security and ownership data will be
-properly backed up (and restored), but the data format is not portable to
-other systems -- e.g. Unix, Win95/98/Me. On Unix systems, this option is
-ignored, and unless you have a specific need to have portable backups, we
-recommend accept the default ({\bf no}) so that the maximum information
-concerning your files is backed up.
-
-\item {\bf recurse=yes|no}
-\index[fd]{recurse }
-If set to {\bf yes} (the default), Bacula will recurse (or descend) into all
-subdirectories found unless the directory is explicitly excluded using an
-{\bf exclude} definition. If you set {\bf recurse=no}, Bacula will save the
-subdirectory entries, but not descend into the subdirectories, and thus will
-not save the contents of the subdirectories. Normally, you will want the
-default ({\bf yes}).
-
-\item {\bf sparse=yes|no}
-\index[dir]{sparse }
-Enable special code that checks for sparse files such as created by ndbm. The
-default is {\bf no}, so no checks are made for sparse files. You may specify
-{\bf sparse=yes} even on files that are not sparse file. No harm will be
-done, but there will be a small additional overhead to check for buffers of
-all zero, and a small additional amount of space on the output archive will
-be used to save the seek address of each non-zero record read.
-
-{\bf Restrictions:} Bacula reads files in 32K buffers. If the whole buffer is
-zero, it will be treated as a sparse block and not written to tape. However,
-if any part of the buffer is non-zero, the whole buffer will be written to
-tape, possibly including some disk sectors (generally 4098 bytes) that are
-all zero. As a consequence, Bacula's detection of sparse blocks is in 32K
-increments rather than the system block size. If anyone considers this to be
-a real problem, please send in a request for change with the reason. The
-sparse code was first implemented in version 1.27.
-
-If you are not familiar with sparse files, an example is say a file where you
-wrote 512 bytes at address zero, then 512 bytes at address 1 million. The
-operating system will allocate only two blocks, and the empty space or hole
-will have nothing allocated. However, when you read the sparse file and read
-the addresses where nothing was written, the OS will return all zeros as if
-the space were allocated, and if you backup such a file, a lot of space will
-be used to write zeros to the volume. Worse yet, when you restore the file,
-all the previously empty space will now be allocated using much more disk
-space. By turning on the {\bf sparse} option, Bacula will specifically look
-for empty space in the file, and any empty space will not be written to the
-Volume, nor will it be restored. The price to pay for this is that Bacula
-must search each block it reads before writing it. On a slow system, this may
-be important. If you suspect you have sparse files, you should benchmark the
-difference or set sparse for only those files that are really sparse.
-\label{readfifo}
-
-\item {\bf readfifo=yes|no}
-\index[fd]{readfifo }
-If enabled, tells the Client to read the data on a backup and write the data
-on a restore to any FIFO (pipe) that is explicitly mentioned in the FileSet.
-In this case, you must have a program already running that writes into the
-FIFO for a backup or reads from the FIFO on a restore. This can be
-accomplished with the {\bf RunBeforeJob} record. If this is not the case,
-Bacula will hang indefinitely on reading/writing the FIFO. When this is not
-enabled (default), the Client simply saves the directory entry for the FIFO.
-
-\item {\bf mtimeonly=yes|no}
-\index[dir]{mtimeonly }
-If enabled, tells the Client that the selection of files during Incremental
-and Differential backups should based only on the st\_mtime value in the
-stat() packet. The default is {\bf no} which means that the selection of
-files to be backed up will be based on both the st\_mtime and the st\_ctime
-values. In general, it is not recommended to use this option.
-
-\item {\bf keepatime=yes|no}
-\index[dir]{keepatime }
-The default is {\bf no}. When enabled, Bacula will reset the st\_atime
-(access time) field of files that it backs up to their value prior to the
-backup. This option is not generally recommended as there are very few
-programs that use st\_atime, and the backup overhead is increased because of
-the additional system call necessary to reset the times. (I'm not sure this
-works on Win32).
-\end{description}
-
-{\bf \lt{}file-list\gt{}} is a space separated list of filenames and/or
-directory names. To include names containing spaces, enclose the name between
-double-quotes. The list may span multiple lines, in fact, normally it is good
-practice to specify each filename on a separate line.
-
-There are a number of special cases when specifying files or directories in a
-{\bf file-list}. They are:
-
-\begin{itemize}
-\item Any file-list item preceded by an at-sign (@) is assumed to be a
-filename containing a list of files, which is read when the configuration
-file is parsed during Director startup. Note, that the file is read on the
-Director's machine and not on the Client.
-\item Any file-list item beginning with a vertical bar (|) is assumed to be a
-program. This program will be executed on the Director's machine at the time
-the Job starts (not when the Director reads the configuration file), and any
-output from that program will be assumed to be a list of files or
-directories, one per line, to be included. This allows you to have a job that
-for example includes all the local partitions even if you change the
-partitioning by adding a disk. In general, you will need to prefix your
-command or commands with a {\bf sh -c} so that they are invoked by a shell.
-This will not be the case if you are invoking a script as in the second
-example below. Also, you must take care to escape wild-cards and ensure that
-any spaces in your command are escaped as well. If you use a single quotes
-(') within a double quote (``), Bacula will treat everything between the
-single quotes as one field so it will not be necessary to escape the spaces.
-In general, getting all the quotes and escapes correct is a real pain as you
-can see by the next example. As a consequence, it is often easier to put
-everything in a file, and simply us the file name within Bacula. In that case
-the {\bf sh -c} will not be necessary providing the first line of the file is
- {\bf \#!/bin/sh}.
-
-As an example:
-
-\footnotesize
-\begin{verbatim}
-
-Include = signature=SHA1 {
- "|sh -c 'df -l | grep \"^/dev/hd[ab]\" | grep -v \".*/tmp\" \
- | awk \"{print \\$6}\"'"
-}
-\end{verbatim}
-\normalsize
-
-will produce a list of all the local partitions on a RedHat Linux system.
-Note, the above line was split, but should normally be written on one line.
-Quoting is a real problem because you must quote for Bacula which consists of
-preceding every \textbackslash{} and every '' with a \textbackslash{}, and
-you must also quote for the shell command. In the end, it is probably easier
-just to execute a small file with:
-
-\footnotesize
-\begin{verbatim}
-Include = signature=MD5 {
- "|my_partitions"
-}
-\end{verbatim}
-\normalsize
-
-where my\_partitions has:
-
-\footnotesize
-\begin{verbatim}
-#!/bin/sh
-df -l | grep "^/dev/hd[ab]" | grep -v ".*/tmp" \
- | awk "{print \$6}"
-\end{verbatim}
-\normalsize
-
-If the vertical bar (|) is preceded by a backslash as in \textbackslash{}|,
-the program will be executed on the Client's machine instead of on the
-Director's machine -- (this is implemented but not tested, and very likely
-will not work on Windows).
-\item Any file-list item preceded by a less-than sign (\lt{}) will be taken
-to be a file. This file will be read on the Director's machine at the time
-the Job starts, and the data will be assumed to be a list of directories or
-files, one per line, to be included. This feature allows you to modify the
-external file and change what will be saved without stopping and restarting
-Bacula as would be necessary if using the @ modifier noted above.
-
-If you precede the less-than sign (\lt{}) with a backslash as in
-\textbackslash{}\lt{}, the file-list will be read on the Client machine
-instead of on the Director's machine (implemented but not tested).
-\item If you explicitly specify a block device such as {\bf /dev/hda1}, then
-Bacula (starting with version 1.28) will assume that this is a raw partition
-to be backed up. In this case, you are strongly urged to specify a {\bf
-sparse=yes} include option, otherwise, you will save the whole partition
-rather than just the actual data that the partition contains. For example:
-
-\footnotesize
-\begin{verbatim}
-Include = signature=MD5 sparse=yes {
- /dev/hd6
-}
-\end{verbatim}
-\normalsize
-
-will backup the data in device /dev/hd6.
-
-Ludovic Strappazon has pointed out that this feature can be used to backup a
-full Microsoft Windows disk. Simply boot into the system using a Linux Rescue
-disk, then load a statically linked Bacula as described in the
-\ilink{ Disaster Recovery Using Bacula}{rescue.tex#_ChapterStart} chapter of
-this manual. Then simply save the whole disk partition. In the case of a
-disaster, you can then restore the desired partition.
-\item If you explicitly specify a FIFO device name (created with mkfifo), and
-you add the option {\bf readfifo=yes} as an option, Bacula will read the FIFO
-and back its data up to the Volume. For example:
-
-\footnotesize
-\begin{verbatim}
-Include = signature=SHA1 readfifo=yes {
- /home/abc/fifo
-}
-\end{verbatim}
-\normalsize
-
-if {\bf /home/abc/fifo} is a fifo device, Bacula will open the fifo, read it,
-and store all data thus obtained on the Volume. Please note, you must have a
-process on the system that is writing into the fifo, or Bacula will hang, and
-after one minute of waiting, it will go on to the next file. The data read
-can be anything since Bacula treats it as a stream.
-
-This feature can be an excellent way to do a ``hot'' backup of a very large
-database. You can use the {\bf RunBeforeJob} to create the fifo and to start
-a program that dynamically reads your database and writes it to the fifo.
-Bacula will then write it to the Volume.
-
-During the restore operation, the inverse is true, after Bacula creates the
-fifo if there was any data stored with it (no need to explicitly list it or
-add any options), that data will be written back to the fifo. As a
-consequence, if any such FIFOs exist in the fileset to be restored, you must
-ensure that there is a reader program or Bacula will block, and after one
-minute, Bacula will time out the write to the fifo and move on to the next
-file.
-\end{itemize}
-
-The Exclude Files specifies the list of files and/or directories to be
-excluded from the backup job. The {\bf \lt{}file-list\gt{}} is a comma or
-space separated list of filenames and/or directory names. To exclude names
-containing spaces, enclose the name between double-quotes. Most often each
-filename is on a separate line.
-
-For exclusions on Windows systems, do not include a leading drive letter such
-as {\bf c:}. This does not work. Any filename preceded by an at-sign (@) is
-assumed to be a filename on the Director's machine containing a list of files.
-
-\end{description}
-
-The following is an example of a valid FileSet resource definition:
-
-\footnotesize
-\begin{verbatim}
-FileSet {
- Name = "Full Set"
- Include = compression=GZIP signature=SHA1 sparse=yes {
- @/etc/backup.list
- }
- Include = {
- /root/myfile
- /usr/lib/another_file
- }
- Exclude = { *.o }
-}
-\end{verbatim}
-\normalsize
-
-Note, in the above example, all the files contained in /etc/backup.list will
-be compressed with GZIP compression, an SHA1 signature will be computed on the
-file's contents (its data), and sparse file handling will apply.
-
-The two files /root/myfile and /usr/lib/another\_file will also be saved but
-without any options. In addition, all files with the extension {\bf .o} will
-be excluded from the file set (i.e. from the backup).
-
-Suppose you want to save everything except {\bf /tmp} on your system. Doing a
-{\bf df} command, you get the following output:
-
-\footnotesize
-\begin{verbatim}
-[kern@rufus k]$ df
-Filesystem 1k-blocks Used Available Use% Mounted on
-/dev/hda5 5044156 439232 4348692 10% /
-/dev/hda1 62193 4935 54047 9% /boot
-/dev/hda9 20161172 5524660 13612372 29% /home
-/dev/hda2 62217 6843 52161 12% /rescue
-/dev/hda8 5044156 42548 4745376 1% /tmp
-/dev/hda6 5044156 2613132 2174792 55% /usr
-none 127708 0 127708 0% /dev/shm
-//minimatou/c$ 14099200 9895424 4203776 71% /mnt/mmatou
-lmatou:/ 1554264 215884 1258056 15% /mnt/matou
-lmatou:/home 2478140 1589952 760072 68% /mnt/matou/home
-lmatou:/usr 1981000 1199960 678628 64% /mnt/matou/usr
-lpmatou:/ 995116 484112 459596 52% /mnt/pmatou
-lpmatou:/home 19222656 2787880 15458228 16% /mnt/pmatou/home
-lpmatou:/usr 2478140 2038764 311260 87% /mnt/pmatou/usr
-deuter:/ 4806936 97684 4465064 3% /mnt/deuter
-deuter:/home 4806904 280100 4282620 7% /mnt/deuter/home
-deuter:/files 44133352 27652876 14238608 67% /mnt/deuter/files
-\end{verbatim}
-\normalsize
-
-Now, if you specify only {\bf /} in your Include list, Bacula will only save
-the Filesystem {\bf /dev/hda5}. To save all file systems except {\bf /tmp}
-with out including any of the Samba or NFS mounted systems, and explicitly
-excluding a /tmp, /proc, .journal, and .autofsck, which you will not want to
-be saved and restored, you can use the following:
-
-\footnotesize
-\begin{verbatim}
-FileSet {
- Name = Everything
- Include = {
- /
- /boot
- /home
- /rescue
- /usr
- }
- Exclude = {
- /proc
- /tmp
- .journal
- .autofsck
- }
-}
-\end{verbatim}
-\normalsize
-
-Since /tmp is on its own filesystem and it was not explicitly named in the
-Include list, it is not really needed in the exclude list. It is better to
-list it in the Exclude list for clarity, and in case the disks are changed so
-that it is no longer in its own partition.
-
-Please be aware that allowing Bacula to traverse or change file systems can be
-{\bf very} dangerous. For example, with the following:
-
-\footnotesize
-\begin{verbatim}
-FileSet {
- Name = "Bad example"
- Include = onefs=no {
- /mnt/matou
- }
-}
-\end{verbatim}
-\normalsize
-
-you will be backing up an NFS mounted partition ({\bf /mnt/matou}), and since
-{\bf onefs} is set to {\bf no}, Bacula will traverse file systems. However, if
-{\bf /mnt/matou} has the current machine's file systems mounted, as is often
-the case, you will get yourself into a recursive loop and the backup will
-never end.
-
-The following FileSet definition will backup a raw partition:
-
-\footnotesize
-\begin{verbatim}
-FileSet {
- Name = "RawPartition"
- Include = sparse=yes {
- /dev/hda2
- }
-}
-\end{verbatim}
-\normalsize
-
-Note, in backing up and restoring a raw partition, you should ensure that no
-other process including the system is writing to that partition. As a
-precaution, you are strongly urged to ensure that the raw partition is not
-mounted or is mounted read-only. If necessary, this can be done using the {\bf
-RunBeforeJob} record.
-
-\subsection*{Additional Considerations for Using Excludes on Windows}
-\index[general]{Additional Considerations for Using Excludes on Windows }
-\index[general]{Windows!Additional Considerations for Using Excludes on }
-\addcontentsline{toc}{subsection}{Additional Considerations for Using Excludes
-on Windows}
-
-For exclude lists to work correctly on Windows, you must observe the following
-rules:
-
-\begin{itemize}
-\item Filenames are case sensitive, so you must use the correct case.
-\item To exclude a directory, you must not have a trailing slash on the
-directory name.
-\item If you have spaces in your filename, you must enclose the entire name
-in double-quote characters (``). Trying to use a backslash before the space
-will not work.
-\item You must not precede the excluded file or directory with a drive letter
-(such as {\bf c:}) otherwise it will not work.
-\end{itemize}
-
-Thanks to Thiago Lima for summarizing the above items for us. If you are
-having difficulties getting includes or excludes to work, you might want to
-try using the {\bf estimate job=xxx listing} command documented in the
-\ilink{Console chapter}{console.tex#estimate} of this manual.
-\label{win32}
-
-\subsection*{Windows Considerations for FileSets}
-\index[general]{FileSets!Windows Considerations for }
-\index[general]{Windows Considerations for FileSets }
-\addcontentsline{toc}{subsection}{Windows Considerations for FileSets}
-
-If you are entering Windows file names, the directory path may be preceded by
-the drive and a colon (as in c:). However, the path separators must be
-specified in Unix convention (i.e. forward slash (/)). If you wish to include
-a quote in a file name, precede the quote with a backslash
-(\textbackslash{}\textbackslash{}). For example you might use the following
-for a Windows machine to backup the ''My Documents`` directory:
-
-\footnotesize
-\begin{verbatim}
-FileSet {
- Name = "Windows Set"
- Include = {
- "c:/My Documents"
- }
- Exclude = { *.obj *.exe }
-}
-\end{verbatim}
-\normalsize
-
-When using exclusion on Windows, do not use a drive prefix (i.e. {\bf c:}) as
-it will prevent the exclusion from working. However, if you need to specify a
-drive letter in exclusions on Win32 systems, you can do so by specifying:
-
-\footnotesize
-\begin{verbatim}
- Exclude = { /cygdrive/d/archive/Mulberry }
-\end{verbatim}
-\normalsize
-
-where in this case, the {\bf /cygdrive/d} is Cygwin's way of referring to
-drive {\bf d:} (thanks to Mathieu Arnold for this tip).
-
-\subsection*{A Windows Example FileSet}
-\index[general]{FileSet!Windows Example }
-\index[general]{Windows Example FileSet }
-\addcontentsline{toc}{subsection}{Windows Example FileSet}
-
-The following example was contributed by Phil Stracchino:
-
-\footnotesize
-\begin{verbatim}
-This is my Windows 2000 fileset:
-FileSet {
- Name = "Windows 2000 Full Set"
- Include = signature=MD5 {
- c:/
- }
-# Most of these files are excluded not because we don't want
-# them, but because Win2K won't allow them to be backed up
-# except via proprietary Win32 API calls.
- Exclude = {
- "/Documents and Settings/*/Application Data/*/Profiles/*/*/
- Cache/*"
- "/Documents and Settings/*/Local Settings/Application Data/
- Microsoft/Windows/[Uu][Ss][Rr][Cc][Ll][Aa][Ss][Ss].*"
- "/Documents and Settings/*/[Nn][Tt][Uu][Ss][Ee][Rr].*"
- "/Documents and Settings/*/Cookies/*"
- "/Documents and Settings/*/Local Settings/History/*"
- "/Documents and Settings/*/Local Settings/
- Temporary Internet Files/*"
- "/Documents and Settings/*/Local Settings/Temp/*"
- "/WINNT/CSC"
- "/WINNT/security/logs/scepol.log"
- "/WINNT/system32/config/*"
- "/WINNT/msdownld.tmp/*"
- "/WINNT/Internet Logs/*"
- "/WINNT/$Nt*Uninstall*"
- "/WINNT/Temp/*"
- "/temp/*"
- "/tmp/*"
- "/pagefile.sys"
- }
-}
-\end{verbatim}
-\normalsize
-
-Note, the three line of the above Exclude were split to fit on the document
-page, they should be written on a single line in real use.
+++ /dev/null
-%%
-%%
-
-\section*{Automated Disk Backup}
-\label{_ChapterStart11}
-\index[general]{Volumes!Using Pools to Manage }
-\index[general]{Disk!Automated Backup}
-\index[general]{Using Pools to Manage Volumes }
-\index[general]{Automated Disk Backup}
-\addcontentsline{toc}{section}{Using Pools to Manage Volumes}
-\addcontentsline{toc}{section}{Automated Disk Backup}
-
-If you manage 5 or 10 machines and have a nice tape backup, you don't need
-Pools, and you may wonder what they are good for. In this chapter, you will
-see that Pools can help you optimize disk storage space. The same techniques
-can be applied to a shop that has multiple tape drives, or that wants to mount
-various different Volumes to meet their needs.
-
-The rest of this chapter will give an example involving backup to disk
-Volumes, but most of the information applies equally well to tape Volumes.
-
-\label{TheProblem}
-\subsection*{The Problem}
-\index[general]{Problem }
-\addcontentsline{toc}{subsection}{Problem}
-
-A site that I administer (a charitable organization) had a tape DDS-3 tape
-drive that was failing. The exact reason for the failure is still unknown.
-Worse yet, their full backup size is about 15GB whereas the capacity of their
-broken DDS-3 was at best 8GB (rated 6/12). A new DDS-4 tape drive and the
-necessary cassettes was more expensive than their budget could handle.
-\label{TheSolution}
-
-\subsection*{The Solution}
-\index[general]{Solution }
-\addcontentsline{toc}{subsection}{Solution}
-
-They want to maintain 6 months of backup data, and be able to access the old
-files on a daily basis for a week, a weekly basis for a month, then monthly
-for 6 months. In addition, offsite capability was not needed (well perhaps
-it really is, but it was never used). Their daily changes amount to about
-300MB on the average, or about 2GB per week.
-
-As a consequence, the total volume of data they need to keep to meet their
-needs is about 100GB (15GB x 6 + 2GB x 5 + 0.3 x 7) = 102.1GB.
-
-The chosen solution was to buy a 120GB hard disk for next to nothing -- far
-less than 1/10th the price of a tape drive and the cassettes to handle the
-same amount of data, and to have Bacula write to disk files.
-
-The rest of this chapter will explain how to setup Bacula so that it would
-automatically manage a set of disk files with the minimum intervention on my
-part. The system has been running since 22 January 2004 until today (08 April
-2004) with no intervention. Since we have not yet crossed the six month
-boundary, we still lack some data to be sure the system performs as desired.
-\label{OverallDesign}
-
-\subsection*{Overall Design}
-\index[general]{Overall Design }
-\index[general]{Design!Overall }
-\addcontentsline{toc}{subsection}{Overall Design}
-
-Getting Bacula to write to disk rather than tape in the simplest case is
-rather easy, and is documented in the previous chapter. In addition, all the
-directives discussed here are explained in that chapter. We'll leave it to you
-to look at the details there. If you haven't read it and are not familiar with
-Pools, you probably should at least read it once quickly for the ideas before
-continuing here.
-
-One needs to consider about what happens if we have only a single large Bacula
-Volume defined on our hard disk. Everything works fine until the Volume fills,
-then Bacula will ask you to mount a new Volume. This same problem applies to
-the use of tape Volumes if your tape fills. Being a hard disk and the only one
-you have, this will be a bit of a problem. It should be obvious that it is
-better to use a number of smaller Volumes and arrange for Bacula to
-automatically recycle them so that the disk storage space can be reused. The
-other problem with a single Volume, is that at the current time (1.34.0)
-Bacula does not seek within a disk Volume, so restoring a single file can take
-more time than one would expect.
-
-As mentioned, the solution is to have multiple Volumes, or files on the disk.
-To do so, we need to limit the use and thus the size of a single Volume, by
-time, by number of jobs, or by size. Any of these would work, but we chose to
-limit the use of a single Volume by putting a single job in each Volume with
-the exception of Volumes containing Incremental backup where there will be 6
-jobs (a week's worth of data) per volume. The details of this will be
-discussed shortly.
-
-The next problem to resolve is recycling of Volumes. As you noted from above,
-the requirements are to be able to restore monthly for 6 months, weekly for a
-month, and daily for a week. So to simplify things, why not do a Full save
-once a month, a Differential save once a week, and Incremental saves daily.
-Now since each of these different kinds of saves needs to remain valid for
-differing periods, the simplest way to do this (and possibly the only) is to
-have a separate Pool for each backup type.
-
-The decision was to use three Pools: one for Full saves, one for Differential
-saves, and one for Incremental saves, and each would have a different number
-of volumes and a different Retention period to accomplish the requirements.
-\label{FullPool}
-
-\subsubsection*{Full Pool}
-\index[general]{Pool!Full }
-\index[general]{Full Pool }
-\addcontentsline{toc}{subsubsection}{Full Pool}
-
-Putting a single Full backup on each Volume, will require six Full save
-Volumes, and a retention period of six months. The Pool needed to do that is:
-
-\footnotesize
-\begin{verbatim}
-Pool {
- Name = Full-Pool
- Pool Type = Backup
- Recycle = yes
- AutoPrune = yes
- Volume Retention = 6 months
- Accept Any Volume = yes
- Maximum Volume Jobs = 1
- Label Format = Full-
- Maximum Volumes = 6
-}
-\end{verbatim}
-\normalsize
-
-Since these are disk Volumes, no space is lost by having separate Volumes for
-each backup (done once a month in this case). The items to note are the
-retention period of six months (i.e. they are recycled after 6 months), that
-there is one job per volume (Maximum Volume Jobs = 1), the volumes will be
-labeled Full-0001, ... Full-0006 automatically. One could have labeled these
-manual from the start, but why not use the features of Bacula.
-\label{DiffPool}
-
-\subsubsection*{Differential Pool}
-\index[general]{Pool!Differential }
-\index[general]{Differential Pool }
-\addcontentsline{toc}{subsubsection}{Differential Pool}
-
-For the Differential backup Pool, we choose a retention period of a bit longer
-than a month and ensure that there is at least one Volume for each of the
-maximum of five weeks in a month. So the following works:
-
-\footnotesize
-\begin{verbatim}
-Pool {
- Name = Diff-Pool
- Pool Type = Backup
- Recycle = yes
- AutoPrune = yes
- Volume Retention = 40 days
- Accept Any Volume = yes
- Maximum Volume Jobs = 1
- Label Format = Diff-
- Maximum Volumes = 6
-}
-\end{verbatim}
-\normalsize
-
-As you can see, the Differential Pool can grow to a maximum of six volumes,
-and the Volumes are retained 40 days and thereafter they can be recycled. Finally
-there is one job per volume. This, of course, could be tightened up a lot, but
-the expense here is a few GB which is not too serious.
-\label{IncPool}
-
-\subsubsection*{Incremental Pool}
-\index[general]{Incremental Pool }
-\index[general]{Pool!Incremental }
-\addcontentsline{toc}{subsubsection}{Incremental Pool}
-
-Finally, here is the resource for the Incremental Pool:
-
-\footnotesize
-\begin{verbatim}
-Pool {
- Name = Inc-Pool
- Pool Type = Backup
- Recycle = yes
- AutoPrune = yes
- Volume Retention = 20 days
- Accept Any Volume = yes
- Maximum Volume Jobs = 6
- Label Format = Inc-
- Maximum Volumes = 5
-}
-\end{verbatim}
-\normalsize
-
-We keep the data for 20 days rather than just a week as the needs require. To
-reduce the proliferation of volume names, we keep a week's worth of data (6
-incremental backups) in each Volume. In practice, the retention period should
-be set to just a bit more than a week and keep only two or three volumes
-instead of five. Again, the lost is very little and as the system reaches the
-full steady state, we can adjust these values so that the total disk usage
-doesn't exceed the disk capacity.
-\label{Example}
-
-\subsection*{The Actual Conf Files}
-\index[general]{Files!Actual Conf }
-\index[general]{Actual Conf Files }
-\addcontentsline{toc}{subsection}{Actual Conf Files}
-
-The following example shows you the actual files used, with only a few minor
-modifications to simplify things.
-
-The Director's configuration file is as follows:
-
-\footnotesize
-\begin{verbatim}
-Director { # define myself
- Name = bacula-dir
- DIRport = 9101
- QueryFile = "/home/bacula/bin/query.sql"
- WorkingDirectory = "/home/bacula/working"
- PidDirectory = "/home/bacula/working"
- Maximum Concurrent Jobs = 1
- Password = " "
- Messages = Standard
-}
-# By default, this job will back up to disk in /tmp
-Job {
- Name = client
- Type = Backup
- Client = client-fd
- FileSet = "Full Set"
- Schedule = "WeeklyCycle"
- Storage = File
- Messages = Standard
- Pool = Default
- Full Backup Pool = Full-Pool
- Incremental Backup Pool = Inc-Pool
- Differential Backup Pool = Diff-Pool
- Write Bootstrap = "/home/bacula/working/client.bsr"
- Priority = 10
-}
-# List of files to be backed up
-FileSet {
- Name = "Full Set"
- Include = signature=SHA1 compression=GZIP9 {
- /
- /usr
- /home
- }
- Exclude = {
- /proc /tmp /.journal /.fsck
- }
-}
-Schedule {
- Name = "WeeklyCycle"
- Run = Full 1st sun at 1:05
- Run = Differential 2nd-5th sun at 1:05
- Run = Incremental mon-sat at 1:05
-}
-Client {
- Name = client-fd
- Address = client
- FDPort = 9102
- Catalog = MyCatalog
- Password = " "
- AutoPrune = yes # Prune expired Jobs/Files
- Job Retention = 6 months
- File Retention = 60 days
-}
-Storage {
- Name = File
- Address = localhost
- SDPort = 9103
- Password = " "
- Device = FileStorage
- Media Type = File
-}
-Catalog {
- Name = MyCatalog
- dbname = bacula; user = bacula; password = ""
-}
-Pool {
- Name = Full-Pool
- Pool Type = Backup
- Recycle = yes # automatically recycle Volumes
- AutoPrune = yes # Prune expired volumes
- Volume Retention = 6 months
- Accept Any Volume = yes # write on any volume in the pool
- Maximum Volume Jobs = 1
- Label Format = Full-
- Maximum Volumes = 6
-}
-Pool {
- Name = Inc-Pool
- Pool Type = Backup
- Recycle = yes # automatically recycle Volumes
- AutoPrune = yes # Prune expired volumes
- Volume Retention = 20 days
- Accept Any Volume = yes
- Maximum Volume Jobs = 6
- Label Format = Inc-
- Maximum Volumes = 5
-}
-Pool {
- Name = Diff-Pool
- Pool Type = Backup
- Recycle = yes
- AutoPrune = yes
- Volume Retention = 40 days
- Accept Any Volume = yes
- Maximum Volume Jobs = 1
- Label Format = Diff-
- Maximum Volumes = 6
-}
-Messages {
- Name = Standard
- mailcommand = "bsmtp -h mail.domain.com -f \"\(Bacula\) %r\"
- -s \"Bacula: %t %e of %c %l\" %r"
- operatorcommand = "bsmtp -h mail.domain.com -f \"\(Bacula\) %r\"
- -s \"Bacula: Intervention needed for %j\" %r"
- mail = root@domain.com = all, !skipped
- operator = root@domain.com = mount
- console = all, !skipped, !saved
- append = "/home/bacula/bin/log" = all, !skipped
-}
-\end{verbatim}
-\normalsize
-
-and the Storage daemon's configuration file is:
-
-\footnotesize
-\begin{verbatim}
-Storage { # definition of myself
- Name = bacula-sd
- SDPort = 9103 # Director's port
- WorkingDirectory = "/home/bacula/working"
- Pid Directory = "/home/bacula/working"
-}
-Director {
- Name = bacula-dir
- Password = " "
-}
-Device {
- Name = FileStorage
- Media Type = File
- Archive Device = /files/bacula
- LabelMedia = yes; # lets Bacula label unlabeled media
- Random Access = Yes;
- AutomaticMount = yes; # when device opened, read it
- RemovableMedia = no;
- AlwaysOpen = no;
-}
-Messages {
- Name = Standard
- director = bacula-dir = all
-}
-\end{verbatim}
-\normalsize
+++ /dev/null
-%%
-%%
-
-\section*{Bacula Porting Notes}
-\label{_ChapterStart1}
-\index{Notes!Bacula Porting }
-\index{Bacula Porting Notes }
-\addcontentsline{toc}{section}{Bacula Porting Notes}
-
-This document is intended mostly for developers who wish to port Bacula to a
-system that is not {\bf officially} supported.
-
-It is hoped that Bacula clients will eventually run on every imaginable system
-that needs backing up (perhaps even a Palm). It is also hoped that the Bacula
-Directory and Storage daemons will run on every system capable of supporting
-them.
-
-\subsection*{Porting Requirements}
-\index{Requirements!Porting }
-\index{Porting Requirements }
-\addcontentsline{toc}{subsection}{Porting Requirements}
-
-In General, the following holds true:
-
-\begin{itemize}
-\item {\bf Bacula} has been compiled and run on Linux RedHat, FreeBSD, and
- Solaris systems.
-\item In addition, clients exist on Win32 (Cygwin), and Irix
-\item It requires GNU C++ to compile. You can try with other compilers, but
- you are on your own. The Irix client is built with the Irix complier, but, in
- general, you will need GNU.
-\item Your compiler must provide support for 64 bit signed and unsigned
- integers.
-\item You will need a recent copy of the {\bf autoconf} tools loaded on your
- system (version 2.13 or later). The {\bf autoconf} tools are used to build
- the configuration program, but are not part of the Bacula source
-distribution.
-\item There are certain third party packages that Bacula needs. Except for
- MySQL, they can all be found in the {\bf depkgs} and {\bf depkgs1} releases.
-\item If you want to build the Win32 binaries, you will need the full Cygwin
- 1.5.5 release. Although all components build (console has some warnings),
- only the File daemon has been tested. Please note that if you attempt to
-build Bacula on any other version of Cygwin, particularly previous versions,
-you will be on your own.
-\item {\bf Bacula} requires a good implementation of pthreads to work.
-\item The source code has been written with portability in mind and is mostly
- POSIX compatible. Thus porting to any POSIX compatible operating system
- should be relatively easy.
-\end{itemize}
-
-\subsection*{Steps to Take for Porting}
-\index{Porting!Steps to Take for }
-\index{Steps to Take for Porting }
-\addcontentsline{toc}{subsection}{Steps to Take for Porting}
-
-\begin{itemize}
-\item The first step is to ensure that you have version 2.13 or later of the
- {\bf autoconf} tools loaded. You can skip this step, but making changes to
- the configuration program will be difficult or impossible.
-\item The run a {\bf ./configure} command in the main source directory and
- examine the output. It should look something like the following:
-
-\footnotesize
-\begin{verbatim}
-Configuration on Mon Oct 28 11:42:27 CET 2002:
- Host: i686-pc-linux-gnu -- redhat 7.3
- Bacula version: 1.27 (26 October 2002)
- Source code location: .
- Install binaries: /sbin
- Install config files: /etc/bacula
- C Compiler: gcc
- C++ Compiler: c++
- Compiler flags: -g -O2
- Linker flags:
- Libraries: -lpthread
- Statically Linked Tools: no
- Database found: no
- Database type: Internal
- Database lib:
- Job Output Email: root@localhost
- Traceback Email: root@localhost
- SMTP Host Address: localhost
- Director Port 9101
- File daemon Port 9102
- Storage daemon Port 9103
- Working directory /etc/bacula/working
- SQL binaries Directory
- Large file support: yes
- readline support: yes
- cweb support: yes /home/kern/bacula/depkgs/cweb
- TCP Wrappers support: no
- ZLIB support: yes
- enable-smartalloc: yes
- enable-gnome: no
- gmp support: yes
-\end{verbatim}
-\normalsize
-
-The details depend on your system. The first thing to check is that it
-properly identified your host on the {\bf Host:} line. The first part (added
-in version 1.27) is the GNU four part identification of your system. The part
-after the -- is your system and the system version. Generally, if your system
-is not yet supported, you must correct these.
-\item If the {\bf ./configure} does not function properly, you must determine
- the cause and fix it. Generally, it will be because some required system
- routine is not available on your machine.
-\item To correct problems with detection of your system type or with routines
- and libraries, you must edit the file {\bf
- \lt{}bacula-src\gt{}/autoconf/configure.in}. This is the ``source'' from
-which {\bf configure} is built. In general, most of the changes for your
-system will be made in {\bf autoconf/aclocal.m4} in the routine {\bf
-BA\_CHECK\_OPSYS} or in the routine {\bf BA\_CHECK\_OPSYS\_DISTNAME}. I have
-already added the necessary code for most systems, but if yours shows up as
-{\bf unknown} you will need to make changes. Then as mentioned above, you
-will need to set a number of system dependent items in {\bf configure.in} in
-the {\bf case} statement at approximately line 1050 (depending on the Bacula
-release).
-\item The items to in the case statement that corresponds to your system are
- the following:
-
-\begin{itemize}
-\item DISTVER -- set to the version of your operating system. Typically some
- form of {\bf uname} obtains it.
-\item TAPEDRIVE -- the default tape drive. Not too important as the user can
- set it as an option.
-\item PSCMD -- set to the {\bf ps} command that will provide the PID in the
- first field and the program name in the second field. If this is not set
- properly, the {\bf bacula stop} script will most likely not be able to stop
-Bacula in all cases.
-\item hostname -- command to return the base host name (non-qualified) of
- your system. This is generally the machine name. Not too important as the
- user can correct this in his configuration file.
-\item CFLAGS -- set any special compiler flags needed. Many systems need a
- special flag to make pthreads work. See cygwin for an example.
-\item LDFLAGS -- set any special loader flags. See cygwin for an example.
-\item PTHREAD\_LIB -- set for any special pthreads flags needed during
- linking. See freebsd as an example.
-\item lld -- set so that a ``long long int'' will be properly edited in a
- printf() call.
-\item llu -- set so that a ``long long unsigned'' will be properly edited in
- a printf() call.
-\item PFILES -- set to add any files that you may define is your platform
- subdirectory. These files are used for installation of automatic system
- startup of Bacula daemons.
-\end{itemize}
-
-\item To rebuild a new version of {\bf configure} from a changed {\bf
- autoconf/configure.in} you enter {\bf make configure} in the top level Bacula
- source directory. You must have done a ./configure prior to trying to rebuild
- the configure script or it will get into an infinite loop.
-\item If the {\bf make configure} gets into an infinite loop, ctl-c it, then
- do {\bf ./configure} (no options are necessary) and retry the {\bf make
- configure}, which should now work.
-\item To rebuild {\bf configure} you will need to have {\bf autoconf} version
- 2.57-3 or higher loaded. Older versions of autoconf will complain about
- unknown or bad options, and won't work.
-\item After you have a working {\bf configure} script, you may need to make a
- few system dependent changes to the way Bacula works. Generally, these are
- done in {\bf src/baconfig.h}. You can find a few examples of system dependent
-changes toward the end of this file. For example, on Irix systems, there is
-no definition for {\bf socklen\_t}, so it is made in this file. If your
-system has structure alignment requirements, check the definition of BALIGN
-in this file. Currently, all Bacula allocated memory is aligned on a {\bf
-double} boundary.
-\item If you are having problems with Bacula's type definitions, you might
- look at {\bf src/bc\_types.h} where all the types such as {\bf uint32\_t},
- {\bf uint64\_t}, etc. that Bacula uses are defined.
-\end{itemize}
+++ /dev/null
-%%
-%%
-
-\section*{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}
-
-\subsection*{Installer et configurer PostgreSQL -- Phase I}
-\index[general]{Installer et configurer PostgreSQL -- Phase I }
-\index[general]{Phase I!Installer et configurer PostgreSQL -- }
-\addcontentsline{toc}{subsection}{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}
-
-\subsection*{Installer et configurer PostgreSQL -- Phase II}
-\index[general]{Phase II!Installer et configurer PostgreSQL -- }
-\index[general]{Installer et configurer PostgreSQL -- Phase II }
-\addcontentsline{toc}{subsection}{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.
-
-\subsection*{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}{subsection}{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 <r\'epertoire_d_installation>
- ./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.
-
-\subsection*{Installer PostgreSQL avec les RPMs}
-\index[general]{PostgreSQL!Installer avec les RPMs}
-\index[general]{Installer PostgreSQL avec les RPMs}
-\addcontentsline{toc}{subsection}{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.
-
-\subsection*{Migrer de MySQL \`a PostgreSQL}
-\index[general]{Migrer de MySQL \`a PostgreSQL }
-\index[general]{PostgreSQL!Migrer de MySQL \`a }
-\addcontentsline{toc}{subsection}{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 <bacula-backup.dmp>
-
-\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}
-
-\subsection*{Mettre \`a jour PostgreSQL}
-\index[general]{Mettre \`a jour PostgreSQL }
-\index[general]{Mettre \`a jour!PostgreSQL }
-\addcontentsline{toc}{subsection}{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.
-
-
-\subsection*{Credits}
-\index[general]{Credits }
-\addcontentsline{toc}{subsection}{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}
+++ /dev/null
-%%
-%%
-
-\section*{Volume Utility Tools}
-\label{_ChapterStart9}
-\index[general]{Volume Utility Tools }
-\index[general]{Tools!Volume Utility }
-\addcontentsline{toc}{section}{Volume Utility Tools}
-
-This document describes the utility programs written to aid Bacula users and
-developers in dealing with Volumes external to Bacula.
-
-\subsection*{Specifying the Configuration File}
-\index[general]{Specifying the Configuration File }
-\addcontentsline{toc}{subsection}{Specifying the Configuration File}
-
-Starting with version 1.27, each of the following programs requires a valid
-Storage daemon configuration file (actually, the only part of the
-configuration file that these programs need is the {\bf Device} resource
-definitions). This permits the programs to find the configuration parameters
-for your archive device (generally a tape drive). By default, they read {\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 }
-\addcontentsline{toc}{subsection}{Specifying a Device Name For a Tape}
-
-Each of these programs require a {\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. For the program to
-work, it must find the identical name in the Device resource of the
-configuration file. See below for specifying Volume names.
-
-Please note that if you have Bacula running and you ant to use
-one of these programs, you will either need to stop the Storage daemon, or
-{\bf unmount} any tape drive you want to use, otherwise the drive
-will {\bf busy} because Bacula is using it.
-
-
-\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 }
-\addcontentsline{toc}{subsection}{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.
-
-
-\subsection*{Specifying Volumes}
-\index[general]{Volumes!Specifying }
-\index[general]{Specifying Volumes }
-\addcontentsline{toc}{subsection}{Specifying Volumes}
-
-In general, you must specify the Volume name to each of the programs below
-(with the exception of {\bf btape}). The best method to do so is to specify a
-{\bf bootstrap} file on the command line with the {\bf -b} option. As part of
-the bootstrap file, you will then specify the Volume name or Volume names if
-more than one volume is needed. For example, suppose you want to read tapes
-{\bf tape1} and {\bf tape2}. First construct a {\bf bootstrap} file named say,
-{\bf list.bsr} which contains:
-
-\footnotesize
-\begin{verbatim}
-Volume=test1|test2
-\end{verbatim}
-\normalsize
-
-where each Volume is separated by a vertical bar. Then simply use:
-
-\footnotesize
-\begin{verbatim}
-./bls -b list.bsr /dev/nst0
-\end{verbatim}
-\normalsize
-
-In the case of Bacula Volumes that are on files, you may simply append volumes
-as follows:
-
-\footnotesize
-\begin{verbatim}
-./bls /tmp/test1\|test2
-\end{verbatim}
-\normalsize
-
-where the backslash (\textbackslash{}) was necessary as a shell escape to
-permit entering the vertical bar (|).
-
-And finally, if you feel that specifying a Volume name is a bit complicated
-with a bootstrap file, you can use the {\bf -V} option (on all programs except
-{\bf bcopy}) to specify one or more Volume names separated by the vertical bar
-(|). For example,
-
-\footnotesize
-\begin{verbatim}
-./bls -V Vol001 /dev/nst0
-\end{verbatim}
-\normalsize
-
-You may also specify an asterisk (*) to indicate that the program should
-accept any volume. For example:
-
-\footnotesize
-\begin{verbatim}
-./bls -V* /dev/nst0
-\end{verbatim}
-\normalsize
-
-\subsection*{bls}
-\label{bls}
-\index[general]{bls }
-\addcontentsline{toc}{subsection}{bls}
-
-{\bf bls} can be used to do an {\bf ls} type listing of a {\bf Bacula} tape or
-file. It is called:
-
-\footnotesize
-\begin{verbatim}
-Usage: bls [options] <device-name>
- -b <file> specify a bootstrap file
- -c <file> specify a config file
- -d <level> specify debug level
- -e <file> exclude list
- -i <file> include list
- -j list jobs
- -k list blocks
- (no j or k option) list saved files
- -L dump label
- -p proceed inspite of errors
- -v be verbose
- -V specify Volume names (separated by |)
- -? print this message
-\end{verbatim}
-\normalsize
-
-For example, to list the contents of a tape:
-
-\footnotesize
-\begin{verbatim}
-./bls -V Volume-name /dev/nst0
-\end{verbatim}
-\normalsize
-
-Or to list the contents of a file:
-
-\footnotesize
-\begin{verbatim}
-./bls /tmp/Volume-name
-or
-./bls -V Volume-name /tmp
-\end{verbatim}
-\normalsize
-
-Note that, in the case of a file, the Volume name becomes the filename, so in
-the above example, you will replace the {\bf xxx} with the name of the volume
-(file) you wrote.
-
-Normally if no options are specified, {\bf bls} will produce the equivalent
-output to the {\bf ls -l} command for each file on the tape. Using other
-options listed above, it is possible to display only the Job records, only the
-tape blocks, etc. For example:
-
-\footnotesize
-\begin{verbatim}
-
-./bls /tmp/File002
-bls: butil.c:148 Using device: /tmp
-drwxrwxr-x 3 k k 4096 02-10-19 21:08 /home/kern/bacula/k/src/dird/
-drwxrwxr-x 2 k k 4096 02-10-10 18:59 /home/kern/bacula/k/src/dird/CVS/
--rw-rw-r-- 1 k k 54 02-07-06 18:02 /home/kern/bacula/k/src/dird/CVS/Root
--rw-rw-r-- 1 k k 16 02-07-06 18:02 /home/kern/bacula/k/src/dird/CVS/Repository
--rw-rw-r-- 1 k k 1783 02-10-10 18:59 /home/kern/bacula/k/src/dird/CVS/Entries
--rw-rw-r-- 1 k k 97506 02-10-18 21:07 /home/kern/bacula/k/src/dird/Makefile
--rw-r--r-- 1 k k 3513 02-10-18 21:02 /home/kern/bacula/k/src/dird/Makefile.in
--rw-rw-r-- 1 k k 4669 02-07-06 18:02 /home/kern/bacula/k/src/dird/README-config
--rw-r--r-- 1 k k 4391 02-09-14 16:51 /home/kern/bacula/k/src/dird/authenticate.c
--rw-r--r-- 1 k k 3609 02-07-07 16:41 /home/kern/bacula/k/src/dird/autoprune.c
--rw-rw-r-- 1 k k 4418 02-10-18 21:03 /home/kern/bacula/k/src/dird/bacula-dir.conf
-...
--rw-rw-r-- 1 k k 83 02-08-31 19:19 /home/kern/bacula/k/src/dird/.cvsignore
-bls: Got EOF on device /tmp
-84 files found.
-\end{verbatim}
-\normalsize
-
-\subsubsection*{Listing Jobs}
-\index[general]{Listing Jobs with bls }
-\index[general]{bls!Listing Jobs }
-\addcontentsline{toc}{subsubsection}{bls Listing Jobs}
-
-If you are listing a Volume to determine what Jobs to restore, normally the
-{\bf -j} option provides you with most of what you will need as long as you
-don't have multiple clients. For example,
-
-\footnotesize
-\begin{verbatim}
-./bls -j -V Test1 -c stored.conf DDS-4
-bls: butil.c:258 Using device: "DDS-4" for reading.
-11-Jul 11:54 bls: Ready to read from volume "Test1" on device "DDS-4" (/dev/nst0).
-Volume Record: File:blk=0:1 SessId=4 SessTime=1121074625 JobId=0 DataLen=165
-Begin Job Session Record: File:blk=0:2 SessId=4 SessTime=1121074625 JobId=1 Level=F Type=B
-Begin Job Session Record: File:blk=0:3 SessId=5 SessTime=1121074625 JobId=5 Level=F Type=B
-Begin Job Session Record: File:blk=0:6 SessId=3 SessTime=1121074625 JobId=2 Level=F Type=B
-Begin Job Session Record: File:blk=0:13 SessId=2 SessTime=1121074625 JobId=4 Level=F Type=B
-End Job Session Record: File:blk=0:99 SessId=3 SessTime=1121074625 JobId=2 Level=F Type=B
- Files=168 Bytes=1,732,978 Errors=0 Status=T
-End Job Session Record: File:blk=0:101 SessId=2 SessTime=1121074625 JobId=4 Level=F Type=B
- Files=168 Bytes=1,732,978 Errors=0 Status=T
-End Job Session Record: File:blk=0:108 SessId=5 SessTime=1121074625 JobId=5 Level=F Type=B
- Files=168 Bytes=1,732,978 Errors=0 Status=T
-End Job Session Record: File:blk=0:109 SessId=4 SessTime=1121074625 JobId=1 Level=F Type=B
- Files=168 Bytes=1,732,978 Errors=0 Status=T
-11-Jul 11:54 bls: End of Volume at file 1 on device "DDS-4" (/dev/nst0), Volume "Test1"
-11-Jul 11:54 bls: End of all volumes.
-\end{verbatim}
-\normalsize
-
-shows a full save followed by two incremental saves.
-
-Adding the {\bf -v} option will display virtually all information that is
-available for each record:
-
-\subsubsection*{Listing Blocks}
-\index[general]{Listing Blocks with bls }
-\index[general]{bls!Listing Blocks }
-\addcontentsline{toc}{subsubsection}{bls Listing Blocks}
-
-Normally, except for debugging purposes, you will not need to list Bacula
-blocks (the "primitive" unit of Bacula data on the Volume). However, you can
-do so with:
-
-\footnotesize
-\begin{verbatim}
-./bls -k /tmp/File002
-bls: butil.c:148 Using device: /tmp
-Block: 1 size=64512
-Block: 2 size=64512
-...
-Block: 65 size=64512
-Block: 66 size=19195
-bls: Got EOF on device /tmp
-End of File on device
-\end{verbatim}
-\normalsize
-
-By adding the {\bf -v} option, you can get more information, which can be
-useful in knowing what sessions were written to the volume:
-
-\footnotesize
-\begin{verbatim}
-./bls -k -v /tmp/File002
-Volume Label:
-Id : Bacula 0.9 mortal
-VerNo : 10
-VolName : File002
-PrevVolName :
-VolFile : 0
-LabelType : VOL_LABEL
-LabelSize : 147
-PoolName : Default
-MediaType : File
-PoolType : Backup
-HostName :
-Date label written: 2002-10-19 at 21:16
-Block: 1 blen=64512 First rec FI=VOL_LABEL SessId=1 SessTim=1035062102 Strm=0 rlen=147
-Block: 2 blen=64512 First rec FI=6 SessId=1 SessTim=1035062102 Strm=DATA rlen=4087
-Block: 3 blen=64512 First rec FI=12 SessId=1 SessTim=1035062102 Strm=DATA rlen=5902
-Block: 4 blen=64512 First rec FI=19 SessId=1 SessTim=1035062102 Strm=DATA rlen=28382
-...
-Block: 65 blen=64512 First rec FI=83 SessId=1 SessTim=1035062102 Strm=DATA rlen=1873
-Block: 66 blen=19195 First rec FI=83 SessId=1 SessTim=1035062102 Strm=DATA rlen=2973
-bls: Got EOF on device /tmp
-End of File on device
-\end{verbatim}
-\normalsize
-
-Armed with the SessionId and the SessionTime, you can extract just about
-anything.
-
-If you want to know even more, add a second {\bf -v} to the command line to
-get a dump of every record in every block.
-
-\footnotesize
-\begin{verbatim}
-./bls -k -v -v /tmp/File002
-bls: block.c:79 Dump block 80f8ad0: size=64512 BlkNum=1
- Hdrcksum=b1bdfd6d cksum=b1bdfd6d
-bls: block.c:92 Rec: VId=1 VT=1035062102 FI=VOL_LABEL Strm=0 len=147 p=80f8b40
-bls: block.c:92 Rec: VId=1 VT=1035062102 FI=SOS_LABEL Strm=-7 len=122 p=80f8be7
-bls: block.c:92 Rec: VId=1 VT=1035062102 FI=1 Strm=UATTR len=86 p=80f8c75
-bls: block.c:92 Rec: VId=1 VT=1035062102 FI=2 Strm=UATTR len=90 p=80f8cdf
-bls: block.c:92 Rec: VId=1 VT=1035062102 FI=3 Strm=UATTR len=92 p=80f8d4d
-bls: block.c:92 Rec: VId=1 VT=1035062102 FI=3 Strm=DATA len=54 p=80f8dbd
-bls: block.c:92 Rec: VId=1 VT=1035062102 FI=3 Strm=MD5 len=16 p=80f8e07
-bls: block.c:92 Rec: VId=1 VT=1035062102 FI=4 Strm=UATTR len=98 p=80f8e2b
-bls: block.c:92 Rec: VId=1 VT=1035062102 FI=4 Strm=DATA len=16 p=80f8ea1
-bls: block.c:92 Rec: VId=1 VT=1035062102 FI=4 Strm=MD5 len=16 p=80f8ec5
-bls: block.c:92 Rec: VId=1 VT=1035062102 FI=5 Strm=UATTR len=96 p=80f8ee9
-bls: block.c:92 Rec: VId=1 VT=1035062102 FI=5 Strm=DATA len=1783 p=80f8f5d
-bls: block.c:92 Rec: VId=1 VT=1035062102 FI=5 Strm=MD5 len=16 p=80f9668
-bls: block.c:92 Rec: VId=1 VT=1035062102 FI=6 Strm=UATTR len=95 p=80f968c
-bls: block.c:92 Rec: VId=1 VT=1035062102 FI=6 Strm=DATA len=32768 p=80f96ff
-bls: block.c:92 Rec: VId=1 VT=1035062102 FI=6 Strm=DATA len=32768 p=8101713
-bls: block.c:79 Dump block 80f8ad0: size=64512 BlkNum=2
- Hdrcksum=9acc1e7f cksum=9acc1e7f
-bls: block.c:92 Rec: VId=1 VT=1035062102 FI=6 Strm=contDATA len=4087 p=80f8b40
-bls: block.c:92 Rec: VId=1 VT=1035062102 FI=6 Strm=DATA len=31970 p=80f9b4b
-bls: block.c:92 Rec: VId=1 VT=1035062102 FI=6 Strm=MD5 len=16 p=8101841
-...
-\end{verbatim}
-\normalsize
-
-\subsection*{bextract}
-\label{bextract}
-\index[general]{Bextract }
-\addcontentsline{toc}{subsection}{bextract}
-
-Normally, you will restore files by running a {\bf Restore} Job from the {\bf
-Console} program. However, {\bf bextract} can be used to extract a single file
-or a list of files from a Bacula tape or file. In fact, {\bf bextract} can be
-a useful tool to restore files to an empty system assuming you are able to
-boot, you have statically linked {\bf bextract} and you have an appropriate
-{\bf bootstrap} file.
-
-It is called:
-
-\footnotesize
-\begin{verbatim}
-
-Usage: bextract [-d debug_level] <device-name> <directory-to-store-files>
- -b <file> specify a bootstrap file
- -dnn set debug level to nn
- -e <file> exclude list
- -i <file> include list
- -p proceed inspite of I/O errors
- -V specify Volume names (separated by |)
- -? print this message
-\end{verbatim}
-\normalsize
-
-where {\bf device-name} is the Archive Device (raw device name or full
-filename) of the device to be read, and {\bf directory-to-store-files} is a
-path prefix to prepend to all the files restored.
-
-NOTE: On Windows systems, if you specify a prefix of say d:/tmp, any file that
-would have been restored to {\bf c:/My Documents} will be restored to {\bf
-d:/tmp/My Documents}. That is, the original drive specification will be
-stripped. If no prefix is specified, the file will be restored to the original
-drive.
-
-\subsubsection*{Extracting with Include or Exclude Lists}
-\index[general]{Lists!Extracting with Include or Exclude }
-\index[general]{Extracting with Include or Exclude Lists }
-\addcontentsline{toc}{subsubsection}{Extracting with Include or Exclude Lists}
-
-Using the {\bf -e} option, you can specify a file containing a list of files
-to be excluded. Wildcards can be used in the exclusion list. This option will
-normally be used in conjunction with the {\bf -i} option (see below). Both the
-{\bf -e} and the {\bf -i} options may be specified at the same time as the
-{\bf -b} option. The bootstrap filters will be applied first, then the include
-list, then the exclude list.
-
-Likewise, and probably more importantly, with the {\bf -i} option, you can
-specify a file that contains a list (one file per line) of files and
-directories to include to be restored. The list must contain the full filename
-with the path. If you specify a path name only, all files and subdirectories
-of that path will be restored. If you specify a line containing only the
-filename (e.g. {\bf my-file.txt}) it probably will not be extracted because
-you have not specified the full path.
-
-For example, if the file {\bf include-list} contains:
-
-\footnotesize
-\begin{verbatim}
-/home/kern/bacula
-/usr/local/bin
-\end{verbatim}
-\normalsize
-
-Then the command:
-
-\footnotesize
-\begin{verbatim}
-./bextract -i include-list -V Volume /dev/nst0 /tmp
-\end{verbatim}
-\normalsize
-
-will restore from the Bacula archive {\bf /dev/nst0} all files and directories
-in the backup from {\bf /home/kern/bacula} and from {\bf /usr/local/bin}. The
-restored files will be placed in a file of the original name under the
-directory {\bf /tmp} (i.e. /tmp/home/kern/bacula/... and
-/tmp/usr/local/bin/...).
-
-\subsubsection*{Extracting With a Bootstrap File}
-\index[general]{File!Extracting With a Bootstrap }
-\index[general]{Extracting With a Bootstrap File }
-\addcontentsline{toc}{subsubsection}{Extracting With a Bootstrap File}
-
-The {\bf -b} option is used to specify a {\bf bootstrap} file containing the
-information needed to restore precisely the files you want. Specifying a {\bf
-bootstrap} file is optional but recommended because it gives you the most
-control over which files will be restored. For more details on the {\bf
-bootstrap} file, please see
-\ilink{Restoring Files with the Bootstrap File}{_ChapterStart43}
-chapter of this document. Note, you may also use a bootstrap file produced by
-the {\bf restore} command. For example:
-
-\footnotesize
-\begin{verbatim}
-./bextract -b bootstrap-file /dev/nst0 /tmp
-\end{verbatim}
-\normalsize
-
-The bootstrap file allows detailed specification of what files you want
-restored (extracted). You may specify a bootstrap file and include and/or
-exclude files at the same time. The bootstrap conditions will first be
-applied, and then each file record seen will be compared to the include and
-exclude lists.
-
-\subsubsection*{Extracting From Multiple Volumes}
-\index[general]{Volumes!Extracting From Multiple }
-\index[general]{Extracting From Multiple Volumes }
-\addcontentsline{toc}{subsubsection}{Extracting From Multiple Volumes}
-
-If you wish to extract files that span several Volumes, you can specify the
-Volume names in the bootstrap file or you may specify the Volume names on the
-command line by separating them with a vertical bar. See the section above
-under the {\bf bls} program entitled {\bf Listing Multiple Volumes} for more
-information. The same techniques apply equally well to the {\bf bextract}
-program.
-
-\subsection*{bscan}
-\label{bscan}
-\index[general]{bscan }
-\addcontentsline{toc}{subsection}{bscan}
-
-The {\bf bscan} program can be used to re-create a database (catalog) from the
-backup information written to one or more Volumes. This is normally needed
-only if one or more Volumes have been pruned or purged from your catalog so
-that the records on the Volume are no longer in the catalog.
-
-With some care, it can also be used to synchronize your existing catalog with
-a Volume. Although we have never seen a case of bscan damaging a
-catalog, since bscan modifies your catalog, we recommend that
-you do a simple ASCII backup of your database before running {\bf bscan} just
-to be sure. See
-\ilink{Compacting Your Database}{CompactingMySQL}.
-
-{\bf bscan} can also be useful in a disaster recovery situation, after the
-loss of a hard disk, if you do not have a valid {\bf bootstrap} file for
-reloading your system, or if a Volume has been recycled but not overwritten,
-you can use {\bf bscan} to re-create your database, which can then be used to
-{\bf restore} your system or a file to its previous state.
-
-It is called:
-
-\footnotesize
-\begin{verbatim}
-
-Usage: bscan [options] <bacula-archive>
- -b bootstrap specify a bootstrap file
- -c <file> specify configuration file
- -d <nn> set debug level to nn
- -m update media info in database
- -n <name> specify the database name (default bacula)
- -u <user> specify database user name (default bacula)
- -P <password> specify database password (default none)
- -h <host> specify database host (default NULL)
- -p proceed inspite of I/O errors
- -r list records
- -s synchronize or store in database
- -v verbose
- -V <Volumes> specify Volume names (separated by |)
- -w <dir> specify working directory (default from conf file)
- -? print this message
-\end{verbatim}
-\normalsize
-
-If you are using MySQL or PostgreSQL, there is no need to supply a working
-directory since in that case, bscan knows where the databases are. However, if
-you have provided security on your database, you may need to supply either the
-database name ({\bf -b} option), the user name ({\bf -u} option), and/or the
-password ({\bf -p}) options.
-
-As an example, let's suppose that you did a backup to Volumes "Vol001"
-and "Vol002", then sometime later all records of one or both those
-Volumes
-were pruned or purged from the
-database. By using {\bf bscan} you can recreate the catalog entries for
-those Volumes and then use the {\bf restore} command in the Console to restore
-whatever you want. A command something like:
-
-\footnotesize
-\begin{verbatim}
-bscan -c bacula-sd.conf -v -V Vol001\|Vol002 /dev/nst0
-\end{verbatim}
-\normalsize
-
-will give you an idea of what is going to happen without changing
-your catalog. Of course, you may need to change the path to the Storage
-daemon's conf file, the Volume name, and your tape (or disk) device name. This
-command must read the entire tape, so if it has a lot of data, it may take a
-long time, and thus you might want to immediately use the command listed
-below. Note, if you are writing to a disk file, replace the device name with
-the path to the directory that contains the Volumes. This must correspond to
-the Archive Device in the conf file.
-
-Then to actually write or store the records in the catalog, add the {\bf -s}
-option as follows:
-
-\footnotesize
-\begin{verbatim}
- bscan -s -m -c bacula-sd.conf -v -V Vol001\|Vol002 /dev/nst0
-\end{verbatim}
-\normalsize
-
-When writing to the database, if bscan finds existing records, it will
-generally either update them if something is wrong or leave them alone. Thus
-if the Volumes you are scanning are all or partially in the catalog already, no
-harm will be done to that existing data. Any missing data will simply be
-added.
-
-If you have multiple tapes, you should scan them with:
-
-\footnotesize
-\begin{verbatim}
- bscan -s -m -c bacula-sd.conf -v -V Vol001\|Vol002\|Vol003 /dev/nst0
-\end{verbatim}
-\normalsize
-
-You should, always try to specify the tapes in the order they are written.
-However, bscan can handle scanning tapes that are not sequential. Any
-incomplete records at the end of the tape will simply be ignored in that
-case. If you are simply reparing an existing catalog, this may be OK, but
-if you are creating a new catalog from scratch, it will leave your database
-in an incorrect state. If you do not specify all necessary Volumes on a
-single bscan command, bscan will not be able to correctly restore the
-records that span two volumes. In other words, it is much better to
-specify two or three volumes on a single bscan command rather than run
-bscan two or three times, each with a single volume.
-
-
-Note, the restoration process using bscan is not identical to the original
-creation of the catalog data. This is because certain non-essential data such
-as volume reads, volume mounts, etc is not stored on the Volume, and thus is
-not restored by bscan. The results of bscanning are, however, perfectly valid,
-and will permit restoration of any or all the files in the catalog using the
-normal Bacula console commands.
-
-\subsubsection*{Using bscan to Compare a Volume to an existing Catalog}
-\index[general]{Catalog!Using bscan to Compare a Volume to an existing }
-\index[general]{Using bscan to Compare a Volume to an existing Catalog }
-\addcontentsline{toc}{subsubsection}{Using bscan to Compare a Volume to an
-existing Catalog}
-
-If you wish to compare the contents of a Volume to an existing catalog without
-changing the catalog, you can safely do so if and only if you do {\bf not}
-specify either the {\bf -m} or the {\bf -s} options. However, at this time
-(Bacula version 1.26), the comparison routines are not as good or as thorough
-as they should be, so we don't particularly recommend this mode other than for
-testing.
-
-\subsubsection*{Using bscan to Recreate a Catalog from a Volume}
-\index[general]{Volume!Using bscan to Recreate a Catalog from a }
-\index[general]{Using bscan to Recreate a Catalog from a Volume }
-\addcontentsline{toc}{subsubsection}{Using bscan to Recreate a Catalog from a
-Volume}
-
-This is the mode for which {\bf bscan} is most useful. You can either {\bf
-bscan} into a freshly created catalog, or directly into your existing catalog
-(after having made an ASCII copy as described above). Normally, you should
-start with a freshly created catalog that contains no data.
-
-Starting with a single Volume named {\bf TestVolume1}, you run a command such
-as:
-
-\footnotesize
-\begin{verbatim}
-./bscan -V TestVolume1 -v -s -m -c bacula-sd.conf /dev/nst0
-\end{verbatim}
-\normalsize
-
-If there is more than one volume, simply append it to the first one separating
-it with a vertical bar. You may need to precede the vertical bar with a
-forward slash escape the shell -- e.g. {\bf
-TestVolume1\textbackslash{}|TestVolume2 }. The {\bf -v} option was added for
-verbose output (this can be omitted if desired). The {\bf -s} option that
-tells {\bf bscan} to store information in the database. The physical device
-name {\bf /dev/nst0} is specified after all the options.
-
-{\bf } For example, after having done a full backup of a directory, then two
-incrementals, I reinitialized the SQLite database as described above, and
-using the bootstrap.bsr file noted above, I entered the following command:
-
-\footnotesize
-\begin{verbatim}
-./bscan -b bootstrap.bsr -v -s -c bacula-sd.conf /dev/nst0
-\end{verbatim}
-\normalsize
-
-which produced the following output:
-
-\footnotesize
-\begin{verbatim}
-bscan: bscan.c:182 Using Database: bacula, User: bacula
-bscan: bscan.c:673 Created Pool record for Pool: Default
-bscan: bscan.c:271 Pool type "Backup" is OK.
-bscan: bscan.c:632 Created Media record for Volume: TestVolume1
-bscan: bscan.c:298 Media type "DDS-4" is OK.
-bscan: bscan.c:307 VOL_LABEL: OK for Volume: TestVolume1
-bscan: bscan.c:693 Created Client record for Client: Rufus
-bscan: bscan.c:769 Created new JobId=1 record for original JobId=2
-bscan: bscan.c:717 Created FileSet record "Kerns Files"
-bscan: bscan.c:819 Updated Job termination record for new JobId=1
-bscan: bscan.c:905 Created JobMedia record JobId 1, MediaId 1
-bscan: Got EOF on device /dev/nst0
-bscan: bscan.c:693 Created Client record for Client: Rufus
-bscan: bscan.c:769 Created new JobId=2 record for original JobId=3
-bscan: bscan.c:708 Fileset "Kerns Files" already exists.
-bscan: bscan.c:819 Updated Job termination record for new JobId=2
-bscan: bscan.c:905 Created JobMedia record JobId 2, MediaId 1
-bscan: Got EOF on device /dev/nst0
-bscan: bscan.c:693 Created Client record for Client: Rufus
-bscan: bscan.c:769 Created new JobId=3 record for original JobId=4
-bscan: bscan.c:708 Fileset "Kerns Files" already exists.
-bscan: bscan.c:819 Updated Job termination record for new JobId=3
-bscan: bscan.c:905 Created JobMedia record JobId 3, MediaId 1
-bscan: Got EOF on device /dev/nst0
-bscan: bscan.c:652 Updated Media record at end of Volume: TestVolume1
-bscan: bscan.c:428 End of Volume. VolFiles=3 VolBlocks=57 VolBytes=10,027,437
-\end{verbatim}
-\normalsize
-
-The key points to note are that {\bf bscan} prints a line when each major
-record is created. Due to the volume of output, it does not print a line for
-each file record unless you supply the {\bf -v} option twice or more on the
-command line.
-
-In the case of a Job record, the new JobId will not normally be the same as
-the original Jobid. For example, for the first JobId above, the new JobId is
-1, but the original JobId is 2. This is nothing to be concerned about as it is
-the normal nature of databases. {\bf bscan} will keep everything straight.
-
-Although {\bf bscan} claims that it created a Client record for Client: Rufus
-three times, it was actually only created the first time. This is normal.
-
-You will also notice that it read an end of file after each Job (Got EOF on
-device ...). Finally the last line gives the total statistics for the bscan.
-
-If you had added a second {\bf -v} option to the command line, Bacula would
-have been even more verbose, dumping virtually all the details of each Job
-record it encountered.
-
-Now if you start Bacula and enter a {\bf list jobs} command to the console
-program, you will get:
-
-\footnotesize
-\begin{verbatim}
-+-------+----------+------------------+------+-----+----------+----------+---------+
-| JobId | Name | StartTime | Type | Lvl | JobFiles | JobBytes | JobStat |
-+-------+----------+------------------+------+-----+----------+----------+---------+
-| 1 | kernsave | 2002-10-07 14:59 | B | F | 84 | 4180207 | T |
-| 2 | kernsave | 2002-10-07 15:00 | B | I | 15 | 2170314 | T |
-| 3 | kernsave | 2002-10-07 15:01 | B | I | 33 | 3662184 | T |
-+-------+----------+------------------+------+-----+----------+----------+---------+
-\end{verbatim}
-\normalsize
-
-which corresponds virtually identically with what the database contained
-before it was re-initialized and restored with bscan. All the Jobs and Files
-found on the tape are restored including most of the Media record. The Volume
-(Media) records restored will be marked as {\bf Full} so that they cannot be
-rewritten without operator intervention.
-
-It should be noted that {\bf bscan} cannot restore a database to the exact
-condition it was in previously because a lot of the less important information
-contained in the database is not saved to the tape. Nevertheless, the
-reconstruction is sufficiently complete, that you can run {\bf restore}
-against it and get valid results.
-
-\subsubsection*{Using bscan to Correct the Volume File Count}
-\index[general]{Using bscan to Correct the Volume File Count }
-\index[general]{Count!Using bscan to Correct the Volume File }
-\addcontentsline{toc}{subsubsection}{Using bscan to Correct the Volume File
-Count}
-
-If the Storage daemon crashes during a backup Job, the catalog will not be
-properly updated for the Volume being used at the time of the crash. This
-means that the Storage daemon will have written say 20 files on the tape, but
-the catalog record for the Volume indicates only 19 files.
-
-Bacula refuses to write on a tape that contains a different number of files
-from what is in the catalog. To correct this situation, you may run a {\bf
-bscan} with the {\bf -m} option (but {\bf without} the {\bf -s} option) to
-update only the final Media record for the Volumes read.
-
-\subsubsection*{After bscan}
-\index[general]{After bscan }
-\index[general]{Bscan!After }
-\addcontentsline{toc}{subsubsection}{After bscan}
-
-If you use {\bf bscan} to enter the contents of the Volume into an existing
-catalog, you should be aware that the records you entered may be immediately
-pruned during the next job, particularly if the Volume is very old or had been
-previously purged. To avoid this, after running {\bf bscan}, you can manually
-set the volume status (VolStatus) to {\bf Read-Only} by using the {\bf update}
-command in the catalog. This will allow you to restore from the volume without
-having it immediately purged. When you have restored and backed up the data,
-you can reset the VolStatus to {\bf Used} and the Volume will be purged from
-the catalog.
-
-\subsection*{bcopy}
-\label{bcopy}
-\index[general]{Bcopy }
-\addcontentsline{toc}{subsection}{bcopy}
-
-The {\bf bcopy} program can be used to copy one {\bf Bacula} archive file to
-another. For example, you may copy a tape to a file, a file to a tape, a file
-to a file, or a tape to a tape. For tape to tape, you will need two tape
-drives. (a later version is planned that will buffer it to disk). In the
-process of making the copy, no record of the information written to the new
-Volume is stored in the catalog. This means that the new Volume, though it
-contains valid backup data, cannot be accessed directly from existing catalog
-entries. If you wish to be able to use the Volume with the Console restore
-command, for example, you must first bscan the new Volume into the catalog.
-
-\subsubsection*{bcopy Command Options}
-\index[general]{Options!bcopy Command }
-\index[general]{Bcopy Command Options }
-\addcontentsline{toc}{subsubsection}{bcopy Command Options}
-
-\footnotesize
-\begin{verbatim}
-Usage: bcopy [-d debug_level] <input-archive> <output-archive>
- -b bootstrap specify a bootstrap file
- -c <file> specify configuration file
- -dnn set debug level to nn
- -i specify input Volume names (separated by |)
- -o specify output Volume names (separated by |)
- -p proceed inspite of I/O errors
- -v verbose
- -w dir specify working directory (default /tmp)
- -? print this message
-\end{verbatim}
-\normalsize
-
-By using a {\bf bootstrap} file, you can copy parts of a Bacula archive file
-to another archive.
-
-One of the objectives of this program is to be able to recover as much data as
-possible from a damaged tape. However, the current version does not yet have
-this feature.
-
-As this is a new program, any feedback on its use would be appreciated. In
-addition, I only have a single tape drive, so I have never been able to test
-this program with two tape drives.
-
-\subsection*{btape}
-\label{btape}
-\index[general]{Btape }
-\addcontentsline{toc}{subsection}{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 older 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 that
-the tape may contain 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 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 [-c config_file] [-d debug_level] [device_name]
- -c <file> set configuration file to file
- -dnn set debug level to nn
- -s turn off signals
- -t open the default tape device
- -? print this message.
-\end{verbatim}
-\normalsize
-
-\subsubsection*{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 }
-\addcontentsline{toc}{subsubsection}{Using btape to Verify your Tape Drive}
-
-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. Please see the
-\ilink{Tape Testing}{_ChapterStart27} Chapter of this manual for
-the details.
-
-\subsubsection*{btape Commands}
-\index[general]{Btape Commands }
-\index[general]{Commands!btape }
-\addcontentsline{toc}{subsubsection}{btape Commands}
-
-The full list of commands are:
-
-\footnotesize
-\begin{verbatim}
- Command Description
- ======= ===========
- bsf backspace file
- bsr backspace record
- cap list device capabilities
- clear clear tape errors
- eod go to end of Bacula data for append
- test General test Bacula tape functions
- eom go to the physical end of medium
- fill fill tape, write onto second volume
- unfill read filled tape
- fsf forward space a file
- fsr forward space a record
- help print this command
- label write a Bacula label to the tape
- load load a tape
- quit quit btape
- rd read tape
- readlabel read and print the Bacula tape label
- rectest test record handling functions
- rewind rewind the tape
- scan read tape block by block to EOT and report
- status print tape status
- test test a tape for compatibility with Bacula
- weof write an EOF on the tape
- wr write a single record of 2048 bytes
-\end{verbatim}
-\normalsize
-
-The most useful commands are:
-
-\begin{itemize}
-\item test -- test writing records and EOF marks and reading them back.
-\item fill -- completely fill a volume with records, then write a few records
- on a second volume, and finally, both volumes will be read back.
- This command writes blocks containing random data, so your drive will
- not be able to compress the data, and thus it is a good test of
- the real physical capacity of your tapes.
-\item readlabel -- read and dump the label on a Bacula tape.
-\item cap -- list the device capabilities as defined in the configuration
- file and as perceived by the Storage daemon.
- \end{itemize}
-
-The {\bf readlabel} command can be used to display the details of a Bacula
-tape label. This can be useful if the physical tape label was lost or damaged.
-
-
-In the event that you want to relabel a {\bf Bacula}, you can simply use the
-{\bf label} command which will write over any existing label. However, please
-note for labeling tapes, we recommend that you use the {\bf label} command in
-the {\bf Console} program since it will never overwrite a valid Bacula tape.
-
-\subsection*{Other Programs}
-\index[general]{Programs!Other }
-\index[general]{Other Programs }
-\addcontentsline{toc}{subsection}{Other Programs}
-
-The following programs are general utility programs and in general do not need
-a configuration file nor a device name.
-
-\subsection*{bsmtp}
-\label{bsmtp}
-\index[general]{Bsmtp }
-\addcontentsline{toc}{subsection}{bsmtp}
-
-{\bf bsmtp} is a simple mail transport program that permits more flexibility
-than the standard mail programs typically found on Unix systems. It can even
-be used on Windows machines.
-
-It is called:
-
-\footnotesize
-\begin{verbatim}
-Usage: bsmtp [-f from] [-h mailhost] [-s subject] [-c copy] [recipient ...]
- -c set the Cc: field
- -dnn set debug level to nn
- -f set the From: field
- -h use mailhost:port as the bsmtp server
- -s set the Subject: field
- -? print this message.
-\end{verbatim}
-\normalsize
-
-If the {\bf -f} option is not specified, {\bf bsmtp} will use your userid. If
-the option is not specified {\bf bsmtp} will use the value in the environment
-variable {\bf bsmtpSERVER} or if there is none {\bf localhost}. By default
-port 25 is used.
-
-{\bf recipients} is a space separated list of email recipients.
-
-The body of the email message is read from standard input.
-
-An example of the use of {\bf bsmtp} would be to put the following statement
-in the {\bf Messages} resource of your {\bf bacula-dir.conf} file. Note, these
-commands should appear on a single line each.
-
-\footnotesize
-\begin{verbatim}
- mailcommand = "/home/bacula/bin/bsmtp -h mail.domain.com -f \"\(Bacula\) %r\"
- -s \"Bacula: %t %e of %c %l\" %r"
- operatorcommand = "/home/bacula/bin/bsmtp -h mail.domain.com -f \"\(Bacula\) %r\"
- -s \"Bacula: Intervention needed for %j\" %r"
-\end{verbatim}
-\normalsize
-
-Where you replace {\bf /home/bacula/bin} with the path to your {\bf Bacula}
-binary directory, and you replace {\bf mail.domain.com} with the fully
-qualified name of your bsmtp (email) server, which normally listens on port
-25. For more details on the substitution characters (e.g. \%r) used in the
-above line, please see the documentation of the
-\ilink{ MailCommand in the Messages Resource}{mailcommand}
-chapter of this manual.
-
-It is HIGHLY recommended that you test one or two cases by hand to make sure
-that the {\bf mailhost} that you specified is correct and that it will accept
-your email requests. Since {\bf bsmtp} always uses a TCP connection rather
-than writing in the spool file, you may find that your {\bf from} address is
-being rejected because it does not contain a valid domain, or because your
-message is caught in your spam filtering rules. Generally, you should specify
-a fully qualified domain name in the {\bf from} field, and depending on
-whether your bsmtp gateway is Exim or Sendmail, you may need to modify the
-syntax of the from part of the message. Please test.
-
-When running {\bf bsmtp} by hand, you will need to terminate the message by
-entering a ctl-d in column 1 of the last line.
-
-\subsection*{dbcheck}
-\label{dbcheck}
-\index[general]{Dbcheck }
-\addcontentsline{toc}{subsection}{dbcheck}
-
-{\bf dbcheck} is a simple program that will search for inconsistencies in your
-database, and optionally fix them. The {\bf dbcheck} program can be found in
-the {\bf \lt{}bacula-source\gt{}/src/tools} directory of the source
-distribution. Though it is built with the make process, it is not normally
-"installed".
-
-It is called:
-
-\footnotesize
-\begin{verbatim}
-Usage: dbcheck [-c config] [-C catalog name] [-d debug_level] []
- -b batch mode
- -C catalog name in the director conf file
- -c director conf filename
- -dnn set debug level to nn
- -f fix inconsistencies
- -v verbose
- -? print this message
-\end{verbatim}
-\normalsize
-
-If the {\bf -c} option is given with the Director's conf file, there is no
-need to enter any of the command line arguments, in particular the working
-directory as dbcheck will read them from the file.
-
-If the {\bf -f} option is specified, {\bf dbcheck} will repair ({\bf fix}) the
-inconsistencies it finds. Otherwise, it will report only.
-
-If the {\bf -b} option is specified, {\bf dbcheck} will run in batch mode, and
-it will proceed to examine and fix (if -f is set) all programmed inconsistency
-checks. If the {\bf -b} option is not specified, {\bf dbcheck} will enter
-interactive mode and prompt with the following:
-
-\footnotesize
-\begin{verbatim}
-Hello, this is the database check/correct program.
-Please select the function you want to perform.
- 1) Toggle modify database flag
- 2) Toggle verbose flag
- 3) Repair bad Filename records
- 4) Repair bad Path records
- 5) Eliminate duplicate Filename records
- 6) Eliminate duplicate Path records
- 7) Eliminate orphaned Jobmedia records
- 8) Eliminate orphaned File records
- 9) Eliminate orphaned Path records
- 10) Eliminate orphaned Filename records
- 11) Eliminate orphaned FileSet records
- 12) Eliminate orphaned Client records
- 13) Eliminate orphaned Job records
- 14) Eliminate all Admin records
- 15) Eliminate all Restore records
- 16) All (3-15)
- 17) Quit
-Select function number:
-\end{verbatim}
-\normalsize
-
-By entering 1 or 2, you can toggle the modify database flag (-f option) and
-the verbose flag (-v). It can be helpful and reassuring to turn off the modify
-database flag, then select one or more of the consistency checks (items 3
-through 9) to see what will be done, then toggle the modify flag on and re-run
-the check.
-
-The inconsistencies examined are the following:
-
-\begin{itemize}
-\item Duplicate filename records. This can happen if you accidentally run two
- copies of Bacula at the same time, and they are both adding filenames
- simultaneously. It is a rare occurrence, but will create an inconsistent
-database. If this is the case, you will receive error messages during Jobs
-warning of duplicate database records. If you are not getting these error
-messages, there is no reason to run this check.
-\item Repair bad Filename records. This checks and corrects filenames that
- have a trailing slash. They should not.
-\item Repair bad Path records. This checks and corrects path names that do
- not have a trailing slash. They should.
-\item Duplicate path records. This can happen if you accidentally run two
- copies of Bacula at the same time, and they are both adding filenames
- simultaneously. It is a rare occurrence, but will create an inconsistent
-database. See the item above for why this occurs and how you know it is
-happening.
-\item Orphaned JobMedia records. This happens when a Job record is deleted
- (perhaps by a user issued SQL statement), but the corresponding JobMedia
- record (one for each Volume used in the Job) was not deleted. Normally, this
-should not happen, and even if it does, these records generally do not take
-much space in your database. However, by running this check, you can
-eliminate any such orphans.
-\item Orphaned File records. This happens when a Job record is deleted
- (perhaps by a user issued SQL statement), but the corresponding File record
- (one for each Volume used in the Job) was not deleted. Note, searching for
-these records can be {\bf very} time consuming (i.e. it may take hours) for a
-large database. Normally this should not happen as Bacula takes care to
-prevent it. Just the same, this check can remove any orphaned File records.
-It is recommended that you run this once a year since orphaned File records
-can take a large amount of space in your database.
-\item Orphaned Path records. This condition happens any time a directory is
- deleted from your system and all associated Job records have been purged.
- During standard purging (or pruning) of Job records, Bacula does not check
-for orphaned Path records. As a consequence, over a period of time, old
-unused Path records will tend to accumulate and use space in your database.
-This check will eliminate them. It is strongly recommended that you run this
-check at least once a year.
-\item Orphaned Filename records. This condition happens any time a file is
- deleted from your system and all associated Job records have been purged.
- This can happen quite frequently as there are quite a large number of files
-that are created and then deleted. In addition, if you do a system update or
-delete an entire directory, there can be a very large number of Filename
-records that remain in the catalog but are no longer used.
-
-During standard purging (or pruning) of Job records, Bacula does not check
-for orphaned Filename records. As a consequence, over a period of time, old
-unused Filename records will accumulate and use space in your database. This
-check will eliminate them. It is strongly recommended that you run this check
-at least once a year, and for large database (more than 200 Megabytes), it is
-probably better to run this once every 6 months.
-\item Orphaned Client records. These records can remain in the database long
- after you have removed a client.
-\item Orphaned Job records. If no client is defined for a job or you do not
- run a job for a long time, you can accumulate old job records. This option
- allow you to remove jobs that are not attached to any client (and thus
-useless).
-\item All Admin records. This command will remove all Admin records,
- regardless of their age.
-\item All Restore records. This command will remove all Restore records,
- regardless of their age.
- \end{itemize}
-
-\subsection*{testfind}
-\label{testfind}
-\index[general]{Testfind }
-\addcontentsline{toc}{subsection}{testfind}
-
-{\bf testfind} permits listing of files using the same search engine that is
-used for the {\bf Include} resource in Job resources. Note, much of the
-functionality of this program (listing of files to be included) is present in
-the
-\ilink{estimate command}{estimate} in the Console program.
-
-The original use of testfind was to ensure that Bacula's file search engine
-was correct and to print some statistics on file name and path length.
-However, you may find it useful to see what bacula would do with a given {\bf
-Include} resource. The {\bf testfind} program can be found in the {\bf
-\lt{}bacula-source\gt{}/src/tools} directory of the source distribution.
-Though it is built with the make process, it is not normally "installed".
-
-It is called:
-
-\footnotesize
-\begin{verbatim}
-Usage: testfind [-d debug_level] [-] [pattern1 ...]
- -a print extended attributes (Win32 debug)
- -dnn set debug level to nn
- - read pattern(s) from stdin
- -? print this message.
-Patterns are used for file inclusion -- normally directories.
-Debug level>= 1 prints each file found.
-Debug level>= 10 prints path/file for catalog.
-Errors are always printed.
-Files/paths truncated is a number with len> 255.
-Truncation is only in the catalog.
-\end{verbatim}
-\normalsize
-
-Where a pattern is any filename specification that is valid within an {\bf
-Include} resource definition. If none is specified, {\bf /} (the root
-directory) is assumed. For example:
-
-\footnotesize
-\begin{verbatim}
-./testfind /bin
-\end{verbatim}
-\normalsize
-
-Would print the following:
-
-\footnotesize
-\begin{verbatim}
-Dir: /bin
-Reg: /bin/bash
-Lnk: /bin/bash2 -> bash
-Lnk: /bin/sh -> bash
-Reg: /bin/cpio
-Reg: /bin/ed
-Lnk: /bin/red -> ed
-Reg: /bin/chgrp
-...
-Reg: /bin/ipcalc
-Reg: /bin/usleep
-Reg: /bin/aumix-minimal
-Reg: /bin/mt
-Lnka: /bin/gawk-3.1.0 -> /bin/gawk
-Reg: /bin/pgawk
-Total files : 85
-Max file length: 13
-Max path length: 5
-Files truncated: 0
-Paths truncated: 0
-\end{verbatim}
-\normalsize
-
-Even though {\bf testfind} uses the same search engine as {\bf Bacula}, each
-directory to be listed, must be entered as a separate command line entry or
-entered one line at a time to standard input if the {\bf -} option was
-specified.
-
-Specifying a debug level of one (i.e. {\bf -d1}) on the command line will
-cause {\bf testfind} to print the raw filenames without showing the Bacula
-internal file type, or the link (if any). Debug levels of 10 or greater cause
-the filename and the path to be separated using the same algorithm that is
-used when putting filenames into the Catalog database.
+++ /dev/null
-%%
-%%
-
-\section*{Bacula Projects}
-\label{_ChapterStart28}
-\index[general]{Projects!Bacula }
-\index[general]{Bacula Projects }
-\addcontentsline{toc}{section}{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 4 to 9 months.
-
-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 occassionally 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}.
+++ /dev/null
-#!/bin/sh
-sudo rm -f /mnt/matou/home/www/bacula/public/docs/html-manual-fr/*
-sudo cp -af bacula/ /mnt/matou/home/www/bacula/public/docs/html-manual-fr/
+++ /dev/null
-%%
-%%
-
-\section*{Python Scripting}
-\label{_ChapterStart60}
-\index[general]{Python Scripting}
-\index[general]{Scripting!Python}
-\addcontentsline{toc}{section}{Python Scripting}
-
-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.
-
-\subsection*{Python Configuration}
-\index[general]{Python Configuration}
-\index[general]{Configuration!Python}
-\addcontentsline{toc}{subsection}{Python Configuration}
-
-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}.
-
-\subsection*{Bacula Events}
-\index[general]{Bacula Events}
-\index[general]{Events}
-\addcontentsline{toc}{subsection}{Bacula 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.
-
-\subsection*{Python Objects}
-\index[general]{Python Objects}
-\index[general]{Objects!Python}
-\addcontentsline{toc}{subsection}{Python Objects}
-
-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[dir]{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} obbject 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 instantation 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}
-
-\subsection*{Python Console Command}
-\index[general]{Python Console Command}
-\index[general]{Console Command!Python}
-\addcontentsline{toc}{subsection}{Python Console Command}
-
-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.
-
-\subsection*{Debugging Python Scripts}
-\index[general]{Debugging Python Scripts}
-\addcontentsline{toc}{subsection}{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.
-
-
-
-
-
-\subsection*{Python Example}
-\index[general]{Python Example}
-\index[general]{Example!Python}
-\addcontentsline{toc}{subsection}{Python Example}
-
-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:
- 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:
- def __init__(self):
- # Called here when you instantiate the Job. Not
- # normally used
- noop = 1
-
- def JobInit:
- # Called when the job is first scheduled
- noop = 1
-
- def JobRun:
- # 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
- volname = "TestA-001"
- job.JobReport = "JobId=%d Client=%s NumVols=%d VolumeName=%s" % (jobid, client, numvol,volname)
- job.JobReport="Python before New Volume set for Job.\n"
- job.VolumeName=volname
-
- def VolumePurged(self, job):
- # Called when a Volume is purged. The Volume name can be referenced
- # with job.VolumeName
- noop = 1
-
-
-
-\end{verbatim}
-\normalsize
+++ /dev/null
-%%
-%%
-
-\section*{D\'emarrer avec Bacula}
-\label{_ChapterStart37}
-\index[general]{Bacula!D\'emarrer avec }
-\index[general]{D\'emarrer avec Bacula }
-\addcontentsline{toc}{section}{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}
-\subsection*{Comprendre les Jobs et Schedules}
-\index[general]{Jobs!Comprendre}
-\index[general]{Schedules!Comprendre}
-\addcontentsline{toc}{subsection}{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}
-
-\subsection*{Comprendre les Pools, Volumes et Labels}
-\index[general]{Comprendre les Pools, Volumes et Labels }
-\index[general]{Labels!Comprendre les Pools Volumes et }
-\addcontentsline{toc}{subsection}{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.
-
-\subsection*{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}{subsection}{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.
-
-\subsubsection*{
-\ilink{Configurer le programme Console}{_ChapterStart36}}
-\index[general]{Console!Configurer le programme }
-\index[general]{Configurer le programme Console }
-\addcontentsline{toc}{subsubsection}{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.
-
-\subsubsection*{
-\ilink{Configurer le programme Monitor}{_ChapterStart35}}
-\index[general]{Monitor!Configurer le programme }
-\index[general]{Configurer le programme Monitor }
-\addcontentsline{toc}{subsubsection}{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.
-
-\subsubsection*{
-\ilink{Configurer le File Daemon}{_ChapterStart25}}
-\index[general]{Configurer le File Daemon }
-\index[general]{Daemon!Configurer le File }
-\addcontentsline{toc}{subsubsection}{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.
-
-\subsubsection*{
-\ilink{Configurer le Director}{_ChapterStart40}}
-\index[general]{Director!Configurer le }
-\index[general]{Configurer le Director }
-\addcontentsline{toc}{subsubsection}{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.
-
-\subsubsection*{
-\ilink{Configurer le Storage Daemon}{_ChapterStart31}}
-\index[general]{Daemon!Configurer le Storage }
-\index[general]{Configurer le Storage Daemon }
-\addcontentsline{toc}{subsubsection}{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}
-
-\subsection*{Tester vos Fichiers de Configuration}
-\index[general]{Configuration!Tester vos Fichiers de }
-\index[general]{Tester vos Fichiers de Configuration }
-\addcontentsline{toc}{subsection}{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 <installation-directory>
-./bacula-dir -t -c bacula-dir.conf
-./bacula-fd -t -c bacula-fd.conf
-./bacula-sd -t -c bacula-sd.conf
-./bconsole -t -c bconsole.conf
-./gnome-console -t -c gnome-console.conf
-./bwx-console -t -c wx-console.conf
-su <normal user> -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}
-
-\subsection*{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}{subsection}{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}
-
-\subsection*{D\'ebarrassez-vous du r\'epertoire /lib/tls}
-\index[general]{D\'ebarrassez-vous du r\'epertoire /lib/tls }
-\addcontentsline{toc}{subsection}{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}
-
-\subsection*{Ex\'ecuter Bacula}
-\index[general]{Bacula!Ex\'ecuter }
-\index[general]{Ex\'ecuter Bacula }
-\addcontentsline{toc}{subsection}{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.
-
-\subsection*{Rotation des logs}
-\index[general]{Logs!Rotation des }
-\index[general]{Rotation des logs }
-\addcontentsline{toc}{subsection}{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.
-
-\subsection*{Log Watch}
-\index[general]{Watch!Log}
-\index[general]{Log Watch}
-\addcontentsline{toc}{subsection}{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.
-
-\subsection*{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}{subsection}{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.
+++ /dev/null
-%%
-%%
-
-\section*{Automatic Volume Recycling}
-\label{_ChapterStart22}
-\index[general]{Recycling!Automatic Volume }
-\index[general]{Automatic Volume Recycling }
-\addcontentsline{toc}{section}{Automatic Volume Recycling}
-
-By default, once Bacula starts writing a Volume, it can
-append to the volume, but it will not overwrite the existing
-data thus destroying it.
-However when Bacula {\bf recycles} a Volume, the Volume becomes
-available for being reused, and Bacula can at some later time
-over write the previous contents of that Volume.
-Thus all previous data will be lost. If the Volume is a tape,
-the tape will be rewritten from the beginning. If the Volume is
-a disk file, the file will be truncated before being rewritten.
-
-You may not want Bacula to automatically recycle (reuse) tapes. This would
-require a large number of tapes though, and in such a case, it is possible
-to manually recycle tapes. For more on manual recycling, see the section
-entitled \ilink{ Manually Recycling Volumes}{manualrecycling} below in this
-chapter.
-
-Most people prefer to have a Pool of tapes that are used for daily backups and
-recycled once a week, another Pool of tapes that are used for Full backups
-once a week and recycled monthly, and finally a Pool of tapes that are used
-once a month and recycled after a year or two. With a scheme like this, the
-number of tapes in your pool or pools remains constant.
-
-By properly defining your Volume Pools with appropriate Retention periods,
-Bacula can manage the recycling (such as defined above) automatically.
-
-Automatic recycling of Volumes is controlled by three records in the {\bf
-Pool} resource definition in the Director's configuration file. These three
-records are:
-
-\begin{itemize}
-\item AutoPrune = yes
-\item VolumeRetention = \lt{}time\gt{}
-\item Recycle = yes
- \end{itemize}
-
-Automatic recycling of Volumes is performed by Bacula only when it wants a
-new Volume and no appendable Volumes are available in the Pool. It will then
-search the Pool for any Volumes with the {\bf Recycle} flag set and whose
-Volume Status is {\bf Full}. At that point, the recycling occurs in two steps.
-The first is that the Catalog for a Volume must be purged of all Jobs and
-Files contained on that Volume, and the second step is the actual recycling of
-the Volume. The Volume will be purged if the VolumeRetention period has
-expired. When a Volume is marked as Purged, it means that no Catalog records
-reference that Volume, and the Volume can be recycled. Until recycling
-actually occurs, the Volume data remains intact. If no Volumes can be found
-for recycling for any of the reasons stated above, Bacula will request
-operator intervention (i.e. it will ask you to label a new volume).
-
-A key point mentioned above, that can be a source of frustration, is that Bacula
-will only recycle purged Volumes if there is no other appendable Volume
-available, otherwise, it will always write to an appendable Volume before
-recycling even if there are Volume marked as Purged. This preserves your data
-as long as possible. So, if you wish to "force" Bacula to use a purged
-Volume, you must first ensure that no other Volume in the Pool is marked {\bf
-Append}. If necessary, you can manually set a volume to {\bf Full}. The reason
-for this is that Bacula wants to preserve the data on your old tapes (even
-though purged from the catalog) as long as absolutely possible before
-overwriting it.
-
-\label{AutoPruning}
-\subsection*{Automatic Pruning}
-\index[general]{Automatic Pruning }
-\index[general]{Pruning!Automatic }
-\addcontentsline{toc}{subsection}{Automatic Pruning}
-
-As Bacula writes files to tape, it keeps a list of files, jobs, and volumes in
-a database called the catalog. Among other things, the database helps Bacula
-to decide which files to back up in an incremental or differential backup, and
-helps you locate files on past backups when you want to restore something.
-However, the catalog will grow larger and larger as time goes on, and
-eventually it can become unacceptably large.
-
-Bacula's process for removing entries from the catalog is called Pruning. The
-default is Automatic Pruning, which means that once an entry reaches a certain
-age (e.g. 30 days old) it is removed from the catalog. Once a job has been
-pruned, you can still restore it from the backup tape, but one additional step
-is required: scanning the volume with bscan. The alternative to Automatic
-Pruning is Manual Pruning, in which you explicitly tell Bacula to erase the
-catalog entries for a volume. You'd usually do this when you want to reuse a
-Bacula volume, because there's no point in keeping a list of files that USED
-TO BE on a tape. Or, if the catalog is starting to get too big, you could
-prune the oldest jobs to save space. Manual pruning is done with the
-\ilink{ prune command}{ManualPruning} in the console. (thanks to
-Bryce Denney for the above explanation).
-
-\subsection*{Prunning Directives}
-\index[general]{Prunning Directives }
-\index[general]{Directives!Prunning }
-\addcontentsline{toc}{subsection}{Prunning Directives}
-
-There are three pruning durations. All apply to catalog database records and
-not to the actual data in a Volume. The pruning (or retention) durations are
-for: Volumes (Media records), Jobs (Job records), and Files (File records).
-The durations inter-depend a bit because if Bacula prunes a Volume, it
-automatically removes all the Job records, and all the File records. Also when
-a Job record is pruned, all the File records for that Job are also pruned
-(deleted) from the catalog.
-
-Having the File records in the database means that you can examine all the
-files backed up for a particular Job. They take the most space in the catalog
-(probably 90-95\% of the total). When the File records are pruned, the Job
-records can remain, and you can still examine what Jobs ran, but not the
-details of the Files backed up. In addition, without the File records, you
-cannot use the Console restore command to restore the files.
-
-When a Job record is pruned, the Volume (Media record) for that Job can still
-remain in the database, and if you do a "list volumes", you will see the
-volume information, but the Job records (and its File records) will no longer
-be available.
-
-In each case, pruning removes information about where older files are, but it
-also prevents the catalog from growing to be too large. You choose the
-retention periods in function of how many files you are backing up and the
-time periods you want to keep those records online, and the size of the
-database. You can always re-insert the records (with 98\% of the original data)
-by using "bscan" to scan in a whole Volume or any part of the volume that
-you want.
-
-By setting {\bf AutoPrune} to {\bf yes} you will permit {\bf Bacula} to
-automatically prune all Volumes in the Pool when a Job needs another Volume.
-Volume pruning means removing records from the catalog. It does not shrink the
-size of the Volume or affect the Volume data until the Volume gets
-overwritten. When a Job requests another volume and there are no Volumes with
-Volume Status {\bf Append} available, Bacula will begin volume pruning. This
-means that all Jobs that are older than the {\bf VolumeRetention} period will
-be pruned from every Volume that has Volume Status {\bf Full} or {\bf Used}
-and has Recycle set to {\bf yes}. Pruning consists of deleting the
-corresponding Job, File, and JobMedia records from the catalog database. No
-change to the physical data on the Volume occurs during the pruning process.
-When all files are pruned from a Volume (i.e. no records in the catalog), the
-Volume will be marked as {\bf Purged} implying that no Jobs remain on the
-volume. The Pool records that control the pruning are described below.
-
-\begin{description}
-
-\item [AutoPrune = \lt{}yes|no\gt{}]
- \index[console]{AutoPrune }
- If AutoPrune is set to {\bf yes} (default), Bacula
- will automatically apply the Volume retention period when running a Job and
- it needs a new Volume but no appendable volumes are available. At that point,
- Bacula will prune all Volumes that can be pruned (i.e. AutoPrune set) in an
- attempt to find a usable volume. If during the autoprune, all files are
- pruned from the Volume, it will be marked with VolStatus {\bf Purged}. The
- default is {\bf yes}. Note, that although the File and Job records may be
- pruned from the catalog, a Volume will be marked Purged (and hence
- ready for recycling) if the Volume status is Append, Full, Used, or Error.
- If the Volume has another status, such as Archive, Read-Only, Disabled,
- Busy, or Cleaning, the Volume status will not be changed to Purged.
-
-\item [Volume Retention = \lt{}time-period-specification\gt{}]
- \index[console]{Volume Retention }
- The Volume Retention record defines the length of time that Bacula will
- guarantee that the Volume is not reused counting from the time the last job
- stored on the Volume terminated.
-
- When this time period expires, and if {\bf AutoPrune} is set to {\bf yes},
- and a new Volume is needed, but no appendable Volume is available, Bacula
- will prune (remove) Job records that are older than the specified Volume
- Retention period.
-
- The Volume Retention period takes precedence over any Job Retention period
- you have specified in the Client resource. It should also be noted, that the
- Volume Retention period is obtained by reading the Catalog Database Media
- record rather than the Pool resource record. This means that if you change
- the VolumeRetention in the Pool resource record, you must ensure that the
- corresponding change is made in the catalog by using the {\bf update pool}
- command. Doing so will insure that any new Volumes will be created with the
- changed Volume Retention period. Any existing Volumes will have their own
- copy of the Volume Retention period that can only be changed on a Volume by
- Volume basis using the {\bf update volume} command.
-
- When all file catalog entries are removed from the volume, its VolStatus is
- set to {\bf Purged}. The files remain physically on the Volume until the
- volume is overwritten.
-
- Retention periods are specified in seconds, minutes, hours, days, weeks,
- months, quarters, or years on the record. See the
- \ilink{Configuration chapter}{Time} of this manual for
- additional details of time specification.
-
-The default is 1 year.
-
-\item [Recycle = \lt{}yes|no\gt{}]
- \index[fd]{Recycle }
- This statement tells Bacula whether or not the particular Volume can be
- recycled (i.e. rewritten). If Recycle is set to {\bf no} (the default), then
- even if Bacula prunes all the Jobs on the volume and it is marked {\bf
- Purged}, it will not consider the tape for recycling. If Recycle is set to
- {\bf yes} and all Jobs have been pruned, the volume status will be set to
- {\bf Purged} and the volume may then be reused when another volume is needed.
- If the volume is reused, it is relabeled with the same Volume Name, however
- all previous data will be lost.
- \end{description}
-
- It is also possible to "force" pruning of all Volumes in the Pool
- associated with a Job by adding {\bf Prune Files = yes} to the Job resource.
-
-\label{Recycling}
-\subsection*{Recycling Algorithm}
-\index[general]{Algorithm!Recycling }
-\index[general]{Recycling Algorithm }
-\addcontentsline{toc}{subsection}{Recycling Algorithm}
-
-After all Volumes of a Pool have been pruned (as mentioned above, this happens
-when a Job needs a new Volume and no appendable Volumes are available), Bacula
-will look for the oldest Volume that is Purged (all Jobs and Files expired),
-and if the {\bf Recycle} flag is on (Recycle=yes) for that Volume, Bacula will
-relabel it and write new data on it.
-
-The full algorithm that Bacula uses when it needs a new Volume is:
-
-\begin{itemize}
-\item Search the Pool for a Volume with VolStatus=Append (if there is more
- than one, the Volume with the oldest date last written is chosen. If
- two have the same date then the one with the lowest MediaId is chosen).
-\item Search the Pool for a Volume with VolStatus=Recycle and the InChanger
- flag is set true (if there is more than one, the Volume with the oldest
- date last written is chosen. If two have the same date then the one
- with the lowest MediaId is chosen).
-\item Try recycling any purged Volumes.
-\item Prune volumes applying Volume retention period (Volumes with VolStatus
- Full, Used, or Append are pruned).
-\item Search the Pool for a Volume with VolStatus=Purged
-\item If InChanger was set, go back to the first step above, but
- this second time, ignore the InChanger flag in step 2.
-\item Attempt to create a new Volume if automatic labeling enabled
- If Python is enabled, a Python NewVolume even is generated before
- the Label Format check is used.
-\item If a Pool named "Scratch" exists, search for a Volume and if found
- move it to the current Pool for the Job and use it.
-\item Prune the oldest Volume if RecycleOldestVolume=yes (the Volume with the
- oldest LastWritten date and VolStatus equal to Full, Recycle, Purged, Used,
- or Append is chosen). This record ensures that all retention periods are
- properly respected.
-\item Purge the oldest Volume if PurgeOldestVolume=yes (the Volume with the
- oldest LastWritten date and VolStatus equal to Full, Recycle, Purged, Used,
- or Append is chosen). We strongly recommend against the use of {\bf
- PurgeOldestVolume} as it can quite easily lead to loss of current backup
- data.
-\item Give up and ask operator.
-\end{itemize}
-
-The above occurs when Bacula has finished writing a Volume or when no Volume
-is present in the drive.
-
-On the other hand, if you have inserted a different Volume after the last job,
-and Bacula recognizes the Volume as valid, it will request authorization from
-the Director to use this Volume. In this case, if you have set {\bf Recycle
-Current Volume = yes} and the Volume is marked as Used or Full, Bacula will
-prune the volume and if all jobs were removed during the pruning (respecting
-the retention periods), the Volume will be recycled and used.
-The recycling algorithm in this case is:
-
-\begin{itemize}
-\item If the VolStatus is {\bf Append} or {\bf Recycle} and {\bf Accept Any
- Volume} is set, the volume will be used.
-\item If {\bf Recycle Current Volume} is set and the volume is marked {\bf
- Full} or {\bf Used}, Bacula will prune the volume (applying the retention
- period). If all Jobs are pruned from the volume, it will be recycled.
-\end{itemize}
-
-This permits users to manually change the Volume every day and load tapes in
-an order different from what is in the catalog, and if the volume does not
-contain a current copy of your backup data, it will be used.
-
-\subsection*{Recycle Status}
-\index[general]{Status!Recycle }
-\index[general]{Recycle Status }
-\addcontentsline{toc}{subsection}{Recycle Status}
-
-Each Volume inherits the Recycle status (yes or no) from the Pool resource
-record when the Media record is created (normally when the Volume is labeled).
-This Recycle status is stored in the Media record of the Catalog. Using
-the Console program, you may subsequently change the Recycle status for each
-Volume. For example in the following output from {\bf list volumes}:
-
-\footnotesize
-\begin{verbatim}
-+----------+-------+--------+---------+------------+--------+-----+
-| VolumeNa | Media | VolSta | VolByte | LastWritte | VolRet | Rec |
-+----------+-------+--------+---------+------------+--------+-----+
-| File0001 | File | Full | 4190055 | 2002-05-25 | 14400 | 1 |
-| File0002 | File | Full | 1896460 | 2002-05-26 | 14400 | 1 |
-| File0003 | File | Full | 1896460 | 2002-05-26 | 14400 | 1 |
-| File0004 | File | Full | 1896460 | 2002-05-26 | 14400 | 1 |
-| File0005 | File | Full | 1896460 | 2002-05-26 | 14400 | 1 |
-| File0006 | File | Full | 1896460 | 2002-05-26 | 14400 | 1 |
-| File0007 | File | Purged | 1896466 | 2002-05-26 | 14400 | 1 |
-+----------+-------+--------+---------+------------+--------+-----+
-\end{verbatim}
-\normalsize
-
-all the volumes are marked as recyclable, and the last Volume, {\bf File0007}
-has been purged, so it may be immediately recycled. The other volumes are all
-marked recyclable and when their Volume Retention period (14400 seconds or 4
-hours) expires, they will be eligible for pruning, and possibly recycling.
-Even though Volume {\bf File0007} has been purged, all the data on the Volume
-is still recoverable. A purged Volume simply means that there are no entries
-in the Catalog. Even if the Volume Status is changed to {\bf Recycle}, the
-data on the Volume will be recoverable. The data is lost only when the Volume
-is re-labeled and re-written.
-
-To modify Volume {\bf File0001} so that it cannot be recycled, you use the
-{\bf update volume pool=File} command in the console program, or simply {\bf
-update} and Bacula will prompt you for the information.
-
-\footnotesize
-\begin{verbatim}
-+----------+------+-------+---------+-------------+-------+-----+
-| VolumeNa | Media| VolSta| VolByte | LastWritten | VolRet| Rec |
-+----------+------+-------+---------+-------------+-------+-----+
-| File0001 | File | Full | 4190055 | 2002-05-25 | 14400 | 0 |
-| File0002 | File | Full | 1897236 | 2002-05-26 | 14400 | 1 |
-| File0003 | File | Full | 1896460 | 2002-05-26 | 14400 | 1 |
-| File0004 | File | Full | 1896460 | 2002-05-26 | 14400 | 1 |
-| File0005 | File | Full | 1896460 | 2002-05-26 | 14400 | 1 |
-| File0006 | File | Full | 1896460 | 2002-05-26 | 14400 | 1 |
-| File0007 | File | Purged| 1896466 | 2002-05-26 | 14400 | 1 |
-+----------+------+-------+---------+-------------+-------+-----+
-\end{verbatim}
-\normalsize
-
-In this case, {\bf File0001} will never be automatically recycled. The same
-effect can be achieved by setting the Volume Status to Read-Only.
-
-\subsection*{Making Bacula Use a Single Tape}
-\label{singletape}
-\index[general]{Tape!Making Bacula Use a Single }
-\index[general]{Making Bacula Use a Single Tape }
-\addcontentsline{toc}{subsection}{Making Bacula Use a Single Tape}
-
-Most people will want Bacula to fill a tape and when it is full, a new tape
-will be mounted, and so on. However, as an extreme example, it is possible for
-Bacula to write on a single tape, and every night to rewrite it. To get this
-to work, you must do two things: first, set the VolumeRetention to less than
-your save period (one day), and the second item is to make Bacula mark the
-tape as full after using it once. This is done using {\bf UseVolumeOnce =
-yes}. If this latter record is not used and the tape is not full after the
-first time it is written, Bacula will simply append to the tape and eventually
-request another volume. Using the tape only once, forces the tape to be marked
-{\bf Full} after each use, and the next time {\bf Bacula} runs, it will
-recycle the tape.
-
-An example Pool resource that does this is:
-
-\footnotesize
-\begin{verbatim}
-Pool {
- Name = DDS-4
- Use Volume Once = yes
- Pool Type = Backup
- AutoPrune = yes
- VolumeRetention = 12h # expire after 12 hours
- Recycle = yes
-}
-\end{verbatim}
-\normalsize
-
-\subsection*{A Daily, Weekly, Monthly Tape Usage Example}
-\label{usageexample}
-\index[general]{Daily, Weekly, Monthly Tape Usage Example }
-\index[general]{Example!Daily Weekly Monthly Tape Usage }
-\addcontentsline{toc}{subsection}{Daily, Weekly, Monthly Tape Usage Example}
-
-This example is meant to show you how one could define a fixed set of volumes
-that Bacula will rotate through on a regular schedule. There are an infinite
-number of such schemes, all of which have various advantages and
-disadvantages.
-
-We start with the following assumptions:
-
-\begin{itemize}
-\item A single tape has more than enough capacity to do a full save.
-\item There are 10 tapes that are used on a daily basis for incremental
- backups. They are prelabeled Daily1 ... Daily10.
-\item There are 4 tapes that are used on a weekly basis for full backups.
- They are labeled Week1 ... Week4.
-\item There are 12 tapes that are used on a monthly basis for full backups.
- They are numbered Month1 ... Month12
-\item A full backup is done every Saturday evening (tape inserted Friday
- evening before leaving work).
-\item No backups are done over the weekend (this is easy to change).
-\item The first Friday of each month, a Monthly tape is used for the Full
- backup.
-\item Incremental backups are done Monday - Friday (actually Tue-Fri
- mornings).
- \end{itemize}
-
-We start the system by doing a Full save to one of the weekly volumes or one
-of the monthly volumes. The next morning, we remove the tape and insert a
-Daily tape. Friday evening, we remove the Daily tape and insert the next tape
-in the Weekly series. Monday, we remove the Weekly tape and re-insert the
-Daily tape. On the first Friday of the next month, we insert the next Monthly
-tape in the series rather than a Weekly tape, then continue. When a Daily tape
-finally fills up, {\bf Bacula} will request the next one in the series, and
-the next day when you notice the email message, you will mount it and {\bf
-Bacula} will finish the unfinished incremental backup.
-
-What does this give? Well, at any point, you will have the last complete
-Full save plus several Incremental saves. For any given file you want to
-recover (or your whole system), you will have a copy of that file every day
-for at least the last 14 days. For older versions, you will have at least 3
-and probably 4 Friday full saves of that file, and going back further, you
-will have a copy of that file made on the beginning of the month for at least
-a year.
-
-So you have copies of any file (or your whole system) for at least a year, but
-as you go back in time, the time between copies increases from daily to weekly
-to monthly.
-
-What would the Bacula configuration look like to implement such a scheme?
-
-\footnotesize
-\begin{verbatim}
-Schedule {
- Name = "NightlySave"
- Run = Level=Full Pool=Monthly 1st sat at 03:05
- Run = Level=Full Pool=Weekly 2nd-5th sat at 03:05
- Run = Level=Incremental Pool=Daily tue-fri at 03:05
-}
-Job {
- Name = "NightlySave"
- Type = Backup
- Level = Full
- Client = LocalMachine
- FileSet = "File Set"
- Messages = Standard
- Storage = DDS-4
- Pool = Daily
- Schedule = "NightlySave"
-}
-# Definition of file storage device
-Storage {
- Name = DDS-4
- Address = localhost
- SDPort = 9103
- Password = XXXXXXXXXXXXX
- Device = FileStorage
- Media Type = 8mm
-}
-FileSet {
- Name = "File Set"
- Include = signature=MD5 {
- fffffffffffffffff
- }
- Exclude = { *.o }
-}
-Pool {
- Name = Daily
- Pool Type = Backup
- AutoPrune = yes
- VolumeRetention = 10d # recycle in 10 days
- Maximum Volumes = 10
- Recycle = yes
-}
-Pool {
- Name = Weekly
- Use Volume Once = yes
- Pool Type = Backup
- AutoPrune = yes
- VolumeRetention = 30d # recycle in 30 days (default)
- Recycle = yes
-}
-Pool {
- Name = Monthly
- Use Volume Once = yes
- Pool Type = Backup
- AutoPrune = yes
- VolumeRetention = 365d # recycle in 1 year
- Recycle = yes
-}
-\end{verbatim}
-\normalsize
-
-\subsection*{ Automatic Pruning and Recycling Example}
-\label{PruningExample}
-\index[general]{Automatic Pruning and Recycling Example }
-\index[general]{Example!Automatic Pruning and Recycling }
-\addcontentsline{toc}{subsection}{Automatic Pruning and Recycling Example}
-
-Perhaps the best way to understand the various resource records that come into
-play during automatic pruning and recycling is to run a Job that goes through
-the whole cycle. If you add the following resources to your Director's
-configuration file:
-
-\footnotesize
-\begin{verbatim}
-Schedule {
- Name = "30 minute cycle"
- Run = Level=Full Pool=File Messages=Standard Storage=File
- hourly at 0:05
- Run = Level=Full Pool=File Messages=Standard Storage=File
- hourly at 0:35
-}
-Job {
- Name = "Filetest"
- Type = Backup
- Level = Full
- Client=XXXXXXXXXX
- FileSet="Test Files"
- Messages = Standard
- Storage = File
- Pool = File
- Schedule = "30 minute cycle"
-}
-# Definition of file storage device
-Storage {
- Name = File
- Address = XXXXXXXXXXX
- SDPort = 9103
- Password = XXXXXXXXXXXXX
- Device = FileStorage
- Media Type = File
-}
-FileSet {
- Name = "Test Files"
- Include = signature=MD5 {
- fffffffffffffffff
- }
- Exclude = { *.o }
-}
-Pool {
- Name = File
- Use Volume Once = yes
- Pool Type = Backup
- LabelFormat = "File"
- AutoPrune = yes
- VolumeRetention = 4h
- Maximum Volumes = 12
- Recycle = yes
-}
-\end{verbatim}
-\normalsize
-
-Where you will need to replace the {\bf ffffffffff}'s by the appropriate files
-to be saved for your configuration. For the FileSet Include, choose a
-directory that has one or two megabytes maximum since there will probably be
-approximately 8 copies of the directory that {\bf Bacula} will cycle through.
-
-In addition, you will need to add the following to your Storage daemon's
-configuration file:
-
-\footnotesize
-\begin{verbatim}
-Device {
- Name = FileStorage
- Media Type = File
- Archive Device = /tmp
- LabelMedia = yes;
- Random Access = Yes;
- AutomaticMount = yes;
- RemovableMedia = no;
- AlwaysOpen = no;
-}
-\end{verbatim}
-\normalsize
-
-With the above resources, Bacula will start a Job every half hour that saves a
-copy of the directory you chose to /tmp/File0001 ... /tmp/File0012. After 4
-hours, Bacula will start recycling the backup Volumes (/tmp/File0001 ...). You
-should see this happening in the output produced. Bacula will automatically
-create the Volumes (Files) the first time it uses them.
-
-To turn it off, either delete all the resources you've added, or simply
-comment out the {\bf Schedule} record in the {\bf Job} resource.
-
-\subsection*{Manually Recycling Volumes}
-\label{manualrecycling}
-\index[general]{Volumes!Manually Recycling }
-\index[general]{Manually Recycling Volumes }
-\addcontentsline{toc}{subsection}{Manually Recycling Volumes}
-
-Although automatic recycling of Volumes is implemented in version 1.20 and
-later (see the
-\ilink{Automatic Recycling of Volumes}{_ChapterStart22} chapter of
-this manual), you may want to manually force reuse (recycling) of a Volume.
-
-Assuming that you want to keep the Volume name, but you simply want to write
-new data on the tape, the steps to take are:
-
-\begin{itemize}
-\item Use the {\bf update volume} command in the Console to ensure that the
- {\bf Recycle} field is set to {\bf 1}
-\item Use the {\bf purge jobs volume} command in the Console to mark the
- Volume as {\bf Purged}. Check by using {\bf list volumes}.
-\end{itemize}
-
-Once the Volume is marked Purged, it will be recycled the next time a Volume
-is needed.
-
-If you wish to reuse the tape by giving it a new name, follow the following
-steps:
-
-\begin{itemize}
-\item Use the {\bf purge jobs volume} command in the Console to mark the
- Volume as {\bf Purged}. Check by using {\bf list volumes}.
-\item In Bacula version 1.30 or greater, use the Console {\bf relabel}
- command to relabel the Volume.
-\end{itemize}
-
-Please note that the relabel command applies only to tape Volumes.
-
-For Bacula versions prior to 1.30 or to manually relabel the Volume, use the
-instructions below:
-
-\begin{itemize}
-\item Use the {\bf delete volume} command in the Console to delete the Volume
- from the Catalog.
-\item If a different tape is mounted, use the {\bf unmount} command,
- remove the tape, and insert the tape to be renamed.
-\item Write an EOF mark in the tape using the following commands:
-
-\footnotesize
-\begin{verbatim}
- mt -f /dev/nst0 rewind
- mt -f /dev/nst0 weof
-\end{verbatim}
-\normalsize
-
-where you replace {\bf /dev/nst0} with the appropriate device name on your
-system.
-\item Use the {\bf label} command to write a new label to the tape and to
- enter it in the catalog.
-\end{itemize}
-
-Please be aware that the {\bf delete} command can be dangerous. Once it is
-done, to recover the File records, you must either restore your database as it
-was before the {\bf delete} command, or use the {\bf bscan} utility program to
-scan the tape and recreate the database entries.
+++ /dev/null
-%%
-%%
-
-\section*{Caract\'eristiques syst\`eme g\'en\'erales indispensables \`a Bacula}
-\label{_ChapterStart51}
-\index[general]{Caract\'eristiques syst\`eme g\'en\'erales indispensables \`a Bacula }
-\index[general]{Bacula!Caract\'eristiques syst\`eme g\'en\'erales indispensables \`a }
-\addcontentsline{toc}{section}{Caract\'eristiques syst\`eme g\'en\'erales indispensables \`a Bacula}
-
-\label{SysReqs}
-
-\subsection*{Caract\'eristiques syst\`eme g\'en\'erales indispensables \`a Bacula}
-\index[general]{Caract\'eristiques syst\`eme g\'en\'erales indispensables \`a Bacula }
-\index[general]{Bacula!Caract\'eristiques syst\`eme g\'en\'erales indispensables \`a }
-\addcontentsline{toc}{subsection}{Caract\'eristiques syst\`eme g\'en\'erales indispensables \`a Bacula}
-
-\begin{itemize}
-\item {\bf Bacula} a \'et\'e compil\'e et ex\'ecut\'e sur les syst\`emes
- Linux RedHat, Mandriva, SUSE, Debian et Gentoo, sur FreeBSD, et Solaris.
-\item Il requiert GNU C++ version 2.95 ou sup\'erieur pour compiler. Vous
- pouvez essayer avec d'autres compilateurs et des versions plus anciennes, mais
- vous serez seuls. Nous avons compil\'e et utilis\'e avec succ\`es Bacula sur
-RH8.0/RH9/RHEL 3.0 avec GCC 3.2. Note, en g\'en\'eral GNU C++ est un paquet
-s\'epar\'e (e.g. RPM) de GNU C, et vous devrez avoir les deux. Sur les
-syst\`emes RedHat, le compilateur C++ fait partie du paquet RPM {\bf
-gcc-c++}.
-\item Certains paquets tiers sont n\'ecessaires \`a {\bf Bacula}.
- Except\'e pour MySQL et PostgreSQL, ils peuvent tous \^etre trouv\'es dans
- les distributions {\bf depkgs} et {\bf depkgs1}.
-\item Si vous voulez construire les binaires Win32, vous aurez besoin du
- compilateur Microsoft Visual C++ (ou Visual Studio). Bien que tous les
- composants compilent (la console produit quelques messages d'alertes), seul
-le File Daemon a \'et\'e test\'e.
-\item {\bf Bacula} requiert une bonne impl\'ementation fonctionnelle des
- pthreads. Ce n'est pas le cas sur certains syst\`emes BSD.
-\item Le code source a \'et\'e \'ecrit dans un esprit de portabilit\'e et est
- le plus souvent compatible POSIX. Ainsi le portage sur chaque syst\`eme
- d'exploitation compatible POSIX est relativement ais\'e.
-\item Le programme GNOME Console est developp\'e et test\'e sous GNOME 2.X.
- Il s'ex\'ecute aussi sous GNOME 1.4 mais cette version est d\'epr\'eci\'ee et
- n'est plus maintenue.
-\item Le programme wxWidgets Console est developp\'e et test\'e avec la
- derni\`ere version stable de
- \elink{ wxWidgets}{http://www.wxwidgets.org/} (2.4.2). Il fonctionne bien
-avec la version Windows et GTK+-1.x de wxWidgets, ainsi que sur les autres
-plateformes support\'ees par wxWidgets.
-\item Le programme Tray Monitor est developp\'e pour GTK+-2.x. Il n\'ecessite
- Gnome \gt{}=2.2, KDE \gt{}=3.1 ou un gestionnaire de fen\^etre supportant le
- standard
-\elink{systemtray}{http://www.freedesktop.org/Standards/systemtray-spec} de
-FreeDesktop.
-\item Si vous voulez permettre l'\'edition en ligne de commande et
- l'historique, il vous faudra /usr/include/termcap.h et l'une des
- biblioth\`eques termcap ou ncurses charg\'ee (libtermcap-devel ou
-ncurses-devel).
-\item Si vous voulez utiliser des DVD en guise de media de sauvegarde, vous devrez
- t\'el\'echarger les \elink{dvd+rw-tools 5.21.4.10.8}{http://fy.chalmers.se/~appro/linux/DVD+RW/},
- appliquer le \elink{patch}{http://cvs.sourceforge.net/viewcvs.py/*checkout*/bacula/bacula/patches/dvd+rw-tools-5.21.4.10.8.bacula.patch}
- pour rendre ces outils compatibles avec Bacula, puis les compiler et installer.
- N'utilisez pas les dvd+rw-tools fournis par votre distribution, ils ne
- fonctionneront pas avec Bacula.
-
-\end{itemize}
+++ /dev/null
-%%
-%%
-
-\section*{La commande restore de la console Bacula}
-\label{_ChapterStart13}
-\index[general]{Commande!restore de la console Bacula}
-\index[general]{La commande restore de la console Bacula}
-\addcontentsline{toc}{section}{La commande restore de la console Bacula}
-
-\subsection*{G\'en\'eralit\'es}
-\index[general]{G\'en\'eralit\'es}
-\addcontentsline{toc}{subsection}{G\'en\'eralit\'es}
-
-Nous allons maintenant d\'ecrire la restauration de fichiers avec la commande
-{\bf restore} de la Console, qui est le mode de restauration recommand\'e.
-Il existe cependant un programme ind\'ependant nomm\'e {\bf bextract}, qui permet
-lui aussi de restaurer des fichiers. Pour plus d'informations sur ce
-programme, consultez le chapitre \ilink{Programmes utilitaires Bacula}{bextract}
-de ce manuel. Vous y trouverez aussi des informations sur le programme {\bf bls}
-qui sert \`a produire une liste du contenu de vos volumes, et sur le programme
-{\bf bscan} qui vous sera utilie si vous voulez restaurer les enregistrements
-du catalogue relatifs \`a un ancien volume qui n'y figure plus.
-
-En g\'en\'eral, pour restaurer un fichier ou un ensemble de fichiers, vous devez
-ex\'ecuter un job de type {\bf restore}, par cons\'equent, vous devez pr\'ed\'efinir
-un tel job dans le fichier de configuration de votre Director. Les param\`etres
-(Client, FileSet,...) que vous d\'efinissez ici ne sont pas importants,
-Bacula les ajustera automatiquement lors de l'utilisation de {\bf restore}.
-
-Bacula \'etant un programme r\'eseau, il vous appartient de vous assurer que
-vous avez s\'electionn\'e le bon client et le bon disque dur pour recevoir la
-restauration. Bacula peut sauvegarder le client A et restaurer ses fichiers
-sur le client B, pourvu que leurs syst\`emes ne soient pas trop diff\'erents
-au niveau de leurs structures de fichiers. Par d\'efaut, Bacula restaure les
-donn\'ees sur leur client d'origine, mais pas \`a leur emplacement d'origine :
-dans le r\'epertoire {\bf /tmp/bacula-restores}. Vous pouvez modifier ces
-valeurs par d\'efaut lorsque la commande {\bf restore} vous demande confirmation
-d'ex\'ecution du job en choisissant l'option {\bf mod}.
-
-\label{Example1}
-\subsection*{La commande Restore}
-\index[general]{Commande!Restore }
-\index[general]{La commande Restore}
-\addcontentsline{toc}{subsection}{La commande Restore}
-Puisque Bacula maintient un catalogue des fichiers sauvegard\'es, et des volumes
-o\`u ils sont stock\'es, il peut se charger de la majeure partie du travail
-d'intendance. Ainsi, il vous suffit de sp\'ecifier le type de restauration que
-vous souhaitez (d'apr\`es la derni\`ere sauvegarde, d'apr\`es la derni\`ere sauvegarde
-ant\'erieure \`a une date sp\'ecifi\'ee...), et quels fichiers vous voulez restaurer.
-
-Ceci est r\'ealis\'e par la commande {\bf restore} de la Console. Vous s\'electionnez
-d'abord le type de restauration souhait\'ee ce qui entra\^ine la s\'election des
-JobIds requis et la construction d'une arborescence interne \`a Bacula contenant
-les enregistrements de fichiers des JobIds s\'electionn\'es. A ce stade, le
-processus de restauration entre dans un mode o\`u vous pouvez naviguer
-interactivement dans l'arborescence des fichiers disponibles pour restauration
-et s\'electionner ceux que vous voulez restaurer. Ce mode est similaire au
-programme de s\'election de fichier interactif standard d'Unix {\bf restore}.
-
-Si vos fichiers ont \'et\'e \'elagu\'es, la commande {\bf restore} sera dans
-l'incapacit\'e de les trouver. Voyez ci-dessous pour plus de d\'etails sur ce cas
-de figure.
-
-Dans la Console, apr\`es avoir saisi {\bf restore}, le menu suivant vous est
-pr\'esent\'e :
-
-\footnotesize
-\begin{verbatim}
-First you select one or more JobIds that contain files
-to be restored. You will be presented several methods
-of specifying the JobIds. Then you will be allowed to
-select which files from those JobIds are to be restored.
-To select the JobIds, you have the following choices:
- 1: List last 20 Jobs run
- 2: List Jobs where a given File is saved
- 3: Enter list of comma separated JobIds to select
- 4: Enter SQL list command
- 5: Select the most recent backup for a client
- 6: Select backup for a client before a specified time
- 7: Enter a list of files to restore
- 8: Enter a list of files to restore before a specified time
- 9: Find the JobIds of the most recent backup for a client
- 10: Find the JobIds for a backup for a client before a specified time
- 11: Enter a list of directories to restore for found JobIds
- 12: Cancel
-Select item: (1-12):
-\end{verbatim}
-\normalsize
-
-\begin{itemize}
-\item Le choix 1 \'enum\`ere les 20 derniers jobs ex\'ecut\'es. Si vous trouvez
- celui (ceux) que vous voulez, vous pouvez ensuite faire le choix 3 et entrer
- son (leurs) JobId(s).
-
-\item Le choix 2 affiche tous les Jobs ayant sauvegard\'e un fichier
- sp\'ecifi\'e. Si vous trouvez celui (ceux) que vous voulez, vous pouvez ensuite
- faire le choix 3 et entrer son (leurs) JobId(s).
-
-\item Le choix 3 vous permet de saisir une liste de JobIds, s\'epar\'es par des
- virgules. Les fichiers de ces jobs seront plac\'es dans l'arborescence afin
- que vous puissiez s\'electionner ceux que vous voulez restaurer.
-
-\item Le choix 4 vous permet d'entrer une requ\^ete SQL arbitraire. C'est
- certainement le moyen le plus primitif pour trouver les jobs d\'esir\'es,
- mais aussi le plus flexible. Si vous trouvez celui (ceux) que vous voulez,
- vous pouvez ensuite faire le choix 3 et entrer son (leurs) JobId(s).
-
-\item Le choix 5 s\'electionne automatiquement la full la plus r\'ecente, et toutes
- les incr\'ementales et diff\'erentielles subs\'equentes \`a cette full pour un
- client sp\'ecifi\'e. Il s'agit l\`a des jobs et fichiers qui, si vous les
- restaurez, ram\`eneront votre syst\`eme \`a son dernier \'etat sauvegard\'e.
- Les JobIds sont automatiquement charg\'es dans l'arborescence. C'est
- probablement le plus pratique des choix propos\'es pour restaurer un
- client \`a son \'etat le plus r\'ecent.
-
- Notez que ce processus de s\'election automatique ne s\'electionnera jamais
- un job qui a \'echou\'e (termin\'e avec un statut d'erreur). Si vous disposez
- d'un tel job dont vous voulez extraire des fichiers, vous devez
- eplicitement entrer son JobId au niveau du choix 3 et choisir les fichiers
- \`a restaurer.
-
- Si certains de jobs requis pour la restauration ont eu leurs enregistrements
- de fichiers \'elagu\'es, la restauration sera incompl\`ete. Bacula ne d\'etecte
- pas, pour l'instant, cette condition. Vous pouvez cependant la
- contr\^oler en examinant attentivement la liste des jobs s\'electionn\'es
- et affich\'es par Bacula. Si vous trouvez des jobs dont le champ JobFiles
- est \`a z\'ero alors que ces fichiers auraient d\^u \^etre sauvegard\'es, alors
- vous pouvez vous attendre \`a des probl\`emes.
-
- Si tous les enregistrements de fichiers ont \'et\'e \'elagu\'es, Bacula constatera
- qu'il n'y a aucune r\'ef\'erence \`a aucun fichier pour le JobIds s\'electionn\'es
- et vous en informera, et vous proposera de faire une restauration compl\`ete
- (non s\'elective) de ces JobIds. Ceci est possible car Bacula sait encore
- o\`u commencent les donn\'ees sur les volumes, m\^eme s'il ne sait plus o\`u sont
- les fichiers individuellement.
-
-\item Le choix 6 vous permet de sp\'ecifier une date et un heure. Bacula
- s\'electionne alors automatiquement la plus r\'ecente full ant\'erieure \`a cette date
- ainsi que les incr\'ementales et diff\'erentielles subs\'equentes \`a cette full et
- ant\'erieures \`a cette date.
-
-\item Le choix 7 vous permet de sp\'ecifier un ou plusieurs noms de fichiers
- (le chemin absolu est requis) \`a restaurer. Les noms de fichiers sont saisis
- un par un, \`a moins que vous ne pr\'ef\'eriez cr\'eer un fichier pr\'efix\'e du
- caract\`ere "moins" (\lt{}) que Bacula consid\`ere comme une liste de fichier
- \`a restaurer. Pour quitter ce mode, entrez une ligne vide.
-
-\item Le choix 8 vous permet de sp\'ecifier une date et une heure avant
- d'entrer les noms de fichiers. Voir le choix 7 pour plus de d\'etails.
-
-\item Le choix 9 vous permet de d\'eterminer les JobIds de la sauvegarde
- la plus r\'ecente pour un client. C'est essentiellement la m\^eme chose
- que le choix 5 (le m\^eme code est utilis\'e), mais ces JobIds sont
- conserv\'es en interne comme si vous les aviez saisis manuellement.
- Vous pouvez alors faire le choix 11 pour restaurer un ou plusieurs
- r\'epertoires.
-
-\item Le choix 10 est le m\^eme que le 9, sauf qu'il vous permet d'entrer
- une date butoir (comme pour le choix 6) pour la s\'election des JobIds.
- Ces JobIds sont conserv\'es en interne comme si vous les aviez saisis manuellement.
-
-\index[general]{Restaurer des r\'epertoires}
-\item Le choix 11 vous permet d'entrer une liste de JobIds \`a partir de
- laquelle vous pouvez s\'electionner les r\'epertoires \`a restaurer. La liste de
- JobIds peut avoir \'et\'e \'etablie pr\'ec\'edemment \`a l'aide des choix 9 ou 10
- du menu. Vous pouvez alors entrer le chemin absolu d'un r\'epertoire, ou
- un nom de fichier pr\'efix\'e d'un signe "moins" (\lt{}) contenant la liste
- des r\'epertoires \`a restaurer. Tous les fichiers des r\'epertoires s\'electionn\'es
- seront restaur\'es, mais pas les sous-r\'epertoires, \`a moins que vous ne les
- sp\'ecifiiez explicitement.
-
-\item Le choix 12 vous permet d'abandonner la restauration.
-\end{itemize}
-
-A titre d'exemple, supposons que nous s\'electionnions l'option 5 (restaurer \`a
-l'\'etat le plus r\'ecent). Bacula vous demande alors le client d\'esir\'e ce qui,
-sur mon syst\`eme, se manifeste ainsi :
-
-\footnotesize
-\begin{verbatim}
-Defined clients:
- 1: Rufus
- 2: Matou
- 3: Polymatou
- 4: Minimatou
- 5: Minou
- 6: MatouVerify
- 7: PmatouVerify
- 8: RufusVerify
- 9: Watchdog
-Select Client (File daemon) resource (1-9):
-
-\end{verbatim}
-\normalsize
-
-Si vous n'avez qu'un client, il est automatiquement s\'electionn\'e. Dans le cas
-pr\'esent, j'entre {\bf Rufus} pour s\'electionner ce client. Bacula a
-maintenant conna\^itre le FileSet \`a restaurer, aussi il affiche :
-
-\footnotesize
-\begin{verbatim}
-The defined FileSet resources are:
- 1: Full Set
- 2: Kerns Files
-Select FileSet resource (1-2):
-
-\end{verbatim}
-\normalsize
-
-J'opte pour le choix 1, ma sauvegarde full. En principe, vous n'aurez qu'un
-FileSet pour chaque job, et si vos machines de ressemblent (m\^emes syst\`emes),
-vous pouvez n'avoir qu'un seul FileSet pour tous vos clients.
-
-A ce stade, Bacula d\'etient toutes les informations dont il a besoin pour
-trouver le jeu de sauvegardes le plus r\'ecent. Il va maintenant interroger le
-cataloguie, ce qui peut prendre un peu de temps, et afficher quelque chose
-comme :
-
-\footnotesize
-\begin{verbatim}
-+-------+------+----------+-------------+-------------+------+-------+----------
---+
-| JobId | Levl | JobFiles | StartTime | VolumeName | File | SesId |
-VolSesTime |
-+-------+------+----------+-------------+-------------+------+-------+----------
---+
-| 1,792 | F | 128,374 | 08-03 01:58 | DLT-19Jul02 | 67 | 18 |
-1028042998 |
-| 1,792 | F | 128,374 | 08-03 01:58 | DLT-04Aug02 | 0 | 18 |
-1028042998 |
-| 1,797 | I | 254 | 08-04 13:53 | DLT-04Aug02 | 5 | 23 |
-1028042998 |
-| 1,798 | I | 15 | 08-05 01:05 | DLT-04Aug02 | 6 | 24 |
-1028042998 |
-+-------+------+----------+-------------+-------------+------+-------+----------
---+
-You have selected the following JobId: 1792,1792,1797
-Building directory tree for JobId 1792 ...
-Building directory tree for JobId 1797 ...
-Building directory tree for JobId 1798 ...
-cwd is: /
-$
-\end{verbatim}
-\normalsize
-
-(Certaines colonnes sont tromqu\'ees pour des n\'ecessit\'es de mise en page).
-
-Selon le nombre de {\bf JobFiles} pour chaque JobId, la construction de
-l'arborescence peut prendre un certain temps. Si vous constatez que tous les
-JobFiles sont \`a z\'ero, vos fichiers ont probalement \'et\'e \'elagu\'es et vous ne
-pourrez pas s\'electionner les fichiers individuellement : vous devrez
-restaurer tout ou rien.
-
-Dans notre exemple, Bacula a trouv\'e quatre jobs qui comprennent la
-sauvegarde la plus r\'ecente du client et du FileSet sp\'ecifi\'es. Deux des jobs
-ont le m\^eme JobId car le job a \'ecrit sur deux volumes diff\'erents. Le
-troisi\`eme est une incr\'ementale qui n'a sauvegard\'e que 254 fichier sur les
-128 374 de la full. Le quatri\`eme est aussi une incr\'ementale, et n'a sauvegard\'e
-que 15 fichiers.
-
-Maintenant Bacula ins\`ere ces jobs dans l'arborescence, sans en marquer aucun
-pour restauration par d\'efaut. Il vous indique le nombre de fichiers dans
-l'arbre, et vous informe que le r\'epertoire de travail courant ({\bf cwd}) est
-/. Finalement, Bacula vous invite avec le signe (\$) \`a saisir des commandes
-pour vous d\'eplacer dans l'arborescence, et s\'electionner des fichiers.
-
-Si vous voulez que tous les fichiers de l'arbre soient marqu\'es pour
-restauration \`a sa construction, tapez {\bf restore all}.
-
-Plut\^ot que de choisir l'option 5 du premier menu (s\'electionner la
-sauvegarde la plus r\'ecente pour un client), si nous avions choisi l'option 3
-(Entrer une liste de JobIds \`a s\'electionner), et si nous avions saisi
-{\bf 1792,1797,1798}, nous serions arriv\'es au m\^eme point.
-
-Il faut noter un point si vous saisissez manuellement les JobIds : vous devez
-les entrer dans l'ordre o\`u ils ont \'et\'e ex\'ecut\'es (en g\'en\'eral, l'ordre croissant.
-Si vous les sasissez dans un ordre diff\'erent, vous courrez le risque de ne pas
-version la plus r\'ecente d'un fichier sauvegard\'e plusieurs fois si celui-ci a \'et\'e
-sauvegard\'e dans plusieurs jobs.
-
-Entre vos JobIds directement peut aussi vous permettre de restaurer depuis
-un job qui a \'ecrit des donn\'ees sur les volumes mais qui s'est termin\'e en erreur.
-
-Dans le mode s\'election de fichiers, vous pouvez utiliser {\bf help} ou une
-question (?) pour produire un r\'esum\'e des commandes disponibles :
-
-\footnotesize
-\begin{verbatim}
- Command Description
- ======= ===========
- cd change current directory
- count count marked files in and below the cd
- dir long list current directory, wildcards allowed
- done leave file selection mode
- estimate estimate restore size
- exit same as done command
- find find files, wildcards allowed
- help print help
- ls list current directory, wildcards allowed
- lsmark list the marked files in and below the cd
- mark mark dir/file to be restored recursively in dirs
- markdir mark directory name to be restored (no files)
- pwd print current working directory
- unmark unmark dir/file to be restored recursively in dir
- unmarkdir unmark directory name only no recursion
- quit quit and do not do restore
- ? print help
-\end{verbatim}
-\normalsize
-
-Par d\'efaut, aucun fichier n'est s\'electionn\'e pour restauration (sauf si vous
-avez ajout\'e {\bf all} \`a la ligne de commande). Si, \`a ce stade, vous voulez
-tout restaurer, vous devriez saisir {\bf mark *}, puis {\bf done}, Bacula
-\'ecrira alors les donn\'ees bootstrap dans un fichier et sollicitera votre
-approbation pour d\'emarrer la restauration.
-
-Si vous n'utilisez pas {\bf mark *}, vous commencez avec une s\'election vide.
-Vous pouvez simplement regarder et marquer ({\bf mark}) les fichiers et/ou
-r\'epertoires qui vous int\'eressent. Il est ais\'e de commettre une erreur dans ces
-op\'erations, et la gestion des erreurs dans Bacula n'est pas parfaite, aussi
-contr\^olez votre travail avec la commande {\bf ls} ou {\bf dir} pour voir
-quels fichiers ont \'et\'e s\'electionn\'es. Les fichiers s\'electionn\'es sont pr\'ec\'ed\'es
-d'une ast\'erisque.
-
-Pour contr\^oler ce qui est marqu\'e et ce qui ne l'est pas utilisez la commande
-{\bf count} qui affiche :
-
-\footnotesize
-\begin{verbatim}
-128401 total files. 128401 marked to be restored.
-
-\end{verbatim}
-\normalsize
-
-Chacune des commandes ci-dessus sera expliqu\'e plus en d\'etail dans la
-prochaine section. Poursuivons avec notre exemple, en validant la restauration de
-tous les fichiers. En saisissant {\bf done}, Bacula affiche :
-
-\footnotesize
-\begin{verbatim}
-Bootstrap records written to /home/kern/bacula/working/restore.bsr
-The restore job will require the following Volumes:
-
- DLT-19Jul02
- DLT-04Aug02
-128401 files selected to restore.
-Run Restore job
-JobName: kernsrestore
-Bootstrap: /home/kern/bacula/working/restore.bsr
-Where: /tmp/bacula-restores
-Replace: always
-FileSet: Kerns Files
-Client: Rufus
-Storage: SDT-10000
-JobId: *None*
-OK to run? (yes/mod/no):
-
-\end{verbatim}
-\normalsize
-
-Examinez chaque \'el\'ement attentivement pour vous assurer que tout est
-conforme \`a ce que vous souhaitez. En particulier, v\'erifiez la ligne {\bf where},
-qui vous indique dans quelle partie du syst\`eme de fichiers vos donn\'ees
-seront restaur\'ees, et quel client va les recevoir (par d\'efaut, les
-restaurations ont lieu sur le client d'origine). Ces param\`etres n'auront pas
-forc\'ement les bonnes valeurs, mais vous pouvez les modifier \`a l'aide
-de la commande {\bf mod} et en vous laissant guider par l'invite de la
-console.
-
-L'affichage ci-dessus suppose que vous ayez d\'efini une ressource Job de type
-{\bf restore} dans le fichier de configuration de votre Director. en
-principe, vous n'en n'aurez besoin que d'une, car, par nature, une
-restauration est une op\'eration essentiellement manuelle. A l'aide de la
-Console, vous pourrez modifier le job Restore pour faire ce que vous voulez
-qu'il fasse.
-
-Un exemple de ressource Job de type restore est donn\'e plus bas.
-
-Pour en revenir \`a notre exemple, en plus de v\'erifier le client, il est sage
-de v\'erifier que le p\'eriph\'erique de stockage choisi par Bacula est le bon.
-Bien que le FileSet soit pr\'esent\'e, il est en fait ignor\'e dans la restauration.
-Le processus de restauration choisit ses fichiers en lisant le fichier
-{\bf bootstrap}, et restaure tous les fichiers associ\'es au JobId consid\'er\'e
-si ce fichier n'est pas sp\'ecifi\'e.
-
-Enfin, avant de lancer la restauration, notez que le lieu par d\'efaut pour les
-fichiers restaur\'es n'est pas leur emplacement d'origine mais le r\'epertoire
-{\bf /tmp/bacula-restores}. Vous pouvez modifier cette valeur par d\'efaut dans
-le fichier de configuration du Director, ou avec l'option {\bf mod}. Si vous
-voulez restaurer les fichiers \`a leurs emplacements d'origine, modifiez l'option
-{\bf where} : sp\'ecifiez la racine ({\bf /}Â ou rien du tout).
-
-Si vous entrez maintenant {\bf yes}, Bacula lance la restauration. le Storage
-Daemon va d'abord requ\'erir le volume {\bf DLT-19Jul02}, puis le {\bf DLT-04Aug02}
-une fois qu'il aura extrait les fichiers requis du premier.
-
-\subsection*{S\'electionner des fichiers par leurs noms}
-\index[general]{S\'electionner des fichiers par leurs noms}
-\index[general]{Noms de fichiers!S\'electionner des fichiers par leurs}
-\addcontentsline{toc}{subsection}{S\'electionner des fichiers par leurs noms}
-
-Si vous n'avez qu'un petit nombre de fichiers \`a restaurer dont vous connaissez
-les noms, vous pouvez, aux choix, placer ces noms dans un fichier qui sera
-lu par Bacula, ou saisir les noms un par un. Les noms de fichier doivent inclure
-le chemin absolu. Les caract\`eres jokers ne peuvent \^etre utilis\'es.
-
-Pour saisir la liste, choisissez l'option 7 dans le menu de la commande {\bf restore} :
-
-\footnotesize
-\begin{verbatim}
-To select the JobIds, you have the following choices:
- 1: List last 20 Jobs run
- 2: List Jobs where a given File is saved
- 3: Enter list of comma separated JobIds to select
- 4: Enter SQL list command
- 5: Select the most recent backup for a client
- 6: Select backup for a client before a specified time
- 7: Enter a list of files to restore
- 8: Enter a list of files to restore before a specified time
- 9: Find the JobIds of the most recent backup for a client
- 10: Find the JobIds for a backup for a client before a specified time
- 11: Enter a list of directories to restore for found JobIds
- 12: Cancel
-Select item: (1-12):
-\end{verbatim}
-\normalsize
-
-Vous \^etes alors invit\'e \`a pr\'eciser le client :
-
-\footnotesize
-\begin{verbatim}
-Defined Clients:
- 1: Timmy
- 2: Tibs
- 3: Rufus
-Select the Client (1-3): 3
-\end{verbatim}
-\normalsize
-
-Si vous n'avez qu'un client, il est s\'electionn\'e automatiquement.
-Finalement, Bacula vous demande d'entrer un nom de fichier :
-
-\footnotesize
-\begin{verbatim}
-Enter filename:
-\end{verbatim}
-\normalsize
-
-Vous pouvez, \`a ce stade, saisir le chemin absolu et le nom du fichier :
-
-\footnotesize
-\begin{verbatim}
-Enter filename: /home/kern/bacula/k/Makefile.in
-Enter filename:
-\end{verbatim}
-\normalsize
-
-Si Bacula ne peut en trouver aucune copie, il affiche ce qui suit :
-
-\footnotesize
-\begin{verbatim}
-Enter filename: junk filename
-No database record found for: junk filename
-Enter filename:
-\end{verbatim}
-\normalsize
-
-Si vous souhaitez que Bacula r\'ecup\`ere la liste des fichiers \`a restaurer depuis
-un fichier, r\'edigez ce fichier et donnez lui un nom commen\c{c}ant par le signe
-moins (\lt{}) et saisissez-le ici. Lorsque vous avez entr\'e tous les noms de
-fichiers, validez une ligne vide. Bacula \'ecrit maintenant le fichier
-bootstrap, vous indique les cartouches qui seront utilis\'ees, et vous propose
-de valider la restauration :
-
-\footnotesize
-\begin{verbatim}
-Enter filename:
-Automatically selected Storage: DDS-4
-Bootstrap records written to /home/kern/bacula/working/restore.bsr
-The restore job will require the following Volumes:
-
- test1
-1 file selected to restore.
-Run Restore job
-JobName: kernsrestore
-Bootstrap: /home/kern/bacula/working/restore.bsr
-Where: /tmp/bacula-restores
-Replace: always
-FileSet: Kerns Files
-Client: Rufus
-Storage: DDS-4
-When: 2003-09-11 10:20:53
-Priority: 10
-OK to run? (yes/mod/no):
-\end{verbatim}
-\normalsize
-
-Il est possible d'automatiser la s\'election des fichiers en pla\c{c}ant votre liste
-de fichiers dans, part exemple, {\bf /tmp/file-list}, puis en utilisant la
-commande suivante :
-
-\footnotesize
-\begin{verbatim}
-restore client=Rufus file=</tmp/file-list
-\end{verbatim}
-\normalsize
-
-Si, en modifiant les param\`etres du job restauration, vous constatez que Bacula
-vous demande d'entrer un num\'ero de job, c'est vous n'avez pour l'instant sp\'ecifi\'e
-ni num\'ero de job, ni fichier bootstrap. Entrez simplement z\'ero pour pouvoir
-continuer et s\'electionner une autre option \`a modifier.
-
-\label{CommandArguments}
-
-\subsection*{Arguments de la ligne de commande}
-\index[general]{Arguments!ligne de commande}
-\index[general]{Arguments de la ligne de commande}
-\addcontentsline{toc}{subsection}{Arguments de la ligne de commande}
-
-Si tout ce qui pr\'ec\`ede vous a sembl\'e compliqu\'e, vous admettrez certainement
-que ce n'est vraiment pas le cas apr\`es quelques essais. Il est possible de
-faire tout ce qui vient d'\^etre vu en utilisant la ligne de commande, \`a
-l'exception de la s\'election du FileSet. Voici une telle ligne de commande :
-
-\footnotesize
-\begin{verbatim}
-restore client=Rufus select current all done yes
-\end{verbatim}
-\normalsize
-
-Le sp\'ecification {\bf client=Rufus} s\'electionne automatiquement le client Rufus,
-l'option {\bf current} pr\'ecise que vous voulez une restauration \`a l'\'etat le plus
-r\'ecent possible, et le {\bf yes} \'elude l'invite finale {\bf yes/mod/no} et
-ex\'ecute directement la restauration.
-
-Voici la liste des arguments de la ligne de commandes :
-
-\begin{itemize}
-\item {\bf all} -- s\'electionne tous les fichiers pour la restauration.
-\item {\bf select} -- utilise la s\'election via l'arborescence.
-\item {\bf done} -- permet de quitter le mode de s\'election dans l'arborescence.
-\item {\bf current} -- s\'electionne automatiquement le jeu de sauvegardes le plus
- r\'ecent pour le client sp\'ecifi\'e.
-\item {\bf client=xxxx} -- S\'electionne le client sp\'ecifi\'e.
-\item {\bf jobid=nnn} -- Sp\'ecifie un JobId ou une liste de JobIds s\'epar\'es par des
- virgules pour la restauration.
-\item {\bf before=YYYY-MM-DD HH:MM:SS} -- Sp\'ecifie une date et un horaire. Bacula
- s\'electionne le plus r\'ecent des jeux de sauvegardes ant\'erieurs \`a la date sp\'ecifi\'ee.
- Cette commande n'est pas tr\`es conviviale, en effet, vous devez sp\'ecifier la date
- et l'heure en respectant exactement le mod\`ele.
-\item {\bf file=filename} -- Sp\'ecifie un nom de fichier \`a restaurer. Vous devez
- sp\'ecifier le chemin absolu vers le fichier. Si vous pr\'efixez l'entr\'ee d'un signe moins
- (\lt{}), Bacula consid\`ere que ce fichier existe et qu'il contient la liste des
- fichiers \`a restaurer. Les sp\'ecifications multiples {\bf file=xxx} peuvent \^etre
- utilis\'ees en ligne de commandes.
-\item {\bf jobid=nnn} -- Sp\'ecifie un JobId \`a restaurer.
-\item {\bf pool=pool-name} -- Sp\'ecifie un nom de pool \`a utiliser pour la s\'election des
- volumes au niveau des options 5 et 6 (restauration \`a l'\'etat le plus r\'ecent et
- restauration \`a l'\'etat le plus r\'ecent avant une date donn\'ee). Ceci vous permet d'avoir
- plusieurs pools, dont un \'eventuellement hors site et l'autre sur place disponible pour
- les restaurations.
-\item {\bf yes} -- Ex\'ecute automatiquement la restauration sans passer par l'invite finale
- de validation/modification surtout utile pour l'utilisation dans des scripts).
- \end{itemize}
-
-\subsection*{Restaurer les attributs de fichiers}
-\index[general]{Attributs de fichiers!Restaurer}
-\index[general]{Restaurer les attributs de fichiers}
-\addcontentsline{toc}{subsection}{Restaurer les attributs de fichiers}
-
-Selon la fa\c{c}on dont vous restaurez, vous pouvez ou non restaurer les
-attributs de fichiers \`a leur \'etat initial. Voici quelques uns des
-probl\`emes auxquels vous pouvez \^etre confront\'es, et, pour les
-restaurations sur la machine d'origine, comment les \'eviter.
-
-\begin{itemize}
-\item Vous avez sauvegard\'e des fichiers sur une machine, et les restaurez
- sur une autre qui a peut-\^etre un autre syst\`eme d'exploitation ou des
- utilisateurs/groupes diff\'erents. Bacula fait du mieux qu'il peut dans ces
- situations. Notez qu'utilisateurs et groupes sont sauvegard\'es au format
- num\'erique, et qu'ils peuvent donc se r\'ef\'erer \`a d'autres utilisateurs et
- groupes sur un autre syst\`eme.
-\item Vous restaurez dans un r\'epertoire existant sur lequel portent des
- restrictions du droit de cr\'eation. Bacula tente alors de tout r\'etablir,
- mais sans parcourir la cha\^ine compl\`ete des r\'epertoires ni les modifier
- durant la restauration. En fait, ce que pourra faire Bacula pour r\'etablir
- les permissions correctement d\'epend pour beaucoup de votre syst\`eme
- d'exploitation.
-\item Vous faites une restauration recursive d'une arborescence. Dans ce cas,
- de figure, Bacula restaure un fichier avant de restaurer l'entr\'ee de son
- r\'epertoire parent. Dans le processus de restauration du fichier, Bacula
- cr\'ee le r\'epertoire parent avec des permissions ouvertes et le m\^eme
- propri\'etaire que le fichier restaur\'e. Alors, lorsque Bacula tente de restaurer
- le r\'epertoire en lui m\^eme, il se rend compte qu'il existe d\'ej\`a (situation
- similaire \`a la pr\'ec\'edente). Si vous avez fix\'e l'option "Replace" \`a "never"
- lors du lancement du job, alors Bacula ne modifie pas les permissions et
- propri\'et\'es du r\'epertoire pour s'accorder \`a ce qu'elles \'etaient lors de la
- sauvegarde. Vous devriez aussi noter une divergence entre le nombre de fichiers
- effectivement restaur\'es et le nombre de fichiers attendus. Si vous voulez
- \'eviter ces inconv\'enients, fixez l'option "Replace" \`a "always", ainsi
- Bacula sera en mesure de modifier les propri\'etaire et permissions des
- r\'epertoires pour les ramener \`a leurs \'etats d'origine. Le nombre de
- fichiers restaur\'es devrait cette fois \^etre identique \`a celui attendu.
-
-\item Vous avez s\'electionn\'e un ou plusieurs fichiers d'un r\'epertoire sans
- s\'electionner le r\'epertoire lui-m\^eme. Dans ce cas, si le r\'epertoire
- n'existe pas d\'ej\`a, Bacula le cr\'ee avec des attributs par d\'efaut qui ne
- seront peut-\^etre pas ceux d'origine. Si vous ne voulez pas s\'electionner
- un r\'epertoire et tout son contenu, mais seulement quelques objets dans
- ce r\'epertoire en les marquant individuellement, vous devriez utiliser
- la commande {\bf markdir} pour s\'electionner un r\'epertoire de plus haut
- niveau (un \`a la fois) si vous voulez que les entr\'ees de r\'epertoires
- soient restaur\'ees correctement.
-\end{itemize}
-
-\label{Windows}
-
-\subsection*{Restaurer sur Windows}
-\index[general]{Restaurer sur Windows}
-\index[general]{Windows!Restaurer sur}
-\addcontentsline{toc}{subsection}{Restaurer sur Windows}
-Sur les syst\`emes WinNT/2K/XP, Bacula restaure les fichiers avec les droits
-et permissions d'origine comme on s'y attend. Ceci est aussi v\'erifi\'e si vous
-restaurez ces fichiers vers un autre r\'epertoire (avec l'option "where") que celui
-d'origine. Cependant, si le nouveau r\'epertoire n'existe pas, le File Daemon
-tente de le cr\'eer. Dans certains cas, il n'y parvient pas. S'il y parvient, le
-r\'epertoire cr\'e\'e appartient \`a l'utilisateur qui ex\'ecute le File Daemon, c'est-\`a-dire
-SYSTEM. Dans ce cas, il se peut que vous ayez des difficult\'es pour acc\'eder aux
-fichiers fraichement restaur\'es.
-
-Pour \'eviter ce probl\`eme, vous devriez cr\'eer le r\'epertoire alternatif avant
-de lancer la restauration. Bacula ne changera pas les attributs de ce r\'epertoire,
-du moment que ce n'est pas l'un des r\'epertoires \`a restaurer.
-
-Le r\'epertoire de restauration par d\'efaut est {\bf /tmp/bacula-restores/}, qui devient
-{\bf /tmp/bacula-restores/e/} si vous restaurez depuis le disque {\bf E}.
-Aussi, assurez-vous que ce r\'epertoire existe avant de lancer la restauration, ou
-utilisez l'option {\bf mod} pour s\'electionner un r\'epertoire destination existant.
-
-Certains utilisateurs ont signal\'e des probl\`emes en restaurant des fichiers
-qui participent \`a Active Directory. Ils ont aussi rapport\'e que le changement de
-l'Id utilisateur sous lequel est ex\'ecut\'e Bacula de SYSTEM en un Id d'administrateur
-du domaine r\'esout le probl\`eme.
-
-\subsection*{Une restauration peut prendre du temps}
-\index[general]{temps!Restauration}
-\index[general]{Une restauration peut prendre du temps}
-\addcontentsline{toc}{subsection}{Une restauration peut prendre du temps}
-
-Restaurer des fichiers est g\'en\'eralement {\bf beaucoup} plus lent que de les
-sauvegarder, ce pour plusieurs raisons. La premi\`ere est que lors d'une sauvegarde,
-la cartouche est normalement d\'ej\`a positionn\'ee, Bacula n'a qu'\`a \'ecrire dessus.
-D'autre part, les restaurations \'etant si rares (par rapport aux sauvegardes),
-Bacula ne garde dans le catalogue que l'emplacement sur la cartouche du premier
-fichier et du premier bloc pour chaque job, et non l'emplacement de chaque fichier,
-ce qui occuperait trop de place dans le catalogue.
-
-Bacula se place d'abord sur la bonne marque de fichier sur la cartouche, puis
-sur le bloc correct, puis lit s\'equentiellement chaque enregistrement jusqu'\`a
-trouver ceux correspondant aux fichier que vous voulez restaurer. Une fois ces
-fichiers restaur\'es, Bacula cesse de lire la cartouche.
-
-Enfin, au lieu de simplement lire un fichier comme pour une sauvegarde, Bacula
-doit, lors d'une restauration, cr\'eer les fichiers, tandis que le syst\`eme
-d'exploitation doit, de son cot\'e, allouer de l'espace disque pour ces fichiers
-restaur\'es.
-
-Pour toutes ces raisons, le processus de restauration est g\'en\'eralement beaucoup
-plus lent que celui de sauvegarde (une restauration peut prendre trois fois
-plus de temps que la sauvegarde).
-
-\subsection*{Probl\`emes lors de la restauration de fichiers}
-\index[general]{Fichiers!Probl\`emes de restauration}
-\index[general]{Probl\`emes lors de la restauration de fichiers}
-\addcontentsline{toc}{subsection}{Probl\`emes lors de la restauration de fichiers}
-
-Les probl\`emes que les utilisateurs rencontrent le plus souvent lors des restaurations
-sont des messages d'erreurs tels que :
-
-\footnotesize
-\begin{verbatim}
-04-Jan 00:33 z217-sd: RestoreFiles.2005-01-04_00.31.04 Error:
-block.c:868 Volume data error at 20:0! Short block of 512 bytes on
-device /dev/tape discarded.
-\end{verbatim}
-\normalsize
-
-ou
-
-\footnotesize
-\begin{verbatim}
-04-Jan 00:33 z217-sd: RestoreFiles.2005-01-04_00.31.04 Error:
-block.c:264 Volume data error at 20:0! Wanted ID: "BB02", got ".".
-Buffer discarded.
-\end{verbatim}
-\normalsize
-
-Ces deux types de messages indiquent que vous avez probablement utilis\'e votre
-lecteur en mode "blocs de taille fixe" plut\^ot qu'en mode "blocs de taille
-variable". Le mode "blocs de taille fixe" fonctionne avec tout programme
-qui lit les cartouches s\'equentiellement tel que {\bf tar}, cependant Bacula
-repositionne la bande suivant les blocs lors des restaurations, ce qui lui
-permet d'am\'eliorer les performances en restauration de plusieurs ordres
-de grandeur lorsqu'il s'agit de restaurer quelques fichiers isol\'es. Il existe
-plusieurs moyens pour vous tirer de ce mauvais pas.
-
-Tentez-les l'un apr\`es l'autre, en r\'etablissant votre ressource Device apr\`es
-chacun des tests :
-
-\begin{enumerate}
-\item D\'esactivez le positionnement par blocs ("Block Positioning = no"
- dans la ressource Device) et essayez de restaurer. Cette directive est
- r\'ecente et n'est pas encore bien test\'ee.
-\item R\'eglez \`a 512 les tailles minimum et maximum de blocs
- ("Minimum Block Size = 512" et "Maximum Block Size = 512") et essayez de
- restaurer. Si vous \^etes en mesure de d\'eterminer la taille de blocs
- utilis\'ee par votre lecteur pour \'ecrire les donn\'ees, vous devriez essayer
- cette valeur si la restauration a \'echou\'e avec 512.
-\item Editez le fichier restore.bsr \`a l'invite yes/mod/no de la
- commande Run xxx avant de valider la restauration, et supprimez tous les
- enregistrements VolBlock. Ce sont eux qui causent les repositionnements de
- la bande et les probl\`emes qui s'ensuivent si vous utilisez des blocs de taille
- fixe sur votre lecteur. Les commandes VolFile provoquent aussi le
- repositionnement, mais celui-ci fonctionne ind\'ependamment de la taille des blocs.
-\item Utilisez bextract pour extraire vos fichiers -- ce programme lit les
- volumes s\'equentiellement si vous utilisez la fonctionnalit\'e des listes
- d'inclusions, ou si vous utilisez un fichier .bsr (priv\'e des enregistrements
- VolBlock) \`a l'invite "yes/mod/no" qui pr\'ec\`ede le lancement de la
- restauration.
-\end{enumerate}
-
-\subsection*{Erreurs de restaurations}
-\index[general]{Erreurs!Restauration}
-\index[general]{Erreurs de restauration}
-\addcontentsline{toc}{subsection}{Erreurs de restauration}
-
-Il existe de multiples causes qui peuvent \^etre \`a l'origine de messages d'alerte ou d'erreurs
-lors des restaurations. Les plus courantes sont les suivantes :
-
-\begin{description}
-
-\item [file count mismatch]
- Cette erreur peut se produire dans les cas suivants :
- \begin{itemize}
- \item Vous avez enjoint Bacula \`a ne pas \'ecraser les fichiers
- existants ou plus r\'ecents.
- \item Bacula a commis une erreur dans le d\'ecompte des fichiers/r\'epertoires.
- Ceci est un probl\`eme inh\'erent \`a la complexit\'e des r\'epertoires, liens
- symboliques/durs, etc. Contr\^olez simplement que tous les fichiers voulus ont \'et\'e
- effectivement restaur\'es.
- \end{itemize}
-\item [file size error]
- Lorsque Bacula restaure un fichier, il v\'erifie que la taille du fichier
- restaur\'e est conforme aux donn\'ees d'\'etat enregistr\'ees au d\'ebut de la sauvegarde
- du fichier. En cas de divergence, Bacula affiche un message d'erreur. Cet
- divergence survient presque toujours \`a cause d'une \'ecriture du fichier
- au cours de sa sauvegarde. Dans ce cas, la taille du fichier restaur\'e
- est plus grande que la taille enregistr\'ee dans les donn\'ees d'\'etat. Cette
- erreur se produit souvent avec les fichiers de journaux.
-
- Si en revanche la taille du fichier restaur\'ee est plus petite, vous devriez
- pousser vos investigations du cot\'e d'un \'eventuel probl\`eme de bande et
- contr\^oler les rapports de Bacula ainsi que votre syst\`eme de journalisation.
-\end{description}
-
-\subsection*{Un exemple de ressource Restore Job}
-\index[general]{Exemple ressource Restore Job }
-\index[general]{Ressource!Exemple Restore Job }
-\addcontentsline{toc}{subsection}{Exemple ressource Restore Job}
-
-\footnotesize
-\begin{verbatim}
-Job {
- Name = "RestoreFiles"
- Type = Restore
- Client = Any-client
- FileSet = "Any-FileSet"
- Storage = Any-storage
- Where = /tmp/bacula-restores
- Messages = Standard
- Pool = Default
-}
-\end{verbatim}
-\normalsize
-Si la directive {\bf Where} n'est pas pr\'ecis\'ee, les fichiers sont restaur\'es \`a
-leur emplacement d'origine.
-\label{Selection}
-
-\subsection*{Les commande de s\'election de fichiers}
-\index[general]{Commandes!s\'election fichiers}
-\index[general]{Fichiers S\'election Commandes }
-\addcontentsline{toc}{subsection}{Commandes de s\'election de fichiers}
-
-Une fois que vous avez s\'electionn\'e les jobs \`a restaurer et apr\`es que Bacula a cr\'e\'e
-l'arborescence des r\'epertoires en m\'emoire, vous entrez dans le mode de s\'election
-de fichiers, ce qui est rappel\'e par l'invite ({\bf \$}). Dans ce mode, vous
-pouvez utiliser les commandes \'enum\'er\'ees plus haut. Vous pouvez naviguer dans
-l'arborescence avec la commande {\bf cd} tout comme vous le feriez dans
-un syst\`eme de fichiers. Lorsque vous \^etes dans un r\'epertoire, vous pouvez en
-s\'electionner des fichiers ou r\'epertoires pour restauration. Par d\'efaut, aucun
-fichier n'est s\'electionn\'e. Si vous souhaitez au contraire partir d'une situation
-o\`u tous les fichiers sont s\'electionn\'es, saisissez simplement : {\bf cd /} et
-{\bf mark *}. Sinon, s\'electionnez vos fichiers avec la commande {\bf mark}. Les
-commandes disponibles sont :
-
-\begin{description}
-
-\item [cd]
- La commande {\bf cd} change le r\'epertoire courant en l'argument sp\'ecifi\'e. les
- caract\`eres joker ne sont pas admis.
-
- Notez que sur les syst\`emes Windows, les diff\'erents disques (c:, d:, ...) sont
- trait\'es comme des r\'epertoires dans l'arborescence. Une cons\'equence est que vous
- devez saisir {\bf cd c:} ou \'eventuellement {\bf cd C:} pour descendre dans le
- premier r\'epertoire.
-
-\item [dir]
- \index[dir]{dir }
- La commande {\bf dir} est similaire \`a la commande {\bf ls}, mais produit un
- affichage au format long (tous les d\'etails). Cette commande peut \^etre un peu
- plus lente que la commande {\bf ls} car elle n\'ecessite l'acc\`es au catalogue
- pour produire les informations d\'etaill\'ees concernant chaque fichier.
-
-\item [estimate]
- \index[dir]{estimate }
- La commande {\bf estimate} affiche un aper\c{c}u du nombre total de fichiers dans
- l'arbre, de ceux s\'electionn\'es pour restauration, et une estimation du nombre
- d'octets \`a restaurer. Ceci peut-\^etre tr\`es utile si la machine o\`u vous comptez
- restaurer est limit\'ee en espace disque.
-
-\item [find]
- \index[dir]{find }
- La commande {\bf find} prend un ou plusieurs arguments et affiche tous les fichiers
- de l'arbre qui satisfont ces arguments. Les arguments peuvent comporter
- des caract\`eres joker. Cette commande est similaire \`a la commande Unix
- {\bf find / -name arg}.
-
-\item [ls]
- La commande {\bf ls} produit la liste des fichiers du r\'epertoire courant, comme
- le ferait la commande Unix {\bf ls}. Vous pouvez sp\'ecifier un argument
- comportant des caract\`eres joker, auquel cas seuls les fichiers concern\'es seront
- list\'es. Le nom de tout fichier s\'electionn\'e pour restauration est pr\'ec\'ed\'e
- d'un ast\'erisque ({\bf *}). Les noms de r\'epertoires sont suivis d'une barre oblique
- avant (slash {\bf /}) pour les distinguer des noms de fichiers.
-
-\item [lsmark]
- \index[fd]{lsmark}
- La commande {\bf lsmark} est similaire \`a la commande {\bf ls}, mais de port\'ee
- restreinte aux fichiers s\'electionn\'es pour restauration. D'autre part, contrairement
- \`a {\bf lsmark}, elle descend r\'ecursivement dans les sous-r\'epertoire du
- r\'epertoire s\'electionn\'e.
-
-\item [mark]
- \index[dir]{mark }
- La commande {\bf mark} vous permet de s\'electionner vos fichiers pour restauration.
- Elle prend pour unique argument le nom du fichier ou r\'epertoire (du r\'epertoire
- courant) \`a restaurer. L'argument peut comporter des caract\`eres joker, auquel cas
- tous les fichiers qui co\"incident avec le motif sp\'ecifi\'e sont s\'electionn\'es pour
- restauration. Si un r\'epertoire du r\'epertoire courant co\"incide avec l'argument,
- alors ce r\'epertoire et tous les fichiers qu'il contient sont r\'ecursivement
- s\'electionn\'es pour restauration. Chacun des fichiers s\'electionn\'e est identifiable par
- l'ast\'erisque qui pr\'ec\`ede son nom dans la liste produite par les commandes {\bf ls}
- ou {\bf dir}. Notez que fournir un chemin absolu en argument de la commande
- {\bf mark} ne produit pas le r\'esultat qu'on pourrait en attendre pour s\'electionner
- un fichier ou un r\'epertoire du r\'epertoire courant. La commande {\bf mark} travaille
- sur le r\'epertoire courant et sur les r\'epertoires enfants, mais ne remonte pas vers les
- r\'epertoires de plus haut niveau.
-
- Apr\`es ex\'ecution, la commande {\bf mark} affiche un bref r\'esum\'e :
-
-\footnotesize
-\begin{verbatim}
- No files marked.
-
-\end{verbatim}
-\normalsize
-
- si aucun fichier n'a \'et\'e s\'electionn\'e, ou :
-
-\footnotesize
-\begin{verbatim}
- nn files marked.
-
-\end{verbatim}
-\normalsize
-
- si certains fichiers ont \'et\'e s\'electionn\'es.
-
-\item [unmark]
- \index[dir]{unmark }
- la commande {\bf unmark} fonctionne exactement comme la commande {\bf mark}, mais
- sert \`a d\'es\'electionner les fichiers sp\'ecifi\'es pour qu'ils ne soient pas
- restaur\'es. Notez que la commande {\bf unmark} travaille sur le r\'epertoire courant
- et sur les r\'epertoires enfants, mais ne remonte pas vers les r\'epertoires de plus
- haut niveau. Si vous souhaitez d\'es\'electionner l'ensembles des fichiers, placez-vous
- \`a la racine ({\bf cd /}) avant de saisir {\bf unmark *}.
-
-\item [pwd]
- \index[dir]{pwd }
- La commande {\bf pwd} affiche le r\'epertoire courant. Elle ne prend aucun argument.
-
-\item [count]
- \index[dir]{count }
- La commande {\bf count} affiche le nombre total de fichiers dans l'arborescence des
- fichiers et le nombre de fichiers s\'electionn\'es pour restauration.
-
-\item [done]
- \index[dir]{done }
- Cette commande permet de quitter le mode de s\'election de fichiers.
-
-\item [exit]
- \index[fd]{exit }
- Cette commande permet de quitter le mode de s\'election de fichiers (identique \`a {\bf done}).
-
-\item [quit]
- \index[fd]{quit }
- Cette commande permet de quitter le mode de s\'election de fichiers sans ex\'ecuter la restauration.
-
-\item [help]
- \index[fd]{help }
- Cette commande affiche un aper\c{c}u des commandes disponibles.
-
-\item [?]
- Cette commande est identique \`a {\bf help}.
-\end{description}
-
-\label{database_restore}
-\subsection*{Restaurer lorsque tout va de travers}
-\index[general]{Restaurer lorsque tout va de travers}
-\index[general]{Restaurer le catalogue}
-\index[general]{Catalogue!Restaurer}
-\addcontentsline{toc}{subsection}{Restaurer lorsque tout va de travers}
-
-Je pr\'esente ici quelques-uns des probl\`emes qui peuvent survenir et
-rendre les op\'erations de restaurations plus difficiles, et quelques id\'ees
-pour se sortir de ces situations d\'elicates. Des informations plus
-sp\'ecifiques aux restaurations compl\`etes des \ilink{clients}{restore_client}
-ou du \ilink{serveur}{restore_server} sont fournies dans le chapitre
-\ilink{Disaster recovery avec Bacula}{_ChapterRescue}.
-
-\begin{description}
-\item[Probl\`eme]
- Mon catalogue est corrompu.
-\item[Solution]
- Pour SQLite, utilisez la commande {\bf vacuum} pour tenter de r\'ecup\'erer
- le catalogue. Pour MySQL ou PostgreSQL, consultez la documentation
- officielle de la base de donn\'ees. Des outils sp\'ecifiques vous permettront
- de contr\^oler et r\'eparer votre catalogue.
-
- Dans le cas contraire, vous devrez restaurer le catalogue.
-\item[Probl\`eme]
- Comment restaurer mon catalogue ?
-\item[Solution]
- Si vous avez sauvegard\'e votre catalogue quotidiennement (comme il se doit...)
- et avez fait un fichier {\it bootstrap}, vous pouvez imm\'ediatement
- recharger votre base de donn\'ees. Faites une copie de votre base courante,
- puis r\'einitialisez-la avec les scripts suivants :
-\begin{verbatim}
- ./drop_bacula_tables
- ./make_bacula_tables
-\end{verbatim}
- Apr\`es r\'einitialisation de la base, vous devriez pouvoir d\'emarrer Bacula.
- Si vous tentez maintenat d'utiliser la commande {\bf run}, \c{c}a ne
- marchera pas puisque le catalogue est vierge. Cependant, vous pouvez
- ex\'ecuter manuellement un job et sp\'ecifier votre fichier bootstrap.
- Pour cela, utilisez la commande {\bf run} et choisissez un job de type
- {\bf retore}. Si vous utilisez le bacula-dir.conf par d\'efaut, il s'agit
- de {\bf RestoreFiles}. Vous devriez obtenir quelque chose comme :
-
-\footnotesize
-\begin{verbatim}
-Run Restore job
-JobName: RestoreFiles
-Bootstrap: /home/kern/bacula/working/restore.bsr
-Where: /tmp/bacula-restores
-Replace: always
-FileSet: Full Set
-Client: rufus-fd
-Storage: File
-When: 2005-07-10 17:33:40
-Catalog: MyCatalog
-Priority: 10
-OK to run? (yes/mod/no):
-\end{verbatim}
-\normalsize
- Plusieurs param\`etres seront diff\'erents dans votre cas. Vous aller modifier
- (commande {\bf mod}) le param\`etre {\bf Bootstrap} pour qu'il pointe
- vers votre fichier bootstrap, et vous assurer que les autres param\`etres
- sont corrects. Notez que le FileSet est ignor\'e lorque vous utilisez un
- fichier bootstrap. Une fois que vous avez fix\'e tous les bons param\`etres,
- ex\'evutez le job, vous devriez r\'ecup\'erer la sauvegarde de votre catalogue.
- Il vous reste alors \`a r\'eg\'en\'erer votre base de donn\'ees \`a partir du
- fichier de sauvegarde ASCII.
-
-\item[Solution]
- Si vous avez sauvegard\'e votre catalogue mais n'avez pas fait de fichier
- bootstrap, la reconstruction du catalogue sera un peu plus difficile.
- Il vous faudra probablement utiliser {\bf bextract} pour extraire
- la sauvegarde du catalogue. D'abord vous devez la localiser en
- consultant le rapport de la derni\`ere sauvegarde du catalogue. Il comporte
- des informations qui vous seront pr\'ecieuses pour le restaurer rapidement.
- Par exemple, dans le rapport ci-dessous, les \'elements critiques sont
- {\it Volume name(s)}, {\it the Volume Session Id} et {\it Volume Session Time}.
- Si vous les connaissez, vous pouvez restaurer ais\'ement votre catalogue.
-\footnotesize
-\begin{verbatim}
-
-22-Apr 10:22 HeadMan: Start Backup JobId 7510,
-Job=CatalogBackup.2005-04-22_01.10.0
-22-Apr 10:23 HeadMan: Bacula 1.37.14 (21Apr05): 22-Apr-2005 10:23:06
- JobId: 7510
- Job: CatalogBackup.2005-04-22_01.10.00
- Backup Level: Full
- Client: Polymatou
- FileSet: "CatalogFile" 2003-04-10 01:24:01
- Pool: "Default"
- Storage: "DLTDrive"
- Start time: 22-Apr-2005 10:21:00
- End time: 22-Apr-2005 10:23:06
- FD Files Written: 1
- SD Files Written: 1
- FD Bytes Written: 210,739,395
- SD Bytes Written: 210,739,521
- Rate: 1672.5 KB/s
- Software Compression: None
- Volume name(s): DLT-22Apr05
- Volume Session Id: 11
- Volume Session Time: 1114075126
- Last Volume Bytes: 1,428,240,465
- Non-fatal FD errors: 0
- SD Errors: 0
- FD termination status: OK
- SD termination status: OK
- Termination: Backup OK
-
-\end{verbatim}
-\normalsize
- Avec ces informations, vous pouvez cr\'eer manuellement un fichier
- bootstrap et embrayer sur les instructions donn\'ees plus haut pour
- restaurer le catalogue. Un fichier bootstrap reconstruit pour le job
- ci-dessus ressemblerait \`a ceci :
-
-\footnotesize
-\begin{verbatim}
-Volume="DLT-22Apr05"
-VolSessionId=11
-VolSessionTime=1114075126
-FileIndex=1-1
-\end{verbatim}
-\normalsize
-
- o\`u les valeurs {\it Volume name}, {\it Volume Session Id}Â , et {\it Volume Session Time}
- conformes \`a celles du rapport de job ont \'et\'e introduites. Notez aussi
- le {\it FileIndex} de valeur 1, ce sera toujours le cas pourvu qu'un seul fichier
- ait \'et\'e sauvegard\'e par le job.
-
- L'inconv\'enient de ce fichier bootstrap par rapport \`a celui cr\'e\'e automatiquement
- lorsque vous le sp\'ecifiez est qu'il ne comporte aucune sp\'ecification {\it File}
- ou {\it Block}, aussi Bacula doit examiner toutes les donn\'ees du volume pour
- trouver le fichier requis. Un fichier bootstrap compl\`etement renseign\'e ressemblerait
- \`a ceci :
-
-\footnotesize
-\begin{verbatim}
-Volume="DLT-22Apr05"
-VolSessionId=11
-VolSessionTime=1114075126
-VolFile=118-118
-VolBlock=0-4053
-FileIndex=1-1
-\end{verbatim}
-\normalsize
-
-\item [Probl\`eme]
- J'essaye de restaurer depuis la derni\`ere sauvegarde compl\`ete en
- s\'electionnant le choix 3 dans le menu de restauration, puis le
- JobId \`a restaurer. Bacula affiche alors :
-
-\footnotesize
-\begin{verbatim}
- 1 Job 0 Files
-\end{verbatim}
-\normalsize
- et ne restaure rien.
-\item[Solution]
- Les enregistrements de fichiers ont tr\`es probablement \'et\'e \'elagu\'es du catalogue
- soit par expiration de leur p\'eriode de r\'etention (File Retention), soit par purge
- explicite du job. La commande {\it llist jobid=nn} permet d'obtenir toutes les
- informations importantes sur ce job :
-\footnotesize
-\begin{verbatim}
-llist jobid=120
- JobId: 120
- Job: save.2005-12-05_18.27.33
- Job.Name: save
- PurgedFiles: 0
- Type: B
- Level: F
- Job.ClientId: 1
- Client.Name: Rufus
- JobStatus: T
- SchedTime: 2005-12-05 18:27:32
- StartTime: 2005-12-05 18:27:35
- EndTime: 2005-12-05 18:27:37
- JobTDate: 1133803657
- VolSessionId: 1
- VolSessionTime: 1133803624
- JobFiles: 236
- JobErrors: 0
- JobMissingFiles: 0
- Job.PoolId: 4
- Pool.Name: Full
- Job.FileSetId: 1
- FileSet.FileSet: BackupSet
-\end{verbatim}
-\normalsize
- Vous pouvez alors d\'eterminer le(s) volume(s) avec :
-\footnotesize
-\begin{verbatim}
-sql
-select VolumeName from JobMedia,Media where JobId=1 and JobMedia.MediaId=Media.MediaId;
-\end{verbatim}
-\normalsize
- Finalement, vous pouvez cr\'eer un fichier bootstrap iavec ces informations
- comme d\'ecrit plus haut.
-
- A partir de la version 1.38.0, lorsque vous entrez un jobId apr\`es avoir
- fait le choix 3, Bacula v ous demande si vous voulez restaurer tous les
- fichiers du job, collecte pour vous les informations requises et \'ecrit le
- fichier bootstrap.
-
-\item [Probl\`eme]
- Vous n'avez ni fichier bootstrap, ni rapport de job pour votre sauvegarde
- de catalogue, mais vous avez une sauvegarde et vous savez sur quel volume.
-
-\item [Solution]
- Utilisez {\bf bls} pour d\'eterminer o\`u se trouve le fichier requis sur la bande.
- Par exemple :
-
-\footnotesize
-\begin{verbatim}
-./bls -j -V DLT-22Apr05 /dev/nst0
-\end{verbatim}
-\normalsize
- pourrait produire ceci :
-\footnotesize
-\begin{verbatim}
-bls: butil.c:258 Using device: "/dev/nst0" for reading.
-21-Jul 18:34 bls: Ready to read from volume "DLT-22Apr05" on device "DLTDrive"
-(/dev/nst0).
-Volume Record: File:blk=0:0 SessId=11 SessTime=1114075126 JobId=0 DataLen=164
-...
-Begin Job Session Record: File:blk=118:0 SessId=11 SessTime=1114075126
-JobId=7510
- Job=CatalogBackup.2005-04-22_01.10.0 Date=22-Apr-2005 10:21:00 Level=F Type=B
-End Job Session Record: File:blk=118:4053 SessId=11 SessTime=1114075126
-JobId=7510
- Date=22-Apr-2005 10:23:06 Level=F Type=B Files=1 Bytes=210,739,395 Errors=0
-Status=T
-...
-21-Jul 18:34 bls: End of Volume at file 201 on device "DLTDrive" (/dev/nst0),
-Volume "DLT-22Apr05"
-21-Jul 18:34 bls: End of all volumes.
-\end{verbatim}
-\normalsize
- Bien sur, il y aura de nombreuses autres informations affich\'ees, nous n'avons
- reproduit ici que les essentielles. D'apr\`es les informations sur le d\'ebut
- ({\it Begin job Session Record} et sur la fin {\it End Job Session Record} du
- job, vous pouvez \'ecrire un fichier bootstrap comme indiqu\'e plus haut.
-
-\item[Probl\`eme]
- Comment puis-je d\'eterminer o\`u un fichier est stock\'e ?
-\item[Solution]
- En principe, ce n'est pas n\'ecessaire. La commande {\bf restore} permet de
- restaurer la version de la sauvegarde la plus r\'ecente (option 5 du menu),
- ou une version sauvegard\'ee avant une date donn\'ee (option 8 du menu). Si vous
- connaissez le JobId du job qui l'a sauvegard\'e, vous pouvez utiliser l'option 3
- pour entrer ce JobId.
-
- Pour rechercher le JobId d'une sauvegarde d'un fichier donn\'e, choisissez
- l'option 2.
-
- Vous pouvez aussi utiliser la commande {\bf query} pour trouver l'information :
-
-\footnotesize
-\begin{verbatim}
-*query
-Available queries:
- 1: List Job totals:
- 2: List up to 20 places where a File is saved regardless of the directory:
- 3: List where the most recent copies of a file are saved:
- 4: List last 20 Full Backups for a Client:
- 5: List all backups for a Client after a specified time
- 6: List all backups for a Client
- 7: List Volume Attributes for a selected Volume:
- 8: List Volumes used by selected JobId:
- 9: List Volumes to Restore All Files:
- 10: List Pool Attributes for a selected Pool:
- 11: List total files/bytes by Job:
- 12: List total files/bytes by Volume:
- 13: List Files for a selected JobId:
- 14: List Jobs stored in a selected MediaId:
- 15: List Jobs stored for a given Volume name:
-Choose a query (1-15):
-\end{verbatim}
-\normalsize
-
-
-\end{description}
+++ /dev/null
-%%
-%%
-
-\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), Mandrake 10.x (mdk), Mandriva 2006.x (mdv) CentOS (centos3, centos4)
- Scientific Linux (sl3, sl4) and SuSE (su9, su10, su102). 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
-
-\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, CentOS 3/4 and x86\_64}
- The examples below show
- explicit build support for RHEL4 and CentOS 4. Build support
- for x86\_64 has also been added. Test builds have been done on CentOS but
- not RHEL4.
-\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 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"
-
-CentOS build
---define "build_centos3 1"
---define "build_centos4 1"
-
-Scientific Linux build
---define "build_sl3 1"
---define "build_sl4 1"
-
-SuSE build
---define "build_su9 1"
---define "build_su10 1"
---define "build_su102 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
---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 <youremail@site.org>"
-
-\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}
-
+++ /dev/null
-%%
-%%
-
-\section*{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}
-\addcontentsline{toc}{section}{Consid\'erations sur la s\'ecurit\'e de Bacula}
-
-\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}
-
-\subsection*{Compatibilit\'e ascendante}
-\index[general]{Compatibilit\'e ascendante}
-\addcontentsline{toc}{subsection}{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}
-
-\subsection*{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}{subsection}{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
-
-\subsection*{Ex\'ecuter Bacula sans \^etre root}
-\index[general]{Root!Ex\'ecuter Bacula sans \^etre }
-\index[general]{Ex\'ecuter Bacula sans \^etre root }
-\addcontentsline{toc}{subsection}{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
+++ /dev/null
-/*
- * html2latex
- */
-
-available {
- sun4_sunos.4
- sun4_solaris.2
- rs_aix.3
- rs_aix.4
- sgi_irix
-}
-
-description {
- From Jeffrey Schaefer, Geometry Center. Translates HTML document to LaTeX
-}
-
-install {
- bin/html2latex /afs/rpi.edu/dept/acs/rpinfo/filters/GChtml2latex/html2latex
- bin/html2latex.tag /afs/rpi.edu/dept/acs/rpinfo/filters/GChtml2latex/html2latex.tag
- bin/html2latex-local.tag /afs/rpi.edu/dept/acs/rpinfo/filters/GChtml2latex/html2latex-local.tag
- bin/webtex2latex.tag /afs/rpi.edu/dept/acs/rpinfo/filters/GChtml2latex/webtex2latex.tag
- man/man1/html2latex.1 /afs/rpi.edu/dept/acs/rpinfo/filters/GChtml2latex/html2latex.1
-}
+++ /dev/null
-%%
-%%
-
-\addcontentsline{lof}{figure}{Smart Memory Allocation with Orphaned Buffer
-Detection}
-\includegraphics{./smartall.eps}
-
-\section*{Smart Memory Allocation With Orphaned Buffer Detection }
-\label{_ChapterStart4}
-\index{Detection!Smart Memory Allocation With Orphaned Buffer }
-\index{Smart Memory Allocation With Orphaned Buffer Detection }
-\addcontentsline{toc}{section}{Smart Memory Allocation With Orphaned Buffer
-Detection}
-
-
-Few things are as embarrassing as a program that leaks, yet few errors are so
-easy to commit or as difficult to track down in a large, complicated program
-as failure to release allocated memory. SMARTALLOC replaces the standard C
-library memory allocation functions with versions which keep track of buffer
-allocations and releases and report all orphaned buffers at the end of program
-execution. By including this package in your program during development and
-testing, you can identify code that loses buffers right when it's added and
-most easily fixed, rather than as part of a crisis debugging push when the
-problem is identified much later in the testing cycle (or even worse, when the
-code is in the hands of a customer). When program testing is complete, simply
-recompiling with different flags removes SMARTALLOC from your program,
-permitting it to run without speed or storage penalties.
-
-In addition to detecting orphaned buffers, SMARTALLOC also helps to find other
-common problems in management of dynamic storage including storing before the
-start or beyond the end of an allocated buffer, referencing data through a
-pointer to a previously released buffer, attempting to release a buffer twice
-or releasing storage not obtained from the allocator, and assuming the initial
-contents of storage allocated by functions that do not guarantee a known
-value. SMARTALLOC's checking does not usually add a large amount of overhead
-to a program (except for programs which use {\tt realloc()} extensively; see
-below). SMARTALLOC focuses on proper storage management rather than internal
-consistency of the heap as checked by the malloc\_debug facility available on
-some systems. SMARTALLOC does not conflict with malloc\_debug and both may be
-used together, if you wish. SMARTALLOC makes no assumptions regarding the
-internal structure of the heap and thus should be compatible with any C
-language implementation of the standard memory allocation functions.
-
-\subsubsection*{ Installing SMARTALLOC}
-\index{SMARTALLOC!Installing }
-\index{Installing SMARTALLOC }
-\addcontentsline{toc}{subsubsection}{Installing SMARTALLOC}
-
-SMARTALLOC is provided as a Zipped archive,
-\elink{smartall.zip}{http://www.fourmilab.ch/smartall/smartall.zip}; see the
-download instructions below.
-
-To install SMARTALLOC in your program, simply add the statement:
-
-to every C program file which calls any of the memory allocation functions
-({\tt malloc}, {\tt calloc}, {\tt free}, etc.). SMARTALLOC must be used for
-all memory allocation with a program, so include file for your entire program,
-if you have such a thing. Next, define the symbol SMARTALLOC in the
-compilation before the inclusion of smartall.h. I usually do this by having my
-Makefile add the ``{\tt -DSMARTALLOC}'' option to the C compiler for
-non-production builds. You can define the symbol manually, if you prefer, by
-adding the statement:
-
-{\tt \#define SMARTALLOC}
-
-At the point where your program is all done and ready to relinquish control to
-the operating system, add the call:
-
-{\tt \ \ \ \ \ \ \ \ sm\_dump(}{\it datadump}{\tt );}
-
-where {\it datadump} specifies whether the contents of orphaned buffers are to
-be dumped in addition printing to their size and place of allocation. The data
-are dumped only if {\it datadump} is nonzero, so most programs will normally
-use ``{\tt sm\_dump(0);}''. If a mysterious orphaned buffer appears that can't
-be identified from the information this prints about it, replace the statement
-with ``{\tt sm\_dump(1)};''. Usually the dump of the buffer's data will
-furnish the additional clues you need to excavate and extirpate the elusive
-error that left the buffer allocated.
-
-Finally, add the files ``smartall.h'' and ``smartall.c'' from this release to
-your source directory, make dependencies, and linker input. You needn't make
-inclusion of smartall.c in your link optional; if compiled with SMARTALLOC not
-defined it generates no code, so you may always include it knowing it will
-waste no storage in production builds. Now when you run your program, if it
-leaves any buffers around when it's done, each will be reported by {\tt
-sm\_dump()} on stderr as follows:
-
-\footnotesize
-\begin{verbatim}
-Orphaned buffer: 120 bytes allocated at line 50 of gutshot.c
-\end{verbatim}
-\normalsize
-
-\subsubsection*{ Squelching a SMARTALLOC}
-\index{SMARTALLOC!Squelching a }
-\index{Squelching a SMARTALLOC }
-\addcontentsline{toc}{subsubsection}{Squelching a SMARTALLOC}
-
-Usually, when you first install SMARTALLOC in an existing program you'll find
-it nattering about lots of orphaned buffers. Some of these turn out to be
-legitimate errors, but some are storage allocated during program
-initialisation that, while dynamically allocated, is logically static storage
-not intended to be released. Of course, you can get rid of the complaints
-about these buffers by adding code to release them, but by doing so you're
-adding unnecessary complexity and code size to your program just to silence
-the nattering of a SMARTALLOC, so an escape hatch is provided to eliminate the
-need to release these buffers.
-
-Normally all storage allocated with the functions {\tt malloc()}, {\tt
-calloc()}, and {\tt realloc()} is monitored by SMARTALLOC. If you make the
-function call:
-
-\footnotesize
-\begin{verbatim}
- sm_static(1);
-\end{verbatim}
-\normalsize
-
-you declare that subsequent storage allocated by {\tt malloc()}, {\tt
-calloc()}, and {\tt realloc()} should not be considered orphaned if found to
-be allocated when {\tt sm\_dump()} is called. I use a call on ``{\tt
-sm\_static(1);}'' before I allocate things like program configuration tables
-so I don't have to add code to release them at end of program time. After
-allocating unmonitored data this way, be sure to add a call to:
-
-\footnotesize
-\begin{verbatim}
- sm_static(0);
-\end{verbatim}
-\normalsize
-
-to resume normal monitoring of buffer allocations. Buffers allocated while
-{\tt sm\_static(1}) is in effect are not checked for having been orphaned but
-all the other safeguards provided by SMARTALLOC remain in effect. You may
-release such buffers, if you like; but you don't have to.
-
-\subsubsection*{ Living with Libraries}
-\index{Libraries!Living with }
-\index{Living with Libraries }
-\addcontentsline{toc}{subsubsection}{Living with Libraries}
-
-Some library functions for which source code is unavailable may gratuitously
-allocate and return buffers that contain their results, or require you to pass
-them buffers which they subsequently release. If you have source code for the
-library, by far the best approach is to simply install SMARTALLOC in it,
-particularly since this kind of ill-structured dynamic storage management is
-the source of so many storage leaks. Without source code, however, there's no
-option but to provide a way to bypass SMARTALLOC for the buffers the library
-allocates and/or releases with the standard system functions.
-
-For each function {\it xxx} redefined by SMARTALLOC, a corresponding routine
-named ``{\tt actually}{\it xxx}'' is furnished which provides direct access to
-the underlying system function, as follows:
-
-\begin{quote}
-
-\begin{longtable}{ll}
-\multicolumn{1}{l }{\bf Standard function } & \multicolumn{1}{l }{\bf Direct
-access function } \\
-{{\tt malloc(}{\it size}{\tt )} } & {{\tt actuallymalloc(}{\it size}{\tt )}
-} \\
-{{\tt calloc(}{\it nelem}{\tt ,} {\it elsize}{\tt )} } & {{\tt
-actuallycalloc(}{\it nelem}, {\it elsize}{\tt )} } \\
-{{\tt realloc(}{\it ptr}{\tt ,} {\it size}{\tt )} } & {{\tt
-actuallyrealloc(}{\it ptr}, {\it size}{\tt )} } \\
-{{\tt free(}{\it ptr}{\tt )} } & {{\tt actuallyfree(}{\it ptr}{\tt )} }
-
-\end{longtable}
-
-\end{quote}
-
-For example, suppose there exists a system library function named ``{\tt
-getimage()}'' which reads a raster image file and returns the address of a
-buffer containing it. Since the library routine allocates the image directly
-with {\tt malloc()}, you can't use SMARTALLOC's {\tt free()}, as that call
-expects information placed in the buffer by SMARTALLOC's special version of
-{\tt malloc()}, and hence would report an error. To release the buffer you
-should call {\tt actuallyfree()}, as in this code fragment:
-
-\footnotesize
-\begin{verbatim}
- struct image *ibuf = getimage("ratpack.img");
- display_on_screen(ibuf);
- actuallyfree(ibuf);
-\end{verbatim}
-\normalsize
-
-Conversely, suppose we are to call a library function, ``{\tt putimage()}'',
-which writes an image buffer into a file and then releases the buffer with
-{\tt free()}. Since the system {\tt free()} is being called, we can't pass a
-buffer allocated by SMARTALLOC's allocation routines, as it contains special
-information that the system {\tt free()} doesn't expect to be there. The
-following code uses {\tt actuallymalloc()} to obtain the buffer passed to such
-a routine.
-
-\footnotesize
-\begin{verbatim}
- struct image *obuf =
- (struct image *) actuallymalloc(sizeof(struct image));
- dump_screen_to_image(obuf);
- putimage("scrdump.img", obuf); /* putimage() releases obuf */
-\end{verbatim}
-\normalsize
-
-It's unlikely you'll need any of the ``actually'' calls except under very odd
-circumstances (in four products and three years, I've only needed them once),
-but they're there for the rare occasions that demand them. Don't use them to
-subvert the error checking of SMARTALLOC; if you want to disable orphaned
-buffer detection, use the {\tt sm\_static(1)} mechanism described above. That
-way you don't forfeit all the other advantages of SMARTALLOC as you do when
-using {\tt actuallymalloc()} and {\tt actuallyfree()}.
-
-\subsubsection*{ SMARTALLOC Details}
-\index{SMARTALLOC Details }
-\index{Details!SMARTALLOC }
-\addcontentsline{toc}{subsubsection}{SMARTALLOC Details}
-
-When you include ``smartall.h'' and define SMARTALLOC, the following standard
-system library functions are redefined with the \#define mechanism to call
-corresponding functions within smartall.c instead. (For details of the
-redefinitions, please refer to smartall.h.)
-
-\footnotesize
-\begin{verbatim}
- void *malloc(size_t size)
- void *calloc(size_t nelem, size_t elsize)
- void *realloc(void *ptr, size_t size)
- void free(void *ptr)
- void cfree(void *ptr)
-\end{verbatim}
-\normalsize
-
-{\tt cfree()} is a historical artifact identical to {\tt free()}.
-
-In addition to allocating storage in the same way as the standard library
-functions, the SMARTALLOC versions expand the buffers they allocate to include
-information that identifies where each buffer was allocated and to chain all
-allocated buffers together. When a buffer is released, it is removed from the
-allocated buffer chain. A call on {\tt sm\_dump()} is able, by scanning the
-chain of allocated buffers, to find all orphaned buffers. Buffers allocated
-while {\tt sm\_static(1)} is in effect are specially flagged so that, despite
-appearing on the allocated buffer chain, {\tt sm\_dump()} will not deem them
-orphans.
-
-When a buffer is allocated by {\tt malloc()} or expanded with {\tt realloc()},
-all bytes of newly allocated storage are set to the hexadecimal value 0x55
-(alternating one and zero bits). Note that for {\tt realloc()} this applies
-only to the bytes added at the end of buffer; the original contents of the
-buffer are not modified. Initializing allocated storage to a distinctive
-nonzero pattern is intended to catch code that erroneously assumes newly
-allocated buffers are cleared to zero; in fact their contents are random. The
-{\tt calloc()} function, defined as returning a buffer cleared to zero,
-continues to zero its buffers under SMARTALLOC.
-
-Buffers obtained with the SMARTALLOC functions contain a special sentinel byte
-at the end of the user data area. This byte is set to a special key value
-based upon the buffer's memory address. When the buffer is released, the key
-is tested and if it has been overwritten an assertion in the {\tt free}
-function will fail. This catches incorrect program code that stores beyond the
-storage allocated for the buffer. At {\tt free()} time the queue links are
-also validated and an assertion failure will occur if the program has
-destroyed them by storing before the start of the allocated storage.
-
-In addition, when a buffer is released with {\tt free()}, its contents are
-immediately destroyed by overwriting them with the hexadecimal pattern 0xAA
-(alternating bits, the one's complement of the initial value pattern). This
-will usually trip up code that keeps a pointer to a buffer that's been freed
-and later attempts to reference data within the released buffer. Incredibly,
-this is {\it legal} in the standard Unix memory allocation package, which
-permits programs to free() buffers, then raise them from the grave with {\tt
-realloc()}. Such program ``logic'' should be fixed, not accommodated, and
-SMARTALLOC brooks no such Lazarus buffer`` nonsense.
-
-Some C libraries allow a zero size argument in calls to {\tt malloc()}. Since
-this is far more likely to indicate a program error than a defensible
-programming stratagem, SMARTALLOC disallows it with an assertion.
-
-When the standard library {\tt realloc()} function is called to expand a
-buffer, it attempts to expand the buffer in place if possible, moving it only
-if necessary. Because SMARTALLOC must place its own private storage in the
-buffer and also to aid in error detection, its version of {\tt realloc()}
-always moves and copies the buffer except in the trivial case where the size
-of the buffer is not being changed. By forcing the buffer to move on every
-call and destroying the contents of the old buffer when it is released,
-SMARTALLOC traps programs which keep pointers into a buffer across a call on
-{\tt realloc()} which may move it. This strategy may prove very costly to
-programs which make extensive use of {\tt realloc()}. If this proves to be a
-problem, such programs may wish to use {\tt actuallymalloc()}, {\tt
-actuallyrealloc()}, and {\tt actuallyfree()} for such frequently-adjusted
-buffers, trading error detection for performance. Although not specified in
-the System V Interface Definition, many C library implementations of {\tt
-realloc()} permit an old buffer argument of NULL, causing {\tt realloc()} to
-allocate a new buffer. The SMARTALLOC version permits this.
-
-\subsubsection*{ When SMARTALLOC is Disabled}
-\index{When SMARTALLOC is Disabled }
-\index{Disabled!When SMARTALLOC is }
-\addcontentsline{toc}{subsubsection}{When SMARTALLOC is Disabled}
-
-When SMARTALLOC is disabled by compiling a program with the symbol SMARTALLOC
-not defined, calls on the functions otherwise redefined by SMARTALLOC go
-directly to the system functions. In addition, compile-time definitions
-translate calls on the ''{\tt actually}...{\tt ()}`` functions into the
-corresponding library calls; ''{\tt actuallymalloc(100)}``, for example,
-compiles into ''{\tt malloc(100)}``. The two special SMARTALLOC functions,
-{\tt sm\_dump()} and {\tt sm\_static()}, are defined to generate no code
-(hence the null statement). Finally, if SMARTALLOC is not defined, compilation
-of the file smartall.c generates no code or data at all, effectively removing
-it from the program even if named in the link instructions.
-
-Thus, except for unusual circumstances, a program that works with SMARTALLOC
-defined for testing should require no changes when built without it for
-production release.
-
-\subsubsection*{ The {\tt alloc()} Function}
-\index{Function!alloc }
-\index{Alloc() Function }
-\addcontentsline{toc}{subsubsection}{alloc() Function}
-
-Many programs I've worked on use very few direct calls to {\tt malloc()},
-using the identically declared {\tt alloc()} function instead. Alloc detects
-out-of-memory conditions and aborts, removing the need for error checking on
-every call of {\tt malloc()} (and the temptation to skip checking for
-out-of-memory).
-
-As a convenience, SMARTALLOC supplies a compatible version of {\tt alloc()} in
-the file alloc.c, with its definition in the file alloc.h. This version of
-{\tt alloc()} is sensitive to the definition of SMARTALLOC and cooperates with
-SMARTALLOC's orphaned buffer detection. In addition, when SMARTALLOC is
-defined and {\tt alloc()} detects an out of memory condition, it takes
-advantage of the SMARTALLOC diagnostic information to identify the file and
-line number of the call on {\tt alloc()} that failed.
-
-\subsubsection*{ Overlays and Underhandedness}
-\index{Underhandedness!Overlays and }
-\index{Overlays and Underhandedness }
-\addcontentsline{toc}{subsubsection}{Overlays and Underhandedness}
-
-String constants in the C language are considered to be static arrays of
-characters accessed through a pointer constant. The arrays are potentially
-writable even though their pointer is a constant. SMARTALLOC uses the
-compile-time definition {\tt ./smartall.wml} to obtain the name of the file in
-which a call on buffer allocation was performed. Rather than reserve space in
-a buffer to save this information, SMARTALLOC simply stores the pointer to the
-compiled-in text of the file name. This works fine as long as the program does
-not overlay its data among modules. If data are overlayed, the area of memory
-which contained the file name at the time it was saved in the buffer may
-contain something else entirely when {\tt sm\_dump()} gets around to using the
-pointer to edit the file name which allocated the buffer.
-
-If you want to use SMARTALLOC in a program with overlayed data, you'll have to
-modify smartall.c to either copy the file name to a fixed-length field added
-to the {\tt abufhead} structure, or else allocate storage with {\tt malloc()},
-copy the file name there, and set the {\tt abfname} pointer to that buffer,
-then remember to release the buffer in {\tt sm\_free}. Either of these
-approaches are wasteful of storage and time, and should be considered only if
-there is no alternative. Since most initial debugging is done in non-overlayed
-environments, the restrictions on SMARTALLOC with data overlaying may never
-prove a problem. Note that conventional overlaying of code, by far the most
-common form of overlaying, poses no problems for SMARTALLOC; you need only be
-concerned if you're using exotic tools for data overlaying on MS-DOS or other
-address-space-challenged systems.
-
-Since a C language ''constant`` string can actually be written into, most C
-compilers generate a unique copy of each string used in a module, even if the
-same constant string appears many times. In modules that contain many calls on
-allocation functions, this results in substantial wasted storage for the
-strings that identify the file name. If your compiler permits optimization of
-multiple occurrences of constant strings, enabling this mode will eliminate
-the overhead for these strings. Of course, it's up to you to make sure
-choosing this compiler mode won't wreak havoc on some other part of your
-program.
-
-\subsubsection*{ Test and Demonstration Program}
-\index{Test and Demonstration Program }
-\index{Program!Test and Demonstration }
-\addcontentsline{toc}{subsubsection}{Test and Demonstration Program}
-
-A test and demonstration program, smtest.c, is supplied with SMARTALLOC. You
-can build this program with the Makefile included. Please refer to the
-comments in smtest.c and the Makefile for information on this program. If
-you're attempting to use SMARTALLOC on a new machine or with a new compiler or
-operating system, it's a wise first step to check it out with smtest first.
-
-\subsubsection*{ Invitation to the Hack}
-\index{Hack!Invitation to the }
-\index{Invitation to the Hack }
-\addcontentsline{toc}{subsubsection}{Invitation to the Hack}
-
-SMARTALLOC is not intended to be a panacea for storage management problems,
-nor is it universally applicable or effective; it's another weapon in the
-arsenal of the defensive professional programmer attempting to create reliable
-products. It represents the current state of evolution of expedient debug code
-which has been used in several commercial software products which have,
-collectively, sold more than third of a million copies in the retail market,
-and can be expected to continue to develop through time as it is applied to
-ever more demanding projects.
-
-The version of SMARTALLOC here has been tested on a Sun SPARCStation, Silicon
-Graphics Indigo$^2$, and on MS-DOS using both Borland and Microsoft C. Moving
-from compiler to compiler requires the usual small changes to resolve disputes
-about prototyping of functions, whether the type returned by buffer allocation
-is {\tt char\ *} or {\tt void\ *}, and so forth, but following those changes
-it works in a variety of environments. I hope you'll find SMARTALLOC as useful
-for your projects as I've found it in mine.
-
-\subsection*{
-\elink{}{http://www.fourmilab.ch/smartall/smartall.zip}
-\elink{Download smartall.zip}{http://www.fourmilab.ch/smartall/smartall.zip}
-(Zipped archive)}
-\index{Archive! Download smartall.zip Zipped }
-\index{ Download smartall.zip (Zipped archive) }
-\addcontentsline{toc}{subsection}{ Download smartall.zip (Zipped archive)}
-
-SMARTALLOC is provided as
-\elink{smartall.zip}{http://www.fourmilab.ch/smartall/smartall.zip}, a
-\elink{Zipped}{http://www.pkware.com/} archive containing source code,
-documentation, and a {\tt Makefile} to build the software under Unix.
-
-\subsubsection*{ Copying}
-\index{Copying }
-\addcontentsline{toc}{subsubsection}{Copying}
-
-\begin{quote}
-SMARTALLOC is in the public domain. Permission to use, copy, modify, and
-distribute this software and its documentation for any purpose and without fee
-is hereby granted, without any conditions or restrictions. This software is
-provided ''as is`` without express or implied warranty.
-\end{quote}
-
-{\it
-\elink{by John Walker}{http://www.fourmilab.ch}
-October 30th, 1998 }
+++ /dev/null
-%%
-%%
-
-\section*{Data Spooling}
-\label{_ChapterStart5}
-\index[general]{Data Spooling }
-\index[general]{Spooling!Data }
-\addcontentsline{toc}{section}{Data Spooling}
-
-Bacula allows you to specify that you want the Storage daemon to initially
-write your data to disk and then subsequently to tape. This serves several
-important purposes.
-
-\begin{itemize}
-\item It can take a long time for data to come in from the File daemon during
- an Incremental backup. If it is directly written to tape, the tape will start
- and stop or shoe-shine as it is often called causing tape wear. By first
- writing the data to disk, then writing it to tape, the tape can be kept in
- continual motion.
-\item While the spooled data is being written to the tape, the despooling
- process has exclusive use of the tape. This means that you can spool multiple
- simultaneous jobs to disk, then have them very efficiently despooled one at a
- time without having the data blocks from several jobs intermingled, thus
- substantially improving the time needed to restore files.
-\item Writing to a tape can be slow. By first spooling your data to disk, you
- can often reduce the time the File daemon is running on a system, thus
- reducing downtime, and/or interference with users.
-\end{itemize}
-
-Data spooling is exactly that "spooling". It is not a way to first write a
-"backup" to a disk file and then to a tape. When the backup has only been spooled to disk,
-it is not complete yet and cannot be restored until it is written to tape. In a
-future version, Bacula will support writing a backup to disk then later {\bf
-Migrating} or {\bf Copying} it to a tape.
-
-The remainder of this chapter explains the various directives that you can use
-in the spooling process.
-\label{directives}
-
-\subsection*{Data Spooling Directives}
-\index[general]{Directives!Data Spooling }
-\index[general]{Data Spooling Directives }
-\addcontentsline{toc}{subsection}{Data Spooling Directives}
-
-The following directives can be used to control data spooling.
-
-\begin{itemize}
-\item To turn data spooling on/off at the Job level in the Job resource in
- the Director's conf file (default {\bf no}).
-
-{\bf SpoolData = yes|no}
-
-\item To override the Job specification in a Schedule Run directive in the
- Director's conf file.
-
-{\bf SpoolData = yes|no}
-
-\item To limit the maximum total size of the spooled data for a particular
- device. Specified in the Device resource of the Storage daemon's conf file
- (default unlimited).
-
-{\bf Maximum Spool Size = size}
- Where size is a the maximum spool size for all jobs specified in bytes.
-
-\item To limit the maximum total size of the spooled data for a particular
- device for a single job. Specified in the Device Resource of the Storage
- daemon's conf file (default unlimited).
-
-{\bf Maximum Job Spool Size = size}
- Where size is the maximum spool file size for a single job specified in
- bytes.
-
-\item To specify the spool directory for a particular device. Specified in
- the Device Resource of the Storage daemon's conf file (default, the working
- directory).
-
-{\bf Spool Directory = directory}
-\end{itemize}
-
-\label{warning}
-
-\subsection*{!!! MAJOR WARNING !!!}
-\index[general]{WARNING! MAJOR }
-\index[general]{ MAJOR WARNING }
-\addcontentsline{toc}{subsection}{MAJOR WARNING !!!}
-
-Please be very careful to exclude the spool directory from any backup,
-otherwise, your job will write enormous amounts of data to the Volume, and
-most probably terminate in error. This is because in attempting to backup the
-spool file, the backup data will be written a second time to the spool file,
-and so on ad infinitum.
-
-Another advice is to always specify the maximum spool size so that your disk
-doesn't completely fill up. In principle, data spooling will properly detect a
-full disk, and despool data allowing the job to continue. However, attribute
-spooling is not so kind to the user. If the disk on which attributes are being
-spooled fills, the job will be canceled. In addition, if your working
-directory is on the same partition as the spool directory, then Bacula jobs
-will fail possibly in bizarre ways when the spool fills.
-
-\label{points}
-\subsection*{Other Points}
-\index[general]{Points!Other }
-\index[general]{Other Points }
-\addcontentsline{toc}{subsection}{Other Points}
-
-\begin{itemize}
-\item When data spooling is enabled, Bacula automatically turns on attribute
- spooling. In other words, it also spools the catalog entries to disk. This is
- done so that in case the job fails, there will be no catalog entries
- pointing to non-existent tape backups.
-\item Attribute despooling is done at the end of the job, as a consequence,
- after Bacula stops writing the data to the tape, there may be a pause while
- the attributes are sent to the Directory and entered into the catalog before
- the job terminates.
-\item Attribute spool files are always placed in the working directory.
-\item When Bacula begins despooling data spooled to disk, it takes exclusive
- use of the tape. This has the major advantage that in running multiple
- simultaneous jobs at the same time, the blocks of several jobs will not be
- intermingled.
-\item It probably does not make a lot of sense to enable data spooling if you
- are writing to disk files.
-\item It is probably best to provide as large a spool file as possible to
- avoid repeatedly spooling/despooling. Also, while a job is despooling to
- tape, the File daemon must wait (i.e. spooling stops for the job while it is
- despooling).
-\item If you are running multiple simultaneous jobs, Bacula will continue
- spooling other jobs while one is despooling to tape, provided there is
- sufficient spool file space.
-\end{itemize}
+++ /dev/null
-%%
-%%
-
-\section*{Installing and Configuring SQLite}
-\label{_ChapterStart33}
-\index[general]{Installing and Configuring SQLite }
-\index[general]{SQLite!Installing and Configuring }
-\addcontentsline{toc}{section}{Installing and Configuring SQLite}
-
-\subsection*{Installing and Configuring SQLite -- Phase I}
-\index[general]{Phase I!Installing and Configuring SQLite -- }
-\index[general]{Installing and Configuring SQLite -- Phase I }
-\addcontentsline{toc}{subsection}{Installing and Configuring SQLite -- Phase
-I}
-
-If you use the {\bf ./configure \verb:--:with-sqlite} statement for configuring {\bf
-Bacula}, you will need SQLite version 2.8.16 or later installed. Our standard
-location (for the moment) for SQLite is in the dependency package {\bf
-depkgs/sqlite-2.8.16}. Please note that the version will be updated as new
-versions are available and tested.
-
-You may install and use SQLite version 3.x with Bacula by using:
-{\bf ./configure \verb:--:with-sqlite3}. You should ensure that
-when the database is created that you have used
-\begin{verbatim}
-PRAGMA synchronous = NORMAL;
-\end{verbatim}
-otherwiset SQLite version 3.x is 4 to 10 times slower than version 2.8.16.
-
-Installing and Configuring is quite easy.
-
-\begin{enumerate}
-\item Download the Bacula dependency packages
-\item Detar it with something like:
-
- {\bf tar xvfz depkgs.tar.gz}
-
- Note, the above command requires GNU tar. If you do not have GNU tar, a
- command such as:
-
- {\bf zcat depkgs.tar.gz | tar xvf -}
-
- will probably accomplish the same thing.
-
-\item {\bf cd depkgs}
-
-\item {\bf make sqlite}
-
-\end{enumerate}
-
-At this point, you should return to completing the installation of {\bf
-Bacula}.
-
-Please note that the {\bf ./configure} used to build {\bf Bacula} will need to
-include {\bf \verb:--:with-sqlite}.
-
-\subsection*{Installing and Configuring SQLite -- Phase II}
-\label{phase2}
-\index[general]{Phase II!Installing and Configuring SQLite -- }
-\index[general]{Installing and Configuring SQLite -- Phase II }
-\addcontentsline{toc}{subsection}{Installing and Configuring SQLite -- Phase
-II}
-
-This phase is done {\bf after} you have run the {\bf ./configure} command to
-configure {\bf Bacula}.
-
-{\bf Bacula} will install scripts for manipulating the database (create,
-delete, make tables etc) into the main installation directory. These files
-will be of the form *\_bacula\_* (e.g. create\_bacula\_database). These files
-are also available in the \lt{}bacula-src\gt{}/src/cats directory after
-running ./configure. If you inspect create\_bacula\_database, you will see
-that it calls create\_sqlite\_database. The *\_bacula\_* files are provided
-for convenience. It doesn't matter what database you have chosen;
-create\_bacula\_database will always create your database.
-
-At this point, you can create the SQLite database and tables:
-
-\begin{enumerate}
-\item cd \lt{}install-directory\gt{}
-
- This directory contains the Bacula catalog interface routines.
-
-\item ./make\_sqlite\_tables
-
- This script creates the SQLite database as well as the tables used by {\bf
- Bacula}. This script will be automatically setup by the {\bf ./configure}
- program to create a database named {\bf bacula.db} in {\bf Bacula's} working
- directory.
-\end{enumerate}
-
-\subsection*{Linking Bacula with SQLite}
-\index[general]{SQLite!Linking Bacula with }
-\index[general]{Linking Bacula with SQLite }
-\addcontentsline{toc}{subsection}{Linking Bacula with SQLite}
-
-If you have followed the above steps, this will all happen automatically and
-the SQLite libraries will be linked into {\bf Bacula}.
-
-\subsection*{Testing SQLite}
-\index[general]{SQLite!Testing }
-\index[general]{Testing SQLite }
-\addcontentsline{toc}{subsection}{Testing SQLite}
-
-We have much less "production" experience
-using SQLite than using MySQL. SQLite has
-performed flawlessly for us in all our testing. However,
-several users have reported corrupted databases while using
-SQLite. For that reason, we do not recommend it for production
-use.
-
-If Bacula crashes with the following type of error when it is started:
-\footnotesize
-\begin{verbatim}
-Using default Catalog name=MyCatalog DB=bacula
-Could not open database "bacula".
-sqlite.c:151 Unable to open Database=/var/lib/bacula/bacula.db.
-ERR=malformed database schema - unable to open a temporary database file
-for storing temporary tables
-\end{verbatim}
-\normalsize
-
-this is most likely caused by the fact that some versions of
-SQLite attempt to create a temporary file in the current directory.
-If that fails, because Bacula does not have write permission on
-the current directory, then you may get this errr. The solution is
-to start Bacula in a current directory where it has write permission.
-
-
-\subsection*{Re-initializing the Catalog Database}
-\index[general]{Database!Re-initializing the Catalog }
-\index[general]{Re-initializing the Catalog Database }
-\addcontentsline{toc}{subsection}{Re-initializing the Catalog Database}
-
-After you have done some initial testing with {\bf Bacula}, you will probably
-want to re-initialize the catalog database and throw away all the test Jobs
-that you ran. To do so, you can do the following:
-
-\footnotesize
-\begin{verbatim}
- cd <install-directory>
- ./drop_sqlite_tables
- ./make_sqlite_tables
-\end{verbatim}
-\normalsize
-
-Please note that all information in the database will be lost and you will be
-starting from scratch. If you have written on any Volumes, you must write an
-end of file mark on the volume so that Bacula can reuse it. Do so with:
-
-\footnotesize
-\begin{verbatim}
- (stop Bacula or unmount the drive)
- mt -f /dev/nst0 rewind
- mt -f /dev/nst0 weof
-\end{verbatim}
-\normalsize
-
-Where you should replace {\bf /dev/nst0} with the appropriate tape drive
-device name for your machine.
+++ /dev/null
-%%
-%%
-
-\section*{L'\'etat actuel de Bacula}
-\label{_ChapterStart2}
-\index[general]{L'\'etat actuel de Bacula }
-\index[general]{Bacula!L'\'etat actuel de }
-\addcontentsline{toc}{section}{L'\'etat actuel de Bacula}
-
-En d'autres termes, ce qui est et ce qui n'est pas actuellement impl\'ement\'e
-et fonctionnel.
-
-\subsection*{Ce qui est impl\'ement\'e}
-\index[general]{Ce qui est impl\'ement\'e }
-\addcontentsline{toc}{subsection}{Ce qui est impl\'ement\'e}
-
-\begin{itemize}
-\item Job Control
- \begin{itemize}
- \item Sauvegarde/restauration par le r\'eseau avec un Director centralis\'e.
- \item Scheduler interne pour le lancement automatique des
- \ilink{Jobs}{JobDef}.
- \item Programmation de plusieurs Jobs \`a la m\^eme heure.
- \item Execution simultan\'ee d'un Job ou plusieurs Jobs.
- \item S\'equencement des Jobs selon une hi\'erarchie de priorit\'es.
- \item \ilink{Console}{UADef} d'interfa\c{c}age avec le Director permettant un
- contr\^ole total. La console est disponible en version shell ou en mode graphique GNOME et wxWidget.
- Notez que pour l'instant, la version GNOME n'offre que tr\`es peu de fonctionnalit\'es
- suppl\'ementaires par rapport \'a la console shell.
- \end{itemize}
-
- \item S\'ecurit\'e
- \begin{itemize}
- \item Verification des fichiers pr\'ec\'edemment r\'ef\'erenc\'es offreant des possibilit\'es \'a la Tripwire
- (V\'erification de l'int\'egrit\'e du syst\`eme).
- \item Authentification par \'echange de mots de passe CRAM-MD5 entre chaque composant ({\it daemon}).
- \item \ilink{Chiffrement TLS (ssl)}{_ChapterStart61} entre chaque composant.
- \item Calcul de signatures MD5 ou SHA1 des fichiers sauvegard\'es sur demande.
- \end{itemize}
-
-
-\item Fonctionnalit\'es li\'ees aux restaurations
- \begin{itemize}
- \item Restauration d'un ou plusieurs fichiers s\'electionn\'es interactivement
- parmi les fichiers de la derni\`ere sauvegarde ou ceux d'une sauvegarde
- ant\'erieure \`a une date et heure donn\'ees.
- \item Restauration d'un syst\`eme complet "depuis le m\'etal brut".
- Cette op\'eration est largement automatis\'ee pour les syst\`emes Linux et
- partiellement pour les Solaris. Consultez le
- \ilink{Plan de Reprise d'activit\'e avec Bacula}{_ChapterStart38}.
- Selon certains utilisateurs, la restauration "depuis le m\'etal brut"
- fonctionne aussi pour les syst\`emes Win2K/XP.
- \item Listage et restauration des fichiers avec les outils autonomes {\bf
- bextract}. Entre autres choses, ceci permet l'extraction de fichiers quand
- Bacula et/ou le catalogue ne sont pas disponibles. Notez : La m\'ethode
- recommand\'ee pour restaurer des fichiers est d'utiliser la commande restore
- dans la Console. Ces programmes sont con\c{c}us pour une utilisation en
- dernier recours.
- \item Possibilit\'e de r\'eg\'en\'erer le catalogue par balayage des volumes
- de sauvegarde gr\^ace au programme {\bf bscan}.
- \end{itemize}
-
-\item Catalogue SQL
- \begin{itemize}
- \item Fonctions de base de donn\'ees (catalogue) pour les informations
- concernant les volumes, pools, jobs et fichiers sauvegard\'es.
- \item Support pour des catalogues de type SQLite, PostgreSQL, et MySQL.
- \item Requ\^etes utilisateur arbitraires sur les bases de donn\'ees SQLite,
- PostgreSQL et MySQL.
- \end{itemize}
-
-\item Gestion avanc\'ee des pools et volume
- \begin{itemize}
- \item Marquage (label) des Volumes pour pr\'evenir tout \'ecrasement
- accidentel (au moins par Bacula).
- \item Un nombre quelconque de Jobs et Clients peuvent \^etre sauvegard\'es sur
- un Volume unique. Cela signifie que vous pouvez sauvegarder et restaurer des
- machines Linux, Unix, Sun, et Windows sur le m\^eme volume.
- \item Sauvegardes multi-volumes. Lorsqu'un Volume est plein, {\bf Bacula}
- r\'eclame automatiquement le volume suivant et poursuit la sauvegarde.
- \item Gestion de librairie par
- \ilink{Pools et Volumes}{PoolResource} offrant beaucoup de
- flexibilit\'e dans la gestion des volumes (par exemple, groupes de volumes mensuels,
- hebdomadaires, quotidiens ou diff\'erenci\'es par client,...).
- \item Format d'\'ecriture de donn\'ees sur les volumes ind\'ependant des
- machines. Les clients Linux, Solaris, et Windows peuvent tous \^etre
- sauvegard\'es sur le m\^eme volume si d\'esir\'e.
- \item Prise en charge flexible des
- \ilink{ messages}{MessageResource} incluant le routage des
- messages depuis n'importe quel {\it daemon} vers le Director pour un
- reporting automatique par e-mail.
- \item Possibilit\'e de mettre les donn\'ees sur un tampon disque (data
- spooling) lors des sauvegardes avec \'ecriture sur cartouche
- asynchrone. Ceci pr\'evient les arr\`ets et red\'emarrage (NDT : "shoe shine") des lecteurs,
- surtout lors des incr\'ementales et diff\'erentielles.
- \end{itemize}
-
-\item Support avanc\'e pour la plupart des p\'eriph\'eriques de stockage
- \begin{itemize}
- \item Support pour les librairies de sauvegarde via une simple interface shell
- capable de s'interfacer avec pratiquement n'importe quel programme
- autochargeur.
- \item Support pour les librairies \'equip\'ees de lecteurs de codes barres --
- marquage (labeling) automatique selon les codes barres.
- \item Support pour les librairies \`a magasins multiples, soit par
- l'utilisation des codes barres, soit par lecture des cartouches.
- \item Support pour les librairies avec plusieurs lecteurs.
- \item Sauvegardes/restaurations "Raw device". Les restaurations doivent
- alors s'effectuer vers le m\^eme support physique que la sauvegarde.
- \item Tous les blocs de donn\'ees des volumes (approx 64K bytes) contiennent
- une somme de contr\^ole.
- \end{itemize}
-
-\item Support pour de nonbreux syst\`emes d'exploitation
- \begin{itemize}
- \item Programm\'e pour prendre en charge des noms de fichiers et messages
- arbitrairement longs.
- \item Compression GZIP fichier par fichier effectu\'ee, si activ\'ee, par le
- programme Client avant le transfert sur le r\'eseau.
- \item Sauvegarde et restaure les POSIX ACLs.
- \item Liste d'acc\`es \`a la console qui permet de restreindre l'acc\`es des
- utilisateurs \`a leurs donn\'ees seulement.
- \item Support pour sauvegarde et restauration de fichiers de plus de 2GB.
- \item Support pour les machines 64 bit, e.g. amd64.
- \item Possibilit\'e de chiffrer les communications entre les {\it daemons} en
- utilisant stunnel.
- \item Support des \'etiquettes (labels) de cartouches ANSI et IBM.
- \item Support des noms de fichiers Unicode (exemple : chinois) sur les machines Win32
- depuis la version 1.37.28.
- \item Sauvegarde coh\'erente des fichiers ouverts sur les syst\`emes Win32 (WinXP, Win2003
- mais pas Win2000), par l'utilisation de Volume Shadow Copy (VSS).
- \end{itemize}
-
-\item Divers
- \begin{itemize}
- \item Impl\'ementation multi-thread.
- \item Un \ilink{fichier de configuration}{_ChapterStart40} compr\'ehensible et
- extensible pour chaque {\it daemon}.
- \end{itemize}
-\end{itemize}
-
-\subsection*{Avantages de Bacula sur d'autres programmes de sauvegarde}
-\index[general]{Avantages de Bacula sur d'autres programmes de sauvegarde }
-\index[general]{Sauvegarde!Avantages de Bacula sur d'autres programmes de }
-\addcontentsline{toc}{subsection}{Avantages de Bacula sur d'autres programmes
-de sauvegarde}
-
-\begin{itemize}
-\item Du fait qu'il y a un client pour chaque machine, vous pouvez
- sauvegarder et restaurer des clients de tous types avec l'assurance que tous
- les attributs de fichiers sont convenablement sauvegard\'es et restaur\'es.
-\item Il est aussi possible de sauvegarder des clients sans aucun logiciel
- client en utilisant NFS ou Samba. Cependant, nous recommandons d'ex\'ecuter,
- si possible, un File Daemon client sur chaque machine \`a sauvegarder.
-\item Bacula prend en charge les sauvegardes multi-volumes.
-\item Une base de donn\'ees compl\`ete aux standards SQL de tous les fichiers
- sauvegard\'es. Ceci permet une vue en ligne des fichiers sauvegard\'es sur
- n'importe quel volume.
-\item Elagage automatique du catalogue (destruction des anciens
- enregistrements), ce qui simplifie l'administration de la base de donn\'ees.
-\item N'importe quel moteur de base de donn\'ees SQL peut \^etre utilis\'e, ce
- qui rend Bacula tr\`es flexible.
-\item La conception modulaire, mais int\'egr\'ee rend Bacula tr\`es
- \'echelonnable.
-\item Puisque Bacula utilise des {\it daemons} fichier clients, toute base de
- donn\'ees, toute application peut \^etre arr\'et\'ee proprement, puis
- red\'emarr\'ee par Bacula avec les outils natifs du syst\`eme sauvegard\'e
- (le tout dans un Job Bacula).
-\item Bacula int\`egre un Job Scheduler.
-\item Le format des volumes est document\'e et il existe de simples programmes C
- pour le lire/\'ecrire.
-\item Bacula utilise des ports TCP/IP bien d\'efinis (enregistr\'es) -- pas de
- rpcs, pas de m\'emoire partag\'ee.
-\item L'installation et la configuration de Bacula est relativement simple
- compar\'ee \`a d'autres produits comparables.
-\item Selon un utilisateur, Bacula est aussi rapide que la grande application
- commerciale majeure.
-\item Selon un autre utilisateur, Bacula est quatre fois plus rapide qu'une
- autre application commerciale, probablement parce que cette application
- stocke ses informations de catalogue dans un grand nombre de fichiers
- plut\^ot que dans une base SQL comme le fait Bacula.
-\item Au lieu d'une interface d'administration graphique, Bacula poss\`ede une
- interface shell qui permet \'a l'administrateur d'utiliser des outils tels que
- ssh pour administrer n'importe quelle partie de Bacula depuis n'importe o\`u.
-\item Bacula dispose d'un CD de secours pour les syst\`emes Linux dot\'es des
- fonctionnalit\'es suivantes :
- \begin{itemize}
- \item Vous le g\'en\'erez sur votre propre syst\`eme d'un simple make suivi de make burn.
- \item Il utilise votre noyau.
- \item Il capture vos param\`etres de disques et g\'en\`ere les scripts qui vous permettront
- de repartitionner automatiquement vos disques et de les formater pour y remettre
- ce qui s'y trouvait avant le d\'esastre.
- \item Il comporte un script qui red\'emarrera votre r\'eseau (avec l'adresse IP correcte).
- \item Il comporte un script qui monte automatiquement vos disques durs.
- \item Il comporte un Bacula FD complet statiquement li\'e.
- \item Vous pouvez ais\'ement y ajouter des donn\'ees ou programmes additionnels.
-\end{itemize}
-\end{itemize}
-
-\subsection*{Restrictions de l'impl\'ementation actuelle}
-\index[general]{Restrictions de l'impl\'ementation actuelle }
-\index[general]{Actuelle!Restrictions de l'impl\'ementation }
-\addcontentsline{toc}{subsection}{Restrictions de l'impl\'ementation actuelle}
-
-\begin{itemize}
-\item Les chemins et noms de fichiers de longueur sup\'erieure \'a 260 caract\`eres
- sur les syst\`emes Win32 ne sont pas support\'es. Il sont sauvegard\'es mais
- ne peuvent \^etre restaur\'es. L'utilisation de la directive {\bf Portable=yes}
- dans votre FileSet permet de restaurer ces fichiers vers les syst\`emes
- Unix et Linux. Les noms de fichiers longs seront impl\'ement\'es dans la
- version 1.40.
-\item Si vous avez plus de 4 billions de fichiers enregistr\'es dans votre
- catalogue, la base de donn\'ees FileId atteindra probablement ses limites.
- Ceci est une base de donn\'ees monstrueuse mais possible. A un certain stade,
- les champs FileId de Bacula passeront de 32 bits \`a 64 et ce probl\`eme
- dispara{\^\i}tra. En attendant, un palliatif satisfaisant consiste \`a
- utiliser plusieurs bases de donn\'ees
-\item Les fichiers supprim\'es apr\`es une sauvegarde full sont inclus dans
- les restaurations.
-\item Les sauvegardes diff\'erentielles et incr\'ementales de Bacula se basent sur
- les time stamps. Par cons\'equent, si vous d\'eplacez des fichiers d'un r\'epertoire
- existant ou un r\'epertoire complet appartenant \'a un FileSet apr\`es une Full,
- ces fichiers ne seront probablement pas sauvegard\'es par une incr\'ementale,
- car ils seront encore marqu\'es des anciennes dates. Vous devez explicitement
- mettre \'a jour ces dates sur tous les fichiers d\'eplac\'es. La correction de ce
- d\'efaut est en projet.
-\item Les Modules Syst\`eme de Fichiers (routines configurables pour
- sauvegarder/restaurer les fichiers sp\'eciaux) ne sont pas encore impl\'ement\'es.
-\item Le chiffrement des donn\'ees sur les volumes sera impl\'ement\'e dans la version 1.40.
-\item Bacula ne peut restaurer automatiquement les fichiers d'un job depuis
- deux ou plusieurs p\'eriph\'eriques de stockage diff\'erents. Si vous
- un m\^eme job utilise plusieurs p\'eriph\'eriques ou plusieurs types de
- m\'edia distincts, le processus de restauration n\'ecessitera certaines
- interventions manuelles.
-\item Bacula ne supporte pas les volumes disque amovibles pour l'instant.
- Des utilisateurs d\'eclarent \^etre parvenu \'a faire fonctionner Bacula
- ainsi, mais cela n\'ecessite de prendre garde de monter le bon volume, de
- plus, les restaurations diss\'emin\'ees sur plusieurs volumes risquent
- fort de ne pas fonctionner. Cette fonctionnalit\'e est pr\'evue pour la version
- 1.40.
-\end{itemize}
-
-\subsection*{Limitations ou Restrictions inh\'erentes \`a la conception}
-\index[general]{Limitations ou Restrictions inh\'erentes \`a la conception }
-\index[general]{Conception!Limitations ou Restrictions inh\'erentes \`a la }
-\addcontentsline{toc}{subsection}{Limitations ou Restrictions inh\'erentes \`a
-la conception}
-
-\begin{itemize}
-\item Les noms (tels que resource names, Volume names, ...) d\'efinis dans les
- fichiers de configuration de Bacula sont limit\'es \`a un nombre fix\'e de
- caract\`eres. Actuellement, la limite est d\'efinie \`a 127 caract\`eres.
-Notez que ceci ne concerne pas les noms de fichiers qui peuvent \^etre
-arbitrairement longs.
-\item Sur les machines Win32, les noms de fichiers sont limit\'es \'a 260 caract\`eres
- par l'API non-Unicode Windows que nous utilisons. A partir de la version 1.39,
- nous avons bascul\'e sur l'API Unicode et cette limitation n'existe plus.
-\end{itemize}
+++ /dev/null
-%%
-%%
-
-\section*{Configuration du Storage Daemon}
-\label{_ChapterStart31}
-\index[general]{Configuration du Storage Daemon}
-\index[general]{Configuration!Storage Daemon}
-\addcontentsline{toc}{section}{Configuration du Storage Daemon}
-
-\subsection*{General}
-\index[general]{General}
-\addcontentsline{toc}{subsection}{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}
-
-\subsection*{Ressource Storage}
-\label{StorageResource}
-\index[general]{Ressource!Storage}
-\index[general]{Ressource Sorage}
-\addcontentsline{toc}{subsection}{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
-
-\subsection*{La ressource Director}
-\label{DirectorResource1}
-\index[general]{Ressource Director}
-\index[general]{Resource!Director}
-\addcontentsline{toc}{subsection}{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}
-\subsection*{La Ressource Device}
-\index[general]{Resource!Device}
-\index[general]{Ressource Device}
-\addcontentsline{toc}{subsection}{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}
-
-\subsection*{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}{subsection}{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}
-
-
-\subsection*{Possibilit\'es}
-\index[general]{Possibilit\'es}
-\addcontentsline{toc}{subsection}{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}
-
-\subsection*{La ressource Messages}
-\label{MessagesResource1}
-\index[general]{Ressource!Messages}
-\index[general]{Ressource Messages}
-\addcontentsline{toc}{subsection}{Resource Messages}
-
-Pour une description de la ressource Messages, veuillez consulter
-le chapitre \ilink{La ressource Messages}{_ChapterStart15} de ce
-manuel.
-
-\subsection*{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}{subsection}{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
+++ /dev/null
-%%
-%%
-
-\section*{Backup Strategies}
-\label{_ChapterStart3}
-\index[general]{Strategies!Backup }
-\index[general]{Backup Strategies }
-\addcontentsline{toc}{section}{Backup Strategies}
-
-Although Recycling and Backing Up to Disk Volume have been discussed in
-previous chapters, this chapter is meant to give you an overall view of
-possible backup strategies and to explain their advantages and disadvantages.
-\label{Simple}
-
-\subsection*{Simple One Tape Backup}
-\index[general]{Backup!Simple One Tape }
-\index[general]{Simple One Tape Backup }
-\addcontentsline{toc}{subsection}{Simple One Tape Backup}
-
-Probably the simplest strategy is to back everything up to a single tape and
-insert a new (or recycled) tape when it fills and Bacula requests a new one.
-
-\subsubsection*{Advantages}
-\index[general]{Advantages }
-\addcontentsline{toc}{subsubsection}{Advantages}
-
-\begin{itemize}
-\item The operator intervenes only when a tape change is needed. (once a
- month at my site).
-\item There is little chance of operator error because the tape is not
- changed daily.
-\item A minimum number of tapes will be needed for a full restore. Typically
- the best case will be one tape and worst two.
-\item You can easily arrange for the Full backup to occur a different night
- of the month for each system, thus load balancing and shortening the backup
- time.
-\end{itemize}
-
-\subsubsection*{Disadvantages}
-\index[general]{Disadvantages }
-\addcontentsline{toc}{subsubsection}{Disadvantages}
-
-\begin{itemize}
-\item If your site burns down, you will lose your current backups, and in my
- case about a month of data.
-\item After a tape fills and you have put in a blank tape, the backup will
- continue, and this will generally happen during working hours.
- \end{itemize}
-
-\subsubsection*{Practical Details}
-\index[general]{Details!Practical }
-\index[general]{Practical Details }
-\addcontentsline{toc}{subsubsection}{Practical Details}
-
-This system is very simple. When the tape fills and Bacula requests a new
-tape, you {\bf unmount} the tape from the Console program, insert a new tape
-and {\bf label} it. In most cases after the label, Bacula will automatically
-mount the tape and resume the backup. Otherwise, you simply {\bf mount} the
-tape.
-
-Using this strategy, one typically does a Full backup once a week followed by
-daily Incremental backups. To minimize the amount of data written to the tape,
-one can do (as I do) a Full backup once a month on the first Sunday of the
-month, a Differential backup on the 2nd-5th Sunday of the month, and
-incremental backups the rest of the week.
-\label{Manual}
-
-\subsection*{Manually Changing Tapes}
-\index[general]{Tapes!Manually Changing }
-\index[general]{Manually Changing Tapes }
-\addcontentsline{toc}{subsection}{Manually Changing Tapes}
-
-If you use the strategy presented above, Bacula will ask you to change the
-tape, and you will {\bf unmount} it and then remount it when you have inserted
-the new tape.
-
-If you do not wish to interact with Bacula to change each tape, there are
-several ways to get Bacula to release the tape:
-
-\begin{itemize}
-\item In your Storage daemon's Device resource, set
- {\bf AlwaysOpen = no}
- In this case, Bacula will release the tape after every job. If you run
-several jobs, the tape will be rewound and repositioned to the end at the
-beginning of every job. This is not very efficient, but does let you change
-the tape whenever you want.
-\item Use a {\bf RunAfterJob} statement to run a script after your last job.
- This could also be an {\bf Admin} job that runs after all your backup jobs.
- The script could be something like:
-
-\footnotesize
-\begin{verbatim}
- #!/bin/sh
- /full-path/console -c /full-path/console.conf <<END_OF_DATA
- release storage=your-storage-name
- END_OF_DATA
-
-\end{verbatim}
-\normalsize
-
-In this example, you would have {\bf AlwaysOpen=yes}, but the {\bf release}
-command would tell Bacula to rewind the tape and on the next job assume the
-tape has changed. This strategy may not work on some systems, or on
-autochangers because Bacula will still keep the drive open.
-\item The final strategy is similar to the previous case except that you
- would use the unmount command to force Bacula to release the drive. Then you
- would eject the tape, and remount it as follows:
-
-\footnotesize
-\begin{verbatim}
- #!/bin/sh
- /full-path/console -c /full-path/console.conf <\<END_OF_DATA
- unmount storage=your-storage-name
- END_OF_DATA
- # the following is a shell command
- mt eject
- /full-path/console -c /full-path/console.conf <<END_OF_DATA
- mount storage=your-storage-name
- END_OF_DATA
-
-\end{verbatim}
-\normalsize
-
-\end{itemize}
-
-\label{Daily}
-
-\subsection*{Daily Tape Rotation}
-\index[general]{Rotation!Daily Tape }
-\index[general]{Daily Tape Rotation }
-\addcontentsline{toc}{subsection}{Daily Tape Rotation}
-
-This scheme is quite different from the one mentioned above in that a Full
-backup is done to a different tape every day of the week. Generally, the
-backup will cycle continuously through 5 or 6 tapes each week. Variations are
-to use a different tape each Friday, and possibly at the beginning of the
-month. Thus if backups are done Monday through Friday only, you need only 5
-tapes, and by having two Friday tapes, you need a total of 6 tapes. Many sites
-run this way, or using modifications of it based on two week cycles or longer.
-
-
-\subsubsection*{Advantages}
-\index[general]{Advantages }
-\addcontentsline{toc}{subsubsection}{Advantages}
-
-\begin{itemize}
-\item All the data is stored on a single tape, so recoveries are simple and
- faster.
-\item Assuming the previous day's tape is taken offsite each day, a maximum
- of one days data will be lost if the site burns down.
- \end{itemize}
-
-\subsubsection*{Disadvantages}
-\index[general]{Disadvantages }
-\addcontentsline{toc}{subsubsection}{Disadvantages}
-
-\begin{itemize}
-\item The tape must be changed every day requiring a lot of operator
- intervention.
-\item More errors will occur because of human mistakes.
-\item If the wrong tape is inadvertently mounted, the Backup for that day
- will not occur exposing the system to data loss.
-\item There is much more movement of the tape each day (rewinds) leading to
- shorter tape drive life time.
-\item Initial setup of Bacula to run in this mode is more complicated than
- the Single tape system described above.
-\item Depending on the number of systems you have and their data capacity, it
- may not be possible to do a Full backup every night for time reasons or
- reasons of tape capacity.
-\end{itemize}
-
-\subsubsection*{Practical Details}
-\index[general]{Details!Practical }
-\index[general]{Practical Details }
-\addcontentsline{toc}{subsubsection}{Practical Details}
-
-The simplest way to "force" Bacula to use a different tape each day is to
-define a different Pool for each day of the the week a backup is done. In
-addition, you will need to specify appropriate Job and File retention periods
-so that Bacula will relabel and overwrite the tape each week rather than
-appending to it. Nic Bellamy has supplied an actual working model of this
-which we include here.
-
-What is important is to create a different Pool for each day of the week, and
-on the {\bf run} statement in the Schedule, to specify which Pool is to be
-used. He has one Schedule that accomplishes this, and a second Schedule that
-does the same thing for the Catalog backup run each day after the main backup
-(Priorities were not available when this script was written). In addition, he
-uses a {\bf Max Start Delay} of 22 hours so that if the wrong tape is
-premounted by the operator, the job will be automatically canceled, and the
-backup cycle will re-synchronize the next day. He has named his Friday Pool
-{\bf WeeklyPool} because in that Pool, he wishes to have several tapes to be
-able to restore to a time older than one week.
-
-And finally, in his Storage daemon's Device resource, he has {\bf Automatic
-Mount = yes} and {\bf Always Open = No}. This is necessary for the tape
-ejection to work in his {\bf end\_of\_backup.sh} script below.
-
-For example, his bacula-dir.conf file looks like the following:
-
-\footnotesize
-\begin{verbatim}
-
-# /etc/bacula/bacula-dir.conf
-#
-# Bacula Director Configuration file
-#
-Director {
- Name = ServerName
- DIRport = 9101
- QueryFile = "/etc/bacula/query.sql"
- WorkingDirectory = "/var/lib/bacula"
- PidDirectory = "/var/run"
- SubSysDirectory = "/var/lock/subsys"
- Maximum Concurrent Jobs = 1
- Password = "console-pass"
- Messages = Standard
-}
-#
-# Define the main nightly save backup job
-#
-Job {
- Name = "NightlySave"
- Type = Backup
- Client = ServerName
- FileSet = "Full Set"
- Schedule = "WeeklyCycle"
- Storage = Tape
- Messages = Standard
- Pool = Default
- Write Bootstrap = "/var/lib/bacula/NightlySave.bsr"
- Max Start Delay = 22h
-}
-# Backup the catalog database (after the nightly save)
-Job {
- Name = "BackupCatalog"
- Type = Backup
- Client = ServerName
- FileSet = "Catalog"
- Schedule = "WeeklyCycleAfterBackup"
- Storage = Tape
- Messages = Standard
- Pool = Default
- # This creates an ASCII copy of the catalog
- RunBeforeJob = "/usr/lib/bacula/make_catalog_backup -u bacula"
- # This deletes the copy of the catalog, and ejects the tape
- RunAfterJob = "/etc/bacula/end_of_backup.sh"
- Write Bootstrap = "/var/lib/bacula/BackupCatalog.bsr"
- Max Start Delay = 22h
-}
-# Standard Restore template, changed by Console program
-Job {
- Name = "RestoreFiles"
- Type = Restore
- Client = ServerName
- FileSet = "Full Set"
- Storage = Tape
- Messages = Standard
- Pool = Default
- Where = /tmp/bacula-restores
-}
-# List of files to be backed up
-FileSet {
- Name = "Full Set"
- Include = signature=MD5 {
- /
- /data
- }
- Exclude = { /proc /tmp /.journal }
-}
-#
-# When to do the backups
-#
-Schedule {
- Name = "WeeklyCycle"
- Run = Level=Full Pool=MondayPool Monday at 8:00pm
- Run = Level=Full Pool=TuesdayPool Tuesday at 8:00pm
- Run = Level=Full Pool=WednesdayPool Wednesday at 8:00pm
- Run = Level=Full Pool=ThursdayPool Thursday at 8:00pm
- Run = Level=Full Pool=WeeklyPool Friday at 8:00pm
-}
-# This does the catalog. It starts after the WeeklyCycle
-Schedule {
- Name = "WeeklyCycleAfterBackup"
- Run = Level=Full Pool=MondayPool Monday at 8:15pm
- Run = Level=Full Pool=TuesdayPool Tuesday at 8:15pm
- Run = Level=Full Pool=WednesdayPool Wednesday at 8:15pm
- Run = Level=Full Pool=ThursdayPool Thursday at 8:15pm
- Run = Level=Full Pool=WeeklyPool Friday at 8:15pm
-}
-# This is the backup of the catalog
-FileSet {
- Name = "Catalog"
- Include = signature=MD5 {
- /var/lib/bacula/bacula.sql
- }
-}
-# Client (File Services) to backup
-Client {
- Name = ServerName
- Address = dionysus
- FDPort = 9102
- Catalog = MyCatalog
- Password = "client-pass"
- File Retention = 30d
- Job Retention = 30d
- AutoPrune = yes
-}
-# Definition of file storage device
-Storage {
- Name = Tape
- Address = dionysus
- SDPort = 9103
- Password = "storage-pass"
- Device = Tandberg
- Media Type = MLR1
-}
-# Generic catalog service
-Catalog {
- Name = MyCatalog
- dbname = bacula; user = bacula; password = ""
-}
-# Reasonable message delivery -- send almost all to email address
-# and to the console
-Messages {
- Name = Standard
- mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) %r\"
- -s \"Bacula: %t %e of %c %l\" %r"
- operatorcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) %r\"
- -s \"Bacula: Intervention needed for %j\" %r"
- mail = root@localhost = all, !skipped
- operator = root@localhost = mount
- console = all, !skipped, !saved
- append = "/var/lib/bacula/log" = all, !skipped
-}
-
-# Pool definitions
-#
-# Default Pool for jobs, but will hold no actual volumes
-Pool {
- Name = Default
- Pool Type = Backup
-}
-Pool {
- Name = MondayPool
- Pool Type = Backup
- Recycle = yes
- AutoPrune = yes
- Volume Retention = 6d
- Accept Any Volume = yes
- Maximum Volume Jobs = 2
-}
-Pool {
- Name = TuesdayPool
- Pool Type = Backup
- Recycle = yes
- AutoPrune = yes
- Volume Retention = 6d
- Accept Any Volume = yes
- Maximum Volume Jobs = 2
-}
-Pool {
- Name = WednesdayPool
- Pool Type = Backup
- Recycle = yes
- AutoPrune = yes
- Volume Retention = 6d
- Accept Any Volume = yes
- Maximum Volume Jobs = 2
-}
-Pool {
- Name = ThursdayPool
- Pool Type = Backup
- Recycle = yes
- AutoPrune = yes
- Volume Retention = 6d
- Accept Any Volume = yes
- Maximum Volume Jobs = 2
-}
-Pool {
- Name = WeeklyPool
- Pool Type = Backup
- Recycle = yes
- AutoPrune = yes
- Volume Retention = 12d
- Accept Any Volume = yes
- Maximum Volume Jobs = 2
-}
-# EOF
-\end{verbatim}
-\normalsize
-
-Note, the mailcommand and operatorcommand should be on a single line each.
-They were split to preserve the proper page width. In order to get Bacula to
-release the tape after the nightly backup, he uses a {\bf RunAfterJob} script
-that deletes the ASCII copy of the database back and then rewinds and ejects
-the tape. The following is a copy of {\bf end\_of\_backup.sh}
-
-\footnotesize
-\begin{verbatim}
-#! /bin/sh
-/usr/lib/bacula/delete_catalog_backup
-mt rewind
-mt eject
-exit 0
-\end{verbatim}
-\normalsize
-
-Finally, if you list his Volumes, you get something like the following:
-
-\footnotesize
-\begin{verbatim}
-*list media
-Using default Catalog name=MyCatalog DB=bacula
-Pool: WeeklyPool
-+-----+-----------+-------+--------+-----------+-----------------+-------+------+
-| MeId| VolumeName| MedTyp| VolStat| VolBytes | LastWritten | VolRet| Recyc|
-+-----+-----------+-------+--------+-----------+-----------------+-------+------+
-| 5 | Friday_1 | MLR1 | Used | 2157171998| 2003-07-11 20:20| 103680| 1 |
-| 6 | Friday_2 | MLR1 | Append | 0 | 0 | 103680| 1 |
-+-----+-----------+-------+--------+-----------+-----------------+-------+------+
-Pool: MondayPool
-+-----+-----------+-------+--------+-----------+-----------------+-------+------+
-| MeId| VolumeName| MedTyp| VolStat| VolBytes | LastWritten | VolRet| Recyc|
-+-----+-----------+-------+--------+-----------+-----------------+-------+------+
-| 2 | Monday | MLR1 | Used | 2260942092| 2003-07-14 20:20| 518400| 1 |
-+-----+-----------+-------+--------+-----------+-----------------+-------+------+
-Pool: TuesdayPool
-+-----+-----------+-------+--------+-----------+-----------------+-------+------+
-| MeId| VolumeName| MedTyp| VolStat| VolBytes | LastWritten | VolRet| Recyc|
-+-----+-----------+-------+--------+-----------+-----------------+-------+------+
-| 3 | Tuesday | MLR1 | Used | 2268180300| 2003-07-15 20:20| 518400| 1 |
-+-----+-----------+-------+--------+-----------+-----------------+-------+------+
-Pool: WednesdayPool
-+-----+-----------+-------+--------+-----------+-----------------+-------+------+
-| MeId| VolumeName| MedTyp| VolStat| VolBytes | LastWritten | VolRet| Recyc|
-+-----+-----------+-------+--------+-----------+-----------------+-------+------+
-| 4 | Wednesday | MLR1 | Used | 2138871127| 2003-07-09 20:2 | 518400| 1 |
-+-----+-----------+-------+--------+-----------+-----------------+-------+------+
-Pool: ThursdayPool
-+-----+-----------+-------+--------+-----------+-----------------+-------+------+
-| MeId| VolumeName| MedTyp| VolStat| VolBytes | LastWritten | VolRet| Recyc|
-+-----+-----------+-------+--------+-----------+-----------------+-------+------+
-| 1 | Thursday | MLR1 | Used | 2146276461| 2003-07-10 20:50| 518400| 1 |
-+-----+-----------+-------+--------+-----------+-----------------+-------+------+
-Pool: Default
-No results to list.
-\end{verbatim}
-\normalsize
-
-Note, I have truncated a number of the columns so that the information fits on
-the width of a page.
+++ /dev/null
-%%
-%%
-
-\section*{Using stunnel to Encrypt Communications to Clients}
-\label{_ChapterStart6}
-\index[general]{Clients!Using Bacula to Encrypt Communications to }
-\index[general]{Using Bacula to Encrypt Communications to Clients }
-\addcontentsline{toc}{section}{Using Bacula to Encrypt Communications to
-Clients}
-
-Prior to version 1.37, Bacula did not have built-in communications encryption.
-Please see the TLS chapter 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.
-
-\subsection*{Communications Ports Used}
-\index[general]{Used!Communications Ports }
-\index[general]{Communications Ports Used }
-\addcontentsline{toc}{subsection}{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.
-
-\subsection*{Encryption}
-\index[general]{Encryption }
-\addcontentsline{toc}{subsection}{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.
-
-\subsection*{A Picture}
-\index[general]{Picture }
-\addcontentsline{toc}{subsection}{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
-
-\subsection*{Certificates}
-\index[general]{Certificates }
-\addcontentsline{toc}{subsection}{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.
-
-\subsection*{Securing the Data Channel}
-\index[general]{Channel!Securing the Data }
-\index[general]{Securing the Data Channel }
-\addcontentsline{toc}{subsection}{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.
-
-\subsection*{Modification of bacula-dir.conf for the Data Channel}
-\index[general]{Modification of bacula-dir.conf for the Data Channel }
-\index[general]{Channel!Modification of bacula-dir.conf for the Data }
-\addcontentsline{toc}{subsection}{Modification of bacula-dir.conf 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.
-
-\subsection*{config Files for stunnel to Encrypt the Data Channel}
-\index[general]{Config Files for stunnel to Encrypt the Data Channel }
-\index[general]{Channel!config Files for stunnel to Encrypt the Data }
-\addcontentsline{toc}{subsection}{config Files for stunnel to Encrypt 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
-
-\subsection*{Starting and Testing the Data Encryption}
-\index[general]{Starting and Testing the Data Encryption }
-\index[general]{Encryption!Starting and Testing the Data }
-\addcontentsline{toc}{subsection}{Starting and Testing the Data Encryption}
-
-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}
-
-\subsection*{Encrypting the Control Channel}
-\index[general]{Channel!Encrypting the Control }
-\index[general]{Encrypting the Control Channel }
-\addcontentsline{toc}{subsection}{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.
-
-\subsection*{Modification of bacula-dir.conf for the Control Channel}
-\index[general]{Channel!Modification of bacula-dir.conf for the Control }
-\index[general]{Modification of bacula-dir.conf for the Control Channel }
-\addcontentsline{toc}{subsection}{Modification of bacula-dir.conf for the
-Control Channel}
-
-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.
-
-\subsection*{config Files for stunnel to Encrypt the Control Channel}
-\index[general]{Config Files for stunnel to Encrypt the Control Channel }
-\index[general]{Channel!config Files for stunnel to Encrypt the Control }
-\addcontentsline{toc}{subsection}{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
-
-\subsection*{Starting and Testing the Control Channel}
-\index[general]{Starting and Testing the Control Channel }
-\index[general]{Channel!Starting and Testing the Control }
-\addcontentsline{toc}{subsection}{Starting and Testing the Control Channel}
-
-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}
-
-\subsection*{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 }
-\addcontentsline{toc}{subsection}{Using stunnel to Encrypt to a Second Client}
-
-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.
-
-\subsection*{Creating a Self-signed Certificate}
-\index[general]{Creating a Self-signed Certificate }
-\index[general]{Certificate!Creating a Self-signed }
-\addcontentsline{toc}{subsection}{Creating a Self-signed Certificate}
-
-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.
-
-
-\subsection*{Getting a CA Signed Certificate}
-\index[general]{Certificate!Getting a CA Signed }
-\index[general]{Getting a CA Signed Certificate }
-\addcontentsline{toc}{subsection}{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.
-
-\subsection*{Using ssh to Secure the Communications}
-\index[general]{Communications!Using ssh to Secure the }
-\index[general]{Using ssh to Secure the Communications }
-\addcontentsline{toc}{subsection}{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.
+++ /dev/null
-%%
-%%
-
-\section*{Syst\`emes et mat\'eriels support\'es}
-\label{_ChapterStart}
-\index[general]{Syst\`emes et mat\'eriels support\'es }
-\addcontentsline{toc}{section}{Syst\`emes et mat\'eriels support\'es}
-
-\label{SysReqs}
-
-\subsection*{Caract\'eristiques syst\`eme g\'en\'erales indispensables \`a
-Bacula}
-\index[general]{Caract\'eristiques syst\`eme g\'en\'erales indispensables \`a
-Bacula }
-\index[general]{Bacula!Caract\'eristiques syst\`eme g\'en\'erales
-indispensables \`a }
-\addcontentsline{toc}{subsection}{Caract\'eristiques syst\`eme g\'en\'erales
-indispensables \`a Bacula}
-
-\begin{itemize}
-\item {\bf Bacula} a \'et\'e compil\'e et ex\'ecut\'e sur les syst\`emes
-Linux RedHat, Mandrake, Suse, Debian et Gentoo, sur FreeBSD, et Solaris.
-\item Il requiert GNU C++ version 2.95 ou sup\'erieur pour compiler. Vous
-pouvez essayer avec d'autre compilateurs et des versions plus anciennes, mais
-vous serez seuls. Nous avons compil\'e et utilis\'e avec succ\`es Bacula sur
-RH8.0/RH9/RHEL 3.0 avec GCC 3.2. Note, en g\'en\'eral GNU C++ est un paquet
-s\'epar\'e (e.g. RPM) de GNU C, et vous devrez avoir les deux. Sur les
-syst\`emes RedHat, le compilateur C++ fait partie du paquet RPM {\bf
-gcc-c++}.
-\item Certains paquets tierce partie sont n\'ecessaires \`a {\bf Bacula}.
-Except\'e pour MySQL et PostgreSQL, ils peuvent tous \^etre trouv\'es dans
-les distributions {\bf depkgs} et {\bf depkgs1}.
-\item Si vous voulez construire les binaires Win32, vous aurez besoin du
-compilateur Microsoft Visual C++ (ou Visual Studio). Bien que tous les
-composants compilent (la console produit quelques messages d'alertes), seul
-le File Daemon a \'et\'e test\'e.
-\item {\bf Bacula} requiert une bonne impl\'ementation fonctionnelle des
-pthreads. Ce n'est pas le cas sur certains syst\`emes BSD.
-\item Le code source a \'et\'e \'ecrit dans un esprit de portabilit\'e et est
-le plus souvent compatible POSIX. Ainsi le portage sur chaque syst\`eme
-d'exploitation compatible POSIX est relativement ais\'e.
-\item Le programme GNOME Console est developp\'e et test\'e sous GNOME 2.X.
-Il s'ex\'ecute aussi sous GNOME 1.4 mais cette version est d\'epr\'eci\'ee et
-n'est plus maintenue.
-\item Le programme wxWidgets Console est developp\'e et test\'e avec la
-derni\`ere version stable de
-\elink{ wxWidgets}{http://www.wxwidgets.org/} (2.4.2). Il fonctionne bien
-avec la version Windows et GTK+-1.x de wxWidgets, ainsi que sur les autres
-plateformes support\'ees par wxWidgets.
-\item Le programme Tray Monitor est developp\'e pour GTK+-2.x. Il n\'ecessite
-Gnome \gt{}=2.2, KDE \gt{}=3.1 ou un gestionnaire de fen\^etre supportant le
-standard
-\elink{systemtray}{http://www.freedesktop.org/Standards/systemtray-spec} de
-FreeDesktop.
-\item Si vous voulez permettre l'\'edition en ligne de commande et
-l'historique, il vous faudra /usr/include/termcap.h et l'une des
-biblioth\`eques termcap ou ncurses charg\'ee (libtermcap-devel ou
-ncurses-devel).
-\end{itemize}
-
-\subsection*{Syst\`emes d'exploitation support\'es}
-\label{SupportedOSes}
-\index[general]{Syst\`emes d'exploitation support\'es }
-\addcontentsline{toc}{subsection}{Syst\`emes d'exploitation support\'es}
-
-\begin{itemize}
-\item Syst\`emes Linux (compil\'e et test\'e sur RedHat Enterprise Linux
-3.0).
-\item Si vous avez un syst\`eme Red Hat r\'ecent ex\'ecutant le noyau 2.4.x
-et si vous avez le r\'epertoire {\bf /lib/tls} install\'e sur votre
-syst\`eme (par d\'efaut normalement), {\bf Bacula ne fonctionnera pas
-correctement} Ceci est d\^u \`a la nouvelle biblioth\`eque pthreads qui est
-d\'efectueuse. Vous devez supprimer ce r\'epertoire avant d'ex\'ecuter
-Bacula, ou vous pouvez simplement le renommer en {\bf /lib/tls-broken} puis
-red\'emarrer votre machine (une des rares occasions o\`u; Linux doit \^etre
-red\'emarr\'e). Si vous ne souhaitez pas d\'eplacer/renommer /lib/tls, une
-autre alternative est de placer la variable d'environnement
-``LD\_ASSUME\_KERNEL=2.4.19'' avant d'ex\'ecuter Bacula. Pour cette option,
-vous n'avez pas besoin de red\'emarrer, et tous les programmes autres que
-{\bf Bacula} continueront d'utiliser {\bf /lib/tls}.
-
-Les retours que nous avons des noyaux 2.6 indiquents que le probl\`eme
-subsiste. Cependant, sur les syst\`emes utilisant un noyau 2.6, nous
-recommanderions plut\^ot d'utiliser la variable d'environnement (the variable
-environment override) (LD\_ASSUME\_KERNEL=2.4.19) plut\^ot que la suppression
-de /lib/tls.
-\item La pluspart des distributions Linux (Gentoo, SuSE, Mandrake, Debian,
-...).
-\item Diff\'erentes versions de Solaris.
-\item FreeBSD (pilote de bande support\'e \`a partir de la version 1.30 --
-allez voir les consid\'erations {\bf importantes} dans la section
-\ilink{Configuration des lecteurs de bandes sur
-FreeBSD}{tapetesting.tex#FreeBSDTapes} du chapitre Test des Bandes de ce
-manuel.)
-\item Windows (Win98/Me, WinNT/2K/XP) clients binaires ({\bf File Daemon}).
-\item MacOS X/Darwin (voir
-\elink{ http://fink.sourceforge.net/}{http://fink.sourceforge.net/} pour
-obtenir les paquets)
-\item OpenBSD Client ({\bf File Daemon}).
-\item Irix Client ({\bf File Daemon}).
-\item Tru64
-\item {\bf Bacula} est r\'eput\'e fonctionner sur d'autres syst\`emes (AIX,
-BSDI, HPUX, ...) mais nous ne les avons pas test\'e.
-\item Voir le chapitre de Portage de la Documentation Pour Developpeurs pour
-les informations concernant le portage sur d'autres syst\`emes.
-\end{itemize}
-
-\subsection*{Lecteurs de bandes support\'es}
-\label{SupportedDrives}
-\index[general]{Lecteurs de bandes support\'es }
-\addcontentsline{toc}{subsection}{Lecteurs de bandes support\'es}
-
-M\^eme si votre lecteur est dans la liste ci dessous, v\'erifiez le
-\ilink{Chapitre Test des Lecteurs Bandes}{tapetesting.tex#btape} de ce manuel
-pour les proc\'edures que vous pouvez utiliser pour v\'erifier si votre
-lecteur de bande fonctionnera avec Bacula. Si votre lecteur est en mode bloc
-fixe, il peut sembler travailler avec Bacula jusqu'\`a ce que vous essayiez de
-restaurer et que Bacula tente de se positionner sur la bande. Seuls la
-proc\'edure ci-dessus et vos propres tests peuvent vous garantir un
-fonctionnement correct.
-
-Il est tr\`es difficile de fournir une liste de lecteurs de bandes
-support\'es, ou de lecteurs qui sont connus pour fonctionner avec Bacula en
-raison d'un retour limit\'e de la part des usagers. (par cons\'equent, si vous
-utilisez Bacula sur un lecteur qui ne figure pas dans la liste, merci de nous
-le faire savoir). Selon les informations provenant de nos utilisateurs, les
-lecteurs suivants sont connus pour fonctionner avec Bacula. Un trait d'union
-dans une colonne signifie ``inconnu'' :
-
-\begin{longtable}{|l|l|l|l|l|}
- \hline
-\multicolumn{1}{|c| }{\bf OS } & \multicolumn{1}{c| }{\bf Man. } &
-\multicolumn{1}{c| }{\bf Media } & \multicolumn{1}{c| }{\bf Model } &
-\multicolumn{1}{c| }{\bf Capacity } \\
- \hline
-{- } & {ADIC } & {DLT } & {Adic Scalar 100 DLT } & {100GB } \\
- \hline
-{- } & {ADIC } & {DLT } & {Adic Fastor 22 DLT } & {- } \\
- \hline
-{- } & {- } & {DDS } & {Compaq DDS 2,3,4 } & {- } \\
- \hline
-{- } & {Exabyte } & {- } & {Exabyte drives less than 10 years old } & {-
-} \\
- \hline
-{- } & {Exabyte } & {- } & {Exabyte VXA drives } & {- } \\
- \hline
-{- } & {HP } & {Travan 4 } & {Colorado T4000S } & {- } \\
- \hline
-{- } & {HP } & {DLT } & {HP DLT drives } & {- } \\
- \hline
-{- } & {HP } & {LTO } & {HP LTO Ultrium drives } & {- } \\
- \hline
-{FreeBSD 4.10 RELEASE } & {HP } & {DAT } & {HP StorageWorks DAT72i } & {-
-} \\
- \hline
-{- } & {Overland } & {LTO } & {LoaderXpress LTO } & {- } \\
- \hline
-{- } & {Overland } & {- } & {Neo2000 } & {- } \\
- \hline
-{- } & {OnStream } & {- } & {OnStream drives (see below) } & {- } \\
- \hline
-{- } & {Quantum } & {DLT } & {DLT-8000 } & {40/80GB } \\
- \hline
-{Linux } & {Seagate } & {DDS-4 } & {Scorpio 40 } & {20/40GB } \\
- \hline
-{FreeBSD 4.9 STABLE } & {Seagate } & {DDS-4 } & {STA2401LW } & {20/40GB }
-\\
- \hline
-{FreeBSD 5.2.1 pthreads patched RELEASE } & {Seagate } & {AIT-1 } &
-{STA1701W } & {35/70GB } \\
- \hline
-{Linux } & {Sony } & {DDS-2,3,4 } & {- } & {4-40GB } \\
- \hline
-{Linux } & {Tandberg } & {- } & {Tandbert MLR3 } & {- } \\
- \hline
-{FreeBSD } & {Tandberg } & {- } & {Tandberg SLR6 } & {- } \\
- \hline
-{Solaris } & {Tandberg } & {- } & {Tandberg SLR75 } & {- } \\
- \hline
-{Linux Gentoo } & {ADIC } & {- } & {IBM Ultrium LTO I } & {100/200 Go }
-\\ \hline
-
-\end{longtable}
-
-Une liste des
-\ilink{Librarires support\'ees}{autochangers.tex#Models} figure dans le
-\ilink{chapitre librairies (autochangers)}{autochangers.tex#_ChapterStart} de
-ce document, ou vous trouverez d'autres lecteurs de bandes qui fonctionne avec
-Bacula.
-
-\subsection*{Lecteurs de bande non support\'es}
-\label{UnSupportedDrives}
-\index[general]{Lecteurs de bande non support\'es }
-\addcontentsline{toc}{subsection}{Lecteurs de bande non support\'es}
-
-Auparavant les lecteurs de bandes OnStream IDE-SCSI ne fonctionnaient pas avec
-Bacula. A partir de la version 1.33 de Bacula et de la version 0.9.14 du
-pilote noyau ou sup\'erieur,ce lecteur est support\'e. Consultez le chapitre
-de test car vous devez le configurer pour fonctionner en mode blocs de taille
-fixe.
-
-Les lecteurs QIC sont connus pour avoir nombre de particularit\'es (taille de
-blocs fixe, et un EOF plut\^ot que deux pour terminer la bande). En
-cons\'equence, vous devrez \^etre particuli\`erement attentif \`a sa
-configuration pour le faire fonctionner avec Bacula.
-
-\subsection*{A l'attention des utilisateurs de FreeBSD !!!}
-\index[general]{L'attention des utilisateurs de FreeBSD }
-\index[general]{FreeBSD!l'attention des utilisateurs de }
-\addcontentsline{toc}{subsection}{l'attention des utilisateurs de FreeBSD !!!}
-
-A moins que vous n'ayez appliqu\'e un correctif sur la biblioth\`eque pthreads
-de votre syst\`emes FreeBSD, vous perdrez des donn\'ees quand Bacula aura
-rempli une bande et passera \`a la suivante. La raison en est que les
-biblioth\`eques pthreads sans correctifs \'echouent \`a retourner un \'etat
-d'alerte \`a Bacula signalant que la fin de bande est proche. Consultez le
-\ilink{chapitre test des lecteurs de bandes}{tapetesting.tex#FreeBSDTapes} de
-ce manuel pour d'importantes informations concernant la configuration de votre
-lecteur de bande pour qu'il soit compatible avec {\bf Bacula}.
-
-\subsection*{Autochangeurs support\'es}
-\index[general]{Autochangeurs support\'es }
-\addcontentsline{toc}{subsection}{Autochangeurs support\'es}
-
-Pour des informations sur les libraries (autochangeurs) support\'ees, allez
-voir la section
-\ilink{Libraries support\'ees}{autochangers.tex#Models} du chapitre
-\ilink{Libraries}{autochangers.tex#_ChapterStart} de ce manuel.
+++ /dev/null
-%%
-%%
-
-\section*{Librairies support\'ees}
-\label{_ChapterStart21}
-\addcontentsline{toc}{section}{Librairies support\'ees}
-
-\subsection*{Mod\`eles de librairies support\'es}
-\label{Models}
-\index[general]{Mod\`eles de librairies support\'ees}
-\index[general]{Librairies!Support\'ees}
-\addcontentsline{toc}{subsection}{Mod\`eles de librairies support\'es}
-
-J'h\'esite \`a qualifier ces librairies de "support\'ees", car les seules
-en ma possession et que je peux tester sont une HP SureStore DAT40X6 et
-une Overland PowerLoader LTO-2. Toutes les autres librairies cit\'ees ici
-ont \'et\'e raport\'ees comme fonctionnant avec Bacula par des utilisateurs.
-Notez que dans la colonne Capacit\'e/Slot, je pr\'ecise la capacit\'e compress\'ee
-par cartouche (ou slot).
-
-\addcontentsline{lot}{table}{Librairies connues pour fonctionner avec Bacula}
-\begin{longtable}{|p{0.6in}|p{0.8in}|p{1.9in}|p{0.8in}|p{0.5in}|p{0.75in}|}
- \hline
-\multicolumn{1}{|c| }{\bf OS } & \multicolumn{1}{c| }{\bf Fabr. } &
-\multicolumn{1}{c| }{\bf Media } & \multicolumn{1}{c| }{\bf Mod\`ele } &
-\multicolumn{1}{c| }{\bf Slots } & \multicolumn{1}{c| }{\bf Cap/Slot } \\
- \hline {Linux } & {Adic } & {DDS-3} & {Adic 1200G } & {12} & {-} \\
- \hline {Linux } & {Adic } & {DLT} & {FastStore 4000 } & {7} & {20GB} \\
- \hline {Linux } & {Adic } & {LTO-1/2, SDLT 320 } & {Adic Scalar 24 } & {24} & {100GB } \\
- \hline {Linux } & {Adic } & {LTO-2 } & {Adic FastStor 2, Sun Storedge L8 } & {8} & {200GB } \\
- \hline {- } & {CA-VM } & {?? } & {Tape } & {??} & {?? } \\
- \hline {Linux} & {Dell} & {DLT VI,LTO-2} & {PowerVault 122T/132T/136T } & {-} & {100GB } \\
- \hline {Linux } & {Dell} & {LTO-2} & {PowerVault 124T } & {-} & {200GB } \\
- \hline {- } & {DFSMS } & {?? } & {VM RMM} & {-} & {?? } \\
- \hline {Linux } & {Exabyte } & {VXA2 } & {VXA PacketLoader 1x10 2U } & {10} & {80/160GB } \\
- \hline {- } & {Exabyte } & {LTO } & {Magnum 1x7 LTO Tape Auotloader } & {7} & {200/400GB } \\
- \hline {Linux Gentoo 1.4 } & {Exabyte } & {AIT-2 } & {215A } & {15 (2 drives)} & {50GB } \\
- \hline {Linux } & {HP } & {DDS-4 } & {SureStore DAT-40X6 } & {6 } & {40GB } \\
- \hline {Linux } & {HP } & {Ultrium-2/LTO } & {MSL 6000/ 60030/ 5052 } & {28 } & {200/400GB } \\
- \hline {- } & {HP } & {DLT } & {A4853 DLT } & {30} & {40/70GB } \\
- \hline {Linux } & {HP (Compaq) } & {DLT VI } & {Compaq TL-895 } & {96+4 import export} & {35/70GB } \\
- \hline {z/VM } & {IBM } & {?? } & {IBM Tape Manager } & {-} & {?? } \\
- \hline {z/VM } & {IBM } & {?? } & {native tape } & {-} & {?? } \\
- \hline {Linux } & {IBM } & {LTO } & {IBM 3581 Ultrium Tape Loader } & {7} & {200/400GB } \\
- \hline {SuSE 9.0 } & {IBM } & {LTO } & {IBM 3581 Ultrium Tape Loader } & {7} & {200/400GB } \\
- \hline {FreeBSD 5.4} & {IBM } & {DLT} & {IBM 3502-R14 -- rebranded ATL L-500} & {14} & {35/70GB } \\
- \hline {Debian} & {Overland } & {LTO } & {Overland LoaderXpress LTO/DLT8000 } & {10-19} & {40-100GB } \\
- \hline {Fedora} & {Overland } & {LTO } & {Overland PowerLoader LTO-2 } & {10-19} & {200/400GB } \\
- \hline {FreeBSD 5.4-Stable} & {Overland} & {LTO-2} & {Overland Powerloader tape} & {17} & {100GB } \\
- \hline {- } & {Overland} & {LTO } & {Overland Neo2000 LTO } & {26-30} & {100GB } \\
- \hline {- } & {Quantum } & {?? } & {Super Loader } & {??} & {?? } \\
- \hline {FreeBSD 4.9 } & {QUALSTAR TLS-4210 (Qualstar) } & {AIT1: 36GB, AIT2: 50GB all
-uncomp } & {QUALSTAR TLS-4210 } & {12} & {AIT1: 36GB, AIT2: 50GB all uncomp }\\
- \hline {Linux } & {Skydata } & {DLT } & {ATL-L200 } & {8} & {40/80 } \\
- \hline {- } & {Sony } & {DDS-4 } & {TSL-11000 } & {8} & {40GB } \\
- \hline {Linux } & {Sony } & {AIT-2} & {LIB-304(SDX-500C) } & {?} & {200GB } \\
- \hline {Linux } & {Sony } & {AIT-3} & {LIB-D81) } & {?} & {200GB } \\
- \hline {FreeBSD 4.9-STABLE } & {Sony } & {AIT-1 } & {TSL-SA300C } & {4} & {45/70GB }\\
- \hline {- } & {Storagetek } & {DLT } & {Timberwolf DLT } & {6} & {40/70 } \\
- \hline {- } & {Storagetek } & {?? } & {ACSLS } & {??} & {?? } \\
- \hline {Solaris } & {Sun } & {4mm DLT } & {Sun Desktop Archive Python 29279 } & {4} & {20GB } \\
- \hline {Linux } & {Tandberg } & {DLT VI } & {VS 640 } & {8?} & {35/70GB } \\
- \hline {Linux 2.6.x } & {Tandberg Data } & {SLR100 } & {SLR100 Autoloader } & {8} & {50/100GB }\\
-\hline
-
-\end{longtable}
+++ /dev/null
-%%
-%%
-
-\section*{Lecteurs de bandes support\'es}
-\label{_ChapterStart19}
-\index[general]{Lecteurs de bandes support\'es }
-\index[general]{Lecteurs!bandes support\'ees }
-\addcontentsline{toc}{subsection}{Lecteurs de bandes support\'es}
-
-M\^eme si votre lecteur est dans la liste ci dessous, v\'erifiez le
-\ilink{Chapitre Test des Lecteurs Bandes}{btape1} de ce manuel
-pour les proc\'edures que vous pouvez utiliser pour v\'erifier si votre
-lecteur de bandes est susceptible de fonctionner avec Bacula.
-Si votre lecteur est en mode bloc
-fixe, il peut para\^itre fonctionner avec Bacula jusqu'\`a ce que vous essayiez de
-restaurer et que Bacula tente de se positionner sur la bande. Seuls la
-proc\'edure ci-dessus et vos propres tests peuvent vous garantir un
-fonctionnement correct.
-
-Il est tr\`es difficile de fournir une liste de lecteurs de bandes
-support\'es, ou de lecteurs qui sont connus pour fonctionner avec Bacula en
-raison du peu de retours de la part des usagers. (par cons\'equent, si vous
-utilisez Bacula sur un lecteur qui ne figure pas dans la liste, merci de nous
-le faire savoir). Selon les informations provenant de nos utilisateurs, les
-lecteurs suivants sont connus pour fonctionner avec Bacula. Un trait d'union
-dans une colonne signifie "inconnu" :
-
-\begin{longtable}{|l|l|l|l|l|}
- \hline
-\multicolumn{1}{|c| }{\bf OS } & \multicolumn{1}{c| }{\bf Fabr. } &
-\multicolumn{1}{c| }{\bf Media } & \multicolumn{1}{c| }{\bf Mod\`ele } &
-\multicolumn{1}{c| }{\bf Capacit\'e } \\
- \hline
-{- } & {ADIC } & {DLT } & {Adic Scalar 100 DLT } & {100GB } \\
- \hline
-{- } & {ADIC } & {DLT } & {Adic Fastor 22 DLT } & {- } \\
- \hline
-{- } & {- } & {DDS } & {Compaq DDS 2,3,4 } & {- } \\
- \hline
-{- } & {Exabyte } & {- } & {Lecteurs Exabyte de moins de dix ans } & {-
-} \\
- \hline
-{- } & {Exabyte } & {- } & {Exabyte VXA drives } & {- } \\
- \hline
-{- } & {HP } & {Travan 4 } & {Colorado T4000S } & {- } \\
- \hline
-{- } & {HP } & {DLT } & {HP DLT drives } & {- } \\
- \hline
-{- } & {HP } & {LTO } & {HP LTO Ultrium drives } & {- } \\
- \hline
-{FreeBSD 4.10 RELEASE } & {HP } & {DAT } & {HP StorageWorks DAT72i } & {-
-} \\
- \hline
-{- } & {Overland } & {LTO } & {LoaderXpress LTO } & {- } \\
- \hline
-{- } & {Overland } & {- } & {Neo2000 } & {- } \\
- \hline
-{- } & {OnStream } & {- } & {OnStream drives (see below) } & {- } \\
- \hline
-{- } & {Quantum } & {DLT } & {DLT-8000 } & {40/80GB } \\
- \hline
-{Linux } & {Seagate } & {DDS-4 } & {Scorpio 40 } & {20/40GB } \\
- \hline
-{FreeBSD 4.9 STABLE } & {Seagate } & {DDS-4 } & {STA2401LW } & {20/40GB }
-\\
- \hline
-{FreeBSD 5.2.1 pthreads patched RELEASE } & {Seagate } & {AIT-1 } &
-{STA1701W } & {35/70GB } \\
- \hline
-{Linux } & {Sony } & {DDS-2,3,4 } & {- } & {4-40GB } \\
- \hline
-{Linux } & {Tandberg } & {- } & {Tandbert MLR3 } & {- } \\
- \hline
-{FreeBSD } & {Tandberg } & {- } & {Tandberg SLR6 } & {- } \\
- \hline
-{Solaris } & {Tandberg } & {- } & {Tandberg SLR75 } & {- } \\
- \hline
-{Linux Gentoo } & {ADIC } & {- } & {IBM Ultrium LTO I } & {100/200 Go }
-\\ \hline
-
-\end{longtable}
-
-Une liste des
-\ilink{Librarires support\'ees}{Models} figure dans le
-\ilink{chapitre librairies (autochangers)}{_ChapterStart} de
-ce document, o\`u vous trouverez d'autres lecteurs de bandes qui fonctionnent avec
-Bacula.
-
-\subsection*{Lecteurs de bande non support\'es}
-\label{UnSupportedDrives}
-\index[general]{Lecteurs de bande non support\'es }
-\addcontentsline{toc}{subsection}{Lecteurs de bande non support\'es}
-
-Auparavant les lecteurs de bandes OnStream IDE-SCSI ne fonctionnaient pas avec
-Bacula. A partir de la version 1.33 de Bacula et de la version 0.9.14 du
-pilote noyau ou sup\'erieur,ce lecteur est support\'e. Consultez le chapitre
-de test car vous devez le configurer pour fonctionner en mode blocs de taille
-fixe.
-
-Les lecteurs QIC sont connus pour avoir nombre de particularit\'es (taille de
-blocs fixe, et un EOF plut\^ot que deux pour terminer la bande). En
-cons\'equence, vous devrez \^etre particuli\`erement attentif \`a sa
-configuration pour le faire fonctionner avec Bacula.
-
-\subsection*{A l'attention des utilisateurs de FreeBSD !!!}
-\index[general]{L'attention des utilisateurs de FreeBSD }
-\index[general]{FreeBSD!l'attention des utilisateurs de }
-\addcontentsline{toc}{subsection}{l'attention des utilisateurs de FreeBSD !!!}
-
-A moins que vous n'ayez appliqu\'e un correctif sur la biblioth\`eque pthreads
-de votre syst\`eme FreeBSD, vous perdrez des donn\'ees quand Bacula aura
-rempli une bande et passera \`a la suivante. La raison en est que les
-biblioth\`eques pthreads sans correctifs \'echouent \`a retourner un \'etat
-d'alerte \`a Bacula signalant que la fin de bande est proche. Consultez le
-\ilink{chapitre test des lecteurs de bandes}{FreeBSDTapes} de
-ce manuel pour d'importantes informations concernant la configuration de votre
-lecteur de bande pour qu'il soit compatible avec {\bf Bacula}.
-
-\subsection*{Librairiess support\'ees}
-\index[general]{Librairiess support\'ees }
-\addcontentsline{toc}{subsection}{Librairies support\'ees}
-
-Pour des informations sur les libraries (autochangeurs) support\'ees, allez
-voir la section
-\ilink{Libraries connues pour fonctionner avec Bacula}{Models} du chapitre
-Librairies support\'ees de ce manuel.
-
-\subsection*{Sp\'ecifications des cartouches}
-\index[general]{Sp\'ecifications!Cartouches}
-\index[general]{Cartouches Sp\'ecifications}
-\addcontentsline{toc}{subsection}{Sp\'ecifications des cartouches}
-Nous ne pouvons vraiment pas vous dire quel lecteur acheter pour utiliser Bacula.
-Cependant, nous pouvons recommander d'\'eviter les lecteurs DDS. La
-technologie est plut\^ot ancienne et ces lecteurs n\'ecessitent de fr\'equents
-nettoyages. Les lecteurs DLT sont g\'en\'eralement bien meilleurs (technologie
-plus r\'ecente) et ne requi\`erent pas autant d'op\'erations de nettoyage.
-
-Ci-dessous, vous trouverez une table de sp\'ecifications de cartouches DLT et LTO
-qui vous permettra de vous faire une id\'ee de la capacit\'e et de la rapidit\'e des
-lecteurs et cartouches modernes. Les capacit\'es report\'ees ici sont les natives,
-sans compression. Tous les lecteurs modernes pratiquent la compression
-mat\'erielle, et les fabricants affichent souvent une capacit\'e compress\'ee avec un
-ratio de 2:1. Le facteur de compression r\'eel d\'epend principalement des donn\'ees
-sauvegard\'ees, mais je pense qu'un ratio 1,5:1 est beaucoup plus raisonnable
-(autrement dit, multipliez la valeur de la table par 1,5 pour obtenir une
-estimation grossi\`ere de la capacit\'e compress\'ee). Les taux de transfert sont
-arrondis au GB/hr le plus proche. Les valeurs sont fournies par les divers
-fabricants.
-
-Le type de media est la d\'esignation du fabricant, vous n'\^etes pas oblig\'e de
-l'utiliser (mais vous devriez...) dans vos ressources de configuration Bacula.
-
-
-\begin{tabular}{|c|c|c|c}
-Type de media & Type de lecteur & Capacit\'e des media & Taux de transfert \\ \hline
-DDS-1 & DAT & 2 GB & ?? GB/hr \\ \hline
-DDS-2 & DAT & 4 GB & ?? GB/hr \\ \hline
-DDS-3 & DAT & 12 GB & 5.4 GB/hr \\ \hline
-Travan 40 & Travan & 20 GB & ?? GB/hr \\ \hline
-DDS-4 & DAT & 20 GB & 11 GB/hr \\ \hline
-VXA-1 & Exabyte & 33 GB & 11 GB/hr \\ \hline
-DAT-72 & DAT & 36 GB & 13 GB/hr \\ \hline
-DLT IV & DLT8000 & 40 GB & 22 GB/hr \\ \hline
-VXA-2 & Exabyte & 80 GB & 22 GB/hr \\ \hline
-Half-high Ultrum 1 & LTO 1 & 100 GB & 27 GB/hr \\ \hline
-Ultrium 1 & LTO 1 & 100 GB & 54 GB/hr \\ \hline
-Super DLT 1 & SDLT 220 & 110 GB & 40 GB/hr \\ \hline
-VXA-3 & Exabyte & 160 GB & 43 GB/hr \\ \hline
-Super DLT I & SDLT 320 & 160 GB & 58 GB/hr \\ \hline
-Ultrium 2 & LTO 2 & 200 GB & 108 GB/hr \\ \hline
-Super DLT II & SDLT 600 & 300 GB & 127 GB/hr \\ \hline
-VXA-4 & Exabyte & 320 GB & 86 GB/hr \\ \hline
-Ultrium 3 & LTO 3 & 400 GB & 216 GB/hr \\ \hline
-\end{tabular}
+++ /dev/null
-%%
-%%
-
-\section*{Syst\`emes d'exploitation support\'es}
-\label{SupportedOSes}
-\index[general]{Syst\`emes d'exploitation support\'es }
-\addcontentsline{toc}{section}{Syst\`emes d'exploitation support\'es}
-
-\begin{itemize}
-\item Syst\`emes Linux (compil\'e et test\'e sur RedHat Enterprise Linux
- 3.0).
-\item Si vous avez un syst\`eme Red Hat r\'ecent ex\'ecutant le noyau 2.4.x
- et si vous avez le r\'epertoire {\bf /lib/tls} install\'e sur votre
- syst\`eme (par d\'efaut normalement), {\bf Bacula ne fonctionnera pas
- correctement} Ceci est d\^u \`a la nouvelle biblioth\`eque pthreads qui est
- d\'efectueuse. Vous devez supprimer ce r\'epertoire avant d'ex\'ecuter
- Bacula, ou vous pouvez simplement le renommer en {\bf /lib/tls-broken} puis
- red\'emarrer votre machine (une des rares occasions o\`u; Linux doit \^etre
- red\'emarr\'e). Si vous ne souhaitez pas d\'eplacer/renommer /lib/tls, une
- autre alternative est de placer la variable d'environnement
- ``LD\_ASSUME\_KERNEL=2.4.19'' avant d'ex\'ecuter Bacula. Pour cette option,
- vous n'avez pas besoin de red\'emarrer, et tous les programmes autres que
- {\bf Bacula} continueront d'utiliser {\bf /lib/tls}.
-
- Le probl\`eme n'existe pas sur les noyaux 2.6.
-
-\item La plupart des distributions Linux les plus courantes (Gentoo, SuSE, Mandriva, Debian,
- ...).
-\item Diff\'erentes versions de Solaris.
-\item FreeBSD (pilote de bande support\'e \`a partir de la version 1.30 --
- allez voir les consid\'erations {\bf importantes} dans la section
- \ilink{Configuration des lecteurs de bandes sur FreeBSD}{FreeBSDTapes}
- du chapitre Test des Bandes de ce manuel.)
-\item Windows (Win98/Me, WinNT/2K/XP) clients binaires ({\bf File Daemon}).
-\item MacOS X/Darwin (voir
- \elink{ http://fink.sourceforge.net/}{http://fink.sourceforge.net/} pour
- obtenir les paquets)
-\item OpenBSD Client ({\bf File Daemon}).
-\item Irix Client ({\bf File Daemon}).
-\item Tru64
-\item {\bf Bacula} est r\'eput\'e fonctionner sur d'autres syst\`emes (AIX,
- BSDI, HPUX, ...) mais nous ne les avons pas test\'e personnellement.
-\item RHat 7.2 AS2, AS3, AS4, Fedora Core 2, SuSE SLES 7,8,9, Debian Woody et Sarge Linux sur
- S/390 et Linux sur zSeries.
-\item Voir le chapitre de Portage de la Documentation Pour Developpeurs pour
- les informations concernant le portage sur d'autres syst\`emes.
-\end{itemize}
+++ /dev/null
-%%
-%%
-
-\section*{Testing Your Tape Drive With Bacula}
-\label{_ChapterStart27}
-\index[general]{Testing Your Tape Drive With Bacula}
-\addcontentsline{toc}{section}{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}
-
-\subsection*{Summary of Steps to Take to Get Your Tape Drive Working}
-\index[general]{Working!Summary of Steps to Take to Get Your Tape Drive}
-\index[general]{Summary of Steps to Take to Get Your Tape Drive Working}
-\addcontentsline{toc}{subsection}{Summary of Steps to Take to 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 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).
-\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}{_ChapterStart18} 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 appopriate {\bf mtx} command, or press the autochanger buttons to
- change the tape when requested to do so.
-\item FreeBSD users, run the {\bf tapetest} program, and make sure your
- system is patched if necessary. See below for more details.
-\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.
-\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.
-\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}
-\subsubsection*{Problems When no Tape in Drive}
-\index[general]{Problems When no Tape in Drive}
-\addcontentsline{toc}{subsubsection}{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 2 minutes (default) 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 and 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.
-
-
-
-\subsubsection*{Specifying the Configuration File}
-\index[general]{File!Specifying the Configuration}
-\index[general]{Specifying the Configuration File}
-\addcontentsline{toc}{subsubsection}{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.
-
-\subsubsection*{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}
-\addcontentsline{toc}{subsubsection}{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 phsical names, the utility program will compare the name you entered
-to the Device names (rather than the Archive device names). See below for
-specifying Volume names.
-
-\subsubsection*{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}
-\addcontentsline{toc}{subsubsection}{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.
-
-
-\subsection*{btape}
-\label{btape1}
-\index[general]{Btape}
-\addcontentsline{toc}{subsection}{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 <file> specify bootstrap file
- -c <file> set configuration file to file
- -d <nn> 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
-
-\subsubsection*{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}
-\addcontentsline{toc}{subsubsection}{Using btape to Verify your Tape Drive}
-
-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. Please see below for help on resolving that.
-
-For FreeBSD users, please see the notes below for doing further testing of
-your tape drive.
-
-\subsubsection*{Linux SCSI Tricks}
-\index[general]{Tricks!Linux SCSI}
-\index[general]{Linux SCSI Tricks}
-\addcontentsline{toc}{subsubsection}{Linux SCSI Tricks}
-
-You can find out what SCSI devices you have by doing:
-
-\footnotesize
-\begin{verbatim}
-cat /proc/scsi/scsi
-\end{verbatim}
-\normalsize
-
-For example, I get the following:
-
-\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}
-\subsection*{Tips for Resolving Problems}
-\index[general]{Problems!Tips for Resolving}
-\index[general]{Tips for Resolving Problems}
-\addcontentsline{toc}{subsection}{Tips for Resolving Problems}
-
-\label{CannotRestore}
-\subsubsection*{Bacula Saves But Cannot Restore Files}
-\index[general]{Files!Bacula Saves But Cannot Restore}
-\index[general]{Bacula Saves But Cannot Restore Files}
-\addcontentsline{toc}{subsubsection}{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.
-\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}
-\subsubsection*{Bacula Cannot Open the Device}
-\index[general]{Device!Bacula Cannot Open the}
-\index[general]{Bacula Cannot Open the Device}
-\addcontentsline{toc}{subsubsection}{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}
-
-\subsubsection*{Incorrect File Number}
-\index[general]{Number!Incorrect File}
-\index[general]{Incorrect File Number}
-\addcontentsline{toc}{subsubsection}{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}
-
-\subsubsection*{Incorrect Number of Blocks or Positioning Errors during btape
-Testing}
-\index[general]{Testing!Incorrect Number of Blocks or Positioning Errors
-during btape}
-\index[general]{Incorrect Number of Blocks or Positioning Errors during btape
-Testing}
-\addcontentsline{toc}{subsubsection}{Incorrect Number of Blocks or Positioning
-Errors during btape Testing}
-
-{\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}
-\subsubsection*{Ensuring that the Tape Modes Are Properly Set -- {\bf Linux
-Only}}
-\index[general]{Ensuring that the Tape Modes Are Properly Set -- Linux Only}
-\index[general]{Only!Ensuring that the Tape Modes Are Properly Set -- Linux}
-\addcontentsline{toc}{subsubsection}{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.
-
-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 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}
-\subsubsection*{Checking and Setting Tape Hardware Compression and Blocking
-Size}
-\index[general]{Checking and Setting Tape Hardware Compression and Blocking
-Size}
-\index[general]{Size!Checking and Setting Tape Hardware Compression and
-Blocking}
-\addcontentsline{toc}{subsubsection}{Checking and Setting Tape Hardware
-Compression and Blocking Size}
-
-As far as I can tell, there is no way with the {\bf mt} program to check if
-your tape hardware compression is turned on or off. You can, however, 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.
-
-
-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}
-
-\subsubsection*{Tape Modes on FreeBSD}
-\index[general]{FreeBSD!Tape Modes on}
-\index[general]{Tape Modes on FreeBSD}
-\addcontentsline{toc}{subsubsection}{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.
-
-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
-}
-\end{verbatim}
-\normalsize
-
-
-\subsubsection*{Determining What Tape Drives and Autochangers You Have on
-FreeBSD}
-\index[general]{FreeBSD!Determining What Tape Drives and Autochangers You Have
-}
-\index[general]{Determining What Tape Drives and Autochangers You Have on
-FreeBSD}
-\addcontentsline{toc}{subsubsection}{Determining What Tape Drives and
-Autochangers You Have 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}
-
-\subsubsection*{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}
-\addcontentsline{toc}{subsubsection}{Using the OnStream driver on Linux
-Systems}
-
-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
-
-\subsection*{Hardware Compresson on EXB-8900}
-\index[general]{Hardware Compression on EXB-8900}
-\index[general]{EXB-8900!Hardware Compression}
-\addcontentsline{to}{subsection}{Hardware Compression on EXB-8900}
-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}
-\subsubsection*{Using btape to Simulate Filling a Tape}
-\index[general]{Using btape to Simulate Filling a Tape}
-\index[general]{Tape!Using btape to Simulate Filling a}
-\addcontentsline{toc}{subsubsection}{Using btape to Simulate Filling a
-Tape}
-
-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}
-
-\subsection*{Recovering Files Written to Tape With Fixed Block Sizes}
-\index[general]{Recovering Files Written to Tape With Fixed Block Sizes}
-\index[general]{Sizes!Recovering Files Written to Tape With Fixed Block}
-\addcontentsline{toc}{subsection}{Recovering Files Written to Tape 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}
-\subsection*{Tape Blocking Modes}
-\index[general]{Modes!Tape Blocking}
-\index[general]{Tape Blocking Modes}
-\addcontentsline{toc}{subsection}{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.
-
-\subsection*{Details of Tape Modes}
-\index[general]{Modes!Details}
-\index[general]{Details of Tape Modes}
-\addcontentsline{toc}{subsection}{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 Filemarks with count =
- 8388607 is used. In the other case, SCSI SPACE End-of-data 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 MTOED.
-
-\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.
-
- Considering {\bf Hardware End of Medium = no}
- and {\bf Fast Forward Space File = no}
- When I set the two to no, file positioning was very slow
- on my LTO-3:
-\begin{verbatim}
- HEOM = no, FFSF = no: ~ 10 - 100 minutes
-\end{verbatime}
-
-while even with {\bf Hardware End of Medium = no} but
-{\bf Fast Forward Space File = yes}, the time is 10 to
-100 times faster.
-\begin{verbatim}
- HEOM = no, FFSF = yes: ~ 1 minute
-\end{verbatim}
-
-\end{description}
-
-\subsection*{Autochanger Errors}
-\index[general]{Errors!Autochanger}
-\index[general]{Autochanger Errors}
-\addcontentsline{toc}{subsection}{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*.
+++ /dev/null
-%%
-%%
-
-\chapter{Thanks}
-\label{ThanksChapter}
-\index[general]{Thanks }
-I thank everyone who has helped this project. Unfortunately, I cannot
-thank everyone (bad memory). However, the AUTHORS file in the main source
-code directory should include the names of all persons who have contributed
-to the Bacula project. Just the same, I would like to include thanks below
-to special contributors as well as to the major contributors to the current
-release.
-
-Thanks to Richard Stallman for starting the Free Software movement and for
-bringing us gcc and all the other GNU tools as well as the GPL license.
-
-Thanks to Linus Torvalds for bringing us Linux.
-
-Thanks to all the Free Software programmers. Without being able to peek at
-your code, and in some cases, take parts of it, this project would have been
-much more difficult.
-
-Thanks to John Walker for suggesting this project, giving it a name,
-contributing software he has written, and for his programming efforts on
-Bacula as well as having acted as a constant sounding board and source of
-ideas.
-
-Thanks to the apcupsd project where I started my Free Software efforts, and
-from which I was able to borrow some ideas and code that I had written.
-
-Special thanks to D. Scott Barninger for writing the bacula RPM spec file,
-building all the RPM files and loading them onto Source Forge. This has been a
-tremendous help.
-
-Many thanks to Karl Cunningham for converting the manual from html format to
-LaTeX. It was a major effort flawlessly done that will benefit the Bacula
-users for many years to come. Thanks Karl.
-
-Thanks to Dan Langille for the {\bf incredible} amount of testing he did on
-FreeBSD. His perseverance is truly remarkable. Thanks also for the many
-contributions he has made to improve Bacula (pthreads patch for FreeBSD,
-improved start/stop script and addition of Bacula userid and group, stunnel,
-...), his continuing support of Bacula users. He also wrote the PostgreSQL
-driver for Bacula and has been a big help in correcting the SQL.
-
-Thanks to multiple other Bacula Packagers who make and release packages for
-different platforms for Bacula.
-
-Thanks to Christopher Hull for developing the native Win32 Bacula emulation
-code and for contributing it to the Bacula project.
-
-Thanks to Robert Nelson for bringing our Win32 implementation up to par
-with all the same features that exist in the Unix/Linux versions. In
-addition, he has ported the Director and Storage daemon to Win32!
-
-Thanks to Thorsten Engel for his excellent knowledge of Win32 systems, and
-for making the Win32 File daemon Unicode compatible, as well as making
-the Win32 File daemon interface to Microsoft's Volume Shadow Copy (VSS).
-These two are big pluses for Bacula!
-
-Thanks to Landon Fuller for writing both the communications and the
-data encryption code for Bacula.
-
-Thanks to Arno Lehmann for his excellent and infatigable help and advice
-to users.
-
-Thanks to all the Bacula users, especially those of you who have contributed
-ideas, bug reports, patches, and new features.
-
-Bacula can be enabled with data encryption and/or communications
-encryption. If this is the case, you will be including OpenSSL code that
-that contains cryptographic software written by Eric Young
-(eay@cryptsoft.com) and also software written by Tim Hudson
-(tjh@cryptsoft.com).
-
-The Bat (Bacula Administration Tool) graphs are based in part on the work
-of the Qwt project (http://qwt.sf.net).
-
-The original variable expansion code used in the LabelFormat comes from the
-Open Source Software Project (www.ossp.org). It has been adapted and extended
-for use in Bacula. This code is now deprecated.
-
-There have been numerous people over the years who have contributed ideas,
-code, and help to the Bacula project. The file AUTHORS in the main source
-release file contains a list of contributors. For all those who I have
-left out, please send me a reminder, and in any case, thanks for your
-contribution.
-
-Thanks to the Free Software Foundation Europe e.V. for assuming the
-responsibilities of protecting the Bacula copyright.
-
-% TODO: remove this from the book?
-\section*{Copyrights and Trademarks}
-\index[general]{Trademarks!Copyrights and }
-\index[general]{Copyrights and Trademarks }
-
-Certain words and/or products are Copyrighted or Trademarked such as Windows
-(by Microsoft). Since they are numerous, and we are not necessarily aware of
-the details of each, we don't try to list them here. However, we acknowledge
-all such Copyrights and Trademarks, and if any copyright or trademark holder
-wishes a specific acknowledgment, notify us, and we will be happy to add it
-where appropriate.
+++ /dev/null
-%%
-%%
-
-\section*{Tips and Suggestions}
-\label{_ChapterStart8}
-\index[general]{Tips and Suggestions }
-\index[general]{Suggestions!Tips and }
-\addcontentsline{toc}{section}{Tips and Suggestions}
-
-\subsection*{Examples}
-\label{examples}
-\index[general]{Examples }
-\addcontentsline{toc}{subsection}{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.
-
-\subsection*{Upgrading Bacula Versions}
-\label{upgrading}
-\index[general]{Upgrading Bacula Versions }
-\index[general]{Versions!Upgrading Bacula }
-\addcontentsline{toc}{subsection}{Upgrading Bacula Versions}
-
-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.
-
-\subsection*{Getting Notified of Job Completion}
-\label{notification}
-\index[general]{Getting Notified of Job Completion }
-\index[general]{Completion!Getting Notified of Job }
-\addcontentsline{toc}{subsection}{Getting Notified of Job Completion}
-
-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 examples of how I (Kern) configure my system, 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.
-
-\subsection*{Getting Email Notification to Work}
-\label{email}
-\index[general]{Work!Getting Email Notification to }
-\index[general]{Getting Email Notification to Work }
-\addcontentsline{toc}{subsection}{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}
-
-\subsection*{Getting Notified that Bacula is Running}
-\label{JobNotification}
-\index[general]{Running!Getting Notified that Bacula is }
-\index[general]{Getting Notified that Bacula is Running }
-\addcontentsline{toc}{subsection}{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 <<END-OF-DATA
-Bacula is still running!!!
-END-OF-DATA
-\end{verbatim}
-\normalsize
-
-\subsection*{Maintaining a Valid Bootstrap File}
-\label{bootstrap}
-\index[general]{Maintaining a Valid Bootstrap File }
-\index[general]{File!Maintaining a Valid Bootstrap }
-\addcontentsline{toc}{subsection}{Maintaining a Valid Bootstrap File}
-
-By using a
-\ilink{ WriteBootstrap}{writebootstrap} record in each of your
-Director's Job resources, you can constantly maintain a
-\ilink{bootstrap}{_ChapterStart43} file that will enable you to
-recover the state of your system as of the last backup without having the
-Bacula catalog. This permits you to more easily recover from a disaster that
-destroys your Bacula catalog.
-
-When a Job resource has a {\bf WriteBootstrap} record, Bacula will maintain
-the designated file (normally on another system but mounted by NSF) with up to
-date information necessary to restore your system. For example, in my
-Director's configuration file, I have the following record:
-
-\footnotesize
-\begin{verbatim}
- Write Bootstrap = "/mnt/deuter/files/backup/client-name.bsr"
-\end{verbatim}
-\normalsize
-
-where I replace {\bf client-name} by the actual name of the client that is
-being backed up. Thus, Bacula automatically maintains one file for each of my
-clients. The necessary bootstrap information is appended to this file during
-each {\bf Incremental} backup, and the file is totally rewritten during each
-{\bf Full} backup.
-
-Note, one disadvantage of writing to an NFS mounted volume as I do is
-that if the other machine goes down, the OS will wait forever on the fopen()
-call that Bacula makes. As a consequence, Bacula will completely stall until
-the machine exporting the NSF mounts comes back up. A possible solution to this
-problem was provided by Andrew Hilborne, and consists of using the {\bf soft}
-option instead of the {\bf hard} option when mounting the NFS volume, which is
-typically done in {\bf /etc/fstab}/. The NFS documentation explains these
-options in detail. However, I found that with the {\bf soft} option
-NFS disconnected frequently causing even more problems.
-
-If you are starting off in the middle of a cycle (i.e. with Incremental
-backups) rather than at the beginning (with a Full backup), the {\bf
-bootstrap} file will not be immediately valid as it must always have the
-information from a Full backup as the first record. If you wish to synchronize
-your bootstrap file immediately, you can do so by running a {\bf restore}
-command for the client and selecting a full restore, but when the restore
-command asks for confirmation to run the restore Job, you simply reply no,
-then copy the bootstrap file that was written to the location specified on the
-{\bf Write Bootstrap} record. The restore bootstrap file can be found in {\bf
-restore.bsr} in the working directory that you defined. In the example given
-below for the client {\bf rufus}, my input is shown in bold. Note, the JobId
-output has been partially truncated to fit on the page here:
-
-\footnotesize
-\begin{verbatim}
-(in the Console program)
-*{\bf restore}
-First you select one or more JobIds that contain files
-to be restored. You will then be presented several methods
-of specifying the JobIds. Then you will be allowed to
-select which files from those JobIds are to be restored.
-To select the JobIds, you have the following choices:
- 1: List last 20 Jobs run
- 2: List Jobs where a given File is saved
- 3: Enter list of JobIds to select
- 4: Enter SQL list command
- 5: Select the most recent backup for a client
- 6: Cancel
-Select item: (1-6): {\bf 5}
-The defined Client resources are:
- 1: Minimatou
- 2: Rufus
- 3: Timmy
-Select Client (File daemon) resource (1-3): {\bf 2}
-The defined FileSet resources are:
- 1: Kerns Files
-Item 1 selected automatically.
-+-------+------+-------+---------+---------+------+-------+------------+
-| JobId | Levl | Files | StrtTim | VolName | File | SesId | VolSesTime |
-+-------+------+-------+---------+---------+------+-------+------------+
-| 2 | F | 84 | ... | test1 | 0 | 1 | 1035645259 |
-+-------+------+-------+---------+---------+------+-------+------------+
-You have selected the following JobId: 2
-Building directory tree for JobId 2 ...
-The defined Storage resources are:
- 1: File
-Item 1 selected automatically.
-You are now entering file selection mode where you add and
-remove files to be restored. All files are initially added.
-Enter "done" to leave this mode.
-cwd is: /
-$ {\bf done}
-84 files selected to restore.
-Run Restore job
-JobName: kernsrestore
-Bootstrap: /home/kern/bacula/working/restore.bsr
-Where: /tmp/bacula-restores
-FileSet: Kerns Files
-Client: Rufus
-Storage: File
-JobId: *None*
-OK to run? (yes/mod/no): {\bf no}
-{\bf quit}
-(in a shell window)
-{\bf cp ../working/restore.bsr /mnt/deuter/files/backup/rufus.bsr}
-\end{verbatim}
-\normalsize
-
-\subsection*{Rejected Volumes After a Crash}
-\label{RejectedVolumes}
-\index[general]{Crash!Rejected Volumes After a }
-\index[general]{Rejected Volumes After a Crash }
-\addcontentsline{toc}{subsection}{Rejected Volumes After a Crash}
-
-Bacula keeps a count of the number of files on each Volume in its Catalog
-database so that before appending to a tape, it can verify that the number of
-files are correct, and thus prevent overwriting valid data. If the Director or
-the Storage daemon crashes before the job has completed, the tape will contain
-one more file than is noted in the Catalog, and the next time you attempt to
-use the same Volume, Bacula will reject it due to a mismatch between the
-physical tape (Volume) and the catalog.
-
-The easiest solution to this problem is to label a new tape and start fresh.
-If you wish to continue appending to the current tape, you can do so by using
-the {\bf update} command in the console program to change the {\bf Volume
-Files} entry in the catalog. A typical sequence of events would go like the
-following:
-
-\footnotesize
-\begin{verbatim}
-- Bacula crashes
-- You restart Bacula
-\end{verbatim}
-\normalsize
-
-Bacula then prints:
-
-\footnotesize
-\begin{verbatim}
-17-Jan-2003 16:45 rufus-dir: Start Backup JobId 13,
- Job=kernsave.2003-01-17_16.45.46
-17-Jan-2003 16:45 rufus-sd: Volume test01 previously written,
- moving to end of data.
-17-Jan-2003 16:46 rufus-sd: kernsave.2003-01-17_16.45.46 Error:
- I cannot write on this volume because:
- The number of files mismatch! Volume=11 Catalog=10
-17-Jan-2003 16:46 rufus-sd: Job kernsave.2003-01-17_16.45.46 waiting.
- Cannot find any appendable volumes.
-Please use the "label" command to create a new Volume for:
- Storage: SDT-10000
- Media type: DDS-4
- Pool: Default
-\end{verbatim}
-\normalsize
-
-(note, lines wrapped for presentation)
-The key here is the line that reads:
-
-\footnotesize
-\begin{verbatim}
- The number of files mismatch! Volume=11 Catalog=10
-\end{verbatim}
-\normalsize
-
-It says that Bacula found eleven files on the volume, but that the catalog
-says there should be ten. When you see this, you can be reasonably sure that
-the SD was interrupted while writing before it had a chance to update the
-catalog. As a consequence, you can just modify the catalog count to eleven,
-and even if the catalog contains references to files saved in file 11,
-everything will be OK and nothing will be lost. Note that if the SD had
-written several file marks to the volume, the difference between the Volume
-cound and the Catalog count could be larger than one, but this is unusual.
-
-If on the other hand the catalog is marked as having more files than Bacula
-found on the tape, you need to consider the possible negative consequences of
-modifying the catalog. Please see below for a more complete discussion of
-this.
-
-Continuing with the example of {\bf Volume = 11 Catalog = 10}, to enable to
-Bacula to append to the tape, you do the following:
-
-\footnotesize
-\begin{verbatim}
-{\bf update}
-Update choice:
- 1: Volume parameters
- 2: Pool from resource
- 3: Slots from autochanger
-Choose catalog item to update (1-3): {\bf 1}
-Defined Pools:
- 1: Default
- 2: File
-Select the Pool (1-2):
-+-------+---------+--------+---------+-----------+------+----------+------+-----+
-| MedId | VolName | MedTyp | VolStat | VolBytes | Last | VolReten | Recy | Slt |
-+-------+---------+--------+---------+-----------+------+----------+------+-----+
-| 1 | test01 | DDS-4 | Error | 352427156 | ... | 31536000 | 1 | 0 |
-+-------+---------+--------+---------+-----------+------+----------+------+-----+
-Enter MediaId or Volume name: {\bf 1}
-\end{verbatim}
-\normalsize
-
-(note table output truncated for presentation) First, you chose to update the
-Volume parameters by entering a {\bf 1}. In the volume listing that follows,
-notice how the VolStatus is {\bf Error}. We will correct that after changing
-the Volume Files. Continuing, you respond 1,
-
-\footnotesize
-\begin{verbatim}
-Updating Volume "test01"
-Parameters to modify:
- 1: Volume Status
- 2: Volume Retention Period
- 3: Volume Use Duration
- 4: Maximum Volume Jobs
- 5: Maximum Volume Files
- 6: Maximum Volume Bytes
- 7: Recycle Flag
- 8: Slot
- 9: Volume Files
- 10: Pool
- 11: Done
-Select parameter to modify (1-11): {\bf 9}
-Warning changing Volume Files can result
-in loss of data on your Volume
-Current Volume Files is: 10
-Enter new number of Files for Volume: {\bf 11}
-New Volume Files is: 11
-Updating Volume "test01"
-Parameters to modify:
- 1: Volume Status
- 2: Volume Retention Period
- 3: Volume Use Duration
- 4: Maximum Volume Jobs
- 5: Maximum Volume Files
- 6: Maximum Volume Bytes
- 7: Recycle Flag
- 8: Slot
- 9: Volume Files
- 10: Pool
- 11: Done
-Select parameter to modify (1-10): {\bf 1}
-\end{verbatim}
-\normalsize
-
-Here, you have selected {\bf 9} in order to update the Volume Files, then you
-changed it from {\bf 10} to {\bf 11}, and you now answer {\bf 1} to change the
-Volume Status.
-
-\footnotesize
-\begin{verbatim}
-Current Volume status is: Error
-Possible Values are:
- 1: Append
- 2: Archive
- 3: Disabled
- 4: Full
- 5: Used
- 6: Read-Only
-Choose new Volume Status (1-6): {\bf 1}
-New Volume status is: Append
-Updating Volume "test01"
-Parameters to modify:
- 1: Volume Status
- 2: Volume Retention Period
- 3: Volume Use Duration
- 4: Maximum Volume Jobs
- 5: Maximum Volume Files
- 6: Maximum Volume Bytes
- 7: Recycle Flag
- 8: Slot
- 9: Volume Files
- 10: Pool
- 11: Done
-Select parameter to modify (1-11): {\bf 11}
-Selection done.
-\end{verbatim}
-\normalsize
-
-At this point, you have changed the Volume Files from {\bf 10} to {\bf 11} to
-account for the last file that was written but not updated in the database,
-and you changed the Volume Status back to {\bf Append}.
-
-This was a lot of words to describe something quite simple.
-
-The {\bf Volume Files} option exists only in version 1.29 and later, and you
-should be careful using it. Generally, if you set the value to that which
-Bacula said is on the tape, you will be OK, especially if the value is one
-more than what is in the catalog.
-
-Now lets consider the case:
-
-\footnotesize
-\begin{verbatim}
- The number of files mismatch! Volume=10 Catalog=12
-\end{verbatim}
-\normalsize
-
-Here the Bacula found fewer files on the volume than what is marked in the
-catalog. Now, in this case, you should hesitate a lot before modifying the count
-in the catalog, because if you force the catalog from 12 to 10, Bacula will
-start writing after the file 10 on the tape, possibly overwriting valid data,
-and if you ever try to restore any of the files that the catalog has marked as
-saved on Files 11 and 12, all chaos will break out. In this case, you will
-probably be better off using a new tape. In fact, you might want to see what
-files the catalog claims are actually stored on that Volume, and back them up
-to another tape and recycle this tape.
-
-\subsection*{Security Considerations}
-\label{security}
-\index[general]{Considerations!Security }
-\index[general]{Security Considerations }
-\addcontentsline{toc}{subsection}{Security Considerations}
-
-Only the File daemon needs to run with root permission (so that it can access
-all files). As a consequence, you may run your Director, Storage daemon, and
-MySQL or PostgreSQL database server as non-root processes. Version 1.30 has
-the {\bf -u} and the {\bf -g} options that allow you to specify a userid and
-groupid on the command line to be used after Bacula starts.
-
-As of version 1.33, thanks to Dan Langille, it is easier to configure the
-Bacula Director and Storage daemon to run as non-root.
-
-You should protect the Bacula port addresses (normally 9101, 9102, and 9103)
-from outside access by a firewall or other means of protection to prevent
-unauthorized use of your daemons.
-
-You should ensure that the configuration files are not world readable since
-they contain passwords that allow access to the daemons. Anyone who can access
-the Director using a console program can restore any file from a backup
-Volume.
-
-You should protect your Catalog database. If you are using SQLite, make sure
-that the working directory is readable only by root (or your Bacula userid),
-and ensure that {\bf bacula.db} has permissions {\bf -rw-r\verb:--:r\verb:--:} (i.e. 640) or
-more strict. If you are using MySQL or PostgreSQL, please note that the Bacula
-setup procedure leaves the database open to anyone. At a minimum, you should
-assign the user {\bf bacula} a userid and add it to your Director's
-configuration file in the appropriate Catalog resource.
-
-\subsection*{Creating Holiday Schedules}
-\label{holiday}
-\index[general]{Schedules!Creating Holiday }
-\index[general]{Creating Holiday Schedules }
-\addcontentsline{toc}{subsection}{Creating Holiday Schedules}
-
-If you normally change tapes every day or at least every Friday, but Thursday
-is a holiday, you can use a trick proposed by Lutz Kittler to ensure that no
-job runs on Thursday so that you can insert Friday's tape and be sure it will
-be used on Friday. To do so, define a {\bf RunJobBefore} script that normally
-returns zero, so that the Bacula job will normally continue. You can then
-modify the script to return non-zero on any day when you do not want Bacula to
-run the job.
-
-\subsection*{Automatic Labeling Using Your Autochanger}
-\label{autolabel}
-\index[general]{Automatic Labeling Using Your Autochanger }
-\index[general]{Autochanger!Automatic Labeling Using Your }
-\addcontentsline{toc}{subsection}{Automatic Labeling Using Your Autochanger}
-
-If you have an autochanger but it does not support barcodes, using a "trick"
-you can make Bacula automatically label all the volumes in your autochanger's
-magazine.
-
-First create a file containing one line for each slot in your autochanger that
-has a tape to be labeled. The line will contain the slot number a colon (:)
-then the Volume name you want to use. For example, create a file named {\bf
-volume-list}, which contains:
-
-\footnotesize
-\begin{verbatim}
-1:Volume001
-2:TestVolume02
-5:LastVolume
-\end{verbatim}
-\normalsize
-
-The records do not need to be in any order and you don't need to mention all
-the slots. Normally, you will have a consistent set of Volume names and a
-sequential set of numbers for each slot you want labeled. In the example
-above, I've left out slots 3 and 4 just as an example. Now, modify your {\bf
-mtx-changer} script and comment out all the lines in the {\bf list)} case by
-putting a \# in column 1. Then add the following two lines:
-
-\footnotesize
-\begin{verbatim}
- cat <absolute-path>/volume-list
- exit 0
-\end{verbatim}
-\normalsize
-
-so that the whole case looks like:
-
-\footnotesize
-\begin{verbatim}
- list)
-#
-# commented out lines
- cat <absolute-path>/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.
-
-\subsection*{Backing Up Portables Using DHCP}
-\label{DNS}
-\index[general]{DHCP!Backing Up Portables Using }
-\index[general]{Backing Up Portables Using DHCP }
-\addcontentsline{toc}{subsection}{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.
-
-\subsection*{Going on Vacation}
-\label{Vacation}
-\index[general]{Vacation!Going on }
-\index[general]{Going on Vacation }
-\addcontentsline{toc}{subsection}{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}
-{\bf 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.
-
-\subsection*{How to Excude File on Windows Regardless of Case}
-\label{Case}
-\index[general]{How to Excude File on Windows Regardless of Case }
-\index[general]{Case!How to Excude File on Windows Regardless of }
-\addcontentsline{toc}{subsection}{How to Excude File on Windows Regardless of
-Case}
-
-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.
-
-\subsection*{Executing Scripts on a Remote Machine}
-\label{RemoteExecution}
-\index[general]{Machine!Executing Scripts on a Remote }
-\index[general]{Executing Scripts on a Remote Machine }
-\addcontentsline{toc}{subsection}{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). It could be usefull 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
-scrips 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 has a ClientRunBeforeJob, the ssh method still
-could be useful for updating all the Bacula clients on several remote machines
-in a single script.
-
-\subsection*{Recycling All Your Volumes}
-\label{recycle}
-\index[general]{Recycling All Your Volumes }
-\index[general]{Volumes!Recycling All Your }
-\addcontentsline{toc}{subsection}{Recycling All Your Volumes}
-
-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:
-
-\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.
-
-\subsection*{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 }
-\addcontentsline{toc}{subsection}{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
-
-\subsection*{Total Automation of Bacula Tape Handling}
-\label{automate}
-\index[general]{Handling!Total Automation of Bacula Tape }
-\index[general]{Total Automation of Bacula Tape Handling }
-\addcontentsline{toc}{subsection}{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
-\ilink{this shell script}{mtx-changer.txt} which does the following:
-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 it's 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 effectivly 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.
-
-\subsection*{Running Concurrent Jobs}
-\label{ConcurrentJobs}
-\index[general]{Jobs!Running Concurrent}
-\index[general]{Running Concurrent Jobs}
-\index[general]{Concurrent Jobs}
-\addcontentsline{toc}{subsection}{Running Concurrent Jobs}
-
-Bacula can run multiple concurrent jobs, but the default configuration files
-are not set to do so. Using the {\bf Maximum Concurrent Jobs} directive, you
-have a lot of control over how many jobs can run at the same time, and which
-jobs can run simultaneously. The downside is that it can be a bit tricky to
-set it up for the first time as you need to set the concurrency in at least
-five different places.
-
-The Director, the File daemon, and the Storage daemon each have a {\bf Maximum
-Concurrent Jobs} directive that determines overall number of concurrent jobs
-the daemon will run. The default is one for the Director and ten for both the
-File daemon and the Storage daemon, so assuming you will not be running more
-than ten concurrent jobs, the only changes that are needed are in the
-Director's conf file (bacula-dir.conf).
-
-Within the Director's configuration file, {\bf Maximum Concurrent Jobs} can be
-set in the Direct, Job, Client, and Storage resources. Each one must be set
-properly, according to your needs, otherwise your jobs may be run one at a
-time.
-
-For example, if you want two different jobs to run simultaneously backing up
-the same Client to the same Storage device, they will run concurrentl 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 carefully test your multiple concurrent backup including
-doing thorough 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 has been 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
+++ /dev/null
-
-\section*{Bacula TLS}
-\label{_ChapterStart61}
-\index[general]{Bacula TLS}
-\index[general]{TLS}
-\addcontentsline{toc}{section}{Bacula TLS}
-
-Bacula TLS (Transport Layer Security) is built-in network
-encryption code to provide secure network transport similar to
-that offered by {\bf stunnel} or {\bf ssh}. The Bacula code was
-written by Landon Fuller.
-
-Supported features of this code include:
-\begin{itemize}
-\item Client/Server TLS Requirement Negotiation
-\item TLSv1 Connections with Server and Client Certificate
-Validation
-\item Forward Secrecy Support via Diffie-Hellman Ephemeral Keying
-\end{itemize}
-
-This document will refer to both "server" and "client" contexts. These
-terms refer to the accepting and initiating peer, respectively.
-
-Diffie-Hellman anonymous ciphers are not supported by this code. The
-use of DH anonymous ciphers increases the code complexity and places
-explicit trust upon the two-way CRAM-MD5 implementation. CRAM-MD5 is
-subject to known plaintext attacks, and it should be considered
-considerably less secure than PKI certificate-based authentication.
-
-Appropriate autoconf macros have been added to detect and use OpenSSL
-if enabled on the {\bf ./configure} line with {\bf \verb?--?enable-openssl}
-
-\subsection*{TLS Configuration Directives}
-\addcontentsline{toc}{section}{TLS Configuration Directives}
-Additional configuration directives have been added to all the daemons
-(Director, File daemon, and Storage daemon) as well as the various
-different Console programs.
-These new directives are defined as follows:
-
-\begin{description}
-\item [TLS Enable = \lt{}yes|no\gt{}]
-Enable TLS support.
-
-\item [TLS Require = \lt{}yes|no\gt{}]
-Require TLS connections.
-
-\item [TLS Certificate = \lt{}Directory\gt{}]
-Path to a PEM encoded TLS certificate. It can be used as either a client
-or server certificate. PEM stands for Privacy Enhanced Mail, but in
-this context refers to how the certificates are encoded. It is used
-because PEM files are base64 encoded and hence ASCII text based
-rather than binary. They may also contain encrypted information.
-
-\item [TLS Key = \lt{}Directory\gt{}]
-Path to a PEM encoded TLS private key. It must correspond to the TLS
-certificate.
-
-\item [TLS Verify Peer = \lt{}yes|no\gt{}]
-Verify peer certificate. Instructs server to request and verify the
-client's x509 certificate. Any client certificate signed by a known-CA
-will be accepted unless the TLS Allowed CN configuration directive is used,
-in which case the client certificate must correspond to the Allowed
-Common Name specified. This directive is valid only for a server
-and not in a client context.
-
-\item [TLS Allowed CN = \lt{}string list\gt{}]
-Common name attribute of allowed peer certificates. If this directive is
-specified, all client certificates will be verified against this list.
-This directive may be specified more than once. It is not valid in a client
-context.
-
-\item [TLS CA Certificate File = \lt{}Filename\gt{}]
-The full path and filename specifying a
-PEM encoded TLS CA certificate(s). Multiple certificates are
-permitted in the file. One of \emph{TLS CA Certificate File} or \emph{TLS
-CA Certificate Dir} are required in a server context if \emph{TLS
-Verify Peer} (see above) is also specified, and are always required in a client
-context.
-
-\item [TLS CA Certificate Dir = \lt{}Directory\gt{}]
-Full path to TLS CA certificate directory. In the current implementation,
-certificates must be stored PEM encoded with OpenSSL-compatible hashes,
-which is the subject name's hash and an extension of {bf .0}.
-One of \emph{TLS CA Certificate File} or \emph{TLS CA Certificate Dir} are
-required in a server context if \emph{TLS Verify Peer} is also specified,
-and are always required in a client context.
-
-\item [TLS DH File = \lt{}Directory\gt{}]
-Path to PEM encoded Diffie-Hellman parameter file. If this directive is
-specified, DH key exchange will be used for the ephemeral keying, allowing
-for forward secrecy of communications. DH key exchange adds an additional
-level of security because the key used for encryption/decryption by the
-server and the client is computed on each end and thus is never passed over
-the network if Diffie-Hellman key exchange is used. Even if DH key
-exchange is not used, the encryption/decryption key is always passed
-encrypted. This directive is only valid within a server context.
-
-To generate the parameter file, you
-may use openssl:
-
-\begin{verbatim}
- openssl dhparam -out dh1024.pem -5 1024
-\end{verbatim}
-
-\end{description}
-
-\subsection*{Creating a Self-signed Certificate}
-\index[general]{Creating a Self-signed Certificate }
-\index[general]{Certificate!Creating a Self-signed }
-\addcontentsline{toc}{subsection}{Creating a Self-signed Certificate}
-
-You may create a self-signed certificate for use with the Bacula TLS that
-will permit you to make it function, but will not allow certificate
-validation. The .pem file containing both the certificate and the key
-valid for 10 years can be made with the following:
-
-\footnotesize
-\begin{verbatim}
- openssl req -new -x509 -nodes -out bacula.pem -keyout bacula.pem -days 3650
-\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.
-
-An alternative is to generate your self-signed certificates with TinyCA,
-which has a very nice Graphical User Interface. TinyCA can be found at
-\elink{http://tinyca.sm-zone.net/}{http://tinyca.sm-zone.net/}.
-
-
-\subsection*{Getting a CA Signed Certificate}
-\index[general]{Certificate!Getting a CA Signed }
-\index[general]{Getting a CA Signed Certificate }
-\addcontentsline{toc}{subsection}{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.
-
-\subsection*{Example TLS Configuration Files}
-\index[general]{Example!TLS Configuration Files}
-\index[general]{TLS Configuration Files}
-\addcontentsline{toc}{subsection}{Example TLS Configuration Files}
-
-Landon has supplied us with the TLS portions of his configuration
-files, which should help you setting up your own.
-
-{\bf bacula-dir.conf}
-\footnotesize
-\begin{verbatim}
- Director { # define myself
- Name = backup1-dir
- ...
- TLS Require = yes
- TLS Verify Peer = yes
- TLS Allowed CN = "bacula@backup1.example.com"
- TLS Allowed CN = "administrator@example.com"
- TLS CA Certificate File = /usr/local/etc/ssl/ca.pem
- # This is a server certificate, used for incoming
- # console connections.
- TLS Certificate = /usr/local/etc/ssl/backup1/cert.pem
- TLS Key = /usr/local/etc/ssl/backup1/key.pem
- }
-
- Storage {
- Name = File
- Address = backup1.example.com
- ...
- TLS Require = yes
- TLS CA Certificate File = /usr/local/etc/ssl/ca.pem
- # This is a client certificate, used by the director to
- # connect to the storage daemon
- TLS Certificate = /usr/local/etc/ssl/bacula@backup1/cert.pem
- TLS Key = /usr/local/etc/ssl/bacula@backup1/key.pem
- }
-\end{verbatim}
-\normalsize
-
-{\bf bacula-fd.conf}
-\footnotesize
-\begin{verbatim}
- Director {
- Name = backup1-dir
- ...
- TLS Require = yes
- TLS Verify Peer = yes
- # Allow only the Director to connect
- TLS Allowed CN = "bacula@backup1.example.com"
- TLS CA Certificate File = /usr/local/etc/ssl/ca.pem\
- # This is a server certificate. It is used by connecting
- # directors to verify the authenticity of this file daemon
- TLS Certificate = /usr/local/etc/ssl/server1/cert.pem
- TLS Key = /usr/local/etc/ssl/server1/key.pem
- }
-\end{verbatim}
-\normalsize
-
-{\bf bacula-sd.conf}
-\footnotesize
-\begin{verbatim}
- Storage { # definition of myself
- Name = backup1-sd
- ...
- # These TLS configuration options are used for incoming
- # file daemon connections. Director TLS settings are handled
- # below.
- TLS Require = yes
- # Peer certificate is not required/requested -- peer validity
- # is verified by the storage connection cookie provided to the
- # File Daemon by the director.
- TLS Verify Peer = no
- TLS CA Certificate File = /usr/local/etc/ssl/ca.pem
- # This is a server certificate. It is used by connecting
- # file daemons to verify the authenticity of this storage daemon
- TLS Certificate = /usr/local/etc/ssl/backup1/cert.pem
- TLS Key = /usr/local/etc/ssl/backup1/key.pem
- }
-
- #
- # List Directors who are permitted to contact Storage daemon
- #
- Director {
- Name = backup1-dir
- ...
- TLS Require = yes
- # Require the connecting director to provide a certificate
- # with the matching CN.
- TLS Verify Peer = yes
- TLS Allowed CN = "bacula@backup1.example.com"
- TLS CA Certificate File = /usr/local/etc/ssl/ca.pem
- # This is a server certificate. It is used by the connecting
- # director to verify the authenticity of this storage daemon
- TLS Certificate = /usr/local/etc/ssl/backup1/cert.pem
- TLS Key = /usr/local/etc/ssl/backup1/key.pem
- }
-\end{verbatim}
-\normalsize
+++ /dev/null
-#!/usr/bin/perl -w
-#
-use strict;
-
-# Used to change the names of the image files generated by latex2html from imgxx.png
-# to meaningful names. Provision is made to go either from or to the meaningful names.
-# The meaningful names are obtained from a file called imagename_translations, which
-# is generated by extensions to latex2html in the make_image_file subroutine in
-# bacula.perl.
-
-# Opens the file imagename_translations and reads the contents into a hash.
-# The hash is creaed with the imgxx.png files as the key if processing TO
-# meaningful filenames, and with the meaningful filenames as the key if
-# processing FROM meaningful filenames.
-# Then opens the html file(s) indicated in the command-line arguments and
-# changes all image references according to the translations described in the
-# above file. Finally, it renames the image files.
-#
-# Original creation: 3-27-05 by Karl Cunningham.
-# Modified 5-21-05 to go FROM and TO meaningful filenames.
-#
-my $TRANSFILE = "imagename_translations";
-my $path;
-
-# Loads the contents of $TRANSFILE file into the hash referenced in the first
-# argument. The hash is loaded to translate old to new if $direction is 0,
-# otherwise it is loaded to translate new to old. In this context, the
-# 'old' filename is the meaningful name, and the 'new' filename is the
-# imgxx.png filename. It is assumed that the old image is the one that
-# latex2html has used as the source to create the imgxx.png filename.
-# The filename extension is taken from the file
-sub read_transfile {
- my ($trans,$direction) = @_;
-
- if (!open IN,"<$path$TRANSFILE") {
- print "WARNING: Cannot open image translation file $path$TRANSFILE for reading\n";
- print " Image filename translation aborted\n\n";
- exit 0;
- }
-
- while (<IN>) {
- chomp;
- my ($new,$old) = split(/\001/);
-
- # Old filenames will usually have a leading ./ which we don't need.
- $old =~ s/^\.\///;
-
- # The filename extension of the old filename must be made to match
- # the new filename because it indicates the encoding format of the image.
- my ($ext) = $new =~ /(\.[^\.]*)$/;
- $old =~ s/\.[^\.]*$/$ext/;
- if ($direction == 0) {
- $trans->{$new} = $old;
- } else {
- $trans->{$old} = $new;
- }
- }
- close IN;
-}
-
-# Translates the image names in the file given as the first argument, according to
-# the translations in the hash that is given as the second argument.
-# The file contents are read in entirely into a string, the string is processed, and
-# the file contents are then written. No particular care is taken to ensure that the
-# file is not lost if a system failure occurs at an inopportune time. It is assumed
-# that the html files being processed here can be recreated on demand.
-#
-# Links to other files are added to the %filelist for processing. That way,
-# all linked files will be processed (assuming they are local).
-sub translate_html {
- my ($filename,$trans,$filelist) = @_;
- my ($contents,$out,$this,$img,$dest);
- my $cnt = 0;
-
- # If the filename is an external link ignore it. And drop any file:// from
- # the filename.
- $filename =~ /^(http|ftp|mailto)\:/ and return 0;
- $filename =~ s/^file\:\/\///;
- # Load the contents of the html file.
- if (!open IF,"<$path$filename") {
- print "WARNING: Cannot open $path$filename for reading\n";
- print " Image Filename Translation aborted\n\n";
- exit 0;
- }
-
- while (<IF>) {
- $contents .= $_;
- }
- close IF;
-
- # Now do the translation...
- # First, search for an image filename.
- while ($contents =~ /\<\s*IMG[^\>]*SRC=\"/si) {
- $contents = $';
- $out .= $` . $&;
-
- # The next thing is an image name. Get it and translate it.
- $contents =~ /^(.*?)\"/s;
- $contents = $';
- $this = $&;
- $img = $1;
- # If the image is in our list of ones to be translated, do it
- # and feed the result to the output.
- $cnt += $this =~ s/$img/$trans->{$img}/ if (defined($trans->{$img}));
- $out .= $this;
- }
- $out .= $contents;
-
- # Now send the translated text to the html file, overwriting what's there.
- open OF,">$path$filename" or die "Cannot open $path$filename for writing\n";
- print OF $out;
- close OF;
-
- # Now look for any links to other files and add them to the list of files to do.
- while ($out =~ /\<\s*A[^\>]*HREF=\"(.*?)\"/si) {
- $out = $';
- $dest = $1;
- # Drop an # and anything after it.
- $dest =~ s/\#.*//;
- $filelist->{$dest} = '' if $dest;
- }
- return $cnt;
-}
-
-# REnames the image files spefified in the %translate hash.
-sub rename_images {
- my $translate = shift;
- my ($response);
-
- foreach (keys(%$translate)) {
- if (! $translate->{$_}) {
- print " WARNING: No destination Filename for $_\n";
- } else {
- $response = `mv -f $path$_ $path$translate->{$_} 2>&1`;
- $response and print "ERROR from system $response\n";
- }
- }
-}
-
-#################################################
-############# MAIN #############################
-################################################
-
-# %filelist starts out with keys from the @ARGV list. As files are processed,
-# any links to other files are added to the %filelist. A hash of processed
-# files is kept so we don't do any twice.
-
-# The first argument must be either --to_meaningful_names or --from_meaningful_names
-
-my (%translate,$search_regex,%filelist,%completed,$thisfile);
-my ($cnt,$direction);
-
-my $arg0 = shift(@ARGV);
-$arg0 =~ /^(--to_meaningful_names|--from_meaningful_names)$/ or
- die "ERROR: First argument must be either \'--to_meaningful_names\' or \'--from_meaningful_names\'\n";
-
-$direction = ($arg0 eq '--to_meaningful_names') ? 0 : 1;
-
-(@ARGV) or die "ERROR: Filename(s) to process must be given as arguments\n";
-
-# Use the first argument to get the path to the file of translations.
-my $tmp = $ARGV[0];
-($path) = $tmp =~ /(.*\/)/;
-$path = '' unless $path;
-
-read_transfile(\%translate,$direction);
-
-foreach (@ARGV) {
- # Strip the path from the filename, and use it later on.
- if (s/(.*\/)//) {
- $path = $1;
- } else {
- $path = '';
- }
- $filelist{$_} = '';
-
- while ($thisfile = (keys(%filelist))[0]) {
- $cnt += translate_html($thisfile,\%translate,\%filelist) if (!exists($completed{$thisfile}));
- delete($filelist{$thisfile});
- $completed{$thisfile} = '';
- }
- print "translate_images.pl: $cnt image filenames translated ",($direction)?"from":"to"," meaningful names\n";
-}
-
-rename_images(\%translate);
+++ /dev/null
-%%
-%%
-
-\section*{Une br\`eve documentation}
-\label{_ChapterStart1}
-\index[general]{Une br\`eve documentation}
-\index[general]{Documentation!br\`eve }
-\addcontentsline{toc}{section}{Une br\`eve documentation}
-
-Ce chapitre vous guidera \`a travers les \'etapes n\'ecessaires pour ex\'ecuter Bacula.
-Pour cela, nous supposons que vous avez install\'e Bacula, peut \^etre dans un simple
-r\'epertoire comme le d\'ecrit le chapitre pr\'ec\'edent, auquel cas vous pouvez ex\'ecuter
-Bacula sans \^etre root pour ces tests. Nous supposons d'autre part que vous n'avez
-pas modifi\'e les fichiers de configuration. Dans le cas contraire, nous vous
-recommandons de d\'esinstaller Bacula et de le r\'einstaller sans rien modifier. Les
-exemples de ce chapitre utilisent les fichiers de configuration par d\'efaut, et
-cr\'eent les volumes dans le r\'epertoire {\bf /tmp} de votre disque. De plus, les
-donn\'ees sauvegard\'ees seront celle du r\'epertoire des sources de Bacula o\`u vous
-l'avez compil\'e. Par cons\'equent, tous les {\it daemons} peuvent \^etre ex\'ecut\'es
-sans les droits root pour ces tests. Notez bien qu'en production, vos File
-Daemons devront \^etre ex\'ecut\'es en tant que root. Voyez le chapitre sur la
-s\'ecurit\'e pour plus d'informations sur ce sujet.
-
-Voici les \'etapes que nous suivrons :
-
-\begin{enumerate}
-\item cd \lt{}install-directory\gt{}
-\item D\'emarrer la base de donn\'ees (si vous utilisez MySQL ou PostgreSQL)
-\item D\'emarrer les {\it daemons} avec {\bf ./bacula start}
-\item Lancer le programme Console pour interagir avec le Director
-\item Lancer un job
-\item Lorsqu'un volume est plein, le d\'emonter, s'il s'agit d'une cartouche, en
- \'etiqueter une nouvelle et poursuivre. Dans ce chapitre, nous n'\'ecrirons que sur
- des volumes fichier, aussi vous n'avez pas \`a vous inqui\'eter au sujet des
- cartouches pour le moment.
-\item Tester la restauration de quelques fichiers depuis le volume fraichement \'ecrit
- pour s'assurer de la validit\'e de la sauvegarde et qu'il est possible de restaurer.
- Mieux vaut essayer avant qu'un d\'esastre ne survienne...
-\item Ajouter un second client.
- \end{enumerate}
-
-Chacune de ces \'etapes est d\'ecrite en d\'etail ci-dessous.
-
-\subsection*{Avant d'ex\'ecuter Bacula}
-\index[general]{Bacula!Avant d'ex\'ecuter}
-\index[general]{Avant d'ex\'ecuter Bacula}
-\addcontentsline{toc}{subsection}{Avant d'ex\'ecuter Bacula}
-
-Avant d'utiliser Bacula pour la premi\`ere fois en production, nous vous recommandons
-d'ex\'ecuter la commande {\bf test} du programme {\bf btape} ainsi qu'il est d\'ecrit
-dans le chapitre \ilink{Programmes utilitaires}{btape} de ce manuel.
-Ce programme vous aidera \`a vous assurer que votre lecteur de bandes fonctionne
-correctement avec Bacula. Si vous avez un lecteur moderne de marque HP, Sony, ou
-Quantum DDS ou DLT qui fonctionne sous Linux ou Solaris, vous pouvez probablement
-vous dispenser de faire ce test car Bacula est bien test\'e avec ces lecteurs et ces
-syst\`emes. Dans tous les autres cas, vous \^etes {\bf fortement} encourag\'e \`a
-ex\'ecuter les tests avant de poursuivre. {\bf btape} dispose aussi d'une commande
-{\bf fill} qui tente de reproduire le comportement de Bacula lorsqu'il remplit
-une cartouche et qu'il poursuit son \'ecriture sur la suivante. Vous devriez
-songer \`a faire ce test, sachez cependant qu'il peut \^etre long (environ
-4 heures sur mon lecteur) de remplir une cartouche de haute capacit\'e.
-
-\subsection*{D\'emarrer la base de donn\'ees}
-\label{StartDB}
-\index[general]{D\'emarrer la base de donn\'ees}
-\index[general]{base de donn\'ees!D\'emarrer la }
-\addcontentsline{toc}{subsection}{D\'emarrer la base de donn\'ees}
-
-Si vous utilisez MySQL ou PostgreSQL pour votre catalogue Bacula, vous devez
-d\'emarrer la base de donn\'ees avant d'essayer de lancer un job pour \'eviter
-d'obtenir des messages d'erreur au d\'emarrage de Bacula. J'utilise les scripts
-{\bf startmysql} et {\bf stopmysql} pour d\'emarrer mon MySQL local. Notez que si
-vous utilisez SQLite, vous n'aurez pas \`a utiliser {\bf startmysql} ou {\bf stopmysql}.
-Si vous utilisez ceci en production, vous souhaiterez probablement trouver
-un moyen pour d\'emarrer automatiquement MySQL ou PostgreSQL apr\`es chaque
-red\'emarrage du syst\`eme.
-
-Si vous utilisez SQLite (c'est \`a dire, si vous avez sp\'ecifi\'e l'option
-{\bf \verb:--:with-sqlite=xxx} de la commande {\bf ./configure}, vous n'avez rien \`a faire.
-SQLite est d\'emarr\'ee automatiquement par {\bf Bacula}.
-
-\subsection*{D\'emarrer les daemons}
-\label{StartDaemon}
-\index[general]{D\'emarrer les daemons}
-\index[general]{Daemons!D\'emarrer les}
-\addcontentsline{toc}{subsection}{D\'emarrer les daemons}
-
-Que vous ayez compil\'e Bacula depuis les sources ou que vous ayez install\'e les rpms,
-tapez simplement :
-
-./bacula start
-
-dans votre r\'epertoire d'installation pour d\'emarrer les trois {\it daemons}.
-
-Le script {\bf bacula} lance le Storage Daemon, le File Daemon et le Director Daemon, qui
-tournent tous trois en tant que {\it daemons} en t\^ache de fond. Si vous utilisez
-la fonction de d\'emarrage automatique de Bacula, vous pouvez, au choix, lancer les
-trois {\it daemons} lors du d\'emarrage, ou au contraire les lancer individuellement
-avec les scripts {\bf bacula-dir}, {\bf bacula-fd}, et {\bf bacula-sd} usuellement
-situ\'es dans {\bf /etc/init.d}, bien que leur localisation effective soit d\'ependante du syst\`eme
-d'exploitation.
-
-Notez que seul le File Daemon a \'et\'e port\'e sur les syst\`emes Windows, et qu'il doit \^etre
-d\'emarr\'e diff\'eramment. Veuillez consulter le chapitre
-\ilink{La version Windows de Bacula}{_ChapterStart7} de ce manuel.
-
-Les paquetages rpm configurent les {\it daemons} pour qu'ils s'ex\'ecutent en tant
-qu'utilisateur root et en tant que groupe bacula. Le processus d'installation rpm
-se charge de cr\'eer le groupe bacula s'il n'existe pas sur le syst\`eme. Tout utilisateur
-ajout\'e au groupe bacula h\'erite de l'acc\`es aux fichiers cr\'e\'es par les {\it daemons}. Pour
-modifier ce comportement, \'editez les scripts de d\'emarrage des {\it daemons} :
-
-\begin{itemize}
- \item /etc/bacula/bacula
- \item /etc/init.d/bacula-dir
- \item /etc/init.d/bacula-sd
- \item /etc/init.d/bacula-fd
-\end{itemize}
-
-puis red\'emarrez-les.
-
-Le chapitre
-\ilink{installation}{_ChapterStart17} de ce manuel indique comment installer
-les scripts de d\'emarrage automatique des {\it daemons}.
-
-\subsection*{Interagir avec le Director pour l'interroger sur l'\'etat de Bacula ou lancer des jobs}
-\index[general]{Jobs!Interagir avec le Director pour interroger l'\'etat de Bacula ou lancer des}
-\index[general]{Interagir avec le Director pour interroger l'\'etat de Bacula ou lancer des jobs}
-\addcontentsline{toc}{subsection}{Interagir avec le Director pour interroger l'\'etat de Bacula ou lancer des jobs}
-
-Pour communiquer avec le Director et pour s'enqu\'erir de l'\'etat de Bacula ou de jobs en
-cours d'ex\'ecution, tapez simplement :
-
-./bconsole
-
-dans le r\'epertoire de plus haut niveau.
-
-Si vous avez install\'e la console GNOME et utilis\'e l'option {\bf \verb:--:enable-gnome}
-de la commande configure, vous pouvez aussi utiliser la console GNOME en tapant :
-
-./gnome-console
-
-Vous pouvez aussi utiliser le programme wxWidgets {\bf bwx-console}.
-
-Pour simplifier, nous ne d\'ecrirons ici que le programme {\bf ./bconsole}. La plus
-grande partie de ce qui est d\'ecrit ici s'applique aussi aux programmes {\bf ./gnome-console}
-et {\bf bwx-console}.
-
-La commande {\bf ./bconsole} lance le programme Console, qui se connecte au Director.
-Bacula \'etant un programme r\'eseau, vous pouvez utiliser la Console depuis n'importe quelle
-machine de votre r\'eseau. Cependant, la plupart du temps le Console est ex\'ecut\'ee sur la
-m\^eme machine que le Director. En principe, la Console devrait produire un affichage
-similaire \`a :
-
-\footnotesize
-\begin{verbatim}
-[kern@polymatou bin]$ ./bconsole
-Connecting to Director lpmatou:9101
-1000 OK: HeadMan Version: 1.30 (28 April 2003)
-*
-\end{verbatim}
-\normalsize
-
-L'ast\'erisque est l'invite de commande de la console.
-
-Tapez {\bf help} pour obtenir la liste des commandes disponibles :
-
-\footnotesize
-\begin{verbatim}
-*help
- Command Description
- ======= ===========
- add add media to a pool
- autodisplay autodisplay [on/off] -- console messages
- automount automount [on/off] -- after label
- cancel cancel job=nnn -- cancel a job
- create create DB Pool from resource
- delete delete [pool=<pool-name> | media volume=<volume-name>]
- estimate performs FileSet estimate debug=1 give full listing
- exit exit = quit
- help print this command
- label label a tape
- list list [pools | jobs | jobtotals | media <pool> |
- files jobid=<nn>]; from catalog
- llist full or long list like list command
- messages messages
- mount mount <storage-name>
- prune prune expired records from catalog
- purge purge records from catalog
- query query catalog
- quit quit
- relabel relabel a tape
- release release <storage-name>
- restore restore files
- run run <job-name>
- setdebug sets debug level
- show show (resource records) [jobs | pools | ... | all]
- sqlquery use SQL to query catalog
- status status [storage | client]=<name>
- time print current time
- unmount unmount <storage-name>
- update update Volume or Pool
- use use catalog xxx
- var does variable expansion
- version print Director version
- wait wait until no jobs are running
-*
-\end{verbatim}
-\normalsize
-
-Pour plus de d\'etails sur les commandes de la console, consultez le chapitre
-\ilink{Console}{_ConsoleChapter} de ce manuel.
-
-\subsection*{ex\'ecuter un job}
-\label{Running}
-\index[general]{Job!ex\'ecuter un}
-\index[general]{ex\'ecuter un job}
-\addcontentsline{toc}{subsection}{Ex\'ecuter un job}
-
-A ce stade, nous supposons que vous avez :
-
-\begin{itemize}
-\item Configur\'e Bacula avec la commande {\bf ./configure \verb:--:your-options}
-\item Compil\'e Bacula avec la commande {\bf make}
-\item Install\'e Bacula avec la commande {\bf make install}
-\item Cr\'e\'e votre catalogue avec, par exemple, la commande {\bf
- ./create\_sqlite\_database}
-\item Cr\'e\'e les tables du catalogue avec la commande {\bf
- ./make\_bacula\_tables}
-\item Eventuellement \'edit\'e votre fichier {\bf bacula-dir.conf} pour le personnaliser
- quelque peu. ATTENTION ! Si vous modifiez le nom du Director ou son mot de passe,
- vous devez faire les modifications correspondantes dans les autres fichiers de
- configuration. Il est sans dout pr\'ef\'erable, pour l'instant, de ne rien changer.
-\item D\'emarr\'e Bacula avec la commande {\bf ./bacula start}
-\item Invoqu\'e le programme Console avec la commande {\bf ./bconsole}.
-\end{itemize}
-
-En outre, nous supposons pour le moment que vous utilisez les fichiers de configuration
-par d\'efaut.
-
-Maintenant, entrez les commandes suivantes :
-
-\footnotesize
-\begin{verbatim}
-show filesets
-\end{verbatim}
-\normalsize
-
-Vous devriez obtenir quelque chose comme :
-
-\footnotesize
-\begin{verbatim}
-FileSet: name=Full Set
- O M
- N
- I /home/kern/bacula/regress/build
- N
- E /proc
- E /tmp
- E /.journal
- E /.fsck
- N
-FileSet: name=Catalog
- O M
- N
- I /home/kern/bacula/regress/working/bacula.sql
- N
-\end{verbatim}
-\normalsize
-
-Il s'agit d'un {\bf FileSet} pr\'ed\'efini qui sauvegardera le r\'epertoire des
-sources de Bacula. Les noms de r\'epertoires qui seront r\'eellement affich\'es
-devraient correspondre \`a votre configuration. Dans une perspective de tests,
-nous avons choisi un r\'epertoire de taille et de complexit\'e mod\'er\'ee (environ
-40 Mo). Le FileSet {\bf Catalog} est utilis\'e pour sauvegarder le catalogue
-Bacula et nous ne nous y attarderons pas pour le moment. Les entr\'ees {\bf I}
-sont les fichiers ou r\'epertoires qui seront inclus dans la sauvegarde, tandis
-que les entr\'ees {\bf E} sont ceux qui en seront exclus, quand aux entr\'ees {\bf O},
-ce sont les options sp\'ecifi\'ees pour ce FileSet. Vous pouvez changer ce qui est
-sauvegard\'e en modifiant la ligne {\bf File =} de la ressource {\bf FileSet}.
-
-
-Il est maintenant temps de lancer votre premi\`ere sauvegarde. Nous allons
-sauvegarder votre r\'epertoire sources de Bacula vers un volume File dans votre
-r\'epertoire {\bf /tmp} afin de vous montrer combien c'est facile. Saisissez :
-
-\footnotesize
-\begin{verbatim}
-status dir
-\end{verbatim}
-\normalsize
-
-Vous devriez obtenir :
-
-\footnotesize
-\begin{verbatim}
-rufus-dir Version: 1.30 (28 April 2003)
-Daemon started 28-Apr-2003 14:03, 0 Jobs run.
-Console connected at 28-Apr-2003 14:03
-No jobs are running.
-Level Type Scheduled Name
-=================================================================
-Incremental Backup 29-Apr-2003 01:05 Client1
-Full Backup 29-Apr-2003 01:10 BackupCatalog
-====
-\end{verbatim}
-\normalsize
-
-O\`u les dates et le nom du Director seront diff\'erents et en accord avec votre
-installation. Ceci montre qu'une sauvegarde incr\'ementale est planifi\'ee pour
-le job {\bf Client1} \`a 1h05, et qu'une sauvegarde full est planifi\'ee pour
-le job {\bf BackupCatalog} \`a 1h10. Vous devriez remplacer le nom {\bf Client1}
-par celui de votre machine, sinon vous risquez la confusion lorsque vous
-ajouterez de nouveaux clients. Pour ma machine r\'eelle, j'utilise {\bf Rufus}
-plut\^ot que {\bf Client1}.
-
-A pr\'esent, tapez :
-
-\footnotesize
-\begin{verbatim}
-status client
-\end{verbatim}
-\normalsize
-
-Vous devriez obtenir :
-
-\footnotesize
-\begin{verbatim}
-The defined Client resources are:
- 1: rufus-fd
-Item 1 selected automatically.
-Connecting to Client rufus-fd at rufus:8102
-rufus-fd Version: 1.30 (28 April 2003)
-Daemon started 28-Apr-2003 14:03, 0 Jobs run.
-Director connected at: 28-Apr-2003 14:14
-No jobs running.
-====
-\end{verbatim}
-\normalsize
-
-Dans ce cas, le client se nomme {\bf rufus-fd}, votre nom sera diff\'erent, mais la
-ligne qui d\'ebute par {\bf rufus-fd Version...} est produite par votre File Daemon,
-nous sommes donc maintenant surs qu'il fonctionne.
-
-Finalement, faites de m\^eme pour votre Storage Daemon :
-
-\footnotesize
-\begin{verbatim}
-status storage
-\end{verbatim}
-\normalsize
-
-Vous devriez obtenir :
-
-\footnotesize
-\begin{verbatim}
-The defined Storage resources are:
- 1: File
-Item 1 selected automatically.
-Connecting to Storage daemon File at rufus:8103
-rufus-sd Version: 1.30 (28 April 2003)
-Daemon started 28-Apr-2003 14:03, 0 Jobs run.
-Device /tmp is not open.
-No jobs running.
-====
-\end{verbatim}
-\normalsize
-
-Vous noterez que le p\'eriph\'erique du Storage Daemon par d\'efaut est nomm\'e {\bf File}
-et qu'il utilise le p\'eriph\'erique {\bf /tmp}, qui n'est actuellement pas ouvert.
-
-Maintenant, lancez un job :
-
-\footnotesize
-\begin{verbatim}
-run
-\end{verbatim}
-\normalsize
-
-Vous devriez obtenir :
-
-\footnotesize
-\begin{verbatim}
-Using default Catalog name=MyCatalog DB=bacula
-A job name must be specified.
-The defined Job resources are:
- 1: Client1
- 2: BackupCatalog
- 3: RestoreFiles
-Select Job resource (1-3):
-\end{verbatim}
-\normalsize
-
-Ici, Bacula affiche la liste des trois diff\'erents jobs que vous pouvez ex\'ecuter.
-Choisissez le num\'ero {\bf 1} et validez (entr\'ee).
-
-Vous devriez obtenir :
-
-\footnotesize
-\begin{verbatim}
-Run Backup job
-JobName: Client1
-FileSet: Full Set
-Level: Incremental
-Client: rufus-fd
-Storage: File
-Pool: Default
-When: 2003-04-28 14:18:57
-OK to run? (yes/mod/no):
-\end{verbatim}
-\normalsize
-
-Prenez un peu de temps pour examiner cet affichage et le comprendre. Il vous
-est demand\'e de valider, modifier ou annuler l'ex\'ecution d'un job nomm\'e
-{\bf Client1} avec le FileSet {\bf Full Set} que nous avons affich\'e plus haut
-en incr\'emental sur votre client rufus, utilisant le p\'eriph\'erique de stockage
-{\bf File} et le pool {\bf Default} \`a la date indiqu\'ee sur la ligne "When".
-
-Nous avons le choix de valider ({\bf yes}), modifier un ou plusieurs des
-param\`etres ci-dessus ({\bf mod}), ou de ne pas ex\'ecuter le job ({\bf no}).
-
-Validez l'ex\'ecution du job ({\bf yes}), vous devriez imm\'ediatement obtenir
-l'invite de commande de la console (un ast\'erisque). Apr\`es quelques minutes,
-la commande {\bf messages} devrait produire un r\'esultat tel que :
-
-\footnotesize
-\begin{verbatim}
-28-Apr-2003 14:22 rufus-dir: Last FULL backup time not found. Doing
- FULL backup.
-28-Apr-2003 14:22 rufus-dir: Start Backup JobId 1,
- Job=Client1.2003-04-28_14.22.33
-28-Apr-2003 14:22 rufus-sd: Job Client1.2003-04-28_14.22.33 waiting.
- Cannot find any appendable volumes.
-Please use the "label" command to create a new Volume for:
- Storage: FileStorage
- Media type: File
- Pool: Default
-\end{verbatim}
-\normalsize
-
-Le premier message signale qu'aucune sauvegarde full n'a jamais \'et\'e faite, et
-que par cons\'equent Bacula \'el\`eve votre incr\'ementale en une Full (ce comportement
-est normal). Le second message indique que le job a d\'emarr\'e avec le JobId 1 et le
-troisi\`eme message vous informe que Bacula ne peut trouver aucun volume dans le
-pool Default sur lequel \'ecrire les donn\'ees du job. Ceci est normal, car nous
-n'avons encore cr\'e\'e (ou \'etiquet\'e) aucun volume. Bacula vous fournit tous les d\'etails
-concernant le volume dont il a besoin.
-
-A ce point, le job est bloqu\'e en attente d'un volume. Vous pouvez le v\'erifier
-en utilisant la commande {\bf status dir}. Pour continuer, vous devez cr\'eer un
-volume sur lequel Bacula pourra \'ecrire. Voici la manipulation :
-
-\footnotesize
-\begin{verbatim}
-label
-\end{verbatim}
-\normalsize
-
-Bacula devrait afficher :
-
-\footnotesize
-\begin{verbatim}
-The defined Storage resources are:
- 1: File
-Item 1 selected automatically.
-Enter new Volume name:
-\end{verbatim}
-\normalsize
-
-Entrez un nom commen\c {c}ant par une lettre et ne contenant que des chiffres et des lettres
-(p\'eriodes, tirets et soulign\'e "\_" sont aussi autoris\'es). Par exemple entrez {\bf TestVolume001},
-vous devriez obtenir :
-
-\footnotesize
-\begin{verbatim}
-Defined Pools:
- 1: Default
-Item 1 selected automatically.
-Connecting to Storage daemon File at rufus:8103 ...
-Sending label command for Volume "TestVolume001" Slot 0 ...
-3000 OK label. Volume=TestVolume001 Device=/tmp
-Catalog record for Volume "TestVolume002", Slot 0 successfully created.
-Requesting mount FileStorage ...
-3001 OK mount. Device=/tmp
-\end{verbatim}
-\normalsize
-
-Finalement, tapez la commande {\bf messages}, vous devriez obtenir quelque chose comme :
-
-\footnotesize
-\begin{verbatim}
-28-Apr-2003 14:30 rufus-sd: Wrote label to prelabeled Volume
- "TestVolume001" on device /tmp
-28-Apr-2003 14:30 rufus-dir: Bacula 1.30 (28Apr03): 28-Apr-2003 14:30
-JobId: 1
-Job: Client1.2003-04-28_14.22.33
-FileSet: Full Set
-Backup Level: Full
-Client: rufus-fd
-Start time: 28-Apr-2003 14:22
-End time: 28-Apr-2003 14:30
-Files Written: 1,444
-Bytes Written: 38,988,877
-Rate: 81.2 KB/s
-Software Compression: None
-Volume names(s): TestVolume001
-Volume Session Id: 1
-Volume Session Time: 1051531381
-Last Volume Bytes: 39,072,359
-FD termination status: OK
-SD termination status: OK
-Termination: Backup OK
-28-Apr-2003 14:30 rufus-dir: Begin pruning Jobs.
-28-Apr-2003 14:30 rufus-dir: No Jobs found to prune.
-28-Apr-2003 14:30 rufus-dir: Begin pruning Files.
-28-Apr-2003 14:30 rufus-dir: No Files found to prune.
-28-Apr-2003 14:30 rufus-dir: End auto prune.
-\end{verbatim}
-\normalsize
-
-Si rien ne se passe dans l'imm\'ediat, vous pouvez continuer de rentrer la
-commande {\bf messages} jusqu'\`a ce que le job se termine, ou utiliser la
-commande {\bf autodisplay on} afin que les messages soient affich\'es d\`es-qu'ils
-sont disponibles.
-
-si vous faites {\bf ls -l} dans votre r\'epertoire {\bf /tmp}, vous verrez
-l'\'el\'ement suivant :
-
-\footnotesize
-\begin{verbatim}
--rw-r----- 1 kern kern 39072153 Apr 28 14:30 TestVolume001
-\end{verbatim}
-\normalsize
-
-Il s'agit du volume File que vous venez juste d'\'ecrire, et qui contient toutes
-les donn\'ees du job que vous venez d'ex\'ecuter. Si vous ex\'ecutez d'autres jobs,
-il seront ajout\'es \`a la suite de ce volume, \`a moins que vous n'ayez sp\'ecifi\'e
-un autre comportement.
-
-Vous vous demandez peut-\^etre s'il va vous falloir \'etiqueter vous m\^eme chaque
-volume que Bacula sera amen\'e \`a utiliser. La r\'eponse, en ce qui concerne les
-volumes disque tels que celui que nous avons utilis\'e, est non. Il est possible
-de param\'etrer Bacula pour qu'il cr\'e\'ee lui m\^eme les volumes. En revanche,
-pour les volumes de type cartouche, il vous faudra tr\`es probablement
-\'etiqueter chaque volume que vous voulez utiliser.
-
-Si vous souhaitez en rester l\`a, saisissez simplement {\bf quit} dans la
-console, puis stoppez Bacula avec {\bf ./bacula stop}. Pour nettoyer
-votre installation des r\'esultats de vos tests, supprimez le fichier
- {\bf /tmp/TestVolume001}, et r\'einitialisez votre catalogue en utilisant :
-
-\footnotesize
-\begin{verbatim}
-./drop_bacula_tables
-./make_bacula_tables
-\end{verbatim}
-\normalsize
-
-Notez bien que ceci supprimera toutes les informations concernant les jobs pr\'ec\'edemment
-ex\'ecut\'es et que, si c'est sans doute ce que vous souhaitez faire en fin de phase de
-test, ce n'est g\'en\'eralement pas une op\'eration souhaitable en utilisation normale.
-
-Si vous souhaitez essayer de restaurer les fichiers que vous venez de sauvegarder,
-lisez la section suivante.
-
-\label{restoring}
-
-\subsection*{Restaurer vos fichiers}
-\index[general]{Fichiers!Restaurer vos}
-\index[general]{Restaurer vos fichiers}
-\addcontentsline{toc}{subsection}{Restaurer vos fichiers}
-
-Si vous avez utilis\'e la configuration par d\'efaut et sauvegard\'e les sources de Bacula
-comme dans la d\'emonstration ci-dessus, vous pouvez restaurer les fichiers sauvegard\'es
-en saisissant les commandes suivantes dans la Console :
-
-\footnotesize
-\begin{verbatim}
-restore all
-\end{verbatim}
-\normalsize
-
-Vous obtiendrez :
-
-\footnotesize
-\begin{verbatim}
-First you select one or more JobIds that contain files
-to be restored. You will be presented several methods
-of specifying the JobIds. Then you will be allowed to
-select which files from those JobIds are to be restored.
-
-To select the JobIds, you have the following choices:
- 1: List last 20 Jobs run
- 2: List Jobs where a given File is saved
- 3: Enter list of comma separated JobIds to select
- 4: Enter SQL list command
- 5: Select the most recent backup for a client
- 6: Select backup for a client before a specified time
- 7: Enter a list of files to restore
- 8: Enter a list of files to restore before a specified time
- 9: Find the JobIds of the most recent backup for a client
- 10: Find the JobIds for a backup for a client before a specified time
- 11: Enter a list of directories to restore for found JobIds
- 12: Cancel
-Select item: (1-12):
-\end{verbatim}
-\normalsize
-
-Comme vous pouvez le constater, les options sont nombreuses, mais pour l'instant,
-choisissez l'option {\bf 5} afin de s\'electionner la derni\`ere sauvegarde effectu\'ee.
-Vous obtiendrez :
-
-\footnotesize
-\begin{verbatim}
-Defined Clients:
- 1: rufus-fd
-Item 1 selected automatically.
-The defined FileSet resources are:
- 1: 1 Full Set 2003-04-28 14:22:33
-Item 1 selected automatically.
-+-------+-------+----------+---------------------+---------------+
-| JobId | Level | JobFiles | StartTime | VolumeName |
-+-------+-------+----------+---------------------+---------------+
-| 1 | F | 1444 | 2003-04-28 14:22:33 | TestVolume002 |
-+-------+-------+----------+---------------------+---------------+
-You have selected the following JobId: 1
-Building directory tree for JobId 1 ...
-1 Job inserted into the tree and marked for extraction.
-The defined Storage resources are:
- 1: File
-Item 1 selected automatically.
-You are now entering file selection mode where you add and
-remove files to be restored. All files are initially added.
-Enter "done" to leave this mode.
-cwd is: /
-$
-\end{verbatim}
-\normalsize
-
-(J'ai tronqu\'e l'affichage \`a droite par soucis de lisibilit\'e.)
-Comme vous pouvez le constater au d\'ebut de cet affichage, Bacula conna\^it
-vos clients, et puisque vous n'en avez qu'un, il est automatiquement
-s\'electionn\'e. Il en va de m\^eme pour le FileSet. Bacula produit alors une
-liste de tous les jobs qui constituent la sauvegarde courante. Dans le cas
-pr\'esent, il n'y en a qu'un. Notez que le Storage Daemon est aussi
-s\'electionn\'e automatiquement. Bacula est maintenant en mesure de produire
-une {\bf arborescence} \`a partir de tous les fichiers qui ont \'et\'e
-sauvegard\'es (il s'agit d'une repr\'esentation en m\'emoire de votre syst\`eme de
-fichiers). A ce stade, vous pouvez utiliser les commandes {\bf cd }, {\bf ls}
-et {\bf dir} pour naviguer dans l'arborescence et voir quels fichiers
-peuvent \^etre restaur\'es. Par exemple, si je saisis {\bf cd /home/kern/bacula/bacula-1.30}
-suivi de {\bf dir}, j'obtiens la liste de tous les fichiers du r\'epertoire source de
-Bacula. Pour plus d'information sur ce sujet, veuillez consulter le chapitre
-\ilink{La commande Restore}{_ChapterStart13}.
-
-Pour quitter, tapez simplement :
-
-\footnotesize
-\begin{verbatim}
-done
-\end{verbatim}
-\normalsize
-
-Vous obtiendrez :
-
-\footnotesize
-\begin{verbatim}
-Bootstrap records written to
- /home/kern/bacula/testbin/working/restore.bsr
-The restore job will require the following Volumes:
-
- TestVolume001
-1444 files selected to restore.
-Run Restore job
-JobName: RestoreFiles
-Bootstrap: /home/kern/bacula/testbin/working/restore.bsr
-Where: /tmp/bacula-restores
-Replace: always
-FileSet: Full Set
-Client: rufus-fd
-Storage: File
-JobId: *None*
-When: 2005-04-28 14:53:54
-OK to run? (yes/mod/no):
-\end{verbatim}
-\normalsize
-
-Si vous acceptez ({\bf yes}), vos fichiers seront restaur\'es vers le r\'epertoire
-{\bf /tmp/bacula-restores}. Si vous pr\'ef\'erez restaurer les fichiers \`a leurs
-emplacements d'origine, vous devez utiliser l'option {\bf mod} et r\'egler
-explicitement le param\`etre {\bf Where} \`a vide ou "/". Nous vous conseillons de
-poursuivre avec {\bf yes}. Apr\`es quelques instants, la commande {\bf messages}
-devrait produire la liste des fichiers restaur\'es, ainsi qu'un r\'esum\'e du job
-qui devrait ressembler \`a ceci :
-
-\footnotesize
-\begin{verbatim}
-28-Apr-2005 14:56 rufus-dir: Bacula 1.30 (28Apr03): 28-Apr-2003 14:56
-JobId: 2
-Job: RestoreFiles.2005-04-28_14.56.06
-Client: rufus-fd
-Start time: 28-Apr-2005 14:56
-End time: 28-Apr-2005 14:56
-Files Restored: 1,444
-Bytes Restored: 38,816,381
-Rate: 9704.1 KB/s
-FD termination status: OK
-Termination: Restore OK
-28-Apr-2005 14:56 rufus-dir: Begin pruning Jobs.
-28-Apr-2005 14:56 rufus-dir: No Jobs found to prune.
-28-Apr-2005 14:56 rufus-dir: Begin pruning Files.
-28-Apr-2005 14:56 rufus-dir: No Files found to prune.
-28-Apr-2005 14:56 rufus-dir: End auto prune.
-\end{verbatim}
-\normalsize
-
-Apr\`es avoir quitt\'e la Console, vous pouvez examiner les fichiers dans le
-r\'epertoire {\bf /tmp/bacula-restores}, il contient l'arborescence avec tous
-vos fichiers. Supprimez-le apr\`es avoir v\'erifi\'e :
-
-\footnotesize
-\begin{verbatim}
-rm -rf /tmp/bacula-restore
-\end{verbatim}
-\normalsize
-
-\subsection*{Quitter le programme Console}
-\index[general]{Programme!Quitter Console }
-\index[general]{Quitter le programme Console}
-\addcontentsline{toc}{subsection}{Quitter le programme Console}
-
-Saisissez simplement la commande {\bf quit}.
-\label{SecondClient}
-
-\subsection*{Ajouter un client}
-\index[general]{Client!Ajouter }
-\index[general]{Ajouter un client }
-\addcontentsline{toc}{subsection}{Ajouter un client}
-
-Si vous \^etes parvenus \`a faire fonctionner tous les exemples ci-dessus, vous \^etes
-sans doute pr\`et \`a ajouter un nouveau client (File Daemon), c'est \`a dire une seconde
-machine que vous souhaitez sauvegarder. La seule chose \`a installer sur la nouvelle
-machine est le binaire {\bf bacula-fd} (ou {\bf bacula-fd.exe} pour Windows) et son
-fichier de configuration {\bf bacula-fd.conf}. Vous pouvez d\'emarrer en copiant le fichier
-pr\'ec\'edemment cr\'e\'e moyennant une modification mineure pour l'adapter au nouveau client :
-changez le nom de File Daemon ({\bf rufus-fd} dans l'exemple ci-dessus) en le nom
-que vous avez choisi pour le nouveau client. Le mieux est d'utiliser le nom de
-la machine. Par exemple :
-
-\footnotesize
-\begin{verbatim}
-...
-#
-# "Global" File daemon configuration specifications
-#
-FileDaemon { # this is me
- Name = rufus-fd
- FDport = 9102 # where we listen for the director
- WorkingDirectory = /home/kern/bacula/working
- Pid Directory = /var/run
-}
-...
-\end{verbatim}
-\normalsize
-
-devient :
-
-\footnotesize
-\begin{verbatim}
-...
-#
-# "Global" File daemon configuration specifications
-#
-FileDaemon { # this is me
- Name = matou-fd
- FDport = 9102 # where we listen for the director
- WorkingDirectory = /home/kern/bacula/working
- Pid Directory = /var/run
-}
-...
-\end{verbatim}
-\normalsize
-
-O\`u {\bf rufus-fd} est devenu {\bf matou-fd} (je ne montre qu'une partie du fichier).
-Le choix des noms vous appartient. Pour l'instant, je vous recommande de ne rien changer
-d'autre. Plus tard, vous changerez le mot de passe.
-
-Installez cette configuration sur votre seconde machine. Il vous faut maintenant
-ajouter quelques lignes \`a votre {\bf bacula-dir.conf} pour d\'efinir le nouveau
-File Daemon. En vous basant sur l'exemple initial qui devrait \^etre install\'e
-sur votre syst\`eme, ajoutez les lignes suivantes (essentiellement, une copie des lignes
-existantes avec seulement les noms modifi\'es) \`a votre {\bf bacula-dir.conf} :
-
-\footnotesize
-\begin{verbatim}
-#
-# Define the main nightly save backup job
-# By default, this job will back up to disk in /tmp
-Job {
- Name = "Matou"
- Type = Backup
- Client = matou-fd
- FileSet = "Full Set"
- Schedule = "WeeklyCycle"
- Storage = File
- Messages = Standard
- Pool = Default
- Write Bootstrap = "/home/kern/bacula/working/matou.bsr"
-}
-# Client (File Services) to backup
-Client {
- Name = matou-fd
- Address = matou
- FDPort = 9102
- Catalog = MyCatalog
- Password = "xxxxx" # password for
- File Retention = 30d # 30 days
- Job Retention = 180d # six months
- AutoPrune = yes # Prune expired Jobs/Files
-}
-\end{verbatim}
-\normalsize
-
-Assurez-vous que le param\`etre Address de la ressource Storage a pour valeur
-le nom pleinement qualifi\'e et non quelque chose comme "localhost". L'adresse
-sp\'ecifi\'ee est envoy\'ee au client et doit \^etre un nom pleinement qualifi\'e. Si vous
-utilisez "localhost", l'adresse du Storage Daemon ne sera pas r\'esolue
-correctement, il en r\'esultera un {\it timeout} lorsque le File Daemon
-\'echouera \`a connecter le Storage Daemon.
-
-Il n'y a rien d'autre \`a faire. J'ai copi\'e les ressources existantes pour cr\'eer
-un second job (Matou) pour sauvegarder le second client (matou-fd). le client
-se nomme {\bf matou-fd} et le job {\bf Matou}, le fichier bootstrap est modifi\'e
-mais tout le reste est inchang\'e. Ceci signifie que Matou sera sauvegard\'e
-avec la m\^eme planification sur les m\^emes cartouches. Vous pourrez changer ceci
-plus tard, pour le moment, restons simples.
-
-La seconde modification consiste en l'ajout d'une nouvelle ressource Client
-qui d\'efinit {\bf matou-fd} et qui a l'adresse correcte {\bf matou} (mais dans
-la vraie vie, vous pouvez avoir besoin d'un nom pleinement qualifi\'e ou d'une
-adresse IP. J'ai aussi conserv\'e le m\^eme mot de passe (xxxxx dans l'exemple).
-
-A ce stade, il suffit de red\'emarrer Bacula pour qu'il prenne en compte vos
-modifications. L'invite que vous avez vu plus haut devrait maintenant
-inclure la nouvelle machine.
-
-Pour une utilisation en production vous voudrez probablement utiliser
-plusieurs pools et diff\'erentes planifications. Il vous appartient de faire les
-adaptations qui seyent \`a vos besoins. Dans tous les cas, n'oubliez pas de
-changer les mots de passe dans les fichiers de configuration du Director et
-du Client pour des raisons de s\'ecurit\'e.
-
-Vous trouverez des astuces importantes concernant le changement des noms et mots de
-passe, ainsi qu'un diagramme d\'ecrivant leurs correspondances dans la section
-\ilink{Erreurs d'authentification}{AuthorizationErrors} du chapitre FAQ de ce manuel.
-
-\subsection*{Lorsque la cartouche est pleine}
-\label{FullTape}
-\index[general]{pleine!Lorsque la cartouche }
-\index[general]{Lorsque la cartouche est pleine}
-\addcontentsline{toc}{subsection}{Lorsque la cartouche est pleine}
-Si vous avez planifi\'e votre job, il viendra un moment o\`u la cartouche sera pleine
-et o\`u {\bf Bacula} ne pourra continuer. Dans ce cas, Bacula vous enverra un message
-tel que :
-
-\begin{verbatim}
-rufus-sd: block.c:337 === Write error errno=28: ERR=No space left
- on device
-\end{verbatim}
-\normalsize
-
-Ceci indique que Bacula a re\c {c}u une erreur d'\'ecriture \`a cause de la carouche pleine.
-Bacula va maintenant rechercher une cartouche utilisable dans le pool sp\'ecifi\'e
-pour le job. Dans la situation id\'eale, vous avez r\'egl\'e correctement vos r\'etentions
-et sp\'ecifi\'e que vos cartouches peuvent \^etre recycl\'ees automatiquement. Dans ce cas,
-Bacula recycle automatiquement vos cartouches sorties de r\'etention et est en mesure
-de r\'e\'ecrire dessus. Pour plus d'informations sur le recyclage, veuillez consulter
-le chapitre \ilink{Recyclage}{_ChapterStart22} de ce manuel. Si vous constatez que
-vos cartouches ne sont pas recycl\'ees correctement, consultez la section sur le
-\ilink{Recyclage manuel}{manualrecycling} du chapitre Recyclage.
-
-Si comme moi, vous avez un tr\`es grand nombre de cartouches que vous \'etiquetez
-avec la date de premi\`ere \'ecriture, si vous n'avez pas r\'egl\'e vos p\'eriodes de
-r\'etention, Bacula ne trouvera pas de cartouche dans le pool et il vous enverra
-un message tel que :
-
-\footnotesize
-\begin{verbatim}
-rufus-sd: Job kernsave.2002-09-19.10:50:48 waiting. Cannot find any
- appendable volumes.
-Please use the "label" command to create a new Volume for:
- Storage: SDT-10000
- Media type: DDS-4
- Pool: Default
-\end{verbatim}
-\normalsize
-
-Ce message sera r\'ep\'et\'e une heure plus tard, puis deux heures plus tard et
-ainsi de suite en doublant \`a chaque fois l'intervalle \`a concurrence d'un jour
-jusqu'\`a ce que vous cr\'eiez un volume.
-
-Que faire dans cette situation ?
-
-La r\'eponse est simple : d'abord, fermez le lecteur \`a l'aide de la commande
-{\bf unmount} du programme Console. Si vous n'avez qu'un lecteur, il sera
-s\'electionn\'e automatiquement, sinon assurez-vous de d\'emonter celui sp\'ecifi\'e
-dans le message (dans ce cas {\bf STD-10000}).
-
-Ensuite, retirez la cartouche du lecteur et ins\'erez-en une vierge. Notez que
-sur certains lecteurs anciens, il peut \^etre n\'ecessaire d'\'ecrire une marque de
-fin de fichier ({\bf mt \ -f \ /dev/nst0 \ weof}) pour \'eviter que le lecteur
-ne d\'eroule toute la cartouche lorsque Bacula tente de lire le label. (NDT : j'ai un doute, la vo dit : "to prevent the drive from running away when Bacula attempts to read the label.")
-
-Finalement, utilisez la commande {\bf label} dans la console pour \'ecrire un
-label sur le nouveau volume. la commande {\bf label} va contacter le Storage
-Daemon pour qu'il \'ecrive l'\'etiquette logicielle. Si cette op\'eration se termine
-correctement, le nouveau volume est ajout\'e au pool et la commande {\bf mount} est
-envoy\'ee au Storage Daemon. Voyez les sections pr\'ec\'edentes de ce chapitre pour plus
-de d\'etails sur l'\'etiquetage des cartouches.
-
-Bacula peut maintenant poursuivre le job et continuer d'\'ecrire les donn\'ees
-sauvegard\'ees sur le nouveau volume.
-
-Si Bacula cycle sur un pool de volumes, au lieu du message ci-dessus
- "Cannot find any appendable volumes.", Bacula peut vous demander de
-monter un volume particulier. Dans ce cas, essayez de le satisfaire. Si, pour
-quelque raison, vous n'avez plus le volume, vous pouvez monter n'importe quel
-autre volume du pool, pourvu qu'il soit utilisable, Bacula l'utilisera.
-La commande {\bf list volumes} du programme Console permet de d\'eterminer
-les volumes utilisables et ceux qui ne le sont pas.
-
-Si, comme moi, vous avez param\'etr\'e correctement vos p\'eriodes de r\'etention, mais
-n'avez plus aucun volume libre, vous pouvez r\'e-\'etiqueter et r\'e-utiliser un volume
-comme suit :
-
-\begin{itemize}
-\item Saisissez {\bf list volumes} dans la console et s\'electionnez le volume le plus
-anciens pour le r\'e-\'etiqueter.
-\item Si vos p\'eriodes de r\'etention sont judicieusement choisies, le volume devrait
-avoir le statut {\bf Purged}.
-\item Si le statut n'est pas {\bf Purged}, il vous faut purger le catalogue des jobs \'ecrits
-sur ce volume. Ceci peut \^etre fait avec la commande {\bf purge jobs volume} dans
-la console. Si vous avez plusieurs pools, vous serez invit\'e \`a choisir lequel avant
-de devoir saisir le VolumeName (ou MediaId).
-\item Enfin, utilisez simplement la commande {\bf relabel} pour r\'e-\'etiqueter le
-volume.
- \end{itemize}
-
-Pour r\'e-\'etiqueter manuellement le volume, suivez les \'etapes suppl\'ementaire ci-dessous :
-
-\begin{itemize}
-\item Effacez le volume du catalogue avec la commande {\bf delete volume} dans la
-console (s\'electionnez le VolumeName ou le MediaId lorsque vous y \^etes invit\'e).
-\item Utilisez la commande {\bf unmount} pour d\'emonter l'ancienne cartouche.
-\item R\'e-\'etiquetez physiquement l'ancienne cartouche de sorte qu'elle puisse
-\^etre r\'eutilis\'ee.
-\item Ins\'erez l'ancienne cartouche dans le lecteur.
-\item Depuis la ligne de commande, saississez : {\bf mt \ -f \ /dev/st0 \ rewind} et
-{\bf mt \ -f \ /dev/st0 \ weof}, o\`u vous prendrez soin de substituer la cha\^ine d\'esignant
- votre lecteur \`a {\bf /dev/st0}.
-\item Utilisez la commande {\bf label} dans la console pour \'ecrire une nouvelle
-\'etiquette Bacula sur votre cartouche.
-\item Utilisez la commande {\bf mount}, si ce n'est pas r\'ealis\'e automatiquement, afin
-que Bacula commence \`a utiliser la cartouche fraichement \'etiquet\'ee.
-\end{itemize}
-
-\subsection*{D'autres commandes utiles de la console Bacula}
-\index[general]{Commands!autres commandes utiles de la console Bacula}
-\index[general]{autres commandes utiles de la console Bacula}
-\addcontentsline{toc}{subsection}{D'autres commandes utiles de la console Bacula}
-
-\begin{description}
-
-\item [status dir]
- \index[console]{status dir }
- Affiche un \'etat de tous les jobs en cours d'ex\'ecution ainsi que tous les
- jobs programm\'es dans les prochine 24 heures
-
-\item [status]
- \index[console]{status }
- Le programme Console vous invite \`a s\'electionner un {\it daemon}, puis
- il s'enquiert de l'\'etat de ce {\it daemon}.
-
-\item [status jobid=nn]
- \index[console]{status jobid }
- Affiche un \'etat du JobId nn s'il est en cours d'ex\'ecution. Le Storage
- Daemon est aussi contact\'e pour produire un \'etat du job.
-
-\item [list pools]
- \index[console]{list pools }
- Affiche la liste des pools d\'efinis dans le catalogue.
-
-\item [list media]
- \index[console]{list media }
- Affiche la liste des m\'edia d\'efinis dans le catalogue.
-
-\item [list jobs]
- \index[console]{list jobs }
- Affiche la liste de tous les jobs enregistr\'es dans le catalogue et squi ont \'et\'e
- ex\'ecut\'es.
-
-\item [list jobid=nn]
- \index[console]{list jobid }
- Affiche le JobId nn depuis le catalogue.
-
-\item [list jobtotals]
- \index[console]{list jobtotals }
- Affiche les totaux pour tous le jobs du catalogue.
-
-\item [list files jobid=nn]
- \index[console]{list files jobid }
- Affiche la liste des fichiers sauvegard\'es pour le JobId nn.
-
-\item [list jobmedia]
- \index[console]{list jobmedia }
- Affiche des informations relatives aux m\'edia utilis\'es pour chaque job ex\'ecut\'e.
-
-\item [messages]
- \index[console]{messages }
- Affiche tous les messages redirig\'es vers la console.
-
-\item [unmount storage=storage-name]
- \index[console]{unmount storage }
- D\'emonte le lecteur associ\'e au p\'eriph\'erique de stockage d\'esign\'e par
- {\bf storage-name} s'il n'est pas en cours d'utilisation. Cette commande
- est utile si vous souhaitez que Bacula lib\`ere le lecteur.
-
-\item [mount storage=storage-name]
- \index[sd]{mount storage }
- Le lecteur associ\'e au p\'eriph\'erique de stockage est mont\'e \`a nouveau. Lorsque
- Bacula atteint la fin d'un volume et vous demande d'en monter un nouveau,
- vous devez utiliser cette commande apr\`es avoir introduit une nouvelle
- cartouche dans le lecteur. En effet, c'est le signal qui indique \`a Bacula
- qu'il peut commencer \`a lire ou \'ecrire sur la cartouche.
-
-\item [quit]
- \index[sd]{quit }
- Permet de quitter le programme Console.
-\end{description}
-
-La plupart des commandes cit\'ees ci-dessus, \`a l'exception de {\bf list},
-vous invitent \`a compl\'eter la liste des arguments fournis si vous
-vous contentez d'entrer le nom de la commande.
-
-\subsection*{D\'ebugger la sortie des daemons}
-\index[general]{D\'ebugger sortie daemons}
-\index[general]{Output!D\'ebugger daemons}
-\addcontentsline{toc}{subsection}{D\'ebugger la sortie des daemons}
-
-Si vous voulez d\'ebugger la sortie des {\it daemons} en cours d'ex\'ecution,
-lancez-les, depuis le r\'epertoire d'installation, comme suit :
-
-\footnotesize
-\begin{verbatim}
-./bacula start -d100
-\end{verbatim}
-\normalsize
-
-Cette possibilit\'e peut vous fournir une aide pr\'ecieuse si vos {\it daemons}
-ne d\'emarrent pas correctement. Normalement, la sortie des {\it daemons} est
-dirig\'ee vers le p\'eriph\'erique NULL, avec un niveau de d\'ebuggage sup\'erieur \`a
-z\'ero, elle est dirig\'ee vers le terminal de lancement.
-
-Pour stopper les trois {\it daemons}, tapez simplement :
-
-\footnotesize
-\begin{verbatim}
-./bacula stop
-\end{verbatim}
-\normalsize
-
-dans le r\'epertoire d'installation.
-
-L'ex\'ecution de {\bf bacula stop} peut signaler des pids non trouv\'es. C'est Ok,
-sp\'ecialement si l'un des {\bf bacula stop} est mort, ce qui est tr\`es rare.
-
-Pour faire une sauvegarde compl\`ete (Full) du syst\`eme, chaque File Daemon doit
-\^etre ex\'ecut\'e en tant que root afin d'avoir les permissions requises pour acc\'eder
-\`a tous les fichiers. Les autres {\it daemons} n'ont pas besoin des privil\`eges
-root. Cependant, le Storage Daemon doit \^etre capable d'acc\'eder aux lecteurs, ce qui
-Sur beaucoup de syst\`emes, n'est possible que pour root. Vous pouvez, au choix,
-ex\'ecuter le Storage Daemon en tant que root, ou changer les permissions sur les
-lecteurs pour autoriser les acc\`es non-root. MySQL et PostgreSQL peuvent \^etre
-install\'es et ex\'ecut\'es avec un userid quelconque, les privil\`eges root ne sont pas
-requis.
-
-\subsection*{Soyez patient lorsque vous d\'emarrez les {\it daemons} ou montez des
-cartouches vierges}
-\index[general]{Soyez patient lorsque vous d\'emarrez les {\it daemons} ou montez des
-cartouches vierges}
-\index[general]{Cartouches!Soyez patient lorsque vous d\'emarrez les {\it daemon}s ou montez}
-\addcontentsline{toc}{subsection}{Soyez patient lorsque vous d\'emarrez les {\it daemon}s
-ou montez des cartouches vierges}
-
-Lorsque vous lancez les {\it daemons} Bacula, le Storage Daemon tente d'ouvrir
-tous les p\'eriph\'eriques de stockage d\'efinis et de v\'erifier le volumes courrament
-mont\'es. Il n'accepte aucune connection de la console tant que tous les p\'eriph\'eriques
-n'ont pas \'et\'e v\'erifi\'es. Une cartouche qui a \'et\'e utilis\'e pr\'ec\'edemment doit \^etre
-rembobin\'ee, ce qui, sur certain lecteurs, peut prendre plusieurs minutes.
-Par cons\'equent, vous devriez faire preuve d'un peu de patience lorsue vous
-tentez de contacter le Storage Daemon pour la premi\`ere fois apr\`es le
-lancement de Bacula. Si vous avez un acc\`es visuel \`a votre lecteur, celui-ci
-devrait \^etre pr\`et \`a l'emploi lorsque son t\'emoin lumineux cesse de clignoter.
-
-Les m\^emes consid\'erations s'appliquent si vous avez mont\'e une cartouche vierge
-dans un lecteur tels qu'un HP DLT. Il peut s'\'ecouler une \`a deux minutes avant
-que le lecteur se rende compte que la cartouche est vierge. Si vous tentez
-de la monter pendant cette p\'eriode, il est probable que vous aller geler votre
-pilote SCSI (c'est le cas sur mon syst\`eme RedHat). Par cons\'equent, nous vous
-enjoignons une fois encore \`a \^etre patient lors de l'insertion de cartouches vierges.
-Laissez le lecteur s'initialiser avant de tenter d'y acc\'eder.
-
-\subsection*{Probl\`emes de connection du FD vers le SD}
-\index[general]{Probl\`emes de connection du FD vers le SD }
-\index[general]{SD!Probl\`emes de connection du FD vers le}
-\addcontentsline{toc}{subsection}{Probl\`emes de connection du FD vers le SD}
-
-Si l'un ou plusieurs de vos File Daemons rencontre des difficult\'es \`a se connecter
-au Storage Daemon, c'est tr\`es probablement que vous n'avez pas utilis\'e un nom
-pleinement qualifi\'e pour la directive {\bf Address} de la ressource Storage
-du fichier de configuration du Director. Le r\'esolveur de la machine cliente
-(celle qui ex\'ecute le FD) doit \^etre capable de r\'esoudre le nom que vous avez
-sp\'ecifi\'e dans cette directive en une adresse IP. Un exemple d'adresse ne
-fonctionnant pas est {\bf localhost}. Un exemple qui pourrait fonctionner :
-{\bf megalon}. Un exemple qui a encore plus de chances de fonctionner :
-{\bf magalon.mydomain.com}. Sur les syst\`emes Win32, si vous ne disposez pas d'un
-bon r\'esolveur (c'est souvent le cas sur Win98), vous pouvez essayer en utilisant
-une adresse IP plut\^ot qu'un nom.
-
-Si votre adresse est correcte, assurez vous qu'aucun autre programme n'utilise
-le port 9103 sur la machine qui h\'eberge le Storage Daemon. Les num\'eros de ports
-de Bacula sont autoris\'es par l'IANA, et ne devraient donc pas \^etre utilis\'es par
-d'autres programmes, mais il semble que certaines imprimantes HP les utilisent.
-Ex\'ecutez la commande {\bf netstat -a} sur la machine qui h\'eberge le Storage
-Daemon pour d\'eterminer qui utilise le port 9103 (utilis\'e pour les communications
-du FD vers le SD).
-
-\subsection*{Options en ligne de commande des Daemons}
-\index[general]{Options en ligne de commande des Daemons}
-\index[general]{Options!en ligne de commande des Daemons}
-\addcontentsline{toc}{subsection}{Options en ligne de commande des Daemons}
-
-Chacun des trois {\it daemons} (Director, File, Storage) acceptent quelques options
-sur la ligne de commande. En g\'en\'eral, chacun d'entre eux, de m\^eme que le
-programme Console, admet les otpions suivantes :
-
-
-\begin{description}
-
-\item [-c \lt{}file\gt{}]
- \index[sd]{-c \lt{}file\gt{} }
- D\'efinit le fichier de configuration \`a utiliser. La valeur par d\'efaut est le
-nom du {\it daemon} suivi de {\bf conf}, par exemple {\bf bacula -dir.conf} pour
-le Director, {\bf bacula-fd} pour le File Daemon, et {\bf bacula-sd.conf} pour
-le Storage Daemon.
-
-\item [-d nn]
- \index[sd]{-d nn }
- Fixe le niveau de d\'ebuggage \`a la valeur {\bf nn}. Les niveaux les plus \'elev\'e
-permettent d'afficher plus d'information sur STDOUT concernant ce que le {\it daemon} est
-en train de faire.
-
-\item [-f]
- Ex\'ecute le {\it daemon} en arri\`ere plan. Cette option est requise pour ex\'ecuter les
-{\it daemon}s avec le debugger.
-
-\item [-s]
- Ne pas capturer les signaux. Cette option est requise pour ex\'ecuter les
-{\it daemon}s avec le debugger.
-
-\item [-t]
- Lire les fichiers de configuration et afficher les messages d'erreur, et quitter
-imm\'ediatement. Tr\`es utile pour tester la syntaxe de nouveaux fichiers de configuration.
-
-\item [-v]
- Mode verbeux. Utile pour rendre les messages d'erreur et d'information plus complets.
-
-\item [-?]
- Affiche la version et la liste des options.
- \end{description}
-
-Le Director a les options sp\'ecifiques suivantes :
-
-\begin{description}
-
-\item [-r \lt{}job\gt{}]
- \index[fd]{-r \lt{}job\gt{} }
- Ex\'ecute le job d\'esign\'e imm\'ediatement. Ceci ne devrait servir qu'\`a des fins
-de d\'ebuggage.
-\end{description}
-
-Le File Daemon les options sp\'ecifiques suivantes :
-
-\begin{description}
-
-\item [-i]
- Suppose que le {\it daemon} est appel\'e par {\bf inetd} ou {\bf xinetd}. Dans ce cas,
-le {\it daemon} suppose qu'une connection est d\'ej\`a \'etablie et qu'elle est pass\'ee en tant que
-STDIN. Le {\it daemon} s'arr\`ete d\`es que la connection se termine.
-\end{description}
-
-Le Storage Daemon n'a pas d'options sp\'ecifiques.
-
-Le programme Console n'a pas d'options sp\'ecifiques.
-
-\subsection*{Cr\'eer un Pool}
-\label{Pool}
-\index[general]{Pool!Cr\'eer un }
-\index[general]{Cr\'eer un Pool }
-\addcontentsline{toc}{subsection}{Cr\'eer un Pool}
-
-La cr\'eation de pool est automatique au d\'emarrage de Bacula, aussi si vous
-comprenez d\'ej\`a le concept de pools et leur fonctionnement, vous pouvez passer
-\`a la section suivante.
-
-Lorsque vous ex\'ecutez un job, Bacula doit d\'eterminer quel volume utiliser pour
-sauvegarder le FileSet. Plut\^ot que de sp\'ecifier un volume directement, vous
-sp\'ecifiez l'ensemble de volumes dans lequel vous autorisez Bacula \`a puiser
-lorsqu'il lui faut un volume pour \'ecrire les donn\'ees sauvegard\'ees. D\`es lors, Bacula
-se charge de s\'electionner le premier volume utilisable dans le pool appropri\'e
-au p\'eriph\'erique que vous avez sp\'ecifi\'e pour le job ex\'ecut\'e. Lorsqu'un volume est
-plein, Bacula change son VolStatus de {\bf Append} en {\bf Full}, et utilise le
-volume suivant, et ainsi de de suite. S'il n'y a pas de volume utilisable,
-Bacula envoie un message \`a l'op\'erateur pour r\'eclamer la cr\'eation d'un
-volume appropri\'e.
-
-{\bf Bacula} garde trace des noms de pools, des volumes contenus dans les pools,
-et de plusieurs caract\'eristiques de chacun de ces volumes.
-
-Lorsque Bacula d\'emarre, il s'assure que toutes les d\'efinitions de ressources Pool
-ont \'et\'e enregistr\'ees dans le catalogue. Vous pouvez le v\'erifier avec la commande :
-
-\footnotesize
-\begin{verbatim}
-list pools
-\end{verbatim}
-\normalsize
-
-du programme Console, qui devrait produire quelque chose comme :
-
-\footnotesize
-\begin{verbatim}
-*list pools
-Using default Catalog name=MySQL DB=bacula
-+--------+---------+---------+---------+----------+-------------+
-| PoolId | Name | NumVols | MaxVols | PoolType | LabelFormat |
-+--------+---------+---------+---------+----------+-------------+
-| 1 | Default | 3 | 0 | Backup | * |
-| 2 | File | 12 | 12 | Backup | File |
-+--------+---------+---------+---------+----------+-------------+
-*
-\end{verbatim}
-\normalsize
-
-Si vous tentez de cr\'eer un pool existant, Bacula affiche :
-
-\footnotesize
-\begin{verbatim}
-Error: Pool Default already exists.
-Once created, you may use the {\bf update} command to
-modify many of the values in the Pool record.
-\end{verbatim}
-\normalsize
-
-\label{Labeling}
-
-\subsection*{Etiqueter vos Volumes}
-\index[general]{Volumes!Etiqueter vos}
-\index[general]{Etiqueter vos Volumes}
-\addcontentsline{toc}{subsection}{Etiqueter vos Volumes}
-
-Bacula exige que chaque volume comporte une \'etiquette (NDT : label) logicielle.
-Il existe plusieurs strat\'egies pour \'etiqueter les volumes. Celle que j'utilise
-consiste \`a les \'etiqueter \`a l'aide du programme Console au fur et \`a mesure qu'ils
-sont requis par Bacula. Ainsi, lorsqu'il a besoin d'un volume qu'il ne trouve pas
-dans son catalogue, Bacula m'envoie un e-mail pour m'enjoindre \`a ajouter un
-volume au pool. J'utilise alors la commande {\bf label} dans la console pour
-\'etiqueter un nouveau volume et le d\'efinir dans le catalogue, apr\`es quoi Bacula
-est en mesure de l'utiliser. Alternativement, je peux utiliser la commande
-{\bf relabel} pour r\'e-\'etiquter un volume qui n'est plus utilis\'e, pourvu qu'il ait
-le VolStatus {\bf Purged}.
-
-Une autre strat\'egie consiste \`a \'etiqueter un ensemble de volumes, et \`a les
-utiliser au fur et \`a mesure que Bacula les r\'eclame. C'est le plus souvent ce qui
-est fait lorsque vous cyclez sur un groupe de volumes, par exemple avec une
-librairie. Pour plus de d\'etails sur le recyclage, veuillez consulter le
-chapitre \ilink{Recyclage automatique des volumes}{_ChapterStart22} de ce
-manuel.
-
-Si vous ex\'ecutez un job Bacula alors que vous n'avez pas de volumes
-\'etiquet\'es dans le pool concern\'e, Bacula vous en informe, et vous pouvez les
-cr\'eer "\`a la vol\'ee". Dans mon cas, j'\'etiquette mes cartouches avec la date,
-par exemple : {\bf DLT-18April02}. Voyez ci-dessous pour plus de d\'etails
-sur l'usage de la commande {\bf label}.
-
-\subsection*{Etiquetage des volumes dans la console}
-\index[general]{Etiquetage des volumes dans la console}
-\index[general]{Console!Etiquetage des volumes dans la}
-\addcontentsline{toc}{subsection}{Etiquetage des volumes dans la console}
-
-L'\'etiquetage des volumes se fait, en principe, avec le programme Console.
-
-\begin{enumerate}
-\item ./bconsole
-\item label
- \end{enumerate}
-
-Si Bacula annonce que vous ne pouvez \'etiqueter une cartouche au motif qu'elle
-porte d\'ej\`a une \'etiquette, d\'emontez-la avec la commande {\bf unmount}, puis
-recommencez avec une cartouche vierge.
-
-Etand donn\'e que le support de stockage physique est diff\'erent pour chaque
-p\'eriph\'erique, la commande {\bf label} vous propose une liste de ressources
-Storage d\'efinies telle que celle-ci :
-
-\footnotesize
-\begin{verbatim}
-The defined Storage resources are:
- 1: File
- 2: 8mmDrive
- 3: DLTDrive
- 4: SDT-10000
-Select Storage resource (1-4):
-\end{verbatim}
-\normalsize
-
-A ce stade, vous devriez avoir une cartouche vierge dans votre lecteur
-d'un type correspondant \`a la ressource Storage que vous avez s\'electionn\'e.
-
-Bacula vous demande le nom du volume :
-
-\footnotesize
-\begin{verbatim}
-Enter new Volume name:
-\end{verbatim}
-\normalsize
-
-S'il proteste :
-
-\footnotesize
-\begin{verbatim}
-Media record for Volume xxxx already exists.
-\end{verbatim}
-\normalsize
-
-Cela signifie que le nom de volume {\bf xxxx} que vous avez entr\'e existe d\`ej\`a
-dans le catalogue. Vous pouvez afficher la liste des m\'edia d\'efinis avec la
-commande {\bf list media}. Notez que la colonne LastWritten a ici \'et\'e
-tronqu\'ee pour permettre un affichage propre.
-
-\footnotesize
-\begin{verbatim}
-+---------------+---------+--------+----------------+-----/~/-+------------+-----+
-| VolumeName | MediaTyp| VolStat| VolBytes | LastWri | VolReten | Recy|
-+---------------+---------+--------+----------------+---------+------------+-----+
-| DLTVol0002 | DLT8000 | Purged | 56,128,042,217 | 2001-10 | 31,536,000 | 0 |
-| DLT-07Oct2001 | DLT8000 | Full | 56,172,030,586 | 2001-11 | 31,536,000 | 0 |
-| DLT-08Nov2001 | DLT8000 | Full | 55,691,684,216 | 2001-12 | 31,536,000 | 0 |
-| DLT-01Dec2001 | DLT8000 | Full | 55,162,215,866 | 2001-12 | 31,536,000 | 0 |
-| DLT-28Dec2001 | DLT8000 | Full | 57,888,007,042 | 2002-01 | 31,536,000 | 0 |
-| DLT-20Jan2002 | DLT8000 | Full | 57,003,507,308 | 2002-02 | 31,536,000 | 0 |
-| DLT-16Feb2002 | DLT8000 | Full | 55,772,630,824 | 2002-03 | 31,536,000 | 0 |
-| DLT-12Mar2002 | DLT8000 | Full | 50,666,320,453 | 1970-01 | 31,536,000 | 0 |
-| DLT-27Mar2002 | DLT8000 | Full | 57,592,952,309 | 2002-04 | 31,536,000 | 0 |
-| DLT-15Apr2002 | DLT8000 | Full | 57,190,864,185 | 2002-05 | 31,536,000 | 0 |
-| DLT-04May2002 | DLT8000 | Full | 60,486,677,724 | 2002-05 | 31,536,000 | 0 |
-| DLT-26May02 | DLT8000 | Append | 1,336,699,620 | 2002-05 | 31,536,000 | 1 |
-+---------------+---------+--------+----------------+-----/~/-+------------+-----+
-\end{verbatim}
-\normalsize
-
-Une fois que Bacula a v\'erifi\'e que le volume n'existe pas encore, il vous
-demande le pool dans lequel vous souhaitez que le volume soit cr\'e\'e. S'il
-n'existe qu'un pool, il est s\'electionn\'e automatiquement.
-
-Si la cartouche est \'etiquet\'ee correctement, un enregistrement de volume est
-aussi cr\'e\'e dans le pool. Ainsi, le nom du volume et tous ses attributs
-appara\^itront lorque vous afficherez les volumes du pool. De plus, le volume
-est disponible pour les sauvegardes, pourvu que le MediaType co\"¨incide avec
-celui requis par le Storage Daemon.
-
-Lorsque vous avez \'etiquet\'e la cartouche, vous n'avez r\'epondu qu'\`a quelques
-questions la concernant -- principalement son nom, et \'eventuellement le {\it Slot}.
-Cependant, un enregistrement de volume dans le catalogue (connu au niveau interne
-en tant qu'enregistrement Media) contient un certain nombre d'attributs.
-La plupart d'entre eux sont renseign\'es selon les valeurs par d\'efaut qui ont \'et\'e
-d\'efinies lors de la cr\'eation du pool (au trement dit, le pool comporte la plupart des
-attributs par d\'efaut utilis\'es lors de la cr\'eation d'un volume).
-
-Il est aussi possible d'ajouter des media aux pools sans les \'etiqueter
-physiquement. C'est la fonction de la commande {\bf add}. Pour plus
-d'informations, veuillez consulterle chapitre \ilink{Console}{_ConsoleChapter}
-de ce manuel.
+++ /dev/null
-#!/bin/sh
-#
-# Script file to update the Bacula version
-#
-out=/tmp/$$
-VERSION=`sed -n -e 's/^.*VERSION.*"\(.*\)"$/\1/p' @bacula@/src/version.h`
-DATE=`sed -n -e 's/^.*[ \t]*BDATE.*"\(.*\)"$/\1/p' @bacula@/src/version.h`
-. ./do_echo
-sed -f ${out} version.tex.in >version.tex
-rm -f ${out}
+++ /dev/null
-%%
-%%
-
-\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[dir]{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[dir]{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 [Dir] -- 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[dir]{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 }
+++ /dev/null
-%%
-%%
-
-% TODO: this chapter name is confusing ... maybe rename to
-% TODO: "File Integrity Checking with Bacula"?
-\chapter{Using Bacula to Improve Computer Security}
-\label{VerifyChapter}
-\index[general]{Security!Using Bacula to Improve Computer }
-\index[general]{Using Bacula to Improve Computer Security }
-
-% TODO: only those two digest algorithms?
-% TODO: can it use multiple at a time? (record and use both SHA1 and MD5?)
-Since Bacula maintains a catalog of files, their attributes, and either SHA1
-or MD5 signatures, it can be an ideal tool for improving computer security.
-This is done by making a snapshot of your system files with a {\bf Verify} Job
-and then checking the current state of your system against the snapshot, on a
-regular basis (e.g. nightly).
-
-The first step is to set up a {\bf Verify} Job and to run it with:
-
-\footnotesize
-\begin{verbatim}
-Level = InitCatalog
-\end{verbatim}
-\normalsize
-
-The {\bf InitCatalog} level tells {\bf Bacula} simply to get the information on
-the specified files and to put it into the catalog. That is your database is
-initialized and no comparison is done. The {\bf InitCatalog} is normally run
-one time manually.
-
-Thereafter, you will run a Verify Job on a daily (or whatever) basis with:
-
-\footnotesize
-\begin{verbatim}
-Level = Catalog
-\end{verbatim}
-\normalsize
-
-The {\bf Level = Catalog} level tells Bacula to compare the current state of
-the files on the Client to the last {\bf InitCatalog} that is stored in the
-catalog and to report any differences. See the example below for the format of
-the output.
-
-You decide what files you want to form your "snapshot" by specifying them in
-a {\bf FileSet} resource, and normally, they will be system files that do not
-change, or that only certain features change.
-
-Then you decide what attributes of each file you want compared by specifying
-comparison options on the {\bf Include} statements that you use in the {\bf
-FileSet} resource of your {\bf Catalog} Jobs.
-
-\section{The Details}
-\index[general]{Details }
-
-In the discussion that follows, we will make reference to the Verify
-Configuration Example that is included below in the {\bf A Verify
-Configuration Example} section. You might want to look it over now to get an
-idea of what it does.
-
-The main elements consist of adding a schedule, which will normally be run
-daily, or perhaps more often. This is provided by the {\bf VerifyCycle}
-Schedule, which runs at 5:05 in the morning every day.
-
-Then you must define a Job, much as is done below. We recommend that the Job
-name contain the name of your machine as well as the word {\bf Verify} or {\bf
-Check}. In our example, we named it {\bf MatouVerify}. This will permit you to
-easily identify your job when running it from the Console.
-
-You will notice that most records of the Job are quite standard, but that the
-{\bf FileSet} resource contains {\bf verify=pins1} option in addition to the
-standard {\bf signature=SHA1} option. If you don't want SHA1 signature
-comparison, and we cannot imagine why not, you can drop the {\bf
-signature=SHA1} and none will be computed nor stored in the catalog. Or
-alternatively, you can use {\bf verify=pins5} and {\bf signature=MD5}, which
-will use the MD5 hash algorithm. The MD5 hash computes faster than SHA1, but
-is cryptographically less secure.
-
-The {\bf verify=pins1} is ignored during the {\bf InitCatalog} Job, but is
-used during the subsequent {\bf Catalog} Jobs to specify what attributes of
-the files should be compared to those found in the catalog. {\bf pins1} is a
-reasonable set to begin with, but you may want to look at the details of these
-and other options. They can be found in the
-\ilink{FileSet Resource}{FileSetResource} section of this manual.
-Briefly, however, the {\bf p} of the {\bf pins1} tells Verify to compare the
-permissions bits, the {\bf i} is to compare inodes, the {\bf n} causes
-comparison of the number of links, the {\bf s} compares the file size, and the
-{\bf 1} compares the SHA1 checksums (this requires the {\bf signature=SHA1}
-option to have been set also).
-
-You must also specify the {\bf Client} and the {\bf Catalog} resources for
-your Verify job, but you probably already have them created for your client
-and do not need to recreate them, they are included in the example below for
-completeness.
-
-As mentioned above, you will need to have a {\bf FileSet} resource for the
-Verify job, which will have the additional {\bf verify=pins1} option. You will
-want to take some care in defining the list of files to be included in your
-{\bf FileSet}. Basically, you will want to include all system (or other) files
-that should not change on your system. If you select files, such as log files
-or mail files, which are constantly changing, your automatic Verify job will
-be constantly finding differences. The objective in forming the FileSet is to
-choose all unchanging important system files. Then if any of those files has
-changed, you will be notified, and you can determine if it changed because you
-loaded a new package, or because someone has broken into your computer and
-modified your files. The example below shows a list of files that I use on my
-Red Hat 7.3 system. Since I didn't spend a lot of time working on it, it
-probably is missing a few important files (if you find one, please send it to
-me). On the other hand, as long as I don't load any new packages, none of
-these files change during normal operation of the system.
-
-\section{Running the Verify}
-\index[general]{Running the Verify }
-\index[general]{Verify!Running the }
-
-The first thing you will want to do is to run an {\bf InitCatalog} level
-Verify Job. This will initialize the catalog to contain the file information
-that will later be used as a basis for comparisons with the actual file
-system, thus allowing you to detect any changes (and possible intrusions into
-your system).
-
-The easiest way to run the {\bf InitCatalog} is manually with the console
-program by simply entering {\bf run}. You will be presented with a list of
-Jobs that can be run, and you will choose the one that corresponds to your
-Verify Job, {\bf MatouVerify} in this example.
-
-\footnotesize
-\begin{verbatim}
-The defined Job resources are:
- 1: MatouVerify
- 2: kernsrestore
- 3: Filetest
- 4: kernsave
-Select Job resource (1-4): 1
-\end{verbatim}
-\normalsize
-
-Next, the console program will show you the basic parameters of the Job and
-ask you:
-
-\footnotesize
-\begin{verbatim}
-Run Verify job
-JobName: MatouVerify
-FileSet: Verify Set
-Level: Catalog
-Client: MatouVerify
-Storage: DLTDrive
-OK to run? (yes/mod/no): mod
-\end{verbatim}
-\normalsize
-
-Here, you want to respond {\bf mod} to modify the parameters because the Level
-is by default set to {\bf Catalog} and we want to run an {\bf InitCatalog}
-Job. After responding {\bf mod}, the console will ask:
-
-\footnotesize
-\begin{verbatim}
-Parameters to modify:
- 1: Job
- 2: Level
- 3: FileSet
- 4: Client
- 5: Storage
-Select parameter to modify (1-5): 2
-\end{verbatim}
-\normalsize
-
-you should select number 2 to modify the {\bf Level}, and it will display:
-
-\footnotesize
-\begin{verbatim}
-Levels:
- 1: Initialize Catalog
- 2: Verify from Catalog
- 3: Verify Volume
- 4: Verify Volume Data
-Select level (1-4): 1
-\end{verbatim}
-\normalsize
-
-Choose item 1, and you will see the final display:
-
-\footnotesize
-\begin{verbatim}
-Run Verify job
-JobName: MatouVerify
-FileSet: Verify Set
-Level: Initcatalog
-Client: MatouVerify
-Storage: DLTDrive
-OK to run? (yes/mod/no): yes
-\end{verbatim}
-\normalsize
-
-at which point you respond {\bf yes}, and the Job will begin.
-
-Thereafter the Job will automatically start according to the schedule you
-have defined. If you wish to immediately verify it, you can simply run a
-Verify {\bf Catalog} which will be the default. No differences should be
-found.
-
-\section{What To Do When Differences Are Found}
-\index[general]{What To Do When Differences Are Found }
-\index[general]{Found!What To Do When Differences Are }
-
-If you have setup your messages correctly, you should be notified if there are
-any differences and exactly what they are. For example, below is the email
-received after doing an update of OpenSSH:
-
-\footnotesize
-\begin{verbatim}
-HeadMan: Start Verify JobId 83 Job=RufusVerify.2002-06-25.21:41:05
-HeadMan: Verifying against Init JobId 70 run 2002-06-21 18:58:51
-HeadMan: File: /etc/pam.d/sshd
-HeadMan: st_ino differ. Cat: 4674b File: 46765
-HeadMan: File: /etc/rc.d/init.d/sshd
-HeadMan: st_ino differ. Cat: 56230 File: 56231
-HeadMan: File: /etc/ssh/ssh_config
-HeadMan: st_ino differ. Cat: 81317 File: 8131b
-HeadMan: st_size differ. Cat: 1202 File: 1297
-HeadMan: SHA1 differs.
-HeadMan: File: /etc/ssh/sshd_config
-HeadMan: st_ino differ. Cat: 81398 File: 81325
-HeadMan: st_size differ. Cat: 1182 File: 1579
-HeadMan: SHA1 differs.
-HeadMan: File: /etc/ssh/ssh_config.rpmnew
-HeadMan: st_ino differ. Cat: 812dd File: 812b3
-HeadMan: st_size differ. Cat: 1167 File: 1114
-HeadMan: SHA1 differs.
-HeadMan: File: /etc/ssh/sshd_config.rpmnew
-HeadMan: st_ino differ. Cat: 81397 File: 812dd
-HeadMan: st_size differ. Cat: 2528 File: 2407
-HeadMan: SHA1 differs.
-HeadMan: File: /etc/ssh/moduli
-HeadMan: st_ino differ. Cat: 812b3 File: 812ab
-HeadMan: File: /usr/bin/scp
-HeadMan: st_ino differ. Cat: 5e07e File: 5e343
-HeadMan: st_size differ. Cat: 26728 File: 26952
-HeadMan: SHA1 differs.
-HeadMan: File: /usr/bin/ssh-keygen
-HeadMan: st_ino differ. Cat: 5df1d File: 5e07e
-HeadMan: st_size differ. Cat: 80488 File: 84648
-HeadMan: SHA1 differs.
-HeadMan: File: /usr/bin/sftp
-HeadMan: st_ino differ. Cat: 5e2e8 File: 5df1d
-HeadMan: st_size differ. Cat: 46952 File: 46984
-HeadMan: SHA1 differs.
-HeadMan: File: /usr/bin/slogin
-HeadMan: st_ino differ. Cat: 5e359 File: 5e2e8
-HeadMan: File: /usr/bin/ssh
-HeadMan: st_mode differ. Cat: 89ed File: 81ed
-HeadMan: st_ino differ. Cat: 5e35a File: 5e359
-HeadMan: st_size differ. Cat: 219932 File: 234440
-HeadMan: SHA1 differs.
-HeadMan: File: /usr/bin/ssh-add
-HeadMan: st_ino differ. Cat: 5e35b File: 5e35a
-HeadMan: st_size differ. Cat: 76328 File: 81448
-HeadMan: SHA1 differs.
-HeadMan: File: /usr/bin/ssh-agent
-HeadMan: st_ino differ. Cat: 5e35c File: 5e35b
-HeadMan: st_size differ. Cat: 43208 File: 47368
-HeadMan: SHA1 differs.
-HeadMan: File: /usr/bin/ssh-keyscan
-HeadMan: st_ino differ. Cat: 5e35d File: 5e96a
-HeadMan: st_size differ. Cat: 139272 File: 151560
-HeadMan: SHA1 differs.
-HeadMan: 25-Jun-2002 21:41
-JobId: 83
-Job: RufusVerify.2002-06-25.21:41:05
-FileSet: Verify Set
-Verify Level: Catalog
-Client: RufusVerify
-Start time: 25-Jun-2002 21:41
-End time: 25-Jun-2002 21:41
-Files Examined: 4,258
-Termination: Verify Differences
-\end{verbatim}
-\normalsize
-
-At this point, it was obvious that these files were modified during
-installation of the RPMs. If you want to be super safe, you should run a {\bf
-Verify Level=Catalog} immediately before installing new software to verify
-that there are no differences, then run a {\bf Verify Level=InitCatalog}
-immediately after the installation.
-
-To keep the above email from being sent every night when the Verify Job runs,
-we simply re-run the Verify Job setting the level to {\bf InitCatalog} (as we
-did above in the very beginning). This will re-establish the current state of
-the system as your new basis for future comparisons. Take care that you don't
-do an {\bf InitCatalog} after someone has placed a Trojan horse on your
-system!
-
-If you have included in your {\bf FileSet} a file that is changed by the
-normal operation of your system, you will get false matches, and you will need
-to modify the {\bf FileSet} to exclude that file (or not to Include it), and
-then re-run the {\bf InitCatalog}.
-
-The FileSet that is shown below is what I use on my Red Hat 7.3 system. With a
-bit more thought, you can probably add quite a number of additional files that
-should be monitored.
-
-\section{A Verify Configuration Example}
-\index[general]{Verify Configuration Example }
-\index[general]{Example!Verify Configuration }
-
-\footnotesize
-\begin{verbatim}
-Schedule {
- Name = "VerifyCycle"
- Run = Level=Catalog sun-sat at 5:05
-}
-Job {
- Name = "MatouVerify"
- Type = Verify
- Level = Catalog # default level
- Client = MatouVerify
- FileSet = "Verify Set"
- Messages = Standard
- Storage = DLTDrive
- Pool = Default
- Schedule = "VerifyCycle"
-}
-#
-# The list of files in this FileSet should be carefully
-# chosen. This is a good starting point.
-#
-FileSet {
- Name = "Verify Set"
- Include {
- Options {
- verify=pins1
- signature=SHA1
- }
- File = /boot
- File = /bin
- File = /sbin
- File = /usr/bin
- File = /lib
- File = /root/.ssh
- File = /home/kern/.ssh
- File = /var/named
- File = /etc/sysconfig
- File = /etc/ssh
- File = /etc/security
- File = /etc/exports
- File = /etc/rc.d/init.d
- File = /etc/sendmail.cf
- File = /etc/sysctl.conf
- File = /etc/services
- File = /etc/xinetd.d
- File = /etc/hosts.allow
- File = /etc/hosts.deny
- File = /etc/hosts
- File = /etc/modules.conf
- File = /etc/named.conf
- File = /etc/pam.d
- File = /etc/resolv.conf
- }
- Exclude = { }
-P
-Client {
- Name = MatouVerify
- Address = lmatou
- Catalog = Bacula
- Password = ""
- File Retention = 80d # 80 days
- Job Retention = 1y # one year
- AutoPrune = yes # Prune expired Jobs/Files
-}
-Catalog {
- Name = Bacula
- dbname = verify; user = bacula; password = ""
-}
-\end{verbatim}
-\normalsize
+++ /dev/null
-@VERSION@ (@DATE@)
+++ /dev/null
-%%
-%%
-
-\section*{The Windows Version of Bacula}
-\label{_ChapterStart7}
-\index[general]{Windows Version of Bacula }
-\addcontentsline{toc}{section}{Windows Version of Bacula}
-
-\subsection*{General}
-\index[general]{General }
-\addcontentsline{toc}{subsection}{General}
-
-At the current time only the File daemon or Client program has been tested on
-Windows. As a consequence, when we speak of the Windows version of Bacula
-below, we are referring to the File daemon only.
-
-The Windows version of the Bacula File daemon has been tested on Win98, WinMe,
-WinNT, and Win2000 systems. We have coded to support Win95, but no longer have
-a system for testing. The Windows version of Bacula is a native Win32 port,
-but there are very few source code changes to the Unix code, which means that the Windows
-version is for the most part running code that has long proved stable on Unix
-systems. When running, it is perfectly integrated with Windows and displays
-its icon in the system icon tray, and provides a system tray menu to obtain
-additional information on how Bacula is running (status and events dialog
-boxes). If so desired, it can also be stopped by using the system tray menu,
-though this should normally never be necessary.
-
-Once installed Bacula normally runs as a system service. This means that it is
-immediately started by the operating system when the system is booted, and
-runs in the background even if there is no user logged into the system.
-
-\subsection*{Win32 Installation}
-\label{installation}
-\index[general]{Installation }
-\index[general]{Win32!Installation }
-\addcontentsline{toc}{subsection}{Win32 Installation}
-
-Normally, you will install the Windows version of Bacula from the binaries.
-This install is standard Windows .exe that runs an install wizard using the
-NSIS Free Software installer, so if you have already installed Windows
-software, it should be very familiar to you.
-
-If you have a previous version Cygwin of Bacula (1.32 or lower) installed,
-you should stop the service, uninstall it, and remove the Bacula
-installation directory possibly saving your bacula-fd.conf file for use
-with the new version you will install. The new native version of Bacula
-has far fewer files than the old Cygwin version, so it is better to start
-with a clean directory.
-
-Finally, proceed with the installation.
-
-\begin{itemize}
-\item You must be logged in as Administrator to do a correct installation,
- if not, please do so before continuing.
-
-\item Simply double click on the {\bf winbacula-1.xx.0.exe} NSIS install
- icon. The actual name of the icon will vary from one release version to
- another.
-
-\includegraphics{./win32-nsis.eps} winbacula-1.xx.0.exe
-\
-\item Once launched, the installer wizard will ask you if you want to install
- Bacula.
-
-\addcontentsline{lof}{figure}{Win32 Client Setup Wizard}
-\includegraphics{./win32-welcome.eps}
-\
-\item If you proceed, you will be asked to select the components to be
- installed. You may install the Bacula program (Bacula File Service) and or
- the documentation. Both will be installed in sub-directories of the install
- location that you choose later. The components dialog looks like the
- following:
-
-\addcontentsline{lof}{figure}{Win32 Component Selection Dialog}
-\includegraphics{./win32-pkg.eps}
-
-\item Next you will be asked to select an installation directory.
-
- \addcontentsline{lof}{figure}{Win32 Directory Selection Dialog}
-\includegraphics{./win32-location.eps}
-
-\item If you are installing for the first time, you will be asked if you want
- to edit the bacula-fd.conf file, and if you respond with yes, it will be
- opened in notepad. Note, if you have installed Bacula to a drive other
- than C: you probably should prefix the installation drive name to each
- of the directory references in the bacula-fd.conf file, in particular
- the {\bf WorkingDirectory} and the {\bf Pid Directory} directives.
-
- Also, if you do not wish to see the full listing of all files restored
- in the job output after running a restore job, you can add {\bf ,
- !restored} to the {\bf director} directive in the {\bf Messages}
- resource.
-
-\item Then the installer will ask if you wish to install Bacula as a service. You
- should always choose to do so:
-
-\addcontentsline{lof}{figure}{Win32 Client Service Selection}
-\includegraphics{./win32-service.eps}
-
-
-\item If everything goes well, you will receive the following confirmation:
-
- \addcontentsline{lof}{figure}{Win32 Client Service Confirmation}
- \includegraphics{./win32-service-ok.eps}
-
-
-\item Then you will be asked if you wish to start the service. If you respond
- with yes, any running Bacula will be shutdown and the new one started. You
- may see a DOS box momentarily appear on the screen as the service is started.
- It should disappear in a second or two:
-
-\addcontentsline{lof}{figure}{Win32 Client Start}
-\includegraphics{./win32-start.eps}
-
-
-\item Finally, the finish dialog will appear:
- \addcontentsline{lof}{figure}{Win32 Client Setup Completed}
- \includegraphics{./win32-finish.eps}
-
-\
-\end{itemize}
-
-That should complete the installation process. When the Bacula File Server is
-ready to serve files, an icon \includegraphics{./idle.eps} representing a
-cassette (or tape) will appear in the system tray
-\includegraphics{./tray-icon.eps}; right click on it and a menu will appear.\\
-\includegraphics{./menu.eps}\\
-The {\bf Events} item is currently unimplemented, by selecting the {\bf
-Status} item, you can verify whether any jobs are running or not.
-
-When the Bacula File Server begins saving files, the color of the holes in the
-cassette icon will change from white to green \includegraphics{./running.eps},
-and if there is an error, the holes in the cassette icon will change to red
-\includegraphics{./error.eps}.
-
-If you are using remote desktop connections between your windows boxes, be
-warned that that tray icon does not always appear. It will always be visible
-when you log into the console, but the remote desktop may not display it.
-
-\subsection*{Post Win32 Installation}
-\index[general]{Post Win32 Installation }
-\index[general]{Win32!Post Installation }
-\addcontentsline{toc}{subsection}{Post Win32 Installation}
-
-After installing Bacula and before running it, you should check the contents
-of {\bf
-c:\textbackslash{}bacula\textbackslash{}bin\textbackslash{}bacula-fd.conf} to
-ensure that it corresponds to your configuration.
-
-Finally, but pulling up the Task Manager (ctl-alt-del), verify that Bacula
-is running as a process (not an Application) with User Name SYSTEM. If this is
-not the case, you probably have not installed Bacula while running as
-Administrator, and hence it will be unlikely that Bacula can access
-all the system files.
-
-\subsection*{Uninstalling Bacula on Win32}
-\index[general]{Win32!Uninstalling Bacula }
-\index[general]{Uninstalling Bacula on Win32 }
-\addcontentsline{toc}{subsection}{Uninstalling Bacula on Win32}
-
-Once Bacula has been installed, it can be uninstalled using the standard
-Windows Add/Remove Programs dialog found on the Control panel.
-
-\subsection*{Dealing with Win32 Problems}
-\label{problems}
-\index[general]{Win32!Dealing with Problems }
-\index[general]{Dealing with Win32 Problems }
-\addcontentsline{toc}{subsection}{Dealing with Win32 Problems}
-
-The most likely source of problems is authentication when the Director
-attempts to connect to the File daemon that you installed. This can occur if
-the names and the passwords defined in the File daemon's configuration file
-{\bf
-c:\textbackslash{}bacula\textbackslash{}bin\textbackslash{}bacula-fd.conf} on
-the Windows machine do not match with the names and the passwords in the
-Director's configuration file {\bf bacula-dir.conf} located on your Unix/Linux
-server.
-
-More specifically, the password found in the {\bf Client} resource in the
-Director's configuration file must be the same as the password in the {\bf
-Director} resource of the File daemon's configuration file. In addition, the
-name of the {\bf Director} resource in the File daemon's configuration file
-must be the same as the name in the {\bf Director} resource of the Director's
-configuration file.
-
-It is a bit hard to explain in words, but if you understand that a Director
-normally has multiple Clients and a Client (or File daemon) may permit access
-by multiple Directors, you can see that the names and the passwords on both
-sides must match for proper authentication.
-
-One user had serious problems with the configuration file until he realized
-that the Unix end of line conventions were used and Bacula wanted them in
-Windows format. This has not been confirmed though.
-
-Running Unix like programs on Windows machines is a bit frustrating because
-the Windows command line shell (DOS Window) is rather primitive. As a
-consequence, it is not generally possible to see the debug information and
-certain error messages that Bacula prints. With a bit of work, however, it is
-possible. When everything else fails and you want to {\bf see} what is going
-on, try the following:
-
-\footnotesize
-\begin{verbatim}
- Start a DOS shell Window.
- cd c:\bacula\bin
- bacula-fd -t >out
- type out
-\end{verbatim}
-\normalsize
-
-The {\bf -t} option will cause Bacula to read the configuration file, print
-any error messages and then exit. the {\bf \gt{}} redirects the output to the
-file named {\bf out}, which you can list with the {\bf type} command.
-
-If something is going wrong later, or you want to run {\bf Bacula} with a
-debug option, you might try starting it as:
-
-\footnotesize
-\begin{verbatim}
- bacula-fd -d 100 >out
-\end{verbatim}
-\normalsize
-
-In this case, Bacula will run until you explicitly stop it, which will give
-you a chance to connect to it from your Unix/Linux server. In later versions
-of Bacula (1.34 on, I think), when you start the File daemon in debug mode it
-can write the output to a trace file {\bf bacula.trace} in the current
-directory. To enable this, before running a job, use the console, and enter:
-
-\footnotesize
-\begin{verbatim}
- trace on
-\end{verbatim}
-\normalsize
-
-then run the job, and once you have terminated the File daemon, you will find
-the debug output in the {\bf bacula.trace} file.
-
-In addition, you should look in the System Applications log on the Control
-Panel to find any Windows errors that Bacula got during the startup process.
-
-Finally, due to the above problems, when you turn on debugging, and specify
-trace=1 on a setdebug command in the Console, Bacula will write the debug
-information to the file {\bf bacula.trace} in the directory from which Bacula
-is executing.
-
-\label{Compatibility}
-\subsection*{Windows Compatibility Considerations}
-\index[general]{Windows Compatibility Considerations }
-\index[general]{Considerations!Windows Compatibility }
-\addcontentsline{toc}{subsection}{Windows Compatibility Considerations}
-
-If any applications are running during the backup and they have files
-opened exclusively, Bacula will not be able to backup those files, so be
-sure you close your applications (or tell your users to close their
-applications) before the backup. Fortunately,
-most Microsoft applications do not open
-files exclusively so that they can be backed up. However, you will need to
-experiment. In any case, if Bacula cannot open the file, it will print an
-error message, so you will always know which files were not backed up.
-For version 1.37.25 and greater, see the section below on
-Volume Shadow Copy Service.
-
-During backup, Bacula doesn't know about the system registry, so you will
-either need to write it out to an ASCII file using {\bf regedit~~/e} or use a
-program specifically designed to make a copy or backup the registry.
-
-In Bacula version 1.31 and later, we use Windows backup API calls by
-default. Typical of Windows, programming these special BackupRead and
-BackupWrite calls is a real nightmare of complications. The end result
-gives some distinct advantages and some disadvantages.
-
-First, the advantages are that on WinNT/2K/XP systems, the security and
-ownership information is now backed up. In addition, with the exception of
-files in exclusive use by another program (a major disaster for backup
-programs on Windows), Bacula can now access all system files. This means
-that when you restore files, the security and ownership information will be
-restored on WinNT/2K/XP along with the data.
-
-The disadvantage of the Windows backup API calls is that it produces
-non-portable backups. That is files and their data that are backed up on
-WinNT using the native API calls (BackupRead/BackupWrite) cannot be
-restored on Win95/98/Me or Unix systems. In principle, a file backed up on
-WinNT can be restored on WinXP, but this remains to be seen in practice
-(not yet tested). In addition, the stand-alone tools such as {\bf bls} and
-{\bf bextract} cannot be used to retrieve the data for those files because
-those tools are not available on Windows. All restores must use the Bacula
-{\bf restore} command. This restriction is mentioned for completeness, but
-in practice should not create any problems.
-
-As a default, Bacula backs up Windows systems using the Windows API calls.
-If you want to backup data on a WinNT/2K/XP system and restore it on a
-Unix/Win95/98/Me system, we have provided a special {\bf portable} option
-that backs up the data in a portable fashion by using portable API calls.
-See the \ilink{portable option}{portable} on the Include statement in a
-FileSet resource in the Director's configuration chapter for the details on
-setting this option. However, using the portable option means you may have
-permissions problems accessing files, and none of the security and
-ownership information will be backed up or restored. The file data can,
-however, be restored on any system.
-
-You should always be able to restore any file backed up on Unix or Win95/98/Me
-to any other system. On some systems, such as WinNT/2K/XP, you may have to
-reset the ownership of such restored files. Any file backed up on WinNT/2K/XP
-should in principle be able to be restored to a similar system (i.e.
-WinNT/2K/XP), however, I am unsure of the consequences if the owner
-information and accounts are not identical on both systems. Bacula will not
-let you restore files backed up on WinNT/2K/XP to any other system (i.e. Unix
-Win95/98/Me) if you have used the defaults.
-
-Finally, if you specify the {\bf portable=yes} option on the files you back
-up. Bacula will be able to restore them on any other system. However, any
-WinNT/2K/XP specific security and ownership information will be lost.
-
-The following matrix will give you an idea of what you can expect. Thanks to
-Marc Brueckner for doing the tests:
-
-+
-
-\addcontentsline{lot}{table}{WinNT/2K/XP Restore Portability Status}
-\begin{longtable}{|l|l|p{2.8in}|}
- \hline
-\multicolumn{1}{|c| }{\bf Backup OS } & \multicolumn{1}{c| }{\bf Restore OS }
-& \multicolumn{1}{c| }{\bf Results } \\
- \hline {WinMe } & {WinMe } & {Works } \\
- \hline {WinMe } & {WinNT } & {Works (SYSTEM permissions) } \\
- \hline {WinMe } & {WinXP } & {Works (SYSTEM permissions) } \\
- \hline {WinMe } & {Linux } & {Works (SYSTEM permissions) } \\
- \hline {\ } & {\ } & {\ } \\
- \hline {WinXP } & {WinXP } & {Works } \\
- \hline {WinXP } & {WinNT } & {Works (all files OK, but got "The data is invalid"
-message) } \\
- \hline {WinXP } & {WinMe } & {Error: Win32 data stream not supported. } \\
- \hline {WinXP } & {WinMe } & {Works if {\bf Portable=yes} specified during backup.} \\
- \hline {WinXP } & {Linux } & {Error: Win32 data stream not supported. } \\
- \hline {WinXP } & {Linux } & {Works if {\bf Portable=yes} specified during backup.}\\
- \hline {\ } & {\ } & {\ } \\
- \hline {WinNT } & {WinNT } & {Works } \\
- \hline {WinNT } & {WinXP } & {Works } \\
- \hline {WinNT } & {WinMe } & {Error: Win32 data stream not supported. } \\
- \hline {WinNT } & {WinMe } & {Works if {\bf Portable=yes} specified during backup.}\\
- \hline {WinNT } & {Linux } & {Error: Win32 data stream not supported. } \\
- \hline {WinNT } & {Linux } & {Works if {\bf Portable=yes} specified during backup. }\\
- \hline {\ } & {\ } & {\ } \\
- \hline {Linux } & {Linux } & {Works } \\
- \hline {Linux } & {WinNT } & {Works (SYSTEM permissions) } \\
- \hline {Linux } & {WinMe } & {Works } \\
- \hline {Linux } & {WinXP } & {Works (SYSTEM permissions) }
-\\ \hline
-
-\end{longtable}
-
-\label{VSS}
-\subsection*{Volume Shadow Copy Service}
-\index[general]{Volume Shadow Copy Service}
-\index[general]{VSS}
-\addcontentsline{toc}{subsection}{Volume Shadow Copy Service}
-In version 1.37.30 and greater, you can turn on Microsoft's Volume
-Shadow Copy Service (VSS).
-
-Microsoft added VSS to Windows XP and Windows 2003. From the perspective of
-a backup-solution for Windows, this is an extremely important step. VSS
-allows Bacula to backup open files and even to interact with applications like
-RDBMS to produce consistent file copies. VSS aware applications are called
-VSS Writers, they register with the OS so that when Bacula wants to do a
-Snapshot, the OS will notify the register Writer programs, which may then
-create a consistent state in their application, which will be backed up.
-Examples for these writers are "MSDE" (Microsoft database
-engine), "Event Log Writer", "Registry Writer" plus 3rd
-party-writers. If you have a non-vss aware application (e.g.
-SQL Anywhere or probably MySQL), a shadow copy is still generated
-and the open files can be backed up, but there is no guarantee
-that the file is consistent.
-
-Bacula produces a message from each of the registered writer programs
-when it is doing a VSS backup so you know which ones are correctly backed
-up.
-
-Bacula supports VSS on both Windows 2003 and Windows XP.
-Technically Bacula creates a shadow copy as soon as the backup process
-starts. It does then backup all files from the shadow copy and destroys the
-shadow copy after the backup process. Please have in mind, that VSS
-creates a snapshot and thus backs up the system at the state it had
-when starting the backup. It will disregard file changes which occur during
-the backup process.
-
-VSS can be turned on by placing an
-
-\index[dir]{Enable VSS}
-\index[general]{Enable VSS}
-\begin{verbatim}
-Enable VSS = yes
-\end{verbatim}
-
-in your FileSet resource.
-
-Important Note!! Under the current implementation, you may only
-run a single job at a time in any Win32 File daemon that has VSS
-active. Running multiple simultanous jobs in the File daemon
-will most likely cause jobs to fail. This restriction does not apply
-to the Director, Storage daemons, or any File daemons not running
-VSS.
-
-The VSS aware File daemon has the letters VSS on the signon line that
-it produces when contacted by the console. For example:
-\begin{verbatim}
-Tibs-fd Version: 1.37.32 (22 July 2005) VSS Windows XP MVS NT 5.1.2600
-\end{verbatim}
-the VSS is shown in the line above. This only means that the File daemon
-is capable of doing VSS not that VSS is turned on for a particular backup.
-There are two ways of telling if VSS is actually turned on during a backup.
-The first is to look at the status output for a job, e.g.:
-\footnotesize
-\begin{verbatim}
-Running Jobs:
-JobId 1 Job NightlySave.2005-07-23_13.25.45 is running.
- VSS Backup Job started: 23-Jul-05 13:25
- Files=70,113 Bytes=3,987,180,650 Bytes/sec=3,244,247
- Files Examined=75,021
- Processing file: c:/Documents and Settings/kern/My Documents/My Pictures/Misc1/Sans titre - 39.pdd
- SDReadSeqNo=5 fd=352
-\end{verbatim}
-\normalsize
-Here, you see under Running Jobs that JobId 1 is "VSS Backup Job started ..."
-This means that VSS is enabled for that job. If VSS is not enabled, it will
-simply show "Backup Job started ..." without the letters VSS.
-
-The second way to know that the job was backed up with VSS is to look at the
-Job Report, which will look something like the following:
-\footnotesize
-\begin{verbatim}
-23-Jul 13:25 rufus-dir: Start Backup JobId 1, Job=NightlySave.2005-07-23_13.25.45
-23-Jul 13:26 rufus-sd: Wrote label to prelabeled Volume "TestVolume001" on device "DDS-4" (/dev/nst0)
-23-Jul 13:26 rufus-sd: Spooling data ...
-23-Jul 13:26 Tibs: Generate VSS snapshots. Driver="VSS WinXP", Drive(s)="C"
-23-Jul 13:26 Tibs: VSS Writer: "MSDEWriter", State: 1 (VSS_WS_STABLE)
-23-Jul 13:26 Tibs: VSS Writer: "Microsoft Writer (Bootable State)", State: 1 (VSS_WS_STABLE)
-23-Jul 13:26 Tibs: VSS Writer: "WMI Writer", State: 1 (VSS_WS_STABLE)
-23-Jul 13:26 Tibs: VSS Writer: "Microsoft Writer (Service State)", State: 1 (VSS_WS_STABLE)
-\end{verbatim}
-\normalsize
-In the above Job Report listing, you see that the VSS snapshot was generated for drive C (if
-other drives are backed up, they will be listed on the {\bf Drive(s)="C"} You also see the
-reports from each of the writer program. Here they all report VSS\_WS\_STABLE, which means
-that you will get a consistent snapshot of the data handled by that writer.
-
-\subsection*{Windows Firewalls}
-\index[general]{Firewalls!Windows }
-\index[general]{Windows Firewalls }
-\addcontentsline{toc}{subsection}{Windows Firewalls}
-
-If you turn on the firewalling feature on Windows (default in WinXP SP2), you
-are likely to find that the Bacula ports are blocked and you cannot
-communicate to the other daemons. This can be deactivated through the {\bf
-Security Notification} dialog, which is apparently somewhere in the {\bf
-Security Center}. I don't have this on my computer, so I cannot give the exact
-details.
-
-The command:
-
-\footnotesize
-\begin{verbatim}
-netsh firewall set opmode disable
-\end{verbatim}
-\normalsize
-
-is purported to disable the firewall, but this command is not accepted on my
-WinXP Home machine.
-
-\subsection*{Windows Port Usage}
-\index[general]{Windows Port Usage }
-\index[general]{Usage!Windows Port }
-\addcontentsline{toc}{subsection}{Windows Port Usage}
-
-If you want to see if the File daemon has properly opened the port and is
-listening, you can enter the following command in a shell window:
-
-\footnotesize
-\begin{verbatim}
- netstat -an | findstr 910[123]
-\end{verbatim}
-\normalsize
-
-\subsection*{Windows Disaster Recovery}
-\index[general]{Recovery!Windows Disaster }
-\index[general]{Windows Disaster Recovery }
-\addcontentsline{toc}{subsection}{Windows Disaster Recovery}
-
-We don't currently have a good solution for disaster recovery on Windows as we
-do on Linux. The main piece lacking is a Windows boot floppy or a Windows boot
-CD. Microsoft releases a Windows Pre-installation Environment ({\bf WinPE})
-that could possibly work, but we have not investigated it. This means that
-until someone figures out the correct procedure, you must restore the OS from
-the installation disks, then you can load a Bacula client and restore files.
-Please don't count on using {\bf bextract} to extract files from your backup
-tapes during a disaster recovery unless you have backed up those files using
-the {\bf portable} option. {\bf bextract} does not run on Windows, and the
-normal way Bacula saves files using the Windows API prevents the files from
-being restored on a Unix machine. Once you have an operational Windows OS
-loaded, you can run the File daemon and restore your user files.
-
-Please see
-\ilink{ Disaster Recovery of Win32 Systems}{Win3233} for the latest
-suggestion, which looks very promising.
-
-It looks like Bart PE Builder, which creates a Windows PE (Pre-installation
-Environment) Boot-CD, may be just what is needed to build a complete disaster
-recovery system for Win32. This distribution can be found at
-\elink{http://www.nu2.nu/pebuilder/ }{http://www.nu2.nu/pebuilder/}.
-
-\subsection*{Windows Restore Problems}
-\index[general]{Problems!Windows Restore}
-\index[general]{Windows Restore Problems}
-\addcontentsline{toc}{subsection}{Windows Restore Problems}
-Please see the
-\ilink{Restore Chapter}{Windows} of this manual for problems
-that you might encounter doing a restore.
-
-
-\subsection*{Windows Ownership and Permissions Problems}
-\index[general]{Problems!Windows Ownership and Permissions }
-\index[general]{Windows Ownership and Permissions Problems }
-\addcontentsline{toc}{subsection}{Windows Ownership and Permissions
-Problems}
-
-If you restore files backed up from WinNT/XP/2K to an alternate directory,
-Bacula may need to create some higher level directories that were not saved
-(or restored). In this case, the File daemon will create them under the SYSTEM
-account because that is the account that Bacula runs under as a service. As of
-version 1.32f-3, Bacula creates these files with full access permission.
-However, there may be cases where you have problems accessing those files even
-if you run as administrator. In principle, Microsoft supplies you with the way
-to cease the ownership of those files and thus change the permissions.
-However, a much better solution to working with and changing Win32 permissions
-is the program {\bf SetACL}, which can be found at
-\elink{http://setacl.sourceforge.net/ }{http://setacl.sourceforge.net/}.
-
-If you have not installed Bacula while running as Administrator
-and if Bacula is not running as a Process with the userid (User Name) SYSTEM,
-then it is very unlikely that it will have sufficient permission to
-access all your files.
-
-Some users have experienced problems restoring files that participate in
-the Active Directory. They also report that changing the userid under which
-Bacula (bacula-fd.exe) runs, from SYSTEM to a Domain Admin userid, resolves
-the problem.
-
-
-\subsection*{Manually resetting the Permissions}
-\index[general]{Manually resetting the Permissions }
-\index[general]{Permissions!Manually resetting the }
-\addcontentsline{toc}{subsection}{Manually resetting the Permissions}
-
-The following solution was provided by Dan Langille \lt{}dan at langille in
-the dot org domain\gt{}. The steps are performed using Windows 2000 Server but
-they should apply to most Win32 platforms. The procedure outlines how to deal
-with a problem which arises when a restore creates a top-level new directory.
-In this example, "top-level" means something like {\bf
-c:\textbackslash{}src}, not {\bf c:\textbackslash{}tmp\textbackslash{}src}
-where {\bf c:\textbackslash{}tmp} already exists. If a restore job specifies /
-as the {\bf Where:} value, this problem will arise.
-
-The problem appears as a directory which cannot be browsed with Windows
-Explorer. The symptoms include the following message when you try to click on
-that directory:
-
-\includegraphics{./access-is-denied.eps}
-
-If you encounter this message, the following steps will change the permissions
-to allow full access.
-
-\begin{enumerate}
-\item right click on the top level directory (in this example, {\bf c:/src})
- and select {\bf Properties}.
-\item click on the Security tab.
-\item If the following message appears, you can ignore it, and click on {\bf
- OK}.
-
-\includegraphics{./view-only.eps}
-
-You should see something like this:
-
-\includegraphics{./properties-security.eps}
-\item click on Advanced
-\item click on the Owner tab
-\item Change the owner to something other than the current owner (which is
- {\bf SYSTEM} in this example as shown below).
-
-\includegraphics{./properties-security-advanced-owner.eps}
-\item ensure the "Replace owner on subcontainers and objects" box is
- checked
-\item click on OK
-\item When the message "You do not have permission to read the contents of
- directory c:\textbackslash{}src\textbackslash{}basis. Do you wish to replace
- the directory permissions with permissions granting you Full Control?", click
-on Yes.
-
-\includegraphics{./confirm.eps}
-\item Click on OK to close the Properties tab
- \end{enumerate}
-
-With the above procedure, you should now have full control over your restored
-directory.
-
-In addition to the above methods of changing permissions, there is a Microsoft
-program named {\bf cacls} that can perform similar functions.
-
-\subsection*{Backing Up the WinNT/XP/2K System State}
-\index[general]{State!Backing Up the WinNT/XP/2K System }
-\index[general]{Backing Up the WinNT/XP/2K System State }
-\addcontentsline{toc}{subsection}{Backing Up the WinNT/XP/2K System State}
-
-A suggestion by Damian Coutts using Microsoft's NTBackup utility in
-conjunction with Bacula should permit a full restore of any damaged system
-files on Win2K/XP. His suggestion is to do an NTBackup of the critical system
-state prior to running a Bacula backup with the following command:
-
-\footnotesize
-\begin{verbatim}
-ntbackup backup systemstate /F c:\systemstate.bkf
-\end{verbatim}
-\normalsize
-
-The {\bf backup} is the command, the {\bf systemstate} says to backup only the
-system state and not all the user files, and the {\bf /F
-c:\textbackslash{}systemstate.bkf} specifies where to write the state file.
-this file must then be saved and restored by Bacula.
-
-To restore the system state, you first reload a base operating system if the
-OS is damaged, otherwise, this is not necessary, then you would use Bacula to
-restore all the damaged or lost user's files and to recover the {\bf
-c:\textbackslash{}systemstate.bkf} file. Finally if there are any damaged or
-missing system files or registry problems, you run {\bf NTBackup} and {\bf
-catalogue} the system statefile, and then select it for restore. The
-documentation says you can't run a command line restore of the systemstate.
-
-To the best of my knowledge, this has not yet been tested. If you test it,
-please report your results to the Bacula email list.
-
-\subsection*{Windows Considerations for Filename Specifications}
-\index[general]{Specifications!Windows Considerations for Filename }
-\index[general]{Windows Considerations for Filename Specifications }
-\addcontentsline{toc}{subsection}{Windows Considerations for Filename
-Specifications}
-
-Please see the
-\ilink{Director's Configuration chapter}{win32} of this manual
-for important considerations on how to specify Windows paths in Bacula FileSet
-Include and Exclude directives.
-
-\index[general]{Unicode}
-Bacula versions prior to 1.37.28 do not support Windows Unicode filenames.
-As of that version, both {\bf bconsole} and {\bf bwx-console} support Windows
-Unicode filenames. There may still be some problems with multiple byte
-characters (e.g. Chinese, ...) where it is a two byte character but the
-displayed character is not two characters wide.
-
-\index[general]{Win32 path length restriction}
-Path/filenames longer than 260 characters are not supported. This may be
-possible in a future version.
-
-\subsection*{Command Line Options Specific to the Bacula Windows File
-Daemon (Client)}
-\index[general]{Client!Command Line Options Specific to the Bacula Windows
-File Daemon }
-\index[general]{Command Line Options Specific to the Bacula Windows File
-Daemon (Client) }
-\addcontentsline{toc}{subsection}{Command Line Options Specific to the
-Bacula Windows File Daemon (Client)}
-
-These options are not normally seen or used by the user, and are documented
-here only for information purposes. At the current time, to change the default
-options, you must either manually run {\bf Bacula} or you must manually edit
-the system registry and modify the appropriate entries.
-
-In order to avoid option clashes between the options necessary for {\bf
-Bacula} to run on Windows and the standard Bacula options, all Windows
-specific options are signaled with a forward slash character (/), while as
-usual, the standard Bacula options are signaled with a minus (-), or a minus
-minus (\verb:--:). All the standard Bacula options can be used on the Windows
-version. In addition, the following Windows only options are implemented:
-
-\begin{description}
-
-\item [/servicehelper ]
- \index[fd]{/servicehelper }
- Run the service helper application (don't use this it is deprecated.).
-
-\item [/service ]
- \index[fd]{/service }
- Start Bacula as a service
-
-\item [/run ]
- \index[fd]{/run }
- Run the Bacula application
-
-\item [/install ]
- \index[fd]{/install }
- Install Bacula as a service in the system registry
-
-\item [/remove ]
- \index[fd]{/remove }
- Uninstall Bacula from the system registry
-
-\item [/about ]
- \index[fd]{/about }
- Show the Bacula about dialogue box
-
-\item [/status ]
- \index[fd]{/status }
- Show the Bacula status dialogue box
-
-\item [/events ]
- \index[fd]{/events }
- Show the Bacula events dialogue box (not yet implemented)
-
-\item [/kill ]
- \index[fd]{/kill }
- Stop any running {\bf Bacula}
-
-\item [/help ]
- \index[fd]{/help }
- Show the Bacula help dialogue box
-\end{description}
-
-It is important to note that under normal circumstances the user should never
-need to use these options as they are normally handled by the system
-automatically once Bacula is installed. However, you may note these options in
-some of the .bat files that have been created for your use.
-
-\subsection*{Shutting down Windows Systems}
-\index[general]{Shutting down Windows Systems }
-\index[general]{Systems!Shutting down Windows }
-\addcontentsline{toc}{subsection}{Shutting down Windows Systems}
-
-Some users like to shutdown their windows machines after a backup using a
-Client Run After Job directive. If you want to do something similar, you might
-take the shutdown program from the
-\elink{apcupsd project}{http://www.apcupsd.com} or one from the
-\elink{Sysinternals project}{http://www.sysinternals.com/ntw2k/freeware/psshutdown.shtml}.