%%
+
%%
\chapter{New Features}
\end{verbatim}
\section{ACL Updates}
+\index[general]{ACL Updates}
The whole ACL code had been overhauled and in this version each platforms has
different streams for each type of acl available on such an platform. As ACLs
between platforms tend to be not that portable (most implement POSIX acls but
recognize them will give you a warning.
\section{Extended Attributes}
+\index[general]{Extended Attributes}
Something that was on the project list for some time is now implemented for
platforms that support a similar kind of interface. Its the support for backup
and restore of so called extended attributes. As extended attributes are so
\end{verbatim}
\section{Shared objects}
+\index[general]{Shared objects}
A default build of Bacula will now create the libraries as shared objects
(.so) rather than static libraries as was previously the case.
The shared libraries are built using {\bf libtool} so it should be quite
\section{Catalog Format}
+\index[general]{Catalog Format}
Bacula 3.0 comes with some changes on the catalog format. The upgrade
operation will convert an essential field of the File table that permits to
handle more than 4 billion objects over the time, and this operation will take
They are:
\subsection{Allow Duplicate Jobs = \lt{}yes|no\gt{}}
+\index[general]{Allow Duplicate Jobs}
If this directive is enabled duplicate jobs will be run. If
the directive is set to {\bf no} (default) then only one job of a given name
may run at one time, and the action that Bacula takes to ensure only
one job runs is determined by the other directives (see below).
\subsection{Allow Higher Duplicates = \lt{}yes|no\gt{}}
+\index[general]{Allow Higher Duplicates}
If this directive is set to {\bf yes} (default) the job with a higher
priority (lower priority number) will be permitted to run. If the
priorities of the two jobs are the same, the outcome is determined by
other directives (see below).
\subsection{Cancel Queued Duplicates = \lt{}yes|no\gt{}}
+\index[general]{Cancel Queued Duplicates}
If this directive is set to {\bf yes} (default) any job that is
already queued to run but not yet running will be canceled.
\subsection{Cancel Running Duplicates = \lt{}yes|no\gt{}}
+\index[general]{Cancel Running Duplicates}
If this directive is set to {\bf yes} any job that is already running
will be canceled. The default is {\bf no}.
Storage daemon.
\subsection{Plugin Directory}
+\index[general]{Plugin Directory}
Each daemon (DIR, FD, SD) has a new {\bf Plugin Directory} directive that may
be added to the daemon definition resource. The directory takes a quoted
string argument, which is the name of the directory in which the daemon can
can share the same plugin directory.
\subsection{Plugin Options}
+\index[general]{Plugin Options}
The {\bf Plugin Options} directive takes a quoted string
arguement (after the equal sign) and may be specified in the
Job resource. The options specified will be passed to all plugins
the plugin (i.e. not fully implemented).
\subsection{Plugin Options ACL}
+\index[general]{Plugin Options ACL}
The {\bf Plugin Options ACL} directive may be specified in the
Director's Console resource. It functions as all the other ACL commands
do by permitting users running restricted consoles to specify a
the Plugin Options.
\subsection{Plugin = \lt{}plugin-command-string\gt{}}
+\index[general]{Plugin}
The {\bf Plugin} directive is specified in the Include section of
a FileSet resource where you put your {\bf File = xxx} directives.
For example:
plugin.
\section{The bpipe Plugin}
+\index[general]{The bpipe Plugin}
The {\bf bpipe} plugin is provided in the directory src/plugins/fd/bpipe-fd.c of
the Bacula source distribution. When the plugin is compiled and linking into
the resulting dynamic shared object (DSO), it will have the name {\bf bpipe-fd.so}.
on the program called.
\section{Microsoft Exchange Server 2003/2007 Plugin}
-
+\index[general]{Microsoft Exchange Server 2003/2007 Plugin}
\subsection{Concepts}
Although it is possible to backup Exchange using Bacula VSS the Exchange
plugin adds a good deal of functionality, because while Bacula VSS
\subsection{Restoring}
-
The restore operation is much the same as a normal Bacula restore, with
the following provisos:
\end{itemize}
\subsection{Restoring to the Recovery Storage Group}
-
The concept of the Recovery Storage Group is well documented by
Microsoft
\elink{http://support.microsoft.com/kb/824126}{http://support.microsoft.com/kb/824126},
\section{libdbi Framework}
+\index[general]{libdbi Framework}
As a general guideline, Bacula has support for a few catalog database drivers
(MySQL, PostgreSQL, SQLite)
coded natively by the Bacula team. With the libdbi implementation, which is a
from your OS distribution.
\section{Console Command Additions and Enhancements}
+\index[general]{Console Additions}
\subsection{Display Autochanger Content}
\index[general]{StatusSlots}
catalog.
\subsection{list joblog job=xxx or jobid=nnn}
+\index[general]{list joblog}
A new list command has been added that allows you to list the contents
of the Job Log stored in the catalog for either a Job Name (fully qualified)
or for a particular JobId. The {\bf llist} command will include a line with
In your Director's {\bf Messages} resource.
\subsection{Use separator for multiple commands}
+\index[general]{Command Separator}
When using bconsole with readline, you can set the command separator to one
of those characters to write commands who require multiple input in one line.
\begin{verbatim}
\index[general]{Misc New Features}
\subsection{Allow Mixed Priority = \lt{}yes|no\gt{}}
+\index[general]{Allow Mixed Priority}
This directive is only implemented in version 2.5 and later. When
set to {\bf yes} (default {\bf no}), this job may run even if lower
priority jobs are already running. This means a high priority job
be run until the priority 5 job has finished.
\subsection{Bootstrap File Directive -- FileRegex}
+\index[general]{Bootstrap File Directive}
{\bf FileRegex} is a new command that can be added to the bootstrap
(.bsr) file. The value is a regular expression. When specified, only
matching filenames will be restored.
\subsection{Virtual Tape Emulation}
+\index[general]{Virtual Tape Emulation}
We now have a Virtual Tape emulator that allows us to run though 99.9\% of
the tape code but actually reading and writing to a disk file. Used with the
\textbf{disk-changer} script, you can now emulate an autochanger with 10 drives
directive. This feature is only implemented on Linux machines.
\subsection{Bat Enhancements}
+\index[general]{Bat Enhancements}
Bat (the Bacula Administration Tool) GUI program has been significantly
enhanced and stabilized. In particular, there are new table based status
commands; it can now be easily localized using Qt4 Linguist.
work.
\subsection{RunScript Enhancements}
+\index[general]{RunScript Enhancements}
The {\bf RunScript} resource has been enhanced to permit multiple
commands per RunScript. Simply specify multiple {\bf Command} directives
in your RunScript.
may remove it before the final release.
\subsection{Status Enhancements}
+\index[general]{Status Enhancements}
The bconsole {\bf status dir} output has been enhanced to indicate
Storage daemon job spooling and despooling activity.
\subsection{Connect Timeout}
+\index[general]{Connect Timeout}
The default connect timeout to the File
daemon has been set to 3 minutes. Previously it was 30 minutes.
\subsection{ftruncate for NFS Volumes}
+\index[general]{ftruncate for NFS Volumes}
If you write to a Volume mounted by NFS (say on a local file server),
in previous Bacula versions, when the Volume was recycled, it was not
properly truncated because NFS does not implement ftruncate (file
recent release of Bacula from the Ubuntu repositories.
\subsection{Recycle Pool = \lt{}pool-name\gt{}}
+\index[general]{Recycle Pool}
The new \textbf{RecyclePool} directive defines to which pool the Volume will
be placed (moved) when it is recycled. Without this directive, a Volume will
remain in the same pool when it is recycled. With this directive, it can be
be recycled back into the Scratch pool.
\subsection{FD Version}
+\index[general]{FD Version}
The File daemon to Director protocol now includes a version
number, which although there is no visible change for users,
will help us in future versions automatically determine
if a File daemon is not compatible.
\subsection{Max Run Sched Time = \lt{}time-period-in-seconds\gt{}}
+\index[general]{Max Run Sched Time}
The time specifies the maximum allowed time that a job may run, counted from
when the job was scheduled. This can be useful to prevent jobs from running
during working hours. We can see it like \texttt{Max Start Delay + Max Run
Time}.
\subsection{Max Wait Time = \lt{}time-period-in-seconds\gt{}}
-
+\index[general]{Max Wait Time}
Previous \textbf{MaxWaitTime} directives aren't working as expected, instead
of checking the maximum allowed time that a job may block for a resource,
those directives worked like \textbf{MaxRunTime}. Some users are reporting to
directives are now deprecated.
\subsection{Incremental|Differential Max Wait Time = \lt{}time-period-in-seconds\gt{}}
+\index[general]{Incremental Max Wait Time}
+\index[general]{Differential Max Wait Time}
+
These directives have been deprecated in favor of
\texttt{Incremental|Differential Max Run Time}.
\subsection{Max Run Time directives}
+\index[general]{Max Run Time directives}
Using \textbf{Full/Diff/Incr Max Run Time}, it's now possible to specify the
maximum allowed time that a job can run depending on the level.
\includegraphics{\idir different_time.eps}
\subsection{Statistics Enhancements}
+\index[general]{Statistics Enhancements}
If you (or probably your boss) want to have statistics on your backups to
provide some \textit{Service Level Agreement} indicators, you could use a few
SQL queries on the Job table to report how many:
\end{verbatim}
\subsection{ScratchPool = \lt{}pool-resource-name\gt{}}
+\index[general]{ScratchPool}
This directive permits to specify a specific \textsl{Scratch} pool for the
current pool. This is useful when using multiple storage sharing the same
mediatype or when you want to dedicate volumes to a particular set of pool.
\subsection{Enhanced Attribute Despooling}
+\index[general]{Attribute Despooling}
If the storage daemon and the Director are on the same machine, the spool file
that contains attributes is read directly by the Director instead of being
transmitted across the network. That should reduce load and speedup insertion.
\subsection{SpoolSize = \lt{}size-specification-in-bytes\gt{}}
+\index[general]{SpoolSize}
A new Job directive permits to specify the spool size per job. This is used
in advanced job tunning. {\bf SpoolSize={\it bytes}}
\subsection{MaxConsoleConnections = \lt{}number\gt{}}
+\index[general]{MaxConsoleConnections}
A new director directive permits to specify the maximum number of Console
Connections that could run concurrently. The default is set to 20, but you may
set it to a larger number.
\subsection{dbcheck enhancements}
+\index[general]{dbcheck enhancements}
If you are using Mysql, dbcheck will now ask you if you want to create
temporary indexes to speed up orphaned Path and Filename elimination.
You can now specify the database connection port in the command line.
-\section{Building Bacula Plugins}
-There is currently one sample program {\bf example-plugin-fd.c} and
-one working plugin {\bf bpipe-fd.c} that can be found in the Bacula
-{\bf src/plugins/fd} directory. Both are built with the following:
-
-\begin{verbatim}
- cd <bacula-source>
- ./configure <your-options>
- make
- ...
- cd src/plugins/fd
- make
- make test
-\end{verbatim}
-
-After building Bacula and changing into the src/plugins/fd directory,
-the {\bf make} command will build the {\bf bpipe-fd.so} plugin, which
-is a very useful and working program.
-
-The {\bf make test} command will build the {\bf example-plugin-fd.so}
-plugin and a binary named {\bf main}, which is build from the source
-code located in {\bf src/filed/fd\_plugins.c}.
-
-If you execute {\bf ./main}, it will load and run the example-plugin-fd
-plugin simulating a small number of the calling sequences that Bacula uses
-in calling a real plugin. This allows you to do initial testing of
-your plugin prior to trying it with Bacula.
-
-You can get a good idea of how to write your own plugin by first
-studying the example-plugin-fd, and actually running it. Then
-it can also be instructive to read the bpipe-fd.c code as it is
-a real plugin, which is still rather simple and small.
-
-When actually writing your own plugin, you may use the example-plugin-fd.c
-code as a template for your code.
-
+\subsection{{-}{-}docdir configure option}
+You can use {-}{-}docdir= on the ./configure command to
+specify the directory where you want Bacula release documentation
+placed. This document consists of a number of small files such as
+LICENSE, ReleaseNotes, ChangeLog, ... The default is
+{\bf /usr/share/doc/bacula}.
+
+\subsection{{-}{-}htmlir configure option}
+You can use {-}{-}htmldir= on the ./configure command to
+specify the directory where you want Bacula bat html help files
+placed. The default is {\bf /usr/share/doc/bacula/html}