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