%%
%%

\chapter{What is Bacula?}
\label{GeneralChapter}
\index[general]{Bacula!Que es }
\index[general]{Que es Bacula? }

Bacula es un conjunto de programas de computadores, que permiten al administrador de sistemas administrar backups, restauraciones y verificación 
de datos a través de la red de computadores de diversas maneras. Puede correr en una sola computadora y se pueden respaldos a varios tipos de media, 
que incluyen cintas y disco.

En términos técnicos, es un programa de respaldo en red basado en ambientes Cliente/Servidor. Bacula es relativamente fácil de utilizar y muy eficiente, además de ofrecer muchas funcionalidades avanzadas de administración de almacenamiento, que hacen mas fácil la búsqueda y recuperación de archivos dañados o perdidos. Gracias a su diseño modular, puede escalar desde una pequeña computadores hasta sistemas conformados por cientos de computadoras, localizadas en una red muy amplia.


\section{Quien necesita Bacula?}
\index[general]{Quien necesita Bacula? }
\index[general]{Bacula!Quien necesita }

Si actualmente estas utilizando un programa como tar, dump, cpio o rsync para hacer respaldos de los datos de sus computadores o servidores, y le gustaría una solución en red, con mayores facilidades y un servicio de catalogo, Bacula suministrara estas funcionalidades  que usted quiere. Sin embargo, si usted tiene poco tiempo utilizando sistemas UNIX o Linux o no tiene mucha experiencia con un paquete sofisticado de respaldo, el proyecto Bacula no recomienda el uso de la aplicación, puesto que puede ser mas complicado que la configuración y uso de los comandos tar o dump.

Si usted quiere que Bacula se comporte como los programas mencionados con anterioridad y que este escriba sobre cualquier cinta que usted coloque en la unidad del drive, se podría conseguir con muchas dificultades. Bacula esta diseñado para proteger la data siguiendo las reglas que los administradores indiquen, y esto significa reutilizar la cinta como el ultimo recurso. Aunque es posible “forzar” a Bacula a escribir sobre cualquier cinta que se encuentre en la unidad, para el uso de estas opciones es preferible y mas sencillo, utilizar un programa simple para manejar esta clase de operaciones.

Si se desea un programa de backup que pueda escribir a multilples volúmenes, es decir, no existan limitaciones en cuanto a la capacidad de las unidades de tape, Bacula puede cumplir con todas sus necesidades. Adicionalmente, un gran numero de usuarios de Bacula reportan que este es mas simple de configurar y utilizar que otros programas equivalentes.

Por ultimo, si actualmente esta utilizando una aplicación comercial de respaldo y recuperación, tales como Legato Networker, ARCserveIT. Arkeia, Data Protector o PerfectBackup+, usted podría estar interesado en Bacula, el cual suministra muchas de las funcionalidades y es un software libre disponible bajo la licencia de software GNU Versión 2.


\section{Componentes de Bacula o Servicios }
\index[general]{Componentes de Bacula o Servicios }
\index[general]{Servicios!Componentes de Bacula o }

Bacula se compone de los cinco componentes mayores siguientes: Director, consola, file, storage y servicios de monitoreo (monitor).

\addcontentsline{lof}{figure}{Bacula Applications}
\includegraphics{\idir bacula-applications.eps} 
(Gracias a Aristedes Maniatis por este grafico y el siguiente) 
% TODO: move the thanks to Credits section in preface


\subsection*{Bacula Director}
   \label{DirDef}
   El servicio de Bacula Director es el programa que supervisa todas las operaciones de backup, recuperaciones, verificaciones y almacenamiento (archive). El administrador de sistemas utiliza el Bacula Director para planificar los backups y recuperaciones de archivos. El Director corre como un demonio (o servicio) en según plan.
% TODO: tell reader where this Developer's Guide is at?
   \label{UADef}

\subsection*{Bacula Console}
   El servicio de la consola de Bacula es el programa que permite a los administradores o usuarios comunicarse con el Bacula Director que esta en ejecución, y esta disponible en tres versiones: consola de texto (linea de comandos), interfaz GNOME y de interfaz gráfica wxWidgets. La primera, y la mas simple, consiste en correr el programa de consola (bconsole) en una ventana de comandos, por ejemplo,  una interfaz TTY. La mayoría de los administradores encontraran que esta completamente adecuada para las tareas de admininistracion. La segunda versión es una basada en interfaz GNOME, que no están completa como la de texto, pero es funcional y permite realizar la mayoría de las tareas que la de comandos. La tercera versión es una GUI wxWidgets que permite restauración interactiva de archivos. También cuenta con muchas de las opciones de la consola de texto, permite la complementacion de comandos con tabuladores y ofrece ayuda en linea en relación al comando que se esta escribiendo. Para mayores informaciones vea la \ilink{Bacula Console Design Document}{_ConsoleChapter}.


\subsection*{Bacula File}
   \label{FDDef}
   El servicio de Bacula file (también conocido como el programa cliente), es el software que se instala en el equipo al cual se le hará backup. Es especifico para cada sistema operativo en el cual corre y es el responsable por suministrar los atributos de archivos y los datos cuando sean requeridos por el Director.  También es responsable por el file system en el cual se hace la restauración los atributos de archivos y datos durante una operación de restore. Este programa corre como un demonio o servicio en la maquina a la cual se le hace respaldo. En adición a los demonios de Unix y Linux, hay un demonio para Windows file (normalmente distribuido en formato de archivos binarios), y corre en las siguientes versiones de Windows (NT, XP, 2000, 2003, y posiblemente en Me y 98). 

\subsection*{Bacula Storage}
   \label{SDDef}
   El servicio de Bacula storage consiste en el programa de software que realiza el almacenamiento y recuperación de los atributos de archivos y datos al medio físico de backup o volumen. En otras palabras, es el responsable por la lectura y escritura en los tapes (u otro media de almacenamiento, como archivos, DVD, USB, entre otros). El servicio de storage corre como un demonio en el equipo que tiene conectado y configurado el dispositivo de backup (generalmente, una unidad de cinta).

% TODO: may switch e.g. to "for example" or "such as" as appropriate
% TODO: is "usually" correct? Maybe "such as" instead?

\subsection*{Catalog}
   \label{DBDefinition}
   El servicio de catalogo comprende el programa de software responsable del mantenimiento de la base de datos de volúmenes y archivos índices para todos los archivos, a los cuales se les ha hecho respaldo. Permite a los administradores y usuarios, localizar rápidamente y recuperar cualquier objeto que se requiera. El catalogo distingue a Bacula de un programa de backup del sistema operativo, tales como tar, cpio o dump, porque mantiene un registro de todos los volúmenes utilizados, los jobs ejecutados y todos los archivos grabados, permitiendo, de esta manera, una restauración eficiente y administración de volúmenes. Bacula , actualmente, soporta tres tipos diferentes de bases de datos: MySQL, PostgrSQL y SQLite, el cual debe ser seleccionado cuando se instala el software.

   Las tres bases de datos soportadas actualmente, proveen un conjunto de funcionalidades, que incluyen indexamiento rápido, consultas arbitrarias y seguridad.

   Although the Bacula project plans to support other
   major SQL databases, the current Bacula implementation interfaces only
   to MySQL, PostgreSQL and SQLite.  For the technical and porting details
   see the Catalog Servicios Design Document in the developer's documented.

   The packages for MySQL and PostgreSQL are available for several operating
   systems.
   Alternatively, installing from the
   source is quite easy, see the \ilink{ Installing and Configuring
   MySQL}{MySqlChapter} chapter of this document for the details.  For
   more information on MySQL, please see:
   \elink{www.mysql.com}{http://www.mysql.com}.  Or see the \ilink{
   Installing and Configuring PostgreSQL}{PostgreSqlChapter} chapter of this
   document for the details.  For more information on PostgreSQL, please
   see: \elink{www.postgresql.org}{http://www.postgresql.org}.

   Configuring and building SQLite is even easier.  For the details of
   configuring SQLite, please see the \ilink{ Installing and Configuring
   SQLite}{SqlLiteChapter} chapter of this document.

\subsection*{Bacula Monitor} 
   \label{MonDef}
   Es el servicio que permite a los administradores o usuarios observar el estado actual de los procesos de Bacula, tales como Director, file y storage. Actualmente, únicamente una versión en GTK+ esta disponible, la cual trabaja con GNOME, KDE o cualquier administrador de ventanas que soporte el sistema de bandeja estándar FreeDesktop.org.

   Para realizar una operación de respaldo y recuperación exitosa, los cuatro demonios siguientes deben estar configurados y en ejecución: el Director, el file, el storage y el catalogo (MySQL, PostgreSQL o SQLite).


\section{Configuración de Bacula }
\index[general]{Configuración!Bacula }
\index[general]{Configuración de Bacula }

In order for Bacula to understand your system, what clients you want backed
up and how, you must create a number of configuration files containing
resources (or objects). The following presents an overall picture of this: 

\addcontentsline{lof}{figure}{Bacula Objects}
\includegraphics{\idir bacula-objects.eps} 

\section{Conventions Used in this Document}
\index[general]{Conventions Used in this Document }
\index[general]{Document!Conventions Used in this }

Bacula is in a state of evolution, and as a consequence, this manual
will not always agree with the code. If an item in this manual is preceded by
an asterisk (*), it indicates that the particular feature is not implemented.
If it is preceded by a plus sign (+), it indicates that the feature may be
partially implemented. 
% TODO: search for plus sign and asterisk and "IMPLEMENTED" and fix for printed book

If you are reading this manual as supplied in a released version of the
software, the above paragraph holds true. If you are reading the online
version of the manual, 
\elink{ www.bacula.org}{http://www.bacula.org}, please bear in
mind that this version describes the current version in development (in the
CVS) that may contain features not in the released version. Just the same, it
generally lags behind the code a bit. 
% TODO: is this still true? there are separate websites

\section{Quick Start}
\index[general]{Quick Start }
\index[general]{Start!Quick }

To get Bacula up and running quickly, the author recommends
that you first scan the
Terminology section below, then quickly review the next chapter entitled 
\ilink{The Current State of Bacula}{StateChapter}, then the 
\ilink{Getting Started with Bacula}{QuickStartChapter}, which will
give you a quick overview of getting Bacula running. After which, you should
proceed to the chapter on 
\ilink{Installing Bacula}{InstallChapter}, then 
\ilink{How to Configure Bacula}{ConfigureChapter}, and finally the
chapter on 
\ilink{ Running Bacula}{TutorialChapter}. 

\section{Terminología}
\index[general]{Terminología }

\begin{description}

\item [Administrador]
   \index[fd]{Administrador }
   La persona o personas responsables por la adminitracion del sistema Bacula.

\item [Backup]
   \index[fd]{Backup }
   En Bacula, el termino backup se refiere a un Job que salva archivos

\item [Bootstrap File]
   \index[fd]{Bootstrap File }
   Es un archivo ASCII que contiene una forma compacta de comandos que permiten a Bacula o un utilitario de extracción de archivos stand-alone (bextract), restaurar el contenido de uno o mas volúmenes, por ejemplo, el estado actual de un sistema al cual se le hizo backup. Con un archivo Bootstrap, Bacula puede restaurar un sistema sin el catalogo. Se puede crear un archivo Bootstrap desde el catalogo para extraer cualquier archivo(s) que se desee(n).

\item [Catalogo]
   \index[fd]{Catalogo }
   El catalogo es utilizado para almacenar información resumida de los Jobs, clientes y archivos  a los cuales se les hace backup, así como en cual volumen o volúmenes La información registrada en el catalogo, permite a los usuarios y administradores determinar los Jobs se ejecutaron, así como su estado y las características importantes de los objetos respaldados, y lo mas importante, es un recurso fundamental durante las operaciones de restauración y recuperación El catalogo es un recurso online, pero no contiene los datos de los archivos respaldados. La mayor parte de la información almacenada en el catalogo, también es almacenada en los volúmenes de backup (como las cintas). De hecho, las cintas tendrán una copia de los datos del archivo, así como sus atributos particulares.

   El uso del catalogo, representa una de las características fundamentales de Bacula, que la distingue de los demás programas de backup y los comandos del sistema operativo, tales como tar o cpio.

\item [Cliente]
   \index[fd]{Cliente }
   En términos de Bacula, la palabra cliente se refiere a la maquina a la cual se le esta haciendo backup, y es sinónimo para los servicios o demonios de file, y frecuentemente, se denota como FD. Un cliente, se define en un recurso en los archivos de configuración

\item [Consola]
   \index[fd]{Consola }
   Es un programa de interfaz con el Director, que permite a los usuarios y administradores controlar los procesos de Bacula.

\item [Demonio]
   \index[fd]{Demonio }
   En la terminología de UNIX, es un programa que esta en ejecución permanente en el background que permite llevar a cabo una tarea especifica. En los sistemas Windows, los demonios se denominan servicios.

\item [Directiva]
   \index[fd]{Directiva }
   El termino Directiva, se utiliza para hacer referencia a una declaración o un registro dentro de un recurso en un archivo de configuración que indica una definición especifica. Por ejemplo, la directiva Name define el nombre de un Recurso.

\item [Director]
   \index[fd]{Director }
   El demonio principal de los servicios de Bacula que planifica y dirige todas las operaciones. Ocasionalmente, el proyecto se refiere al Director como DIR.

\item [Diferencial]
   \index[fd]{Diferencial }
   Es un backup que incluye todos los archivos modificados desde la ejecución del ultimo respaldo de tipo completo (full). Hay que tener en cuenta que otros programas de respaldo, pueden definir este backup de manera diferente.

\item [Atributos de Archivos]
   \index[fd]{Atributos de Archivos }
   Los atributos de archivos representan toda la información necesaria para identificar un archivo y todas sus propiedades, tales como tamaño, fecha de creación, permisos, entre otros. Generalmente, los atributos son manejados completamente por Bacula, por lo tanto el usuario no necesita conocer estos valores. Los atributos no incluyen los datos con la información de los archivos.

\item [File Daemon]
   \index[fd]{File Daemon }
   Se refiere al demonio que esta en ejecución en los computadores a los cuales se les hace backup. También se conoce como servicios de Archivo, y algunas veces como los servicios del cliente o FD.

\label{FileSetDef}
\item [FileSet]
\index[fd]{a name }
   Un FileSet es un recurso definido en los archivos de configuración, que indica los archivos que serán respaldados. Este consiste de una lista de archivos o Directorios, una lista de archivos excluidos y como estos serán almacenados (compresión, encriptacion, firmas digitales). Para mayor informacion vea \ilink{FileSet Resource definition}{FileSetResource} in the Director chapter of this document.

\item [Incremental]
   \index[fd]{Incremental }
   Un backup que incluye todos los archivos modificados desde el ultimo respaldo full, differential o incremental ejecutado. Normalmente, se define con la directiva {\bf Level} dentro de la configuración del recurso Job, o en el recurso de Schedule.

\label{JobDef}
\item [Job]
\index[fd]{a name }
   Un Job es un recurso de configuración que define el trabajo que Bacula debe realizar para ejecutar un backup o un restore para un cliente particular. Esto consiste en el {\bf Tipo} (backup, restore, verificar, etc), el {\bf Nivel} (full, incremental,...), el {\bf FileSet} y el {\bf Storage}, para los archivos a los cuales se les hará backup (dispositivo de almacenamientos, medias para el pool). Para mayores detalles, vea the \ilink{Job Resource definition}{JobResource} in the Director chapter of this document.
% TODO: clean up "..." for book

\item [Monitor]
   \index[fd]{Monitor }
   Es un programa que interactúa con todos los demonios y permite al usuario o administrador monitorizar el estado de Bacula.

\item [Resource]
   \index[fd]{Resource }
   Un recurso es una parte de un archivo de configuración que define una unidad especifica de información que esta disponible en Bacula. Consiste de varias directivas (declaraciones individuales de configuración). Por ejemplo, el recurso {\bf Job} define todas las propiedades especificas de un Job: nombre, schedule, volumen del pool, tipo de backup, nivel de backup, entre otros.

\item [Restore]
   \index[fd]{Restore }
   Es un recurso de configuración que describe la operación de recuperación de un archivo desde un medio de backup. Es lo contrario a salvar, excepto que en la mayoría de los casos, una restauración (restore) normalmente tendrá un numero pequeño de archivos a recuperar, mientras que un backup, abarca todos los archivos en un sistema. De hecho, después de una falla de disco, se puede utilizar a Bacula para realizar una restauración completa de todos los archivos que en encontraban en el equipo.
% TODO: Why? Why say "Of course"??

% TODO: define "Save"
% TODO: define "Full"

\item [Schedule]
   \index[fd]{Schedule }
   Es un recurso de configuración que define cuando un Job de Bacula tiene planificada su ejecución Para utilizar el schedule, en el recurso de Job se hace referencia al nombre del schedule. Para mayores detalles, vea \ilink{Schedule Resource definition}{ScheduleResource} in the Director chapter of this document.

\item [Servicio]
   \index[fd]{Servicio }
   Es un programa que permanece de manera permanente en memoria esperando instrucciones. En entornos UNIX, los servicios se conocen como {\bf demonios}.

\item [Almacenamiento de Coordenadas]
   \index[fd]{Almacenamiento de Coordenadas }
   La información retornada desde los servicios de almacenamiento que localiza de manera única un archivo en un dispositivo de backup. Consiste de dos partes: una parte contiene cada archivo grabado y la otra contiene el Job completo. Normalmente, esta información es salvada en el catalogo, por lo tanto el usuario no necesita tener conocimiento especifico de estas coordenadas. Adicionalmente, incluyen los atributos de archivos (ver abajo) as la ubicación única de la información en el volumen de respaldo.

\item [Storage Daemon]
   \index[fd]{Storage Daemon }
   Algunas veces se refiere como el SD, y es el código que escribe los atributos y data al volumen de almacenamiento (generalmente, disco o cinta).

\item [Sesión]
   \index[sd]{Sesión }
   Generalmente, se refiere a la conversación interna entre el demonio del cliente y el demonio de almacenamiento. El demonio del cliente abre una {\bf sesión} con el demonio de almacenamiento para grabar un FileSet o para restaurarlo. Una sesión tiene una correspondencia uno a uno con un Job de Bacula.

\item [Verificar]
   \index[sd]{Verificar }
   Es un Job que compara los atributos actuales de un archivo con los atributos que han sido previamente almacenados en el catalogo. Esta funcionalidad puede ser utilizada para la detección de cambios a archivos críticos del sistema, de manera similar a un chequeo de integridad. Una de las mayores ventajas del uso de Bacula para esta actividad, es que en el equipo que se quiere proteger, únicamente corre el servicio de archivo (file daemon), y el Director, storage daemon y el catalogo residen en una maquina diferente. 

También puede ser utilizado para chequear que la data del Job mas reciente escrito en el volumen, coincida con lo que esta almacenado en el catalogo (es decir, compara los atributos de los archivos), o puede chequear el contenido del volumen contra los archivos originales en disco.

\item [*Archivar]
   \index[fd]{*Archivar }
   Una operación de archivado (archive), se realiza después del grabado, y consiste en la remoción de los volúmenes en los cuales la data fue almacenada de las operaciones de respaldo. Los volúmenes son marcados como Archivados, y ya no  pueden ser usados para grabar archivos. Todos los archivos contenidos en un volumen con estado Archivado son removidos del catalogo. Todavía no esta implementado.

\item [Periodo de Retención]
   \index[fd]{Periodo de Retención }
Hay varios modos de periodos de retención que Bacula reconoce. Los mas importantes son periodo de retención de {\bf archivos} (file retention), periodo de retención de {\bf Jobs} (Job retention) y periodo de retención de {\bf volúmenes} (volume retention). Cada uno de estos periodos de retención aplican al tiempo que los registros específicos se mantendrán en la base de datos del catalogo. Esto no debe ser confundido con el tiempo para el cual la data grabada en el volumen es considerada valida.

El periodo de retención de archivos determina el tiempo que los registros de archivos se mantendrán en el catalogo. Este periodo es importante por dos razones: la primera, es que el tiempo que los registros permanezcan en la base de datos, se puede “navegar” en estos archivos con un programa de consola, y hacer restauraciones individuales. Una vez que los registros son removidos (pruned) del catalogo, los archivos individuales de un Job de respaldo no pueden ser visualizados en modo de “navegación”. 

La segunda razón para seleccionar este periodo de manera cuidadosa, es que estos registros ocupan la mayor parte del almacenamiento en la base de datos. Por esto, se debe asegurar que el “pruning” regular de los registros de archivos en el catalogo se ejecute, para evitar el crecimiento excesivo del mismo. (See the Console {\bf prune} command for more details on this subject).

El periodo de retención de jobs, es el tiempo que los registros de los jobs permanecerán en el catalogo. Hay que tener presente, que los registros de archivos están unidos al Job que los grabo. Los registros de archivos pueden ser purgados dejando los registros de jobs. Es este caso, la información que estará disponible es la de los jobs ejecutados, y no los detalles de los archivos respaldados. Generalmente, cuando los jobs son purgados, todos los registros de archivos también serán purgados.

El periodo de retención de volumen, representa el mínimo de tiempo que un volumen sera mantenido antes que sea reutilizado. Bacula, en condiciones normales, nunca sobreescribe un volumen que contenga la única copia del backup de un archivo. Bajo condiciones ideales, el catalogo retendría las entradas para todos los archivos respaldados para todos los volúmenes Una vez que un volumen es sobreescrito, los archivos que contenía este volumen son removidos automáticamente del catalogo.  Sin embargo, si hay un gran numero de volúmenes para un pool o si un volumen nunca es reutilizado, la base de datos del catalogo puede llegar a ser enorme. Para mantener el catalogo con un tamaño manejable, la información del backup debería ser removida de la base de datos después del periodo de retención de archivos. Bacula suministra los mecanismos para que el “pruning” se haga de manera automática, de acuerdo a los periodos de retención definidos.


\item [Scan]
   \index[sd]{Scan }
   Una operación de “scan”, provoca que el contenido de un volumen o un conjunto de volúmenes, sean explorados (“escaneados”). Estos volúmenes y la información de los archivos que contienen, son restauradas al catalogo. Una vez que la información esta en el catalogo, los archivos grabados en estos volúmenes puede ser restaurados fácilmente Esta operación es particularmente útil cuando algunos volúmenes o jobs han excedido sus periodos de retención y han sido eliminados del catalogo. El escaneo de la data de los volúmenes al catalogo, se hace utilizando el programa {\bf bscan}. See the \ilink{ bscan section}{bscan} of the Bacula Utilities Chapter of this manual for more details.

\item [Volume]
   \index[sd]{Volume }
   Es una unidad de archivo, generalmente una cinta o un archivo en disco donde Bacula almacena la data de uno o mas jobs de respaldo. Todos los volúmenes tienen una etiqueta de software escrita al volumen por Bacula, para que se pueda identificar cual volumen se esta utilizando realmente (normalmente, con habrá confusión con los archivos de disco, pero con las cintas, es muy fácil montar uno equivocado).

\end{description}

\section{Que No es Bacula}
\index[general]{Que No es Bacula}

Bacula es una aplicación de backup, restauración y verificación y no un sistema completo de disaster recovery en si mismo, sin embargo, puede ser una parte fundamental del mismo y siga las instrucciones incluidas en el \ilink{ Disaster Recovery}{RescueChapter} Chapter of this manual.

Con una planificación apropiada, Bacula puede llegar a ser uno de los componentes centrales del sistema de disaster recovery. Por ejemplo, si se ha creado un disco de arranque de emergencia y/o un disco de rescate de Bacula para almacenar la información del particionamiento actual del disco duro, y se cuenta con un backup completo, es posible recuperar el sistema totalmente, partiendo desde un disco vacío (“bare metal”).

Si se ha utilizado el registro de {\bf WriteBootstrap} en los jobs o algún otro medio para grabar un archivo Bootstrap valido, se puede hacer uso de este para extraer los archivos que sean necesarios (sin el uso del catalogo o realizando búsquedas manuales de los archivos a restaurar).



\section{Interacción Entre los Servicios de Bacula}
\index[general]{Interacción Entre los Servicios de Bacula}
\index[general]{Servicios!Interacción Entre los de Bacula}

El siguiente diagrama de bloques muestra la interacción típica entre los servicios de Bacula para Job de backup. Cada bloque representa un proceso separado (normalmente un demonio). Generalmente, el Director supervisa el flujo de información y mantiene el catalogo.

\addcontentsline{lof}{figure}{Interactions between Bacula Servicios}
\includegraphics{\idir flow.eps} 
