\chapter{New Features in 5.1.x}
This chapter presents the new features that have been added to the
current version of Bacula that is under development. This version will be
-released at some later date, probably near the end of 2010.
+released at some later date, probably near the end of April 2011.
+
+\section{Restart Incomplete Job}
+
+
+\medskip
+This project was funded by Bacula Systems and is available with Bacula
+Enterprise Edition and Community Edition.
+
+\section{New Tray Monitor}
+
+Since the old integrated Windows tray monitor doesn't work anymore with
+recent Windows versions, we have written a new Qt Tray Monitor that is available
+for both Linux and Windows. This new version allows you to run Backup from
+the tray monitor menu.
+
+\begin{figure}[htbp]
+ \centering
+ \includegraphics[width=10cm]{\idir tray-monitor}
+ \label{fig:traymonitor}
+ \caption{New tray monitor}
+\end{figure}
+
+\begin{figure}[htbp]
+ \centering
+ \includegraphics[width=10cm]{\idir tray-monitor1}
+ \label{fig:traymonitor1}
+ \caption{Run a Job through the new tray monitor}
+\end{figure}
+
+\medskip
+This project was funded by Bacula Systems and is available with Bacula
+the Enterprise Edition and the Community Edition.
+
+\section{Purge Migration Job}
+
+The new {\bf Purge Migration Job} directive may be added to the Migration
+Job definition in the Director's configuration file. When it is enabled
+the Job that was migrated during a migration will be purged at
+the end of the migration job.
+
+For example:
+\begin{verbatim}
+Job {
+ Name = "migrate-job"
+ Type = Migrate
+ Level = Full
+ Client = localhost-fd
+ FileSet = "Full Set"
+ Messages = Standard
+ Storage = DiskChanger
+ Pool = Default
+ Selection Type = Job
+ Selection Pattern = ".*Save"
+...
+ Purge Migrated Job = yes
+}
+\end{verbatim}
+
+\medskip
+
+This project was submited by Dunlap Blake, testing and documentation was funded
+by Bacula Systems.
+
+\section{Job Bandwidth Limitation}
+
+The new {\bf Job Bandwidth Limitation} directive may be added to the File
+daemon's and/or Director's configuration to limit the bandwidth used by a Job on a
+Client. It can be set in the File daemon's conf file for all Jobs run
+in that File daemon, or it can be set for each Job in the
+Director's conf file.
+
+For example:
+\begin{verbatim}
+FileDaemon {
+ Name = localhost-fd
+ Working Directory = /some/path
+ Pid Directory = /some/path
+ ...
+ Maximum Bandwidth Per Job = 5MB/s
+}
+\end{verbatim}
+
+The above example would cause any jobs running with the FileDaemon to not
+exceed 5MB/s of throughput when sending data to the Storage Daemon.
+
+You can specify the speed parameter in k/s, KB/s, m/s, MB/s.
+
+For example:
+\begin{verbatim}
+Job {
+ Name = locahost-data
+ FileSet = FS_localhost
+ Accurate = yes
+ ...
+ Maximum Bandwidth = 5MB/s
+ ...
+}
+\end{verbatim}
+
+The above example would cause Job \texttt{localhost-data} to not exceed 5MB/s
+of throughput when sending data from the File daemon to the Storage daemon.
+
+A new console command \texttt{setbandwidth} permits to set dynamically the
+maximum throughput of a running Job or for future jobs of a Client.
+
+\begin{verbatim}
+* setbandwidth limit=1000000 jobid=10
+\end{verbatim}
+
+The \texttt{limit} parameter is in KB/s.
+
+\medskip
+This project was funded by Bacula Systems and is available in
+the Enterprise Edition and the Community Edition.
\section{Support for MSSQL Block Level Backup}
-This project was funded by Bacula Systems and is available with Bacula Enterprise
-Edition.
+This project was funded by Bacula Systems and is available with the Bacula
+Enterprise Edition.
\section{Support for NDMP protocol}
}
\end{verbatim}
-This project was funded by Bacula Systems and is available with Bacula Enterprise
-Edition.
+This project was funded by Bacula Systems and is available with the Bacula
+Enterprise Edition.
\section{Incremental/Differential Block Level Difference Backup}
The new \texttt{delta} Plugin is able to compute and apply signature-based file
-differences. It can be used to backup only changes in a big binary file like Outlook
-PST, VirtualBox/VmWare images or database files.
+differences. It can be used to backup only changes in a big binary file like
+Outlook PST, VirtualBox/VmWare images or database files.
It supports both Incremental and Differential backups and stores signatures
database in the File Daemon working directory. This plugin is available on all
}
\end{verbatim}
-This project was funded by Bacula Systems and is available with Bacula Enterprise
-Edition.
+This project was funded by Bacula Systems and is available with the Bacula
+Enterprise Edition.
\section{Include All Windows Drives in FileSet}
-The \texttt{alldrives} Windows Plugin allows you to include all local drives with
-a simple directive. This plugin is available for Windows 64 and 32 bit.
+The \texttt{alldrives} Windows Plugin allows you to include all local drives
+with a simple directive. This plugin is available for Windows 64 and 32 bit.
\begin{verbatim}
FileSet {
}
\end{verbatim}
-This project was funded by Bacula Systems and is available with Bacula Enterprise
-Edition.
+You exclude some specific drives with the \texttt{exclude} option.
+
+\begin{verbatim}
+FileSet {
+ Name = EverythingFS
+ ...
+ Include {
+ Plugin = "alldrives: exclude=D,E"
+ }
+}
+\end{verbatim}
+
+
+This project was funded by Bacula Systems and is available with the Bacula
+Enterprise Edition.
+
+\section{SQL Catalog Enhancements}
+
+% TODO: Marco can explain more things
+Bacula uses a new catalog backend structure, it allows to build all SQL drivers
+with the same \texttt{./configure ; make} session.
+
+We also added cursor support for PostgreSQL backend, this improves memory usage
+for large installation.
\section{Changes in Bvfs (Bacula Virtual FileSystem)}
Bat has now a bRestore panel that uses Bvfs to display files and
directories. It's still experimental.
+\begin{figure}[htbp]
+ \centering
+ \includegraphics[width=12cm]{\idir bat-brestore}
+ \label{fig:batbrestore}
+ \caption{Bat Brestore Panel}
+\end{figure}
+
\texttt{Important}, the Bvfs module is not currently compatible with BaseJobs,
Copy and Migration jobs.
+\medskip
+This project was funded by Bacula Systems.
+
\subsection*{General notes}
\begin{itemize}
can combine all Jobs and all FileSet for a Client in a single session.
To get all JobId needed to restore a particular job, you can use the
-\texttt{.bvfs_get_jobids} command.
+\texttt{.bvfs\_get\_jobids} command.
\begin{verbatim}
.bvfs_get_jobids jobid=num [all]
\subsection*{Generating Bvfs cache}
-The \texttt{.bvfs_update} command computes the directory cache for jobs
+The \texttt{.bvfs\_update} command computes the directory cache for jobs
specified in argument, or for all jobs if unspecified.
\begin{verbatim}
\subsection*{Get all versions of a specific file}
Bvfs allows you to find all versions of a specific file for a given Client with
-the \texttt{.bvfs_version} command. To avoid problems with encoding, this function
-uses only PathId and FilenameId. The jobid argument is mandatory but unused.
+the \texttt{.bvfs\_version} command. To avoid problems with encoding, this
+function uses only PathId and FilenameId. The jobid argument is mandatory but
+unused.
\begin{verbatim}
.bvfs_versions client=filedaemon pathid=num filenameid=num jobid=1
\subsection*{Cleanup after restore}
To drop the table used by the restore command, you can use the
-\texttt{.bvfs_cleanup} command.
+\texttt{.bvfs\_cleanup} command.
\begin{verbatim}
.bvfs_cleanup path=b20001
OK to run? (yes/mod/no):
\end{verbatim}
+\medskip
+This project was funded by Bacula Systems and is available with Bacula
+Enterprise Edition and Community Edition.
+
\section{Additions to RunScript variables}
-You can have access to JobBytes and JobFiles using %b and %f in your runscript
-command.
+You can have access to JobBytes and JobFiles using \%b and \%f in your runscript
+command. The Client address is now available through \%h.
\begin{verbatim}
-RunAfterJob = "/bin/echo Job=%j JobBytes=%b JobFiles=%f"
+RunAfterJob = "/bin/echo Job=%j JobBytes=%b JobFiles=%f ClientAddress=%h"
\end{verbatim}
-\section{Changes in drivetype.exe}
+%\section{Changes in drivetype.exe}
+%
+%Now the \texttt{drivetype.exe} program allows you to list all local hard
+%drives. It can help to build dynamic FileSet on Windows.
+%
+%\begin{verbatim}
+%File = "\\|\"c:/program files/bacula/bin32/drivetype\" -l -a"
+%\end{verbatim}
+%
-Now the \texttt{drivetype.exe} program allows you to list all local hard
-drives. It can help to build dynamic FileSet on Windows.
+\section{ACL/Extended Attributes}
-\begin{verbatim}
-File = "\\|\"c:/program files/bacula/bin32/drivetype\" -l -a"
-\end{verbatim}
+We added support for NFSv4 ACLs on FreeBSD 8.1 and IRIX extended attributes.
+This project was funded by Marco van Wieringen.
\section{Additions to the Plugin API}
The bfuncs structure has been extended to include a number of
bRC (*AddExclude)(bpContext *ctx, const char *file);
bRC (*AddInclude)(bpContext *ctx, const char *file);
bRC (*AddIncludeOptions)(bpContext *ctx, const char *opts);
- bRC (*AddRegexToInclude)(bpContext *ctx, const char *item, int type);
- bRC (*AddWildToInclude)(bpContext *ctx, const char *item, int type);
+ bRC (*AddRegex)(bpContext *ctx, const char *item, int type);
+ bRC (*AddWild)(bpContext *ctx, const char *item, int type);
+ bRC (*checkChanges)(bpContext *ctx, struct save_pkt *sp);
} bFuncs;
\end{verbatim}
\item [F] regex applies only to the filename (directory or path stripped).
\item [D] regex applies only to the directory (path) part of the name.
\end{description}
+
+\item [checkChanges] call the \texttt{check\_changes()} function in Bacula code
+ that can use Accurate code to compare the file information in argument with
+ the previous file information. The \texttt{delta\_seq} attribute of the
+ \texttt{save\_pkt} will be updated, and the call will return
+ \texttt{bRC\_Seen} if the core code wouldn't decide to backup it.
\end{description}
bEventVssRestoreLoadComponentMetadata = 15,
bEventVssRestoreSetComponentsSelected = 16,
bEventRestoreObject = 17,
- bEventEndFileSet = 18
+ bEventEndFileSet = 18,
+ bEventPluginCommand = 19,
+ bEventVssBeforeCloseRestore = 20,
+ bEventVssPrepareSnapshot = 21
} bEventType;
\end{verbatim}
\item [bEventVssBackupAddComponents]
+\item [bEventVssPrepareSnapshot] is called before creating VSS snapshots, it
+ provides a char[27] table where the plugin can add Windows drives that will
+ be used during the Job. You need to add them without duplicates, and you can
+ use in \texttt{fd\_common.h} \texttt{add\_drive()} and \texttt{copy\_drives()}
+ for this purpose.
\end{description}
-
\chapter{Release Version 5.0.3}
There are no new features in version 5.0.2. This version simply fixes a
100 copies of the OS, there will be only one. If one or more of the systems
have some files updated, no problem, they will be automatically restored.
-A new Job directive \texttt{Base=Jobx, Joby...} permits to specify the list of
-files that will be used during Full backup as base.
-
-\begin{verbatim}
-Job {
- Name = BackupLinux
- Level= Base
- ...
-}
-
-Job {
- Name = BackupZog4
- Base = BackupZog4, BackupLinux
- Accurate = yes
- ...
-}
-\end{verbatim}
-
-In this example, the job \texttt{BackupZog4} will use the most recent version
-of all files contained in \texttt{BackupZog4} and \texttt{BackupLinux}
-jobs. Base jobs should have run with \texttt{level=Base} to be used.
-
-By default, Bacula will compare permissions bits, user and group fields,
-modification time, size and the checksum of the file to choose between the
-current backup and the BaseJob file list. You can change this behavior with the
-\texttt{BaseJob} FileSet option. This option works like the \texttt{verify=}
-one, that is described in the \ilink{FileSet}{FileSetResource} chapter.
-
-\begin{verbatim}
-FileSet {
- Name = Full
- Include = {
- Options {
- BaseJob = pmugcs5
- Accurate = mcs
- Verify = pin5
- }
- File = /
- }
-}
-\end{verbatim}
-
-\textbf{Important note}: The current implementation doesn't permit to scan
-volume with \textbf{bscan}. The result wouldn't permit to restore files easily.
+See the \ilink{Base Job Chapter}{basejobs} for more information.
This project was funded by Bacula Systems.