%%
%%

\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) }
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  }
   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\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  }
   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  }
    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[general]{Heartbeat Interval}
   \index[general]{Broken pipe}
   Cette directive d\'efinit un intervalle de temps. Chaque "pulsation" 
   du Storage Daemon re\ue par le File Daemon est transmise au Director. 
   De plus, si aucune pulsation n'est re\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  }
   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[console]{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[console]{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[console]{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[console]{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[console]{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 }
   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  }
   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  }
   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  }
   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
