current version of Bacula that is under development. This version will be
released at some later date, probably near the end of 2010.
+\section{Purge Migration Job when Completed}
+
+A new directive may be added to the Migration Job definition in the Director
+configuration file to purge the job migrated at the end of a migration.
+
+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}
+
+A new directive may be added to FileDaemon or Director to allow users to limit
+the bandwidth used by a Job on a Client. It can be set for all Jobs globally,
+per Directors in the File Daemon configuration, or per Job in the Director
+configuration 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 to the Storage Daemon.
+
+A new console commande \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 with Bacula
+Enterprise Edition and Community Edition.
+
+\section{Support for MSSQL Block Level Backup}
+
+This project was funded by Bacula Systems and is available with Bacula
+Enterprise Edition.
+
+\section{Support for NDMP protocol}
+
+The new \texttt{ndmp} Plugin is able to backup a NAS through NDMP protocol
+using \textbf{Filer to server} approach, where the Filer is backing up across
+the LAN to your Bacula server.
+
+Accurate option should be turned on in the Job resource.
+\begin{verbatim}
+Job {
+ Accurate = yes
+ FileSet = NDMPFS
+ ...
+}
+
+FileSet {
+ Name = NDMPFS
+ ...
+ Include {
+ Plugin = "ndmp:host=nasbox user=root pass=root file=/vol/vol1"
+ }
+}
+\end{verbatim}
+
+This project was funded by Bacula Systems and is available with 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.
+
+It supports both Incremental and Differential backups and stores signatures
+database in the File Daemon working directory. This plugin is available on all
+plateform including Windows 32 and 64bit.
+
+Accurate option should be turned on in the Job resource.
+\begin{verbatim}
+Job {
+ Accurate = yes
+ FileSet = DeltaFS
+ ...
+}
+
+FileSet {
+ Name = DeltaFS
+ ...
+ Include {
+ Plugin = "delta:/home/eric/.VirtualBox/HardDisks/lenny-i386.vdi"
+ }
+}
+\end{verbatim}
+
+This project was funded by Bacula Systems and is available with 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.
+
+\begin{verbatim}
+FileSet {
+ Name = EverythingFS
+ ...
+ Include {
+ Plugin = "alldrives"
+ }
+}
+\end{verbatim}
+
+This project was funded by Bacula Systems and is available with Bacula
+Enterprise Edition.
+
+\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.
+
+\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}
+\item All fields are separated by a tab
+\item You can specify \texttt{limit=} and \texttt{offset=} to list smoothly
+ records in very big directories
+\item All operations (except cache creation) are designed to run instantly
+\item At this time, Bvfs works faster on PostgreSQL than MySQL catalog. If you
+ can contribute new faster SQL queries we will be happy, else don't complain
+ about speed.
+\item The cache creation is dependent of the number of directories. As Bvfs
+ shares information accross jobs, the first creation can be slow
+\item All fields are separated by a tab
+\item Due to potential encoding problem, it's advised to allways use pathid in
+ queries.
+\end{itemize}
+
+\subsection*{Get dependent jobs from a given JobId}
+
+Bvfs allows you to query the catalog against any combination of jobs. You
+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.
+
+\begin{verbatim}
+.bvfs_get_jobids jobid=num [all]
+\end{verbatim}
+
+\begin{verbatim}
+.bvfs_get_jobids jobid=10
+1,2,5,10
+.bvfs_get_jobids jobid=10 all
+1,2,3,5,10
+\end{verbatim}
+
+In this example, a normal restore will need to use JobIds 1,2,5,10 to
+compute a complete restore of the system.
+
+With the \texttt{all} option, the Director will use all defined FileSet for
+this client.
+
+\subsection*{Generating Bvfs cache}
+
+The \texttt{.bvfs\_update} command computes the directory cache for jobs
+specified in argument, or for all jobs if unspecified.
+
+\begin{verbatim}
+.bvfs_update [jobid=numlist]
+\end{verbatim}
+
+Example:
+\begin{verbatim}
+.bvfs_update jobid=1,2,3
+\end{verbatim}
+
+You can run the cache update process in a RunScript after the catalog backup.
+
+\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.
+
+\begin{verbatim}
+.bvfs_versions client=filedaemon pathid=num filenameid=num jobid=1
+PathId FilenameId FileId JobId LStat Md5 VolName Inchanger
+PathId FilenameId FileId JobId LStat Md5 VolName Inchanger
+...
+\end{verbatim}
+
+Example:
+
+\begin{verbatim}
+.bvfs_versions client=localhost-fd pathid=1 fnid=47 jobid=1
+1 47 52 12 gD HRid IGk D Po Po A P BAA I A /uPgWaxMgKZlnMti7LChyA Vol1 1
+\end{verbatim}
+
+\subsection*{List directories}
+
+Bvfs allows you to list directories in a specific path.
+\begin{verbatim}
+.bvfs_lsdirs pathid=num path=/apath jobid=numlist limit=num offset=num
+PathId FilenameId FileId JobId LStat Path
+PathId FilenameId FileId JobId LStat Path
+PathId FilenameId FileId JobId LStat Path
+...
+\end{verbatim}
+
+You need to \texttt{pathid} or \texttt{path}. Using \texttt{path=""} will list
+``/'' on Unix and all drives on Windows. If FilenameId is 0, the record
+listed is a directory.
+
+\begin{verbatim}
+.bvfs_lsdirs pathid=4 jobid=1,11,12
+4 0 0 0 A A A A A A A A A A A A A A .
+5 0 0 0 A A A A A A A A A A A A A A ..
+3 0 0 0 A A A A A A A A A A A A A A regress/
+\end{verbatim}
+
+In this example, to list directories present in \texttt{regress/}, you can use
+\begin{verbatim}
+.bvfs_lsdirs pathid=3 jobid=1,11,12
+3 0 0 0 A A A A A A A A A A A A A A .
+4 0 0 0 A A A A A A A A A A A A A A ..
+2 0 0 0 A A A A A A A A A A A A A A tmp/
+\end{verbatim}
+
+\subsection*{List files}
+
+Bvfs allows you to list files in a specific path.
+\begin{verbatim}
+.bvfs_lsfiles pathid=num path=/apath jobid=numlist limit=num offset=num
+PathId FilenameId FileId JobId LStat Path
+PathId FilenameId FileId JobId LStat Path
+PathId FilenameId FileId JobId LStat Path
+...
+\end{verbatim}
+
+You need to \texttt{pathid} or \texttt{path}. Using \texttt{path=""} will list
+``/'' on Unix and all drives on Windows. If FilenameId is 0, the record listed
+is a directory.
+
+\begin{verbatim}
+.bvfs_lsfiles pathid=4 jobid=1,11,12
+4 0 0 0 A A A A A A A A A A A A A A .
+5 0 0 0 A A A A A A A A A A A A A A ..
+1 0 0 0 A A A A A A A A A A A A A A regress/
+\end{verbatim}
+
+In this example, to list files present in \texttt{regress/}, you can use
+\begin{verbatim}
+.bvfs_lsfiles pathid=1 jobid=1,11,12
+1 47 52 12 gD HRid IGk BAA I BMqcPH BMqcPE BMqe+t A titi
+1 49 53 12 gD HRid IGk BAA I BMqe/K BMqcPE BMqe+t B toto
+1 48 54 12 gD HRie IGk BAA I BMqcPH BMqcPE BMqe+3 A tutu
+1 45 55 12 gD HRid IGk BAA I BMqe/K BMqcPE BMqe+t B ficheriro1.txt
+1 46 56 12 gD HRie IGk BAA I BMqe/K BMqcPE BMqe+3 D ficheriro2.txt
+\end{verbatim}
+
+\subsection*{Restore set of files}
+
+Bvfs allows you to create a SQL table that contains files that you want to
+restore. This table can be provided to a restore command with the file option.
+
+\begin{verbatim}
+.bvfs_restore fileid=numlist dirid=numlist hardlink=numlist path=b2num
+OK
+restore file=?b2num ...
+\end{verbatim}
+
+To include a directory (with \texttt{dirid}), Bvfs needs to run a query to
+select all files. This query could be time consuming.
+
+\texttt{hardlink} list is always composed of a serie of two numbers (jobid,
+fileindex). This information can be found in the LinkFI field of the LStat
+packet.
+
+The \texttt{path} argument represents the name of the table that Bvfs will
+store results. The format of this table is \texttt{b2[0-9]+}. (Should start by
+b2 and followed by digits).
+
+Example:
+
+\begin{verbatim}
+.bvfs_restore fileid=1,2,3,4 hardlink=10,15,10,20 jobid=10 path=b20001
+OK
+\end{verbatim}
+
+\subsection*{Cleanup after restore}
+
+To drop the table used by the restore command, you can use the
+\texttt{.bvfs\_cleanup} command.
+
+\begin{verbatim}
+.bvfs_cleanup path=b20001
+\end{verbatim}
+
\section{Changes in the pruning algorithm}
We rewrote the job pruning algorithm in this version. Previously, in some users
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.
+
+\begin{verbatim}
+RunAfterJob = "/bin/echo Job=%j JobBytes=%b JobFiles=%f"
+\end{verbatim}
+
+%\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}
+%
+
\section{Additions to the Plugin API}
The bfuncs structure has been extended to include a number of
new entrypoints.
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
Include = {
Options {
BaseJob = pmugcs5
- Accurate = mcs5
+ Accurate = mcs
Verify = pin5
}
File = /
Name = Full
Include = {
Options {
- Accurate = mcs5
+ Accurate = mcs
Verify = pin5
}
File = /