]> git.sur5r.net Git - bacula/docs/blob - docs/manuals/en/main/newfeatures.tex
903b492f257ebfd19badcc0745ecdeb134bcd556
[bacula/docs] / docs / manuals / en / main / newfeatures.tex
1 \chapter{New Features in 3.1.4 (Development Version)}
2 \label{NewFeaturesChapter}
3
4 This chapter presents the new features that are currently under development
5 in the 3.1.x versions to be released as Bacula version 5.0.0 sometime in
6 late 2009 or early 2010.
7
8 \section{Truncate volume after purge}
9 \label{sec:actiononpurge}
10
11 The Pool directive \textbf{ActionOnPurge=Truncate} instructs Bacula to truncate
12 the volume when it is purged. It is useful to prevent disk based volumes from
13 consuming too much space. 
14
15 \begin{verbatim}
16 Pool {
17   Name = Default
18   Action On Purge = Truncate
19   ...
20 }
21 \end{verbatim}
22
23 \section{Maximum Concurent Jobs for Devices}
24 \label{sec:maximumconcurentjobdevice}
25
26 {\bf Maximum Concurrent Jobs} is a new Device directive in the Storage
27 Daemon configuration permits setting the maximum number of Jobs that can
28 run concurrently on a specified Device.  Using this directive, it is
29 possible to have different Jobs using multiple drives, because when the
30 Maximum Concurrent Jobs limit is reached, the Storage Daemon will start new
31 Jobs on any other available compatible drive.  This facilitates writing to
32 multiple drives with multiple Jobs that all use the same Pool.
33
34 This project was funded by Bacula Systems.
35
36 \section{Restore from Multiple Storage Daemons}
37 \index[general]{Restore}
38
39 Previously, you were able to restore from multiple devices in a single Storage
40 Daemon. Now, Bacula is able to restore from multiple Storage Daemons. For
41 example, if your full backup runs on a Storage Daemon with an autochanger, and
42 your incremental jobs use another Storage Daemon with lots of disks, Bacula
43 will switch automatically from one Storage Daemon to an other within the same
44 Restore job.
45
46 You must upgrade your File Daemon to version 3.1.3 or greater to use this
47 feature.
48
49 This project was funded by Bacula Systems with the help of Equiinet.
50
51 \section{File Deduplication using Base Jobs}
52 A base job is sort of like a Full save except that you will want the FileSet to
53 contain only files that are unlikely to change in the future (i.e.  a snapshot
54 of most of your system after installing it).  After the base job has been run,
55 when you are doing a Full save, you specify one or more Base jobs to be used.
56 All files that have been backed up in the Base job/jobs but not modified will
57 then be excluded from the backup.  During a restore, the Base jobs will be
58 automatically pulled in where necessary.
59
60 This is something none of the competition does, as far as we know (except
61 perhaps BackupPC, which is a Perl program that saves to disk only).  It is big
62 win for the user, it makes Bacula stand out as offering a unique optimization
63 that immediately saves time and money.  Basically, imagine that you have 100
64 nearly identical Windows or Linux machine containing the OS and user files.
65 Now for the OS part, a Base job will be backed up once, and rather than making
66 100 copies of the OS, there will be only one.  If one or more of the systems
67 have some files updated, no problem, they will be automatically restored.
68
69 A new Job directive \texttt{Base=Jobx, Joby...} permits to specify the list of
70 files that will be used during Full backup as base.
71
72 \begin{verbatim}
73 Job {
74    Name = BackupLinux
75    Level= Base
76    ...
77 }
78
79 Job {
80    Name = BackupZog4
81    Base = BackupZog4, BackupLinux
82    Accurate = yes
83    ...
84 }
85 \end{verbatim}
86
87 In this example, the job \texttt{BackupZog4} will use the most recent version
88 of all files contained in \texttt{BackupZog4} and \texttt{BackupLinux}
89 jobs. Base jobs should have run with \texttt{level=Base} to be used.
90
91 By default, Bacula will compare permissions bits, user and group fields,
92 modification time, size and the checksum of the file to choose between the
93 current backup and the BaseJob file list. You can change this behavior with the
94 \texttt{BaseJob} FileSet option. This option works like the \texttt{verify=}
95 one, that is described in the \ilink{FileSet}{FileSetResource} chapter.
96
97 \begin{verbatim}
98 FileSet {
99   Name = Full
100   Include = {
101     Options {
102        BaseJob  = pmugcs5
103        Accurate = mcs5
104        Verify   = pin5
105     }
106     File = /
107   }
108 }
109 \end{verbatim}
110
111
112 This project was funded by Bacula Systems.
113
114 \section{AllowCompression = \lt{}yes\vb{}no\gt{}}
115 \index[dir]{AllowCompression}
116
117 This new directive may be added to Storage resource within the Director's
118 configuration to allow users to selectively disable the client compression for
119 any job which writes to this storage resource.
120
121 For example:
122 \begin{verbatim}
123 Storage {
124   Name = UltriumTape
125   Address = ultrium-tape
126   Password = storage_password # Password for Storage Daemon
127   Device = Ultrium
128   Media Type = LTO 3
129   AllowCompression = No # Tape drive has hardware compression
130 }
131 \end{verbatim}
132 The above example would cause any jobs running with the UltriumTape storage
133 resource to run without compression from the client file daemons.  This
134 effectively overrides any compression settings defined at the FileSet level.
135
136 This feature is probably most useful if you have a tape drive which supports
137 hardware compression.  By setting the \texttt{AllowCompression = No} directive
138 for your tape drive storage resource, you can avoid additional load on the file
139 daemon and possibly speed up tape backups.
140
141 This project was funded by Collaborative Fusion, Inc.
142
143 \section{Accurate Fileset Options}
144 \label{sec:accuratefileset}
145
146 In previous versions, the accurate code used the file creation and modification
147 times to determine if a file was modified or not. Now you can specify which
148 attributes to use (time, size, checksum, permission, owner, group, \dots),
149 similar to the Verify options.
150
151 \begin{verbatim}
152 FileSet {
153   Name = Full
154   Include = {
155     Options {
156        Accurate = mcs5
157        Verify   = pin5
158     }
159     File = /
160   }
161 }
162 \end{verbatim}
163
164 \begin{description}  
165 \item {\bf i}  compare the inodes  
166 \item {\bf p}  compare the permission bits  
167 \item {\bf n}  compare the number of links  
168 \item {\bf u}  compare the user id  
169 \item {\bf g}  compare the group id  
170 \item {\bf s}  compare the size  
171 \item {\bf a}  compare the access time  
172 \item {\bf m}  compare the modification time (st\_mtime)  
173 \item {\bf c}  compare the change time (st\_ctime)  
174 \item {\bf d}  report file size decreases  
175 \item {\bf 5}  compare the MD5 signature  
176 \item {\bf 1}  compare the SHA1 signature  
177 \end{description}
178
179 \textbf{Important note:} If you decide to use checksum in Accurate jobs,
180 the File Daemon will have to read all files even if they normally would not
181 be saved.  This increases the I/O load, but also the accuracy of the
182 deduplication.  By default, Bacula will check modification/creation time
183 and size.
184
185 This project was funded by Bacula Systems.
186
187 \section{Tab-completion for Bconsole}
188 \label{sec:tabcompletion}
189
190 If you build \texttt{bconsole} with readline support, you will be able to use
191 the new auto-completion mode. This mode supports all commands, gives help
192 inside command, and lists resources when required. It works also in the restore
193 mode.
194
195 To use this feature, you should have readline development package loaded on
196 your system, and use the following option in configure.
197 \begin{verbatim}
198 ./configure --with-readline=/usr/include/readline --disable-conio ...
199 \end{verbatim}
200
201 The new bconsole won't be able to tab-complete with older directors.
202
203 This project was funded by Bacula Systems.
204
205 \section{Pool File and Job retention}
206 \label{sec:poolfilejobretention}
207
208 % TODO check
209 We added two new Pool directives, \texttt{FileRetention} and
210 \texttt{JobRetention}, that take precedence over Client directives of the same
211 name. It allows you to control the Catalog pruning algorithm Pool by Pool. For
212 example, you can decide to increase Retention times for Archive or OffSite Pool.
213
214 \section{Read-only File Daemon using capabilities}
215 \label{sec:fdreadonly}
216 This feature implements support of keeping \textbf{ReadAll} capabilities after
217 UID/GID switch, this allows FD to keep root read but drop write permission.
218
219 It introduces new \texttt{bacula-fd} option (\texttt{-k}) specifying that
220 \textbf{ReadAll} capabilities should be kept after UID/GID switch.
221
222 \begin{verbatim}
223 root@localhost:~# bacula-fd -k -u nobody -g nobody
224 \end{verbatim}
225
226 The code for this feature was contributed by AltLinux.
227
228 \section{Bvfs API}
229 \label{sec:bvfs}
230
231 To help developers of restore GUI interfaces, we have added new \textsl{dot
232   commands} that permit browsing the catalog in a very simple way.
233
234 \begin{itemize}
235 \item \texttt{.bvfs\_update [jobid=x,y,z]} This command is required to update
236   the Bvfs cache in the catalog. You need to run it before any access to the
237   Bvfs layer.
238
239 \item \texttt{.bvfs\_lsdirs jobid=x,y,z path=/path | pathid=101} This command
240   will list all directories in the specified \texttt{path} or
241   \texttt{pathid}. Using \texttt{pathid} avoids problems with character
242   encoding of path/filenames.
243
244 \item \texttt{.bvfs\_lsfiles jobid=x,y,z path=/path | pathid=101} This command
245   will list all files in the specified \texttt{path} or \texttt{pathid}. Using
246   \texttt{pathid} avoids problems with character encoding.
247 \end{itemize}
248
249 You can use \texttt{limit=xxx} and \texttt{offset=yyy} to limit the amount of
250 data that will be displayed.
251
252 \begin{verbatim}
253 * .bvfs_update jobid=1,2
254 * .bvfs_update
255 * .bvfs_lsdir path=/ jobid=1,2
256 \end{verbatim}
257
258 This project was funded by Bacula Systems.
259
260 \section{Testing your Tape Drive}
261 \label{sec:btapespeed}
262
263 To determine the best configuration of your tape drive, you can run the new
264 \texttt{speed} command available in the \texttt{btape} program.
265
266 This command can have the following arguments:
267 \begin{itemize}
268 \item[\texttt{file\_size=n}] Specify the Maximum File Size for this test
269   (between 1 and 5GB). This counter is in GB.
270 \item[\texttt{nb\_file=n}] Specify the number of file to be written. The amount
271   of data should be greater than your memory ($file\_size*nb\_file$).
272 \item[\texttt{skip\_zero}] This flag permits to skip tests with constant
273   data.
274 \item[\texttt{skip\_random}] This flag permits to skip tests with random
275   data.
276 \item[\texttt{skip\_raw}] This flag permits to skip tests with raw access.
277 \item[\texttt{skip\_block}] This flag permits to skip tests with Bacula block
278   access.
279 \end{itemize}
280
281 \begin{verbatim}
282 *speed file_size=3 skip_raw
283 btape.c:1078 Test with zero data and bacula block structure.
284 btape.c:956 Begin writing 3 files of 3.221 GB with blocks of 129024 bytes.
285 ++++++++++++++++++++++++++++++++++++++++++
286 btape.c:604 Wrote 1 EOF to "Drive-0" (/dev/nst0)
287 btape.c:406 Volume bytes=3.221 GB. Write rate = 44.128 MB/s
288 ...
289 btape.c:383 Total Volume bytes=9.664 GB. Total Write rate = 43.531 MB/s
290
291 btape.c:1090 Test with random data, should give the minimum throughput.
292 btape.c:956 Begin writing 3 files of 3.221 GB with blocks of 129024 bytes.
293 +++++++++++++++++++++++++++++++++++++++++++
294 btape.c:604 Wrote 1 EOF to "Drive-0" (/dev/nst0)
295 btape.c:406 Volume bytes=3.221 GB. Write rate = 7.271 MB/s
296 +++++++++++++++++++++++++++++++++++++++++++
297 ...
298 btape.c:383 Total Volume bytes=9.664 GB. Total Write rate = 7.365 MB/s
299
300 \end{verbatim}
301
302 When using compression, the random test will give your the minimum throughput
303 of your drive . The test using constant string will give you the maximum speed
304 of your hardware chain. (cpu, memory, scsi card, cable, drive, tape).
305
306 You can change the block size in the Storage Daemon configuration file.
307
308 \section{New {\bf Block Checksum} Device Directive}
309 You may now turn off the Block Checksum (CRC32) code
310 that Bacula uses when writing blocks to a Volume.  This is
311 done by adding:
312
313 \begin{verbatim}
314 Block Checksum = no
315 \end{verbatim}
316
317 doing so can reduce the Storage daemon CPU usage slightly.  It
318 will also permit Bacula to read a Volume that has corrupted data.
319
320 The default is {\bf yes} -- i.e. the checksum is computed on write
321 and checked on read. 
322
323 We do not recommend to turn this off particularly on older tape
324 drives or for disk Volumes where doing so may allow corrupted data
325 to go undetected.
326
327 \section{New Bat Features}
328
329 Those new features were funded by Bacula Systems.
330
331 \subsection{Media List View}
332
333 By clicking on ``Media'', you can see the list of all your volumes. You will be
334 able to filter by Pool, Media Type, Location,\dots And sort the result directly
335 in the table. The old ``Media'' view is now known as ``Pool''.
336 \begin{figure}[htbp]
337   \centering
338   \includegraphics[width=13cm]{\idir bat-mediaview.eps}
339   \label{fig:mediaview}
340 \end{figure}
341
342
343 \subsection{Media Information View}
344
345 By double-clicking on a volume (on the Media list, in the Autochanger content
346 or in the Job information panel), you can access a detailed overview of your
347 Volume. (cf \ref{fig:mediainfo}.)
348 \begin{figure}[htbp]
349   \centering
350   \includegraphics[width=13cm]{\idir bat11.eps}  
351   \caption{Media information}
352   \label{fig:mediainfo}
353 \end{figure}
354
355 \subsection{Job Information View}
356
357 By double-clicking on a Job record (on the Job run list or in the Media
358 information panel), you can access a detailed overview of your Job. (cf
359 \ref{fig:jobinfo}.)
360 \begin{figure}[htbp]
361   \centering
362   \includegraphics[width=13cm]{\idir bat12.eps}  
363   \caption{Job information}
364   \label{fig:jobinfo}
365 \end{figure}
366
367 \subsection{Autochanger Content View}
368
369 By double-clicking on a Storage record (on the Storage list panel), you can
370 access a detailed overview of your Autochanger. (cf \ref{fig:jobinfo}.)
371 \begin{figure}[htbp]
372   \centering
373   \includegraphics[width=13cm]{\idir bat13.eps}  
374   \caption{Autochanger content}
375   \label{fig:achcontent}
376 \end{figure}
377
378 To use this feature, you need to use the latest mtx-changer script
379 version. (With new \texttt{listall} and \texttt{transfer} commands)
380
381 \subsection{Win32 version}
382
383 Compilation instructions are available in \texttt{src/qt-console/README.mingw32}
384
385 \section{Console Timeout Option}
386 You can now use the -u option of bconsole to set a timeout for each command.
387
388 \section{Important behavior changes}
389 \label{sec:importantchanges}
390
391 \begin{itemize}
392 \item You are now allowed to Migrate, Copy, and Virtual Full to read and write
393   to the same Pool
394 \item The \texttt{Device Poll Interval} is now 5 minutes. (previously did not
395   poll)
396 \item The new \texttt{mtx-changer} script has two new options, \texttt{listall}
397   and \texttt{transfer}. Be sure to report your custom changes on it to be able
398   to use new functions.
399 \item To enhance security in the \texttt{BackupCatalog} job, we provide a new
400   script (\texttt{make\_catalog\_backup.pl}) that no longer expose your catalog
401   password. If you want to use the new version after an upgrade, you need to
402   manually change the \texttt{BackupCatalog} job definition.
403 \item The new \texttt{bconsole} \texttt{help} command can take now 
404   the command that you want to explain as argument. (ex: \texttt{help run})
405 \end{itemize}
406
407 \subsection{Custom Catalog queries}
408
409 If you wish to add specialized commands that list the contents of the catalog,
410 you can do so by adding them to the \texttt{query.sql} file. This
411 \texttt{query.sql} file is now empty by default, and you can copy and past
412 examples from \texttt{examples/sample-query.sql} file.
413
414 \subsection{Deprecated parts}
415
416 The following items are \textbf{deprecated} for a long time, and are now
417 removed from the code.
418 \begin{itemize}
419 \item Gnome console
420 \item Support for SQLite 2
421 \end{itemize}
422
423 \section{Misc changes}
424 \label{sec:miscchanges}
425
426 \begin{itemize}
427 \item Updated Nagios check\_bacula
428 \item Updated man files
429 \item Added OSX package generation scripts
430 \item Added Spanish and Ukrainian Bacula translation
431 \item Enable/disable command shows only Jobs that can change
432 \item Added \texttt{show disabled} command to show disabled Jobs
433 \item Many ACL improvements
434 \item Added Level to FD status Job entry
435 \item Begin Ingres DB driver (not yet working)
436 \item Splited RedHat spec files into bacula, bat, mtx, and docs
437 \item Reorganized the manuals (fewer separate manuals)
438 \item Added lock/unlock order protection in lock manager
439 \item Allow 64 bit sizes for a number of variables
440 \item Fixed several deadlocks or potential race conditions from SD
441 \end{itemize}
442
443 \chapter{New Features in Released Version 3.0.2}
444
445 This chapter presents the new features added to the
446 Released Bacula Version 3.0.2.
447
448 \section{Full Restore from a Given JobId}
449 \index[general]{Restore menu}
450
451 This feature allows selecting a single JobId and having Bacula
452 automatically select all the other jobs that comprise a full backup up to
453 and including the selected date (through JobId).
454
455 Assume we start with the following jobs:
456 \begin{verbatim}
457 +-------+--------------+---------------------+-------+----------+------------+
458 | jobid | client       | starttime           | level | jobfiles | jobbytes   |
459 +-------+--------------+---------------------+-------+----------+------------
460 | 6     | localhost-fd | 2009-07-15 11:45:49 | I     | 2        | 0          |
461 | 5     | localhost-fd | 2009-07-15 11:45:45 | I     | 15       | 44143      |
462 | 3     | localhost-fd | 2009-07-15 11:45:38 | I     | 1        | 10         |
463 | 1     | localhost-fd | 2009-07-15 11:45:30 | F     | 1527     | 44143073   |
464 +-------+--------------+---------------------+-------+----------+------------+
465 \end{verbatim}
466
467 Below is an example of this new feature (which is number 12 in the
468 menu).
469
470 \begin{verbatim}
471 * restore
472 To select the JobIds, you have the following choices:
473      1: List last 20 Jobs run
474      2: List Jobs where a given File is saved
475 ...
476     12: Select full restore to a specified Job date
477     13: Cancel
478
479 Select item:  (1-13): 12
480 Enter JobId to get the state to restore: 5
481 Selecting jobs to build the Full state at 2009-07-15 11:45:45
482 You have selected the following JobIds: 1,3,5
483
484 Building directory tree for JobId(s) 1,3,5 ...  +++++++++++++++++++
485 1,444 files inserted into the tree.
486 \end{verbatim}
487
488 This project was funded by Bacula Systems.
489
490 \section{Source Address}
491 \index[general]{Source Address}
492
493 A feature has been added which allows the administrator to specify the address
494 from which the Director and File daemons will establish connections.  This
495 may be used to simplify system configuration overhead when working in complex
496 networks utilizing multi-homing and policy-routing.
497
498 To accomplish this, two new configuration directives have been implemented:
499 \begin{verbatim}
500 FileDaemon {
501   FDSourceAddress=10.0.1.20    # Always initiate connections from this address
502 }
503
504 Director {
505   DirSourceAddress=10.0.1.10   # Always initiate connections from this address
506 }
507 \end{verbatim}
508
509 Simply adding specific host routes on the OS
510 would have an undesirable side-effect: any
511 application trying to contact the destination host would be forced to use the
512 more specific route possibly diverting management traffic onto a backup VLAN.
513 Instead of adding host routes for each client connected to a multi-homed backup
514 server (for example where there are management and backup VLANs), one can
515 use the new directives to specify a specific source address at the application
516 level.
517
518 Additionally, this allows the simplification and abstraction of firewall rules
519 when dealing with a Hot-Standby director or storage daemon configuration.  The
520 Hot-standby pair may share a CARP address, which connections must be sourced
521 from, while system services listen and act from the unique interface addresses.
522
523 This project was funded by Collaborative Fusion, Inc.
524
525 \section{Show volume availability when doing restore}
526
527 When doing a restore the selection dialog ends by displaying this
528 screen:
529
530 \begin{verbatim}
531   The job will require the following
532    Volume(s)                 Storage(s)                SD Device(s)
533    ===========================================================================
534    *000741L3                  LTO-4                     LTO3 
535    *000866L3                  LTO-4                     LTO3 
536    *000765L3                  LTO-4                     LTO3 
537    *000764L3                  LTO-4                     LTO3 
538    *000756L3                  LTO-4                     LTO3 
539    *001759L3                  LTO-4                     LTO3 
540    *001763L3                  LTO-4                     LTO3 
541     001762L3                  LTO-4                     LTO3 
542     001767L3                  LTO-4                     LTO3 
543
544 Volumes marked with ``*'' are online (in the autochanger).
545 \end{verbatim}
546
547 This should help speed up large restores by minimizing the time spent
548 waiting for the operator to discover that he must change tapes in the library.
549
550 This project was funded by Bacula Systems.
551
552 \section{Accurate estimate command}
553
554 The \texttt{estimate} command can now use the accurate code to detect changes
555 and give a better estimation.
556
557 You can set the accurate behavior on the command line by using
558 \texttt{accurate=yes\vb{}no} or use the Job setting as default value.
559
560 \begin{verbatim}
561 * estimate listing accurate=yes level=incremental job=BackupJob
562 \end{verbatim}
563
564 This project was funded by Bacula Systems.
565
566 \chapter{New Features in 3.0.0}
567 \label{NewFeaturesChapter}
568 \index[general]{New Features}
569
570 This chapter presents the new features added to the development 2.5.x
571 versions to be released as Bacula version 3.0.0 sometime in April 2009.
572
573 \section{Accurate Backup}
574 \index[general]{Accurate Backup}
575
576 As with most other backup programs, by default Bacula decides what files to
577 backup for Incremental and Differental backup by comparing the change
578 (st\_ctime) and modification (st\_mtime) times of the file to the time the last
579 backup completed.  If one of those two times is later than the last backup
580 time, then the file will be backed up.  This does not, however, permit tracking
581 what files have been deleted and will miss any file with an old time that may
582 have been restored to or moved onto the client filesystem.
583
584 \subsection{Accurate = \lt{}yes\vb{}no\gt{}}
585 If the {\bf Accurate = \lt{}yes\vb{}no\gt{}} directive is enabled (default no) in
586 the Job resource, the job will be run as an Accurate Job. For a {\bf Full}
587 backup, there is no difference, but for {\bf Differential} and {\bf
588   Incremental} backups, the Director will send a list of all previous files
589 backed up, and the File daemon will use that list to determine if any new files
590 have been added or or moved and if any files have been deleted. This allows
591 Bacula to make an accurate backup of your system to that point in time so that
592 if you do a restore, it will restore your system exactly.  
593
594 One note of caution
595 about using Accurate backup is that it requires more resources (CPU and memory)
596 on both the Director and the Client machines to create the list of previous
597 files backed up, to send that list to the File daemon, for the File daemon to
598 keep the list (possibly very big) in memory, and for the File daemon to do
599 comparisons between every file in the FileSet and the list.  In particular,
600 if your client has lots of files (more than a few million), you will need
601 lots of memory on the client machine.
602
603 Accurate must not be enabled when backing up with a plugin that is not
604 specially designed to work with Accurate. If you enable it, your restores
605 will probably not work correctly.
606
607 This project was funded by Bacula Systems.
608                                        
609
610
611 \section{Copy Jobs}
612 \index[general]{Copy Jobs}
613
614 A new {\bf Copy} job type 'C' has been implemented. It is similar to the
615 existing Migration feature with the exception that the Job that is copied is
616 left unchanged.  This essentially creates two identical copies of the same
617 backup. However, the copy is treated as a copy rather than a backup job, and
618 hence is not directly available for restore.  The {\bf restore} command lists
619 copy jobs and allows selection of copies by using \texttt{jobid=}
620 option. If the keyword {\bf copies} is present on the command line, Bacula will
621 display the list of all copies for selected jobs.
622
623 \begin{verbatim}
624 * restore copies
625 [...]
626 These JobIds have copies as follows:
627 +-------+------------------------------------+-----------+------------------+
628 | JobId | Job                                | CopyJobId | MediaType        |
629 +-------+------------------------------------+-----------+------------------+
630 | 2     | CopyJobSave.2009-02-17_16.31.00.11 | 7         | DiskChangerMedia |
631 +-------+------------------------------------+-----------+------------------+
632 +-------+-------+----------+----------+---------------------+------------------+
633 | JobId | Level | JobFiles | JobBytes | StartTime           | VolumeName       |
634 +-------+-------+----------+----------+---------------------+------------------+
635 | 19    | F     | 6274     | 76565018 | 2009-02-17 16:30:45 | ChangerVolume002 |
636 | 2     | I     | 1        | 5        | 2009-02-17 16:30:51 | FileVolume001    |
637 +-------+-------+----------+----------+---------------------+------------------+
638 You have selected the following JobIds: 19,2
639
640 Building directory tree for JobId(s) 19,2 ...  ++++++++++++++++++++++++++++++++++++++++++++
641 5,611 files inserted into the tree.
642 ...
643 \end{verbatim}
644
645
646 The Copy Job runs without using the File daemon by copying the data from the
647 old backup Volume to a different Volume in a different Pool. See the Migration
648 documentation for additional details. For copy Jobs there is a new selection
649 directive named {\bf PoolUncopiedJobs} which selects all Jobs that were
650 not already copied to another Pool. 
651
652 As with Migration, the Client, Volume, Job, or SQL query, are
653 other possible ways of selecting the Jobs to be copied. Selection
654 types like SmallestVolume, OldestVolume, PoolOccupancy and PoolTime also
655 work, but are probably more suited for Migration Jobs. 
656
657 If Bacula finds a Copy of a job record that is purged (deleted) from the catalog,
658 it will promote the Copy to a \textsl{real} backup job and will make it available for
659 automatic restore. If more than one Copy is available, it will promote the copy
660 with the smallest JobId.
661
662 A nice solution which can be built with the new Copy feature is often
663 called disk-to-disk-to-tape backup (DTDTT). A sample config could
664 look something like the one below:
665
666 \begin{verbatim}
667 Pool {
668   Name = FullBackupsVirtualPool
669   Pool Type = Backup
670   Purge Oldest Volume = Yes
671   Storage = vtl
672   NextPool = FullBackupsTapePool
673 }
674
675 Pool {
676   Name = FullBackupsTapePool
677   Pool Type = Backup
678   Recycle = Yes
679   AutoPrune = Yes
680   Volume Retention = 365 days
681   Storage = superloader
682 }
683
684 #
685 # Fake fileset for copy jobs
686 #
687 Fileset {
688   Name = None
689   Include {
690     Options {
691       signature = MD5
692     }
693   }
694 }
695
696 #
697 # Fake client for copy jobs
698 #
699 Client {
700   Name = None
701   Address = localhost
702   Password = "NoNe"
703   Catalog = MyCatalog
704 }
705
706 #
707 # Default template for a CopyDiskToTape Job
708 #
709 JobDefs {
710   Name = CopyDiskToTape
711   Type = Copy
712   Messages = StandardCopy
713   Client = None
714   FileSet = None
715   Selection Type = PoolUncopiedJobs
716   Maximum Concurrent Jobs = 10
717   SpoolData = No
718   Allow Duplicate Jobs = Yes
719   Allow Higher Duplicates = No
720   Cancel Queued Duplicates = No
721   Cancel Running Duplicates = No
722   Priority = 13
723 }
724
725 Schedule {
726    Name = DaySchedule7:00
727    Run = Level=Full daily at 7:00
728 }
729
730 Job {
731   Name = CopyDiskToTapeFullBackups
732   Enabled = Yes
733   Schedule = DaySchedule7:00
734   Pool = FullBackupsVirtualPool
735   JobDefs = CopyDiskToTape
736 }
737 \end{verbatim}
738
739 The example above had 2 pool which are copied using the PoolUncopiedJobs
740 selection criteria. Normal Full backups go to the Virtual pool and are copied
741 to the Tape pool the next morning.
742
743 The command \texttt{list copies [jobid=x,y,z]} lists copies for a given
744 \textbf{jobid}.
745
746 \begin{verbatim}
747 *list copies
748 +-------+------------------------------------+-----------+------------------+
749 | JobId | Job                                | CopyJobId | MediaType        |
750 +-------+------------------------------------+-----------+------------------+
751 |     9 | CopyJobSave.2008-12-20_22.26.49.05 |        11 | DiskChangerMedia |
752 +-------+------------------------------------+-----------+------------------+
753 \end{verbatim}
754
755 \section{ACL Updates}
756 \index[general]{ACL Updates}
757 The whole ACL code had been overhauled and in this version each platforms has
758 different streams for each type of acl available on such an platform. As ACLs
759 between platforms tend to be not that portable (most implement POSIX acls but
760 some use an other draft or a completely different format) we currently only
761 allow certain platform specific ACL streams to be decoded and restored on the
762 same platform that they were created on.  The old code allowed to restore ACL
763 cross platform but the comments already mention that not being to wise. For
764 backward compatability the new code will accept the two old ACL streams and
765 handle those with the platform specific handler. But for all new backups it
766 will save the ACLs using the new streams.
767
768 Currently the following platforms support ACLs:
769
770 \begin{itemize}
771  \item {\bf AIX}
772  \item {\bf Darwin/OSX}
773  \item {\bf FreeBSD}
774  \item {\bf HPUX}
775  \item {\bf IRIX}
776  \item {\bf Linux}
777  \item {\bf Tru64}
778  \item {\bf Solaris}
779 \end{itemize}
780
781 Currently we support the following ACL types (these ACL streams use a reserved
782 part of the stream numbers):
783
784 \begin{itemize}
785 \item {\bf STREAM\_ACL\_AIX\_TEXT} 1000 AIX specific string representation from
786   acl\_get
787  \item {\bf STREAM\_ACL\_DARWIN\_ACCESS\_ACL} 1001 Darwin (OSX) specific acl\_t
788    string representation from acl\_to\_text (POSIX acl)
789   \item {\bf STREAM\_ACL\_FREEBSD\_DEFAULT\_ACL} 1002 FreeBSD specific acl\_t
790     string representation from acl\_to\_text (POSIX acl) for default acls.
791   \item {\bf STREAM\_ACL\_FREEBSD\_ACCESS\_ACL} 1003 FreeBSD specific acl\_t
792     string representation from acl\_to\_text (POSIX acl) for access acls.
793   \item {\bf STREAM\_ACL\_HPUX\_ACL\_ENTRY} 1004 HPUX specific acl\_entry
794     string representation from acltostr (POSIX acl)
795   \item {\bf STREAM\_ACL\_IRIX\_DEFAULT\_ACL} 1005 IRIX specific acl\_t string
796     representation from acl\_to\_text (POSIX acl) for default acls.
797   \item {\bf STREAM\_ACL\_IRIX\_ACCESS\_ACL} 1006 IRIX specific acl\_t string
798     representation from acl\_to\_text (POSIX acl) for access acls.
799   \item {\bf STREAM\_ACL\_LINUX\_DEFAULT\_ACL} 1007 Linux specific acl\_t
800     string representation from acl\_to\_text (POSIX acl) for default acls.
801   \item {\bf STREAM\_ACL\_LINUX\_ACCESS\_ACL} 1008 Linux specific acl\_t string
802     representation from acl\_to\_text (POSIX acl) for access acls.
803   \item {\bf STREAM\_ACL\_TRU64\_DEFAULT\_ACL} 1009 Tru64 specific acl\_t
804     string representation from acl\_to\_text (POSIX acl) for default acls.
805   \item {\bf STREAM\_ACL\_TRU64\_DEFAULT\_DIR\_ACL} 1010 Tru64 specific acl\_t
806     string representation from acl\_to\_text (POSIX acl) for default acls.
807   \item {\bf STREAM\_ACL\_TRU64\_ACCESS\_ACL} 1011 Tru64 specific acl\_t string
808     representation from acl\_to\_text (POSIX acl) for access acls.
809   \item {\bf STREAM\_ACL\_SOLARIS\_ACLENT} 1012 Solaris specific aclent\_t
810     string representation from acltotext or acl\_totext (POSIX acl)
811   \item {\bf STREAM\_ACL\_SOLARIS\_ACE} 1013 Solaris specific ace\_t string
812     representation from from acl\_totext (NFSv4 or ZFS acl)
813 \end{itemize}
814
815 In future versions we might support conversion functions from one type of acl
816 into an other for types that are either the same or easily convertable. For now
817 the streams are seperate and restoring them on a platform that doesn't
818 recognize them will give you a warning.
819
820 \section{Extended Attributes}
821 \index[general]{Extended Attributes}
822 Something that was on the project list for some time is now implemented for
823 platforms that support a similar kind of interface. Its the support for backup
824 and restore of so called extended attributes. As extended attributes are so
825 platform specific these attributes are saved in seperate streams for each
826 platform.  Restores of the extended attributes can only be performed on the
827 same platform the backup was done.  There is support for all types of extended
828 attributes, but restoring from one type of filesystem onto an other type of
829 filesystem on the same platform may lead to supprises.  As extended attributes
830 can contain any type of data they are stored as a series of so called
831 value-pairs.  This data must be seen as mostly binary and is stored as such.
832 As security labels from selinux are also extended attributes this option also
833 stores those labels and no specific code is enabled for handling selinux
834 security labels.
835
836 Currently the following platforms support extended attributes:
837 \begin{itemize}
838  \item {\bf Darwin/OSX}
839  \item {\bf FreeBSD}
840  \item {\bf Linux}
841  \item {\bf NetBSD}
842 \end{itemize}
843
844 On linux acls are also extended attributes, as such when you enable ACLs on a
845 Linux platform it will NOT save the same data twice e.g. it will save the ACLs
846 and not the same exteneded attribute.
847
848 To enable the backup of extended attributes please add the following to your
849 fileset definition.
850 \begin{verbatim}
851   FileSet {
852     Name = "MyFileSet"
853     Include {
854       Options {
855         signature = MD5
856         xattrsupport = yes
857       }
858       File = ...
859     }
860   }
861 \end{verbatim}
862
863 \section{Shared objects}
864 \index[general]{Shared objects}
865 A default build of Bacula will now create the libraries as shared objects
866 (.so) rather than static libraries as was previously the case.  
867 The shared libraries are built using {\bf libtool} so it should be quite
868 portable.
869
870 An important advantage of using shared objects is that on a machine with the
871 Directory, File daemon, the Storage daemon, and a console, you will have only
872 one copy of the code in memory rather than four copies.  Also the total size of
873 the binary release is smaller since the library code appears only once rather
874 than once for every program that uses it; this results in significant reduction
875 in the size of the binaries particularly for the utility tools.
876  
877 In order for the system loader to find the shared objects when loading the
878 Bacula binaries, the Bacula shared objects must either be in a shared object
879 directory known to the loader (typically /usr/lib) or they must be in the
880 directory that may be specified on the {\bf ./configure} line using the {\bf
881   {-}{-}libdir} option as:
882
883 \begin{verbatim}
884   ./configure --libdir=/full-path/dir
885 \end{verbatim}
886
887 the default is /usr/lib. If {-}{-}libdir is specified, there should be
888 no need to modify your loader configuration provided that
889 the shared objects are installed in that directory (Bacula
890 does this with the make install command). The shared objects
891 that Bacula references are:
892
893 \begin{verbatim}
894 libbaccfg.so
895 libbacfind.so
896 libbacpy.so
897 libbac.so
898 \end{verbatim}
899
900 These files are symbolically linked to the real shared object file,
901 which has a version number to permit running multiple versions of
902 the libraries if desired (not normally the case).
903
904 If you have problems with libtool or you wish to use the old
905 way of building static libraries, or you want to build a static
906 version of Bacula you may disable
907 libtool on the configure command line with:
908
909 \begin{verbatim}
910   ./configure --disable-libtool
911 \end{verbatim}
912
913
914 \section{Building Static versions of Bacula}
915 \index[general]{Static linking}
916 In order to build static versions of Bacula, in addition
917 to configuration options that were needed you now must
918 also add --disable-libtool.  Example
919
920 \begin{verbatim}
921   ./configure --enable-static-client-only --disable-libtool
922 \end{verbatim}
923
924
925 \section{Virtual Backup (Vbackup)}
926 \index[general]{Virtual Backup}
927 \index[general]{Vbackup}
928
929 Bacula's virtual backup feature is often called Synthetic Backup or
930 Consolidation in other backup products.  It permits you to consolidate the
931 previous Full backup plus the most recent Differential backup and any
932 subsequent Incremental backups into a new Full backup.  This new Full
933 backup will then be considered as the most recent Full for any future
934 Incremental or Differential backups.  The VirtualFull backup is
935 accomplished without contacting the client by reading the previous backup
936 data and writing it to a volume in a different pool.
937
938 In some respects the Vbackup feature works similar to a Migration job, in
939 that Bacula normally reads the data from the pool specified in the 
940 Job resource, and writes it to the {\bf Next Pool} specified in the 
941 Job resource. Note, this means that usually the output from the Virtual
942 Backup is written into a different pool from where your prior backups
943 are saved. Doing it this way guarantees that you will not get a deadlock
944 situation attempting to read and write to the same volume in the Storage
945 daemon. If you then want to do subsequent backups, you may need to
946 move the Virtual Full Volume back to your normal backup pool.
947 Alternatively, you can set your {\bf Next Pool} to point to the current
948 pool.  This will cause Bacula to read and write to Volumes in the
949 current pool. In general, this will work, because Bacula will
950 not allow reading and writing on the same Volume. In any case, once
951 a VirtualFull has been created, and a restore is done involving the
952 most current Full, it will read the Volume or Volumes by the VirtualFull 
953 regardless of in which Pool the Volume is found.
954
955 The Vbackup is enabled on a Job by Job in the Job resource by specifying
956 a level of {\bf VirtualFull}.
957
958 A typical Job resource definition might look like the following:
959
960 \begin{verbatim}
961 Job {
962   Name = "MyBackup"
963   Type = Backup
964   Client=localhost-fd
965   FileSet = "Full Set"
966   Storage = File
967   Messages = Standard
968   Pool = Default
969   SpoolData = yes
970 }
971
972 # Default pool definition
973 Pool {
974   Name = Default
975   Pool Type = Backup
976   Recycle = yes            # Automatically recycle Volumes
977   AutoPrune = yes          # Prune expired volumes
978   Volume Retention = 365d  # one year
979   NextPool = Full
980   Storage = File
981 }
982
983 Pool {
984   Name = Full
985   Pool Type = Backup
986   Recycle = yes            # Automatically recycle Volumes
987   AutoPrune = yes          # Prune expired volumes
988   Volume Retention = 365d  # one year
989   Storage = DiskChanger
990 }
991
992 # Definition of file storage device
993 Storage {
994   Name = File
995   Address = localhost
996   Password = "xxx"
997   Device = FileStorage
998   Media Type = File
999   Maximum Concurrent Jobs = 5
1000 }
1001
1002 # Definition of DDS Virtual tape disk storage device
1003 Storage {
1004   Name = DiskChanger
1005   Address = localhost  # N.B. Use a fully qualified name here
1006   Password = "yyy"
1007   Device = DiskChanger
1008   Media Type = DiskChangerMedia
1009   Maximum Concurrent Jobs = 4
1010   Autochanger = yes
1011 }
1012 \end{verbatim}
1013
1014 Then in bconsole or via a Run schedule, you would run the job as:
1015
1016 \begin{verbatim}
1017 run job=MyBackup level=Full
1018 run job=MyBackup level=Incremental
1019 run job=MyBackup level=Differential
1020 run job=MyBackup level=Incremental
1021 run job=MyBackup level=Incremental
1022 \end{verbatim}
1023
1024 So providing there were changes between each of those jobs, you would end up
1025 with a Full backup, a Differential, which includes the first Incremental
1026 backup, then two Incremental backups.  All the above jobs would be written to
1027 the {\bf Default} pool.
1028
1029 To consolidate those backups into a new Full backup, you would run the
1030 following:
1031
1032 \begin{verbatim}
1033 run job=MyBackup level=VirtualFull
1034 \end{verbatim}
1035
1036 And it would produce a new Full backup without using the client, and the output
1037 would be written to the {\bf Full} Pool which uses the Diskchanger Storage.
1038
1039 If the Virtual Full is run, and there are no prior Jobs, the Virtual Full will
1040 fail with an error.
1041
1042 Note, the Start and End time of the Virtual Full backup is set to the
1043 values for the last job included in the Virtual Full (in the above example,
1044 it is an Increment). This is so that if another incremental is done, which
1045 will be based on the Virtual Full, it will backup all files from the
1046 last Job included in the Virtual Full rather than from the time the Virtual
1047 Full was actually run.
1048
1049
1050
1051 \section{Catalog Format}
1052 \index[general]{Catalog Format}
1053 Bacula 3.0 comes with some changes to the catalog format.  The upgrade
1054 operation will convert the FileId field of the File table from 32 bits (max 4
1055 billion table entries) to 64 bits (very large number of items).  The
1056 conversion process can take a bit of time and will likely DOUBLE THE SIZE of
1057 your catalog during the conversion.  Also you won't be able to run jobs during
1058 this conversion period.  For example, a 3 million file catalog will take 2
1059 minutes to upgrade on a normal machine.  Please don't forget to make a valid
1060 backup of your database before executing the upgrade script. See the 
1061 ReleaseNotes for additional details.
1062
1063 \section{64 bit Windows Client}
1064 \index[general]{Win64 Client}
1065 Unfortunately, Microsoft's implementation of Volume Shadown Copy (VSS) on
1066 their 64 bit OS versions is not compatible with a 32 bit Bacula Client.
1067 As a consequence, we are also releasing a 64 bit version of the Bacula 
1068 Windows Client (win64bacula-3.0.0.exe) that does work with VSS. 
1069 These binaries should only be installed on 64 bit Windows operating systems.
1070 What is important is not your hardware but whether or not you have
1071 a 64 bit version of the Windows OS.  
1072
1073 Compared to the Win32 Bacula Client, the 64 bit release contains a few differences:
1074 \begin{enumerate}
1075 \item Before installing the Win64 Bacula Client, you must totally
1076       deinstall any prior 2.4.x Client installation using the 
1077       Bacula deinstallation (see the menu item). You may want
1078       to save your .conf files first.
1079 \item Only the Client (File daemon) is ported to Win64, the Director
1080       and the Storage daemon are not in the 64 bit Windows installer.
1081 \item bwx-console is not yet ported.
1082 \item bconsole is ported but it has not been tested.
1083 \item The documentation is not included in the installer.
1084 \item Due to Vista security restrictions imposed on a default installation
1085       of Vista, before upgrading the Client, you must manually stop
1086       any prior version of Bacula from running, otherwise the install
1087       will fail.
1088 \item Due to Vista security restrictions imposed on a default installation
1089       of Vista, attempting to edit the conf files via the menu items
1090       will fail. You must directly edit the files with appropriate 
1091       permissions.  Generally double clicking on the appropriate .conf
1092       file will work providing you have sufficient permissions.
1093 \item All Bacula files are now installed in 
1094       {\bf C:/Program Files/Bacula} except the main menu items,
1095       which are installed as before. This vastly simplifies the installation.
1096 \item If you are running on a foreign language version of Windows, most
1097       likely {\bf C:/Program Files} does not exist, so you should use the
1098       Custom installation and enter an appropriate location to install
1099       the files.
1100 \item The 3.0.0 Win32 Client continues to install files in the locations used
1101       by prior versions. For the next version we will convert it to use
1102       the same installation conventions as the Win64 version.
1103 \end{enumerate}
1104
1105 This project was funded by Bacula Systems.
1106
1107
1108 \section{Duplicate Job Control}
1109 \index[general]{Duplicate Jobs}
1110 The new version of Bacula provides four new directives that
1111 give additional control over what Bacula does if duplicate jobs 
1112 are started.  A duplicate job in the sense we use it here means
1113 a second or subsequent job with the same name starts.  This
1114 happens most frequently when the first job runs longer than expected because no 
1115 tapes are available.
1116
1117 The four directives each take as an argument a {\bf yes} or {\bf no} value and
1118 are specified in the Job resource.
1119
1120 They are:
1121
1122 \subsection{Allow Duplicate Jobs = \lt{}yes\vb{}no\gt{}}
1123 \index[general]{Allow Duplicate Jobs}
1124   If this directive is enabled duplicate jobs will be run.  If
1125   the directive is set to {\bf no} (default) then only one job of a given name
1126   may run at one time, and the action that Bacula takes to ensure only
1127   one job runs is determined by the other directives (see below).
1128  
1129   If {\bf Allow Duplicate Jobs} is set to {\bf no} and two jobs
1130   are present and none of the three directives given below permit
1131   cancelling a job, then the current job (the second one started)
1132   will be cancelled.
1133
1134
1135 \subsection{Allow Higher Duplicates = \lt{}yes\vb{}no\gt{}}
1136 \index[general]{Allow Higher Duplicates}
1137   If this directive is set to {\bf yes} (default) the job with a higher
1138   priority (lower priority number) will be permitted to run, and
1139   the current job will be cancelled.  If the
1140   priorities of the two jobs are the same, the outcome is determined by
1141   other directives (see below).
1142
1143 \subsection{Cancel Queued Duplicates = \lt{}yes\vb{}no\gt{}}
1144 \index[general]{Cancel Queued Duplicates}
1145   If {\bf Allow Duplicate Jobs} is set to {\bf no} and
1146   if this directive is set to {\bf yes} any job that is
1147   already queued to run but not yet running will be canceled.
1148   The default is {\bf no}. 
1149
1150 \subsection{Cancel Running Duplicates = \lt{}yes\vb{}no\gt{}}
1151 \index[general]{Cancel Running Duplicates}
1152   If {\bf Allow Duplicate Jobs} is set to {\bf no} and
1153   if this directive is set to {\bf yes} any job that is already running
1154   will be canceled.  The default is {\bf no}.
1155
1156
1157 \section{TLS Authentication}
1158 \index[general]{TLS Authentication}
1159 In Bacula version 2.5.x and later, in addition to the normal Bacula
1160 CRAM-MD5 authentication that is used to authenticate each Bacula
1161 connection, you can specify that you want TLS Authentication as well,
1162 which will provide more secure authentication.
1163
1164 This new feature uses Bacula's existing TLS code (normally used for
1165 communications encryption) to do authentication.  To use it, you must
1166 specify all the TLS directives normally used to enable communications
1167 encryption (TLS Enable, TLS Verify Peer, TLS Certificate, ...) and
1168 a new directive:
1169
1170 \subsection{TLS Authenticate = yes}
1171 \begin{verbatim}
1172 TLS Authenticate = yes
1173 \end{verbatim}
1174
1175 in the main daemon configuration resource (Director for the Director,
1176 Client for the File daemon, and Storage for the Storage daemon).
1177
1178 When {\bf TLS Authenticate} is enabled, after doing the CRAM-MD5
1179 authentication, Bacula will also do TLS authentication, then TLS 
1180 encryption will be turned off, and the rest of the communication between
1181 the two Bacula daemons will be done without encryption.
1182
1183 If you want to encrypt communications data, use the normal TLS directives
1184 but do not turn on {\bf TLS Authenticate}.
1185
1186 \section{bextract non-portable Win32 data}
1187 \index[general]{bextract handles Win32 non-portable data}
1188 {\bf bextract} has been enhanced to be able to restore
1189 non-portable Win32 data to any OS.  Previous versions were 
1190 unable to restore non-portable Win32 data to machines that
1191 did not have the Win32 BackupRead and BackupWrite API calls.
1192
1193 \section{State File updated at Job Termination}
1194 \index[general]{State File}
1195 In previous versions of Bacula, the state file, which provides a
1196 summary of previous jobs run in the {\bf status} command output was
1197 updated only when Bacula terminated, thus if the daemon crashed, the
1198 state file might not contain all the run data.  This version of
1199 the Bacula daemons updates the state file on each job termination.
1200
1201 \section{MaxFullInterval = \lt{}time-interval\gt{}}
1202 \index[general]{MaxFullInterval}
1203 The new Job resource directive {\bf Max Full Interval = \lt{}time-interval\gt{}}
1204 can be used to specify the maximum time interval between {\bf Full} backup
1205 jobs. When a job starts, if the time since the last Full backup is
1206 greater than the specified interval, and the job would normally be an
1207 {\bf Incremental} or {\bf Differential}, it will be automatically
1208 upgraded to a {\bf Full} backup.
1209
1210 \section{MaxDiffInterval = \lt{}time-interval\gt{}}
1211 \index[general]{MaxDiffInterval}
1212 The new Job resource directive {\bf Max Diff Interval = \lt{}time-interval\gt{}}
1213 can be used to specify the maximum time interval between {\bf Differential} backup
1214 jobs. When a job starts, if the time since the last Differential backup is
1215 greater than the specified interval, and the job would normally be an
1216 {\bf Incremental}, it will be automatically
1217 upgraded to a {\bf Differential} backup.
1218
1219 \section{Honor No Dump Flag = \lt{}yes\vb{}no\gt{}}
1220 \index[general]{MaxDiffInterval}
1221 On FreeBSD systems, each file has a {\bf no dump flag} that can be set
1222 by the user, and when it is set it is an indication to backup programs
1223 to not backup that particular file.  This version of Bacula contains a
1224 new Options directive within a FileSet resource, which instructs Bacula to
1225 obey this flag.  The new directive is:
1226
1227 \begin{verbatim}
1228   Honor No Dump Flag = yes\vb{}no
1229 \end{verbatim}
1230
1231 The default value is {\bf no}.
1232
1233
1234 \section{Exclude Dir Containing = \lt{}filename-string\gt{}}
1235 \index[general]{IgnoreDir}
1236 The {\bf ExcludeDirContaining = \lt{}filename\gt{}} is a new directive that
1237 can be added to the Include section of the FileSet resource.  If the specified
1238 filename ({\bf filename-string}) is found on the Client in any directory to be
1239 backed up, the whole directory will be ignored (not backed up).  For example:
1240
1241 \begin{verbatim}
1242   # List of files to be backed up
1243   FileSet {
1244     Name = "MyFileSet"
1245     Include {
1246       Options {
1247         signature = MD5
1248       }
1249       File = /home
1250       Exclude Dir Containing = .excludeme
1251     }
1252   }
1253 \end{verbatim}
1254
1255 But in /home, there may be hundreds of directories of users and some
1256 people want to indicate that they don't want to have certain
1257 directories backed up. For example, with the above FileSet, if
1258 the user or sysadmin creates a file named {\bf .excludeme} in 
1259 specific directories, such as
1260
1261 \begin{verbatim}
1262    /home/user/www/cache/.excludeme
1263    /home/user/temp/.excludeme
1264 \end{verbatim}
1265
1266 then Bacula will not backup the two directories named:
1267
1268 \begin{verbatim}
1269    /home/user/www/cache
1270    /home/user/temp
1271 \end{verbatim}
1272
1273 NOTE: subdirectories will not be backed up.  That is, the directive
1274 applies to the two directories in question and any children (be they
1275 files, directories, etc).
1276
1277
1278 \section{Bacula Plugins}
1279 \index[general]{Plugin}
1280 Support for shared object plugins has been implemented in the Linux, Unix
1281 and Win32 File daemons. The API will be documented separately in
1282 the Developer's Guide or in a new document.  For the moment, there is
1283 a single plugin named {\bf bpipe} that allows an external program to
1284 get control to backup and restore a file.
1285
1286 Plugins are also planned (partially implemented) in the Director and the
1287 Storage daemon.  
1288
1289 \subsection{Plugin Directory}
1290 \index[general]{Plugin Directory}
1291 Each daemon (DIR, FD, SD) has a new {\bf Plugin Directory} directive that may
1292 be added to the daemon definition resource. The directory takes a quoted 
1293 string argument, which is the name of the directory in which the daemon can
1294 find the Bacula plugins. If this directive is not specified, Bacula will not
1295 load any plugins. Since each plugin has a distinctive name, all the daemons
1296 can share the same plugin directory. 
1297
1298 \subsection{Plugin Options}
1299 \index[general]{Plugin Options}
1300 The {\bf Plugin Options} directive takes a quoted string
1301 arguement (after the equal sign) and may be specified in the
1302 Job resource.  The options specified will be passed to all plugins
1303 when they are run.  This each plugin must know what it is looking
1304 for. The value defined in the Job resource can be modified
1305 by the user when he runs a Job via the {\bf bconsole} command line 
1306 prompts.
1307
1308 Note: this directive may be specified, and there is code to modify
1309 the string in the run command, but the plugin options are not yet passed to
1310 the plugin (i.e. not fully implemented).
1311
1312 \subsection{Plugin Options ACL}
1313 \index[general]{Plugin Options ACL}
1314 The {\bf Plugin Options ACL} directive may be specified in the
1315 Director's Console resource. It functions as all the other ACL commands
1316 do by permitting users running restricted consoles to specify a 
1317 {\bf Plugin Options} that overrides the one specified in the Job
1318 definition. Without this directive restricted consoles may not modify
1319 the Plugin Options.
1320
1321 \subsection{Plugin = \lt{}plugin-command-string\gt{}}
1322 \index[general]{Plugin}
1323 The {\bf Plugin} directive is specified in the Include section of
1324 a FileSet resource where you put your {\bf File = xxx} directives.
1325 For example:
1326
1327 \begin{verbatim}
1328   FileSet {
1329     Name = "MyFileSet"
1330     Include {
1331       Options {
1332         signature = MD5
1333       }
1334       File = /home
1335       Plugin = "bpipe:..."
1336     }
1337   }
1338 \end{verbatim}
1339
1340 In the above example, when the File daemon is processing the directives
1341 in the Include section, it will first backup all the files in {\bf /home}
1342 then it will load the plugin named {\bf bpipe} (actually bpipe-dir.so) from
1343 the Plugin Directory.  The syntax and semantics of the Plugin directive
1344 require the first part of the string up to the colon (:) to be the name
1345 of the plugin. Everything after the first colon is ignored by the File daemon but
1346 is passed to the plugin. Thus the plugin writer may define the meaning of the
1347 rest of the string as he wishes.
1348
1349 Please see the next section for information about the {\bf bpipe} Bacula
1350 plugin.
1351
1352 \section{The bpipe Plugin}
1353 \index[general]{The bpipe Plugin}
1354 The {\bf bpipe} plugin is provided in the directory src/plugins/fd/bpipe-fd.c of
1355 the Bacula source distribution. When the plugin is compiled and linking into
1356 the resulting dynamic shared object (DSO), it will have the name {\bf bpipe-fd.so}.
1357
1358 The purpose of the plugin is to provide an interface to any system program for
1359 backup and restore. As specified above the {\bf bpipe} plugin is specified in
1360 the Include section of your Job's FileSet resource.  The full syntax of the
1361 plugin directive as interpreted by the {\bf bpipe} plugin (each plugin is free
1362 to specify the sytax as it wishes) is:
1363
1364 \begin{verbatim}
1365   Plugin = "<field1>:<field2>:<field3>:<field4>"
1366 \end{verbatim}
1367
1368 where
1369 \begin{description}
1370 \item {\bf field1} is the name of the plugin with the trailing {\bf -fd.so}
1371 stripped off, so in this case, we would put {\bf bpipe} in this field.
1372
1373 \item {\bf field2} specifies the namespace, which for {\bf bpipe} is the
1374 pseudo path and filename under which the backup will be saved. This pseudo
1375 path and filename will be seen by the user in the restore file tree.
1376 For example, if the value is {\bf /MYSQL/regress.sql}, the data
1377 backed up by the plugin will be put under that "pseudo" path and filename.
1378 You must be careful to choose a naming convention that is unique to avoid
1379 a conflict with a path and filename that actually exists on your system.
1380
1381 \item {\bf field3} for the {\bf bpipe} plugin 
1382 specifies the "reader" program that is called by the plugin during
1383 backup to read the data. {\bf bpipe} will call this program by doing a
1384 {\bf popen} on it.
1385
1386 \item {\bf field4} for the {\bf bpipe} plugin
1387 specifies the "writer" program that is called by the plugin during
1388 restore to write the data back to the filesystem.  
1389 \end{description}
1390
1391 Putting it all together, the full plugin directive line might look
1392 like the following:
1393
1394 \begin{verbatim}
1395 Plugin = "bpipe:/MYSQL/regress.sql:mysqldump -f 
1396           --opt --databases bacula:mysql"
1397 \end{verbatim}
1398
1399 The directive has been split into two lines, but within the {\bf bacula-dir.conf} file
1400 would be written on a single line.
1401
1402 This causes the File daemon to call the {\bf bpipe} plugin, which will write
1403 its data into the "pseudo" file {\bf /MYSQL/regress.sql} by calling the 
1404 program {\bf mysqldump -f --opt --database bacula} to read the data during
1405 backup. The mysqldump command outputs all the data for the database named
1406 {\bf bacula}, which will be read by the plugin and stored in the backup.
1407 During restore, the data that was backed up will be sent to the program
1408 specified in the last field, which in this case is {\bf mysql}.  When
1409 {\bf mysql} is called, it will read the data sent to it by the plugn
1410 then write it back to the same database from which it came ({\bf bacula}
1411 in this case).
1412
1413 The {\bf bpipe} plugin is a generic pipe program, that simply transmits 
1414 the data from a specified program to Bacula for backup, and then from Bacula to 
1415 a specified program for restore.
1416
1417 By using different command lines to {\bf bpipe},
1418 you can backup any kind of data (ASCII or binary) depending
1419 on the program called.
1420
1421 \section{Microsoft Exchange Server 2003/2007 Plugin}
1422 \index[general]{Microsoft Exchange Server 2003/2007 Plugin}
1423 \subsection{Background}
1424 The Exchange plugin was made possible by a funded development project
1425 between Equiinet Ltd -- www.equiinet.com (many thanks) and Bacula Systems.
1426 The code for the plugin was written by James Harper, and the Bacula core
1427 code by Kern Sibbald.  All the code for this funded development has become
1428 part of the Bacula project.  Thanks to everyone who made it happen.
1429
1430 \subsection{Concepts}
1431 Although it is possible to backup Exchange using Bacula VSS the Exchange 
1432 plugin adds a good deal of functionality, because while Bacula VSS
1433 completes a full backup (snapshot) of Exchange, it does
1434 not support Incremental or Differential backups, restoring is more
1435 complicated, and a single database restore is not possible.
1436
1437 Microsoft Exchange organises its storage into Storage Groups with
1438 Databases inside them. A default installation of Exchange will have a
1439 single Storage Group called 'First Storage Group', with two Databases
1440 inside it, "Mailbox Store (SERVER NAME)" and 
1441 "Public Folder Store (SERVER NAME)", 
1442 which hold user email and public folders respectively.
1443
1444 In the default configuration, Exchange logs everything that happens to
1445 log files, such that if you have a backup, and all the log files since,
1446 you can restore to the present time. Each Storage Group has its own set
1447 of log files and operates independently of any other Storage Groups. At
1448 the Storage Group level, the logging can be turned off by enabling a
1449 function called "Enable circular logging". At this time the Exchange
1450 plugin will not function if this option is enabled.
1451
1452 The plugin allows backing up of entire storage groups, and the restoring
1453 of entire storage groups or individual databases. Backing up and
1454 restoring at the individual mailbox or email item is not supported but
1455 can be simulated by use of the "Recovery" Storage Group (see below).
1456
1457 \subsection{Installing}
1458 The Exchange plugin requires a DLL that is shipped with Microsoft
1459 Exchanger Server called {\bf esebcli2.dll}. Assuming Exchange is installed
1460 correctly the Exchange plugin should find this automatically and run
1461 without any additional installation.
1462
1463 If the DLL can not be found automatically it will need to be copied into
1464 the Bacula installation
1465 directory (eg C:\verb+\+Program Files\verb+\+Bacula\verb+\+bin). The Exchange API DLL is
1466 named esebcli2.dll and is found in C:\verb+\+Program Files\verb+\+Exchsrvr\verb+\+bin on a
1467 default Exchange installation.
1468
1469 \subsection{Backing Up}
1470 To back up an Exchange server the Fileset definition must contain at
1471 least {\bf Plugin = "exchange:/@EXCHANGE/Microsoft Information Store"} for
1472 the backup to work correctly. The 'exchange:' bit tells Bacula to look
1473 for the exchange plugin, the '@EXCHANGE' bit makes sure all the backed
1474 up files are prefixed with something that isn't going to share a name
1475 with something outside the plugin, and the 'Microsoft Information Store'
1476 bit is required also. It is also possible to add the name of a storage
1477 group to the "Plugin =" line, eg \\
1478 {\bf Plugin = "exchange:/@EXCHANGE/Microsoft Information Store/First Storage Group"} \\
1479 if you want only a single storage group backed up.
1480
1481 Additionally, you can suffix the 'Plugin =' directive with
1482 ":notrunconfull" which will tell the plugin not to truncate the Exchange
1483 database at the end of a full backup.
1484
1485 An Incremental or Differential backup will backup only the database logs
1486 for each Storage Group by inspecting the "modified date" on each
1487 physical log file. Because of the way the Exchange API works, the last
1488 logfile backed up on each backup will always be backed up by the next
1489 Incremental or Differential backup too. This adds 5MB to each
1490 Incremental or Differential backup size but otherwise does not cause any
1491 problems.
1492
1493 By default, a normal VSS fileset containing all the drive letters will
1494 also back up the Exchange databases using VSS. This will interfere with
1495 the plugin and Exchange's shared ideas of when the last full backup was
1496 done, and may also truncate log files incorrectly. It is important,
1497 therefore, that the Exchange database files be excluded from the backup,
1498 although the folders the files are in should be included, or they will
1499 have to be recreated manually if a baremetal restore is done.
1500
1501 \begin{verbatim}
1502 FileSet {
1503    Include {
1504       File = C:/Program Files/Exchsrvr/mdbdata
1505       Plugin = "exchange:..."
1506    }
1507    Exclude {
1508       File = C:/Program Files/Exchsrvr/mdbdata/E00.chk
1509       File = C:/Program Files/Exchsrvr/mdbdata/E00.log
1510       File = C:/Program Files/Exchsrvr/mdbdata/E000000F.log
1511       File = C:/Program Files/Exchsrvr/mdbdata/E0000010.log
1512       File = C:/Program Files/Exchsrvr/mdbdata/E0000011.log
1513       File = C:/Program Files/Exchsrvr/mdbdata/E00tmp.log
1514       File = C:/Program Files/Exchsrvr/mdbdata/priv1.edb
1515    }
1516 }
1517 \end{verbatim}
1518
1519 The advantage of excluding the above files is that you can significantly
1520 reduce the size of your backup since all the important Exchange files
1521 will be properly saved by the Plugin.
1522
1523
1524 \subsection{Restoring}
1525 The restore operation is much the same as a normal Bacula restore, with
1526 the following provisos:
1527
1528 \begin{itemize}
1529 \item  The {\bf Where} restore option must not be specified
1530 \item Each Database directory must be marked as a whole. You cannot just
1531      select (say) the .edb file and not the others.
1532 \item If a Storage Group is restored, the directory of the Storage Group
1533      must be marked too.
1534 \item  It is possible to restore only a subset of the available log files,
1535      but they {\bf must} be contiguous. Exchange will fail to restore correctly
1536      if a log file is missing from the sequence of log files
1537 \item Each database to be restored must be dismounted and marked as "Can be
1538     overwritten by restore"
1539 \item If an entire Storage Group is to be restored (eg all databases and
1540    logs in the Storage Group), then it is best to manually delete the
1541    database files from the server (eg C:\verb+\+Program Files\verb+\+Exchsrvr\verb+\+mdbdata\verb+\+*)
1542    as Exchange can get confused by stray log files lying around.
1543 \end{itemize}
1544
1545 \subsection{Restoring to the Recovery Storage Group}
1546 The concept of the Recovery Storage Group is well documented by
1547 Microsoft 
1548 \elink{http://support.microsoft.com/kb/824126}{http://support.microsoft.com/kb/824126}, 
1549 but to briefly summarize...
1550
1551 Microsoft Exchange allows the creation of an additional Storage Group
1552 called the Recovery Storage Group, which is used to restore an older
1553 copy of a database (e.g. before a mailbox was deleted) into without
1554 messing with the current live data. This is required as the Standard and
1555 Small Business Server versions of Exchange can not ordinarily have more
1556 than one Storage Group.
1557
1558 To create the Recovery Storage Group, drill down to the Server in Exchange
1559 System Manager, right click, and select
1560 {\bf "New -> Recovery Storage Group..."}.  Accept or change the file
1561 locations and click OK. On the Recovery Storage Group, right click and
1562 select {\bf "Add Database to Recover..."} and select the database you will
1563 be restoring.
1564
1565 Restore only the single database nominated as the database in the
1566 Recovery Storage Group. Exchange will redirect the restore to the
1567 Recovery Storage Group automatically.
1568 Then run the restore.
1569
1570 \subsection{Restoring on Microsoft Server 2007}
1571 Apparently the {\bf Exmerge} program no longer exists in Microsoft Server
1572 2007, and henc you use a new proceedure for recovering a single mail box.
1573 This procedure is ducomented by Microsoft at:
1574 \elink{http://technet.microsoft.com/en-us/library/aa997694.aspx}{http://technet.microsoft.com/en-us/library/aa997694.aspx},
1575 and involves using the {\bf Restore-Mailbox} and {\bf
1576 Get-MailboxStatistics} shell commands.
1577
1578 \subsection{Caveats}
1579 This plugin is still being developed, so you should consider it
1580 currently in BETA test, and thus use in a production environment
1581 should be done only after very careful testing.
1582
1583 When doing a full backup, the Exchange database logs are truncated by
1584 Exchange as soon as the plugin has completed the backup. If the data
1585 never makes it to the backup medium (eg because of spooling) then the
1586 logs will still be truncated, but they will also not have been backed
1587 up. A solution to this is being worked on. You will have to schedule a
1588 new Full backup to ensure that your next backups will be usable.
1589
1590 The "Enable Circular Logging" option cannot be enabled or the plugin
1591 will fail.
1592
1593 Exchange insists that a successful Full backup must have taken place if
1594 an Incremental or Differential backup is desired, and the plugin will
1595 fail if this is not the case. If a restore is done, Exchange will
1596 require that a Full backup be done before an Incremental or Differential
1597 backup is done.
1598
1599 The plugin will most likely not work well if another backup application
1600 (eg NTBACKUP) is backing up the Exchange database, especially if the
1601 other backup application is truncating the log files.
1602
1603 The Exchange plugin has not been tested with the {\bf Accurate} option, so
1604 we recommend either carefully testing or that you avoid this option for
1605 the current time.
1606
1607 The Exchange plugin is not called during processing the bconsole {\bf
1608 estimate} command, and so anything that would be backed up by the plugin
1609 will not be added to the estimate total that is displayed.
1610
1611
1612 \section{libdbi Framework}
1613 \index[general]{libdbi Framework}
1614 As a general guideline, Bacula has support for a few catalog database drivers
1615 (MySQL, PostgreSQL, SQLite)
1616 coded natively by the Bacula team.  With the libdbi implementation, which is a
1617 Bacula driver that uses libdbi to access the catalog, we have an open field to
1618 use many different kinds database engines following the needs of users.
1619
1620 The according to libdbi (http://libdbi.sourceforge.net/) project: libdbi
1621 implements a database-independent abstraction layer in C, similar to the
1622 DBI/DBD layer in Perl. Writing one generic set of code, programmers can
1623 leverage the power of multiple databases and multiple simultaneous database
1624 connections by using this framework.
1625
1626 Currently the libdbi driver in Bacula project only supports the same drivers
1627 natively coded in Bacula.  However the libdbi project has support for many
1628 others database engines. You can view the list at
1629 http://libdbi-drivers.sourceforge.net/. In the future all those drivers can be
1630 supported by Bacula, however, they must be tested properly by the Bacula team.
1631
1632 Some of benefits of using libdbi are:
1633 \begin{itemize}
1634 \item The possibility to use proprietary databases engines in which your
1635   proprietary licenses prevent the Bacula team from developing the driver.
1636  \item The possibility to use the drivers written for the libdbi project.
1637  \item The possibility to use other database engines without recompiling Bacula
1638    to use them.  Just change one line in bacula-dir.conf
1639  \item Abstract Database access, this is, unique point to code and profiling
1640    catalog database access.
1641  \end{itemize}
1642  
1643  The following drivers have been tested:
1644  \begin{itemize}
1645  \item PostgreSQL, with and without batch insert
1646  \item Mysql, with and without batch insert
1647  \item SQLite
1648  \item SQLite3
1649  \end{itemize}
1650
1651  In the future, we will test and approve to use others databases engines
1652  (proprietary or not) like DB2, Oracle, Microsoft SQL.
1653
1654  To compile Bacula to support libdbi we need to configure the code with the
1655  --with-dbi and --with-dbi-driver=[database] ./configure options, where
1656  [database] is the database engine to be used with Bacula (of course we can
1657  change the driver in file bacula-dir.conf, see below).  We must configure the
1658  access port of the database engine with the option --with-db-port, because the
1659  libdbi framework doesn't know the default access port of each database.
1660
1661 The next phase is checking (or configuring) the bacula-dir.conf, example:
1662 \begin{verbatim}
1663 Catalog {
1664   Name = MyCatalog
1665   dbdriver = dbi:mysql; dbaddress = 127.0.0.1; dbport = 3306
1666   dbname = regress; user = regress; password = ""
1667 }
1668 \end{verbatim}
1669
1670 The parameter {\bf dbdriver} indicates that we will use the driver dbi with a
1671 mysql database.  Currently the drivers supported by Bacula are: postgresql,
1672 mysql, sqlite, sqlite3; these are the names that may be added to string "dbi:".
1673
1674 The following limitations apply when Bacula is set to use the libdbi framework:
1675  - Not tested on the Win32 platform
1676  - A little performance is lost if comparing with native database driver. 
1677    The reason is bound with the database driver provided by libdbi and the 
1678    simple fact that one more layer of code was added.
1679
1680 It is important to remember, when compiling Bacula with libdbi, the
1681 following packages are needed:
1682  \begin{itemize}
1683   \item libdbi version 1.0.0, http://libdbi.sourceforge.net/
1684   \item libdbi-drivers 1.0.0, http://libdbi-drivers.sourceforge.net/
1685  \end{itemize}
1686  
1687  You can download them and compile them on your system or install the packages
1688  from your OS distribution.
1689
1690 \section{Console Command Additions and Enhancements}
1691 \index[general]{Console Additions}                                 
1692
1693 \subsection{Display Autochanger Content}
1694 \index[general]{StatusSlots}
1695
1696 The {\bf status slots storage=\lt{}storage-name\gt{}} command displays
1697 autochanger content.
1698
1699 \footnotesize
1700 \begin{verbatim}
1701  Slot |  Volume Name  |  Status  |  Media Type       |   Pool     |
1702 ------+---------------+----------+-------------------+------------|
1703     1 |         00001 |   Append |  DiskChangerMedia |    Default |
1704     2 |         00002 |   Append |  DiskChangerMedia |    Default |
1705     3*|         00003 |   Append |  DiskChangerMedia |    Scratch |
1706     4 |               |          |                   |            |
1707 \end{verbatim}
1708 \normalsize
1709
1710 If you an asterisk ({\bf *}) appears after the slot number, you must run an
1711 {\bf update slots} command to synchronize autochanger content with your
1712 catalog.
1713
1714 \subsection{list joblog job=xxx or jobid=nnn}
1715 \index[general]{list joblog}
1716 A new list command has been added that allows you to list the contents
1717 of the Job Log stored in the catalog for either a Job Name (fully qualified)
1718 or for a particular JobId.  The {\bf llist} command will include a line with
1719 the time and date of the entry.
1720
1721 Note for the catalog to have Job Log entries, you must have a directive 
1722 such as:
1723
1724 \begin{verbatim}
1725   catalog = all
1726 \end{verbatim}
1727
1728 In your Director's {\bf Messages} resource.
1729
1730 \subsection{Use separator for multiple commands}
1731 \index[general]{Command Separator}
1732   When using bconsole with readline, you can set the command separator with 
1733   \textbf{@separator} command to one
1734   of those characters to write commands who require multiple input in one line.
1735 \begin{verbatim}
1736   !$%&'()*+,-/:;<>?[]^`{|}~
1737 \end{verbatim}
1738
1739 \subsection{Deleting Volumes}
1740 The delete volume bconsole command has been modified to
1741 require an asterisk (*) in front of a MediaId otherwise the
1742 value you enter is a taken to be a Volume name. This is so that
1743 users may delete numeric Volume names. The previous Bacula versions
1744 assumed that all input that started with a number was a MediaId.
1745
1746 This new behavior is indicated in the prompt if you read it
1747 carefully.
1748
1749 \section{Bare Metal Recovery}
1750 The old bare metal recovery project is essentially dead. One
1751 of the main features of it was that it would build a recovery
1752 CD based on the kernel on your system. The problem was that
1753 every distribution has a different boot procedure and different 
1754 scripts, and worse yet, the boot procedures and scripts change
1755 from one distribution to another.  This meant that maintaining
1756 (keeping up with the changes) the rescue CD was too much work.
1757
1758 To replace it, a new bare metal recovery USB boot stick has been developed
1759 by Bacula Systems.  This technology involves remastering a Ubuntu LiveCD to
1760 boot from a USB key.  
1761
1762 Advantages: 
1763 \begin{enumerate} 
1764 \item Recovery can be done from within graphical environment.  
1765 \item Recovery can be done in a shell.  
1766 \item Ubuntu boots on a large number of Linux systems.  
1767 \item The process of updating the system and adding new
1768    packages is not too difficult. 
1769 \item The USB key can easily be upgraded to newer Ubuntu versions.
1770 \item The USB key has writable partitions for modifications to
1771    the OS and for modification to your home directory.
1772 \item You can add new files/directories to the USB key very easily.
1773 \item You can save the environment from multiple machines on
1774    one USB key.
1775 \item Bacula Systems is funding its ongoing development.
1776 \end{enumerate}
1777
1778 The disadvantages are:
1779 \begin{enumerate}
1780 \item The USB key is usable but currently under development.
1781 \item Not everyone may be familiar with Ubuntu (no worse
1782   than using Knoppix)
1783 \item Some older OSes cannot be booted from USB. This can
1784    be resolved by first booting a Ubuntu LiveCD then plugging
1785    in the USB key.
1786 \item Currently the documentation is sketchy and not yet added
1787    to the main manual. See below ...
1788 \end{enumerate}
1789
1790 The documentation and the code can be found in the {\bf rescue} package
1791 in the directory {\bf linux/usb}.
1792
1793 \section{Miscellaneous}
1794 \index[general]{Misc New Features}
1795
1796 \subsection{Allow Mixed Priority = \lt{}yes\vb{}no\gt{}}
1797 \index[general]{Allow Mixed Priority}
1798    This directive is only implemented in version 2.5 and later.  When
1799    set to {\bf yes} (default {\bf no}), this job may run even if lower
1800    priority jobs are already running.  This means a high priority job
1801    will not have to wait for other jobs to finish before starting.
1802    The scheduler will only mix priorities when all running jobs have
1803    this set to true.
1804
1805    Note that only higher priority jobs will start early.  Suppose the
1806    director will allow two concurrent jobs, and that two jobs with
1807    priority 10 are running, with two more in the queue.  If a job with
1808    priority 5 is added to the queue, it will be run as soon as one of
1809    the running jobs finishes.  However, new priority 10 jobs will not
1810    be run until the priority 5 job has finished.
1811
1812 \subsection{Bootstrap File Directive -- FileRegex}
1813 \index[general]{Bootstrap File Directive}
1814   {\bf FileRegex} is a new command that can be added to the bootstrap
1815   (.bsr) file.  The value is a regular expression.  When specified, only
1816   matching filenames will be restored.
1817
1818   During a restore, if all File records are pruned from the catalog
1819   for a Job, normally Bacula can restore only all files saved. That
1820   is there is no way using the catalog to select individual files.
1821   With this new feature, Bacula will ask if you want to specify a Regex
1822   expression for extracting only a part of the full backup.
1823
1824 \begin{verbatim}
1825   Building directory tree for JobId(s) 1,3 ...
1826   There were no files inserted into the tree, so file selection
1827   is not possible.Most likely your retention policy pruned the files
1828   
1829   Do you want to restore all the files? (yes\vb{}no): no
1830   
1831   Regexp matching files to restore? (empty to abort): /tmp/regress/(bin|tests)/
1832   Bootstrap records written to /tmp/regress/working/zog4-dir.restore.1.bsr
1833 \end{verbatim}
1834
1835 \subsection{Bootstrap File Optimization Changes}
1836 In order to permit proper seeking on disk files, we have extended the bootstrap
1837 file format to include a {\bf VolStartAddr} and {\bf VolEndAddr} records. Each
1838 takes a 64 bit unsigned integer range (i.e. nnn-mmm) which defines the start
1839 address range and end address range respectively.  These two directives replace
1840 the {\bf VolStartFile}, {\bf VolEndFile}, {\bf VolStartBlock} and {\bf
1841   VolEndBlock} directives.  Bootstrap files containing the old directives will
1842 still work, but will not properly take advantage of proper disk seeking, and
1843 may read completely to the end of a disk volume during a restore.  With the new
1844 format (automatically generated by the new Director), restores will seek
1845 properly and stop reading the volume when all the files have been restored.
1846
1847 \subsection{Solaris ZFS/NFSv4 ACLs}
1848 This is an upgrade of the previous Solaris ACL backup code
1849 to the new library format, which will backup both the old
1850 POSIX(UFS) ACLs as well as the ZFS ACLs.
1851
1852 The new code can also restore POSIX(UFS) ACLs to a ZFS filesystem
1853 (it will translate the POSIX(UFS)) ACL into a ZFS/NFSv4 one) it can also
1854 be used to transfer from UFS to ZFS filesystems.
1855
1856
1857 \subsection{Virtual Tape Emulation}
1858 \index[general]{Virtual Tape Emulation}
1859 We now have a Virtual Tape emulator that allows us to run though 99.9\% of
1860 the tape code but actually reading and writing to a disk file. Used with the
1861 \textbf{disk-changer} script, you can now emulate an autochanger with 10 drives
1862 and 700 slots. This feature is most useful in testing.  It is enabled
1863 by using {\bf Device Type = vtape} in the Storage daemon's Device
1864 directive. This feature is only implemented on Linux machines and should not be
1865 used for production.
1866
1867 \subsection{Bat Enhancements}
1868 \index[general]{Bat Enhancements}
1869 Bat (the Bacula Administration Tool) GUI program has been significantly
1870 enhanced and stabilized. In particular, there are new table based status 
1871 commands; it can now be easily localized using Qt4 Linguist.
1872
1873 The Bat communications protocol has been significantly enhanced to improve
1874 GUI handling. Note, you {\bf must} use a the bat that is distributed with
1875 the Director you are using otherwise the communications protocol will not
1876 work.
1877
1878 \subsection{RunScript Enhancements}
1879 \index[general]{RunScript Enhancements}
1880 The {\bf RunScript} resource has been enhanced to permit multiple
1881 commands per RunScript.  Simply specify multiple {\bf Command} directives
1882 in your RunScript.
1883
1884 \begin{verbatim}
1885 Job {
1886   Name = aJob
1887   RunScript {
1888     Command = "/bin/echo test"
1889     Command = "/bin/echo an other test"
1890     Command = "/bin/echo 3 commands in the same runscript"
1891     RunsWhen = Before
1892   }
1893  ...
1894 }
1895 \end{verbatim}
1896
1897 A new Client RunScript {\bf RunsWhen} keyword of {\bf AfterVSS} has been
1898 implemented, which runs the command after the Volume Shadow Copy has been made.
1899
1900 Console commands can be specified within a RunScript by using:
1901 {\bf Console = \lt{}command\gt{}}, however, this command has not been 
1902 carefully tested and debugged and is known to easily crash the Director.
1903 We would appreciate feedback.  Due to the recursive nature of this command, we
1904 may remove it before the final release.
1905
1906 \subsection{Status Enhancements}
1907 \index[general]{Status Enhancements}
1908 The bconsole {\bf status dir} output has been enhanced to indicate
1909 Storage daemon job spooling and despooling activity.
1910
1911 \subsection{Connect Timeout}
1912 \index[general]{Connect Timeout}
1913 The default connect timeout to the File
1914 daemon has been set to 3 minutes. Previously it was 30 minutes.
1915
1916 \subsection{ftruncate for NFS Volumes}
1917 \index[general]{ftruncate for NFS Volumes}
1918 If you write to a Volume mounted by NFS (say on a local file server),
1919 in previous Bacula versions, when the Volume was recycled, it was not
1920 properly truncated because NFS does not implement ftruncate (file 
1921 truncate). This is now corrected in the new version because we have
1922 written code (actually a kind user) that deletes and recreates the Volume,
1923 thus accomplishing the same thing as a truncate.
1924
1925 \subsection{Support for Ubuntu}
1926 The new version of Bacula now recognizes the Ubuntu (and Kubuntu)
1927 version of Linux, and thus now provides correct autostart routines.
1928 Since Ubuntu officially supports Bacula, you can also obtain any
1929 recent release of Bacula from the Ubuntu repositories.
1930
1931 \subsection{Recycle Pool = \lt{}pool-name\gt{}}
1932 \index[general]{Recycle Pool}
1933 The new \textbf{RecyclePool} directive defines to which pool the Volume will
1934 be placed (moved) when it is recycled. Without this directive, a Volume will
1935 remain in the same pool when it is recycled. With this directive, it can be
1936 moved automatically to any existing pool during a recycle. This directive is
1937 probably most useful when defined in the Scratch pool, so that volumes will
1938 be recycled back into the Scratch pool.
1939
1940 \subsection{FD Version}
1941 \index[general]{FD Version}
1942 The File daemon to Director protocol now includes a version 
1943 number, which although there is no visible change for users, 
1944 will help us in future versions automatically determine
1945 if a File daemon is not compatible.
1946
1947 \subsection{Max Run Sched Time = \lt{}time-period-in-seconds\gt{}}
1948 \index[general]{Max Run Sched Time}
1949 The time specifies the maximum allowed time that a job may run, counted from
1950 when the job was scheduled. This can be useful to prevent jobs from running
1951 during working hours. We can see it like \texttt{Max Start Delay + Max Run
1952   Time}.
1953
1954 \subsection{Max Wait Time = \lt{}time-period-in-seconds\gt{}}
1955 \index[general]{Max Wait Time}
1956 Previous \textbf{MaxWaitTime} directives aren't working as expected, instead
1957 of checking the maximum allowed time that a job may block for a resource,
1958 those directives worked like \textbf{MaxRunTime}. Some users are reporting to
1959 use \textbf{Incr/Diff/Full Max Wait Time} to control the maximum run time of
1960 their job depending on the level. Now, they have to use
1961 \textbf{Incr/Diff/Full Max Run Time}.  \textbf{Incr/Diff/Full Max Wait Time}
1962 directives are now deprecated.
1963
1964 \subsection{Incremental|Differential Max Wait Time = \lt{}time-period-in-seconds\gt{}} 
1965 \index[general]{Incremental Max Wait Time}
1966 \index[general]{Differential Max Wait Time}
1967
1968 These directives have been deprecated in favor of
1969 \texttt{Incremental|Differential Max Run Time}.
1970
1971 \subsection{Max Run Time directives}
1972 \index[general]{Max Run Time directives}
1973 Using \textbf{Full/Diff/Incr Max Run Time}, it's now possible to specify the
1974 maximum allowed time that a job can run depending on the level.
1975
1976 \addcontentsline{lof}{figure}{Job time control directives}
1977 \includegraphics{\idir different_time.eps}
1978
1979 \subsection{Statistics Enhancements}
1980 \index[general]{Statistics Enhancements}
1981 If you (or probably your boss) want to have statistics on your backups to
1982 provide some \textit{Service Level Agreement} indicators, you could use a few
1983 SQL queries on the Job table to report how many:
1984
1985 \begin{itemize}
1986 \item jobs have run
1987 \item jobs have been successful
1988 \item files have been backed up
1989 \item ...
1990 \end{itemize}
1991
1992 However, these statistics are accurate only if your job retention is greater
1993 than your statistics period. Ie, if jobs are purged from the catalog, you won't
1994 be able to use them. 
1995
1996 Now, you can use the \textbf{update stats [days=num]} console command to fill
1997 the JobHistory table with new Job records. If you want to be sure to take in
1998 account only \textbf{good jobs}, ie if one of your important job has failed but
1999 you have fixed the problem and restarted it on time, you probably want to
2000 delete the first \textit{bad} job record and keep only the successful one. For
2001 that simply let your staff do the job, and update JobHistory table after two or
2002 three days depending on your organization using the \textbf{[days=num]} option.
2003
2004 These statistics records aren't used for restoring, but mainly for
2005 capacity planning, billings, etc.
2006
2007 The Bweb interface provides a statistics module that can use this feature. You
2008 can also use tools like Talend or extract information by yourself.
2009
2010 The \textbf{Statistics Retention = \lt{}time\gt{}} director directive defines
2011 the length of time that Bacula will keep statistics job records in the Catalog
2012 database after the Job End time. (In \texttt{JobHistory} table) When this time
2013 period expires, and if user runs \texttt{prune stats} command, Bacula will
2014 prune (remove) Job records that are older than the specified period.
2015
2016 You can use the following Job resource in your nightly \textbf{BackupCatalog}
2017 job to maintain statistics.
2018 \begin{verbatim}
2019 Job {
2020   Name = BackupCatalog
2021   ...
2022   RunScript {
2023     Console = "update stats days=3"
2024     Console = "prune stats yes"
2025     RunsWhen = After
2026     RunsOnClient = no
2027   }
2028 }
2029 \end{verbatim}
2030
2031 \subsection{ScratchPool = \lt{}pool-resource-name\gt{}}
2032 \index[general]{ScratchPool}
2033 This directive permits to specify a specific \textsl{Scratch} pool for the
2034 current pool. This is useful when using multiple storage sharing the same
2035 mediatype or when you want to dedicate volumes to a particular set of pool.
2036
2037 \subsection{Enhanced Attribute Despooling}
2038 \index[general]{Attribute Despooling}
2039 If the storage daemon and the Director are on the same machine, the spool file
2040 that contains attributes is read directly by the Director instead of being
2041 transmitted across the network. That should reduce load and speedup insertion.
2042
2043 \subsection{SpoolSize = \lt{}size-specification-in-bytes\gt{}}
2044 \index[general]{SpoolSize}
2045 A new Job directive permits to specify the spool size per job. This is used
2046 in advanced job tunning. {\bf SpoolSize={\it bytes}}
2047
2048 \subsection{MaxConsoleConnections = \lt{}number\gt{}}
2049 \index[general]{MaxConsoleConnections}
2050 A new director directive permits to specify the maximum number of Console
2051 Connections that could run concurrently. The default is set to 20, but you may
2052 set it to a larger number.
2053
2054 \subsection{VerId = \lt{}string\gt{}}
2055 \index[general]{VerId}
2056 A new director directive permits to specify a personnal identifier that will be
2057 displayed in the \texttt{version} command.
2058
2059 \subsection{dbcheck enhancements}
2060 \index[general]{dbcheck enhancements}
2061 If you are using Mysql, dbcheck will now ask you if you want to create
2062 temporary indexes to speed up orphaned Path and Filename elimination. 
2063
2064 A new \texttt{-B} option allows you to print catalog information in a simple
2065 text based format. This is useful to backup it in a secure way.
2066
2067 \begin{verbatim}
2068  $ dbcheck -B 
2069  catalog=MyCatalog
2070  db_type=SQLite
2071  db_name=regress
2072  db_driver=
2073  db_user=regress
2074  db_password=
2075  db_address=
2076  db_port=0
2077  db_socket=
2078 \end{verbatim} %$
2079
2080 You can now specify the database connection port in the command line.
2081
2082 \subsection{{-}{-}docdir configure option}
2083 \index[general]{{-}{-}docdir configure option}
2084 You can use {-}{-}docdir= on the ./configure command to
2085 specify the directory where you want Bacula to install the
2086 LICENSE, ReleaseNotes, ChangeLog, ... files.   The default is 
2087 {\bf /usr/share/doc/bacula}.
2088       
2089 \subsection{{-}{-}htmldir configure option}
2090 \index[general]{{-}{-}htmldir configure option}
2091 You can use {-}{-}htmldir= on the ./configure command to
2092 specify the directory where you want Bacula to install the bat html help
2093 files. The default is {\bf /usr/share/doc/bacula/html}
2094
2095 \subsection{{-}{-}with-plugindir configure option}
2096 \index[general]{{-}{-}plugindir configure option}
2097 You can use {-}{-}plugindir= on the ./configure command to
2098 specify the directory where you want Bacula to install
2099 the plugins (currently only bpipe-fd). The default is
2100 /usr/lib.