]> git.sur5r.net Git - bacula/docs/blob - docs/manuals/en/main/newbsfeatures.tex
3b2ecdad7cd89d1b90bab7bd09ba4b7de4a55f58
[bacula/docs] / docs / manuals / en / main / newbsfeatures.tex
1 \chapter{New Features in Bacula Enterprise}
2 This chapter presents the new features that have been added to the
3 current Enterprise version of Bacula.
4 These features are available only with a Bacula Systems subscription.
5
6 In addition to the features in this chapter, the Enterprise version
7 includes all the Community features described in the Community new Features
8 chapter.
9
10 \section{Bacula Enterprise 6.7.0}
11
12 \subsection{Data Encryption Cipher Configuration}
13 Bacula Enterprise version 6.7.0 and later now allows to configure the data
14 encryption cipher and the digest algorithm. The cipher was forced to AES 128,
15 and it is now possible to choose between the following ciphers:
16
17 \begin{itemize}
18 \item AES128 (default)
19 \item AES192
20 \item AES256
21 \item blowfish
22 \end{itemize}
23
24 The digest algorithm was set to SHA1 or SHA256 depending on the local OpenSSL
25 options. We advise you to not modify the PkiDigest default setting. Please,
26 refer to OpenSSL documentation to know about pro and cons on these options.
27
28 \begin{lstlisting}
29   FileDaemon {
30     ...
31     PkiCipher = AES256
32   }
33 \end{lstlisting}
34
35 \subsection{Minor Enhancements}
36
37 \subsubsection*{.api version 2}
38
39 In Bacula Enterprise version 6.7.0 and later, we introduced a new .api version
40 to help external tools to parse various Bacula outputs.
41
42 The \texttt{api\_opts} option can use the following arguments:
43 \begin{itemize}
44 \item [C] Clear current options
45 \item [tn] Use a specific time format (1 ISO format, 2 Unix Timestamp, 3 default Bacula time format)
46 \item [sn] Use a specific separator between items (new line by default).
47 \item [Sn] Use a specific separator between objects (new line by default).
48 \item [o] Convert all keywords to lowercase and convert all non \textsl{isalpha} characters to \_
49 \end{itemize}
50
51 \begin{lstlisting}
52   .api 2 api_opts=t1s43S35
53   .status dir running
54 ==================================
55 jobid=10
56 job=AJob
57 ...
58 \end{lstlisting}
59
60 \section{Bacula Enterprise 6.6.0}
61 \subsection{Comm Line Compression}
62 Bacula Enterprise version 6.6.0 and later now includes communication
63 line compression. It is turned on by default, and if the
64 two Bacula components (Dir, FD, SD, bconsole) are both 
65 version 6.6.0 or greater, comm line compression
66 will be enabled, by default. If for some reason, you do not want
67 comm line compression, you may disable it with the
68 following directive:
69
70 \begin{lstlisting}
71 Comm Compression = no
72 \end{lstlisting}
73
74 This directive can appear in the following resources:
75 \begin{lstlisting}
76 bacula-dir.conf: Director resource
77 bacula-fd.conf Client (or FileDaemon) resource
78 bacula-sd.conf: Storage resource
79 bconsole.conf: Console resource
80 bat.conf: Console resource
81 \end{lstlisting}
82
83 \smallskip
84 In many cases, the volume of data transmitted across the
85 communications line can be reduced by a factor of three when 
86 this directive is enabled (default).
87
88 \subsection{Read Only Storage Devices}
89 This version of Bacula permits tdefining a Storage deamon device
90 to be read-only. That is if the {\bf ReadOnly} directive is specified and
91 enabled, the drive can only be used for read operations.
92 The the {\bf ReadOnly} directive can be defined in any bacula-sd.conf
93 Device resource, and is most useful to reserve one or more 
94 drives for restores. An example is:
95
96 \begin{lstlisting}
97 Read Only = yes
98 \end{lstlisting}
99
100 \subsection{Catalog Performance Improvements}
101 There is a new Bacula database format (schema) in this version
102 of Bacula that eliminates the FileName table by placing the
103 Filename into the File record of the File table. 
104 This permits some substantial performance improvements
105 particularly for large (1GB or greater) databases.
106
107 The update\_xxx\_catalog script will automatically update the
108 Bacula database format, but you should realize that for 
109 very large databases (greater than 1GB), it may take some
110 time, and there are several different options for doing the
111 update: 1. Shudown the database and update it. 2. Update the
112 database while production jobs are running.  See the Bacula Systems
113 White Paper ``Migration-to-6.6'' on this subject.
114
115 \smallskip
116 This database format change can provide very significant improvements in
117 the speed of metadata insertion into the database, and in some cases
118 (backup of large email servers) can significantly reduce the size of the
119 database.
120
121 \subsection{Plugin Restore Options}
122 This version of Bacula permits user configuration of Plugins at restore
123 time.  For example, it is now possible to choose the \texttt{datastore}
124 where your VMware image will be restored, or for example to choose
125 \texttt{pg\_restore} options directly.  See specific Plugin whitepaper
126 for more information about new restore options.
127
128 The restore options, if implemented in a plugin, will be 
129 presented to you during initiation of a restore either by
130 command line or if available by a GUI such
131 as BWeb.  For examples of the command line interface and
132 the GUI interface, please see below:
133
134 \begin{lstlisting}
135 Run Restore job
136 JobName:         RestoreFiles
137 Bootstrap:       /tmp/regress/working/my-dir.restore.1.bsr
138 Where:           /tmp/regress/tmp/bacula-restores
139 ...
140 Plugin Options:  *None*
141 OK to run? (yes/mod/no): mod
142 Parameters to modify:
143      1: Level
144 ...
145     13: Plugin Options
146 Select parameter to modify (1-13): 13
147 Automatically selected : vsphere: host=squeeze2
148 Plugin Restore Options
149 datastore:           *None*               
150 restore_host:        *None*               
151 new_hostname:        *None*               
152 Use above plugin configuration? (yes/mod/no): mod
153 You have the following choices:
154      1: datastore (Datastore to use for restore) 
155      2: restore_host (ESX host to use for restore) 
156      3: new_hostname (Restore host to specified name) 
157 Select parameter to modify (1-3): 3
158 Please enter a value for new_hostname: test
159 Plugin Restore Options
160 datastore:           *None*               
161 restore_host:        *None*               
162 new_hostname:        test                 
163 Use above plugin configuration? (yes/mod/no): yes
164
165 \end{lstlisting}
166
167 Or via the BWeb restore interface (see Fig \vref{fig:bms-restore})
168
169 \bsysimageH{vsphere-restore-gui}{Choose datastore, ESXi or hostname at restore time}{fig:bms-restore}
170
171 \subsection{Alldrives Plugin Improvements}
172 The \texttt{alldrives} plugin permits to simplify the FileSet creation of
173 Windows Clients, the plugin will generate automatically a FileSet including all
174 local drives.
175
176 \smallskip{}
177
178 The \texttt{alldrives} plugin now accepts the \texttt{snapshot} option that
179 permits generating snapshots for all local Windows drives but without
180 explicitly adding them to the FileSet.  It can be combined with the
181 \texttt{vss} plugin. For example:
182
183 \begin{lstlisting}
184 FileSet {
185  ...
186   Include {
187     Plugin = "alldrives: snapshot"
188     Plugin = "vss:/@MSSQL/"
189   }
190 }
191 \end{lstlisting}
192
193 \subsection{New Truncate Command}
194 We have added a new truncate command to bconsole, which
195 will truncate a Volume if the Volume is purged and if
196 the Volume is also marked {\bf Action On Purge = Truncate}.
197 This feature was originally added in Bacula version 5.0.1,
198 but the mechanism for actually doing the truncate required
199 the user to enter a command such as:
200
201 \begin{lstlisting}
202 purge volume action=truncate storage=File pool=Default
203 \end{lstlisting}
204
205 The above command is now simplified to be:
206
207 \begin{lstlisting}
208 truncate storage=File pool=Default
209 \end{lstlisting}
210
211 \subsection{New Resume Command}
212 This command does exactly the same thing as a 
213 {\bf restart} command but for some users the
214 name may be more logical since in general the 
215 {\bf restart} command is used to resume running
216 a Job that was incompleted.
217
218 \section{Bacula Enterprise 6.4.x}
219
220 The following features were added during the 6.4.x life cycle.
221
222 \subsection{SAP Plugin}
223
224 The Bacula Enterprise SAP Plugin is designed to implement the official SAP
225 Backint interface to simplify the backup and restore procedure through your
226 traditional SAP database tools. See SAP-Backint whitepaper for more
227 information.
228
229 \subsection{Oracle SBT Plugin}
230
231 By default, the Oracle backup Manager, RMAN, sends all backups to an operating
232 system specific directory on disk. You can also configure RMAN to make backups
233 to media such as tape using SBT module. Bacula will act as Media Manager, and
234 the data will be transfered directly from RMAN to Bacula. See Oracle Plugin
235 whitepaper for more information.
236
237 \subsection{MySQL Plugin}
238
239 The MySQL plugin is designed to simplify the backup and restore of your MySQL
240 server, the backup administrator doesn't need to know about internals of MySQL
241 backup techniques or how to write complex scripts.  The plugin will
242 automatically backup essential information such as configuration or user
243 definitions.  The MySQL plugin supports both dump (with support for Incremental
244 backup) and binary backup techniques.  See MySQL Plugin whitepaper for more
245 information.
246
247 \section{Bacula Enterprise 6.4.0}
248 \subsection{Deduplication Optimized Volumes}
249 This version of Bacula includes a new alternative (or additional)
250 Volume format that optimized the placement of files such
251 that an underlying deduplicating filesystem such as ZFS
252 can optimally deduplicate the backup data that is written
253 by Bacula. These are called Deduplication Optimized Volumes
254 or Aligned Volumes for short. The details of how to use this
255 feature and its considerations are in the Bacula Systems
256 Deduplication Optimized Volumes white paper.
257
258 \subsection{Migration/Copy/VirtualFull Performance Enhancements}
259 The Bacula Storage daemon now permits multiple jobs to simultaneously read
260 the same disk Volume, which gives substantial performance enhancements when
261 running Migration, Copy, or VirtualFull jobs that read disk Volumes.  Our
262 testing shows that when running multiple simultaneous jobs, the jobs can
263 finish up to ten times faster with this version of Bacula.  This is
264 built-in to the Storage daemon, so it happens automatically and
265 transparently.
266
267 \subsection{VirtualFull Backup Consolidation Enhancements}
268 By default Bacula selects jobs automatically for a VirtualFull,
269 however, you may want to create the Virtual backup based on a
270 particular backup (point in time) that exists.
271
272 For example, if you have the following backup Jobs in your catalog:
273 \begin{lstlisting}
274 +-------+---------+-------+----------+----------+-----------+
275 | JobId | Name    | Level | JobFiles | JobBytes | JobStatus |
276 +-------+---------+-------+----------+----------+-----------+
277 | 1     | Vbackup | F     | 1754     | 50118554 | T         |
278 | 2     | Vbackup | I     | 1        | 4        | T         |
279 | 3     | Vbackup | I     | 1        | 4        | T         |
280 | 4     | Vbackup | D     | 2        | 8        | T         |
281 | 5     | Vbackup | I     | 1        | 6        | T         |
282 | 6     | Vbackup | I     | 10       | 60       | T         |
283 | 7     | Vbackup | I     | 11       | 65       | T         |
284 | 8     | Save    | F     | 1758     | 50118564 | T         |
285 +-------+---------+-------+----------+----------+-----------+
286 \end{lstlisting}
287
288 and you want to consolidate only the first 3 jobs and create a
289 virtual backup equivalent to Job 1 + Job 2 + Job 3, you will use
290 \texttt{jobid=3} in the \texttt{run} command, then Bacula will select the
291 previous Full backup, the previous Differential (if any) and all subsequent
292 Incremental jobs.
293
294 \begin{lstlisting}
295 run job=Vbackup jobid=3 level=VirtualFull
296 \end{lstlisting}
297
298 If you want to consolidate a specific job list, you must specify the exact
299 list of jobs to merge in the run command line.  For example, to consolidate
300 the last Differential and all subsequent Incremental, you will use
301 \texttt{jobid=4,5,6,7} or \texttt{jobid=4-7} on the run command line. As one
302 of the Job in the list is a Differential backup, Bacula will set the new job
303 level to Differential. If the list is composed only with Incremental jobs,
304 the new job will have a level set to Incremental.
305
306 \begin{lstlisting}
307 run job=Vbackup jobid=4-7 level=VirtualFull
308 \end{lstlisting}
309
310 When using this feature, Bacula will automatically discard jobs that are
311 not related to the current Job.  For example, specifying
312 \texttt{jobid=7,8}, Bacula will discard JobId 8 because it is not
313 part of the same backup Job.
314
315 We do not recommend it, but really want to consolidate jobs that have
316 different names (so probably different clients, filesets, etc...), you must
317 use \texttt{alljobid=} keyword instead of \texttt{jobid=}.
318
319 \begin{lstlisting}
320 run job=Vbackup alljobid=1-3,6-8 level=VirtualFull
321 \end{lstlisting}
322
323 \subsection{New Prune ``Expired'' Volume Command}
324 In Bacula Enterprise 6.4, it is now possible to prune all volumes
325 (from a pool, or globally) that are ``expired''.  This option can be
326 scheduled after or before the backup of the Catalog and can be
327 combined with the Truncate On Purge option.  The Expired Prune option can
328 be used instead of the \texttt{manual\_prune.pl} script.
329
330 \begin{lstlisting}
331 * prune expired volumes
332
333 * prune expired volumes pool=FullPool
334 \end{lstlisting}
335
336 To schedule this option automatically, it can be added to the BackupCatalog job
337 definition.
338
339 \begin{lstlisting}
340  Job {
341    Name = CatalogBackup
342    ...
343    RunScript {
344      Console = "prune expired volume yes"
345      RunsWhen = Before
346    }
347  }
348 \end{lstlisting}
349
350 \section{Bacula Enterprise 6.2.3}
351
352 \subsection{New Job Edit Codes \%P \%C}
353 In various places such as RunScripts, you have now access to \%P to get the
354 current Bacula process ID (PID) and \%C to know if the current job is a
355 cloned job.
356
357 \section{Bacula Enterprise 6.2.0}
358
359 \subsection{BWeb Bacula Configuration GUI}
360 In Bacula Enterprise version 6.2, the BWeb Management Suite integrates a
361 Bacula configuration GUI module which is designed to help you create and
362 modify the Bacula configuration files such as bacula-dir.conf,
363 bacula-sd.conf, bacula-fd.conf and bconsole.conf.
364
365 The BWeb Management Suite offers a number of Wizards which support the
366 Administrator in his daily work. The wizards provide a step by step set of
367 required actions that graphically guide the Administrator to perform quick
368 and easy creation and modification of configuration files.
369
370 BWeb also provides diagnostic tools that enable the Administrator to check
371 that the Catalog Database is well configured, and that BWeb is installed
372 properly.
373
374 The new Online help mode displays automatic help text suggestions when the
375 user searches data types.
376
377 \bsysimageH{bweb_config_screen}{Configuration with BWeb Management Suite}{fig:BwebBconfigScreen}
378
379 \smallskip
380 This project was funded by Bacula Systems and is available with the Bacula
381 Enterprise Edition.
382
383 \subsection{Performance Improvements}
384 Bacula Enterprise 6.2 has a number of new performance improvements:
385
386 \begin{itemize}
387 \item An improved way of storing Bacula Resources (as defined in
388 the .conf files). This new handling permits much faster loading or
389 reloading of the conf files, and permits larger numbers of resources.
390
391 \item Improved performance when inserting large numbers of files in
392 the DB catalog by breaking the insertion into smaller chunks, thus
393 allowing better sharing when running multiple simultaneous jobs.
394
395 \item Performance enhancements in BVFS concerning eliminating 
396 duplicate path records.
397
398 \item Performance improvement when getting Pool records.
399
400 \item Pruning performance enhancements.
401 \end{itemize}
402
403 \subsection{Enhanced Status and Error Messages}
404 We have enhanced the Storage daemon status output to be more
405 readable. This is important when there are a large number of
406 devices. In addition to formatting changes, it also includes more
407 details on which devices are reading and writing.
408
409 A number of error messages have been enhanced to have more specific
410 data on what went wrong.
411
412 If a file changes size while being backed up the old and new size
413 are reported.
414
415 \subsection{WinBMR 3}
416 The Windows Bare Metal Recovery (BMR) plugin enables you to do safe, reliable
417 Disaster Recovery with Bacula Enterprise Edition on Windows and allows you to
418 get critical systems up and running again quickly.  The Enterprise Edition
419 Windows BMR is a toolkit that allows the Administrator to perform the restore
420 of a complete operating system to the same or similar hardware without actually
421 going through the operating system's installation procedure.
422
423 \smallskip{}
424
425 The WinBMR 3 version is a major rewrite of the product that support all x86
426 Windows versions and technologies. Especially UEFI and secure boot systems. The
427 WinBMR 3 File Daemon plugin is now part of the plugins included with the Bacula
428 File Daemon package.  The rescue CD or USB key is available separately.
429
430 \subsection{Miscellaneous New Features}
431 \begin{itemize}
432 \item Allow unlimited line lengths in .conf files (previously limited
433 to 2000 characters).
434
435 \item Allow /dev/null in ChangerCommand to indicated a Virtual Autochanger.
436
437 \item Add a --fileprune option to the manual\_prune.pl script.
438
439 \item Add a -m option to make\_catalog\_backup.pl to do maintenance
440 on the catalog.
441
442 \item Safer code that cleans up the working directory when starting
443 the daemons. It limits what files can be deleted, hence enhances 
444 security.
445
446 \item Added a new .ls command in bconsole to permit browsing a client's
447 filesystem.
448
449 \item Fixed a number of bugs, includes some obscure seg faults, and a
450 race condition that occurred infrequently when running Copy, Migration,
451 or Virtual Full backups.
452
453 \item Included a new vSphere library version, which will hopefully
454 fix some of the more obscure bugs.
455
456 \item Upgraded to a newer version of Qt4 for bat. All indications
457 are that this will improve bat's stability on Windows machines.
458
459 \item The Windows installers now detect and refuse to install on
460 an OS that does not match the 32/64 bit value of the installer.
461 \end{itemize}
462
463
464 \section{Bacula Enterprise 6.0.6}
465
466 \subsection{Incremental Accelerator Plugin for NetApp}
467
468 The Incremental Accelerator for NetApp Plugin is designed to simplify the
469 backup and restore procedure of your NetApp NAS hosting a huge number of files.
470
471 \smallskip{} When using the NetApp HFC Plugin, Bacula Enterprise will query the
472 NetApp device to get the list of all files modified since the last backup
473 instead of having to walk through the entire filesystem. Once Bacula have the
474 list of all files to back's up, it will use a standard network share (such as
475 NFS or CIFS) to access files.
476
477 \smallskip
478 This project was funded by Bacula Systems and is available with the Bacula
479 Enterprise Edition.
480
481 \subsection{PostgreSQL Plugin}
482
483 The PostgreSQL plugin is designed to simplify the backup and restore procedure
484 of your PostgreSQL cluster, the backup administrator doesn't need to learn about
485 internals of Postgres backup techniques or write complex scripts. The plugin
486 will automatically take care for you to backup essential information such as
487 configuration, users definition or tablespaces. The PostgreSQL plugin supports
488 both dump and Point In Time Recovery (PITR) backup techniques.
489
490 \smallskip
491 This project was funded by Bacula Systems and is available with the Bacula
492 Enterprise Edition.
493
494 \subsection{Maximum Reload Requests}
495
496 The new Director directive \texttt{Maximum Reload Requests} permits to
497 configure the number of reload requests that can be done while jobs are
498 running.
499
500 \begin{lstlisting}
501 Director {
502   Name = localhost-dir
503   Maximum Reload Requests = 64
504   ...
505
506 }
507 \end{lstlisting}
508
509 \subsection{FD Storage Address}
510
511 When the Director is behind a NAT, in a WAN area, to connect to
512 % the FileDaemon or
513 the StorageDaemon, the Director uses an ``external'' ip address,
514 and the FileDaemon should use an ``internal'' IP address to contact the
515 StorageDaemon.
516
517 The normal way to handle this situation is to use a canonical name such as
518 ``storage-server'' that will be resolved on the Director side as the WAN
519 address and on the Client side as the LAN address. This is now possible to
520 configure this parameter using the new directive \texttt{FDStorageAddress} in
521 the Storage or Client resource.
522
523
524 \bsysimageH{BackupOverWan1}{Backup Over WAN}{figbs6:fdstorageaddress}
525 %  \label{fig:fdstorageaddress}
526
527 \begin{lstlisting}
528 Storage {
529      Name = storage1
530      Address = 65.1.1.1
531      FD Storage Address = 10.0.0.1
532      SD Port = 9103
533      ...
534 }
535 \end{lstlisting}
536
537 % # or in the Client resouce
538 %
539
540 \begin{lstlisting}
541  Client {
542       Name = client1
543       Address = 65.1.1.2
544       FD Storage Address = 10.0.0.1
545       FD Port = 9102
546       ...
547  }
548 \end{lstlisting}
549
550 Note that using the Client \texttt{FDStorageAddress} directive will not allow
551 to use multiple Storage Daemon, all Backup or Restore requests will be sent to
552 the specified \texttt{FDStorageAddress}.
553
554 \subsection{Maximum Concurrent Read Jobs}
555 This is a new directive that can be used in the {\bf bacula-dir.conf} file
556 in the Storage resource.  The main purpose is to limit the number
557 of concurrent Copy, Migration, and VirtualFull jobs so that
558 they don't monopolize all the Storage drives causing a deadlock situation
559 where all the drives are allocated for reading but none remain for
560 writing.  This deadlock situation can occur when running multiple
561 simultaneous Copy, Migration, and VirtualFull jobs.
562
563 \smallskip
564 The default value is set to 0 (zero), which means there is no
565 limit on the number of read jobs.  Note, limiting the read jobs
566 does not apply to Restore jobs, which are normally started by
567 hand.  A reasonable value for this directive is one half the number
568 of drives that the Storage resource has rounded down.  Doing so,
569 will leave the same number of drives for writing and will generally
570 avoid over committing drives and a deadlock.
571
572
573 \section{Bacula Enterprise 6.0.4}
574
575 \subsection{VMWare vSphere VADP Plugin}
576
577 The Bacula Enterprise vSphere plugin provides virtual
578 machine bare metal recovery, while the backup at the guest level simplify data
579 protection of critical applications.
580
581 The plugin integrates the VMware's Changed Block Tracking (CBT) technology to
582 ensure only blocks that have changed since the initial Full, and/or the last
583 Incremental or Differential Backup are sent to the current Incremental or
584 Differential backup stream to give you more efficient backups and reduced
585 network load.
586
587 \subsection{Oracle RMAN Plugin}
588
589 The Bacula Enterprise Oracle Plugin is designed to simplify the backup and
590 restore procedure of your Oracle Database instance, the backup administrator
591 don't need to learn about internals of Oracle backup techniques or write
592 complex scripts.  The Bacula Enterprise Oracle plugin supports both dump and
593 Point In Time Recovery (PITR) with RMAN backup techniques.
594
595
596 \section{Bacula Enterprise 6.0.2}
597
598 To make Bacula function properly with multiple Autochanger definitions, in
599 the Director's configuration, you must adapt your {\bf bacula-dir.conf}
600 {\bf Storage} directives.
601
602 \smallskip
603 Each autochanger that you have defined in an {\bf Autochanger} 
604 resource in the Storage daemon's {\bf bacula-sd.conf} file,
605 must have a corresponding {\bf Autochanger} resource defined
606 in the Director's {\bf bacula-dir.conf} file.  Normally you will
607 already have a {\bf Storage} resource that points to the
608 Storage daemon's {\bf Autochanger} resource.  Thus you need
609 only to change the name of the {\bf Storage} resource to
610 {\bf Autochanger}.  In addition the {\bf Autochanger = yes}
611 directive is not needed in the Director's {\bf Autochanger}
612 resource, since the resource name is {\bf Autochanger}, the
613 Director already knows that it represents an autochanger.
614
615 \smallskip
616 In addition to the above change ({\bf Storage} to {\bf Autochanger}),
617 you must modify any additional {\bf Storage} resources that correspond
618 to devices that are part of the {\bf Autochanger} device.
619 Instead of the previous {\bf Autochanger = yes} directive they
620 should be modified to be {\bf Autochanger = xxx} where you
621 replace the {\bf xxx} with the name of the Autochanger.
622
623 \smallskip
624 For example, in the bacula-dir.conf file:
625
626 \begin{verbatim}
627 Autochanger {             # New resource
628   Name = Changer-1
629   Address = cibou.company.com
630   SDPort = 9103
631   Password = "xxxxxxxxxx"
632   Device = LTO-Changer-1
633   Media Type = LTO-4
634   Maximum Concurrent Jobs = 50
635 }
636
637 Storage {
638   Name = Changer-1-Drive0
639   Address = cibou.company.com
640   SDPort = 9103
641   Password = "xxxxxxxxxx"
642   Device = LTO4_1_Drive0
643   Media Type = LTO-4
644   Maximum Concurrent Jobs = 5
645   Autochanger = Changer-1  # New directive
646 }
647
648 Storage {
649   Name = Changer-1-Drive1
650   Address = cibou.company.com
651   SDPort = 9103
652   Password = "xxxxxxxxxx"
653   Device = LTO4_1_Drive1
654   Media Type = LTO-4
655   Maximum Concurrent Jobs = 5
656   Autochanger = Changer-1  # New directive
657 }
658
659 ...
660 \end{verbatim}
661
662 Note that Storage resources {\bf Changer-1-Drive0} and 
663 {\bf Changer-1-Drive1} are not required since they make
664 up part of an autochanger, and normally, Jobs refer only
665 to the Autochanger resource.
666 However, by referring to those
667 Storage definitions in a Job, you will use only
668 the indicated drive.  This is not normally what
669 you want to do, but it is very useful and often used
670 for reserving a drive for restores.  See the Storage daemon
671 example .conf below and the use of {\bf AutoSelect = no}.
672
673 So, in summary, the changes are:
674 \begin{itemize}
675 \item Change {\bf Storage} to {\bf Autochanger} in the LTO4 resource.
676 \item Remove the {\bf Autochanger = yes} from the {\bf Autochanger}
677 LTO4 resource.
678 \item Change the {\bf Autochanger = yes} in each of the {\bf Storage}
679 device that belong to the {\bf Autochanger} to point to the
680 {\bf Autochanger} resource with for the example above the
681 directive {\bf Autochanger = LTO4}.
682 \end{itemize}
683
684 \section{Bacula Enterprise 6.0.0}
685
686 \subsection{Incomplete Jobs}
687 During a backup, if the Storage daemon experiences disconnection
688 with the File daemon during backup (normally a comm line problem
689 or possibly an FD failure), under conditions that the SD determines
690 to be safe it will make the failed job as Incomplete rather than
691 failed.  This is done only if there is sufficient valid backup
692 data that was written to the Volume. The advantage of an Incomplete
693 job is that it can be restarted by the new bconsole {\bf restart}
694 command from the point where it left off rather than from the
695 beginning of the jobs as is the case with a cancel.
696
697 \subsection{The Stop Command}
698 Bacula has been enhanced to provide a {\bf stop} command,
699 very similar to the {\bf cancel} command with the main difference
700 that the Job that is stopped is marked as Incomplete so that
701 it can be restarted later by the {\bf restart} command where
702 it left off (see below).  The {\bf stop} command with no
703 arguments, will like the cancel command, prompt you with the
704 list of running jobs allowing you to select one, which might
705 look like the following:
706
707 \begin{lstlisting}
708 *stop
709 Select Job:
710      1: JobId=3 Job=Incremental.2012-03-26_12.04.26_07
711      2: JobId=4 Job=Incremental.2012-03-26_12.04.30_08
712      3: JobId=5 Job=Incremental.2012-03-26_12.04.36_09
713 Choose Job to stop (1-3): 2
714 2001 Job "Incremental.2012-03-26_12.04.30_08" marked to be stopped.
715 3000 JobId=4 Job="Incremental.2012-03-26_12.04.30_08" marked to be stopped.
716 \end{lstlisting}
717
718 \subsection{The Restart Command}
719 The new {\bf Restart command} allows console users to restart
720 a canceled, failed, or incomplete Job.  For canceled and failed
721 Jobs, the Job will restart from the beginning.  For incomplete
722 Jobs the Job will restart at the point that it was stopped either
723 by a stop command or by some recoverable failure.
724
725 \smallskip
726 If you enter the {\bf restart} command in bconsole, you will get the
727 following prompts:
728
729 \begin{lstlisting}
730 *restart
731 You have the following choices:
732      1: Incomplete
733      2: Canceled
734      3: Failed
735      4: All
736 Select termination code:  (1-4):
737 \end{lstlisting}
738
739 If you select the {\bf All} option, you may see something like:
740
741 \begin{lstlisting}
742 Select termination code:  (1-4): 4
743 +-------+-------------+---------------------+------+-------+----------+-----------+-----------+
744 | jobid | name        | starttime           | type | level | jobfiles |
745 jobbytes  | jobstatus |
746 +-------+-------------+---------------------+------+-------+----------+-----------+-----------+
747 |     1 | Incremental | 2012-03-26 12:15:21 | B    | F     |        0 |
748     0 | A         |
749 |     2 | Incremental | 2012-03-26 12:18:14 | B    | F     |      350 |
750 4,013,397 | I         |
751 |     3 | Incremental | 2012-03-26 12:18:30 | B    | F     |        0 |
752     0 | A         |
753 |     4 | Incremental | 2012-03-26 12:18:38 | B    | F     |      331 |
754 3,548,058 | I         |
755 +-------+-------------+---------------------+------+-------+----------+-----------+-----------+
756 Enter the JobId list to select:
757 \end{lstlisting}
758
759 Then you may enter one or more JobIds to be restarted, which may
760 take the form of a list of JobIds separated by commas, and/or JobId
761 ranges such as {\bf 1-4}, which indicates you want to restart JobIds
762 1 through 4, inclusive.
763
764 \subsection{Support for Exchange Incremental Backups}
765 The Bacula Enterprise version 6.0 VSS plugin now supports
766 Full and Incremental backups for Exchange.  We strongly
767 recommend that you do not attempt to run Differential jobs with
768 Exchange as it is likely to produce a situation where restores
769 will no longer select the correct jobs, and thus the
770 Windows Exchange VSS writer will fail when applying log files.
771 There is a Bacula Systems Enterprise white paper that provides
772 the details of backup and restore of Exchange 2010 with the
773 Bacula VSS plugin.
774
775 \smallskip
776 Restores can be done while Exchange is running, but you
777 must first unmount (dismount in Microsoft terms) any database
778 you wish to restore and explicitly mark them to permit a
779 restore operation (see the white paper for details).
780
781 \smallskip
782 This project was funded by Bacula Systems and is available with the Bacula
783 Enterprise Edition.
784
785 \subsection{Support for MSSQL Block Level Backups}
786 With the addition of block level backup support to the
787 Bacula Enterprise VSS MSSQL component, you can now do
788 Differential backups in addition to Full backups.
789 Differential backups use Microsoft's partial block backup
790 (a block differencing or deduplication that we call Delta).
791 This partial block backup permits backing up only those
792 blocks that have changed.  Database restores can be made while
793 the MSSQL server is running, but any databases selected for
794 restore will be automatically taken offline by the MSSQL
795 server during the restore process.
796
797 Incremental backups for MSSQL are not support by
798 Microsoft. We strongly recommend that you not perform Incremental
799 backups with MSSQL as they will probably produce a situation
800 where restore will no longer work correctly.
801
802 \smallskip
803  We are currently working on producing a white paper that will give more
804 details of backup and restore with MSSQL. One point to note is that during
805 a restore, you will normally not want to restore the {\bf master} database.
806 You must exclude it from the backup selections that you have made or the
807 restore will fail.
808
809 \smallskip
810 It is possible to restore the {\bf master} database, but you must
811 first shutdown the MSSQL server, then you must perform special
812 recovery commands.  Please see Microsoft documentation on how
813 to restore the master database.
814
815 \smallskip
816 This project was funded by Bacula Systems and is available with the Bacula
817 Enterprise Edition.
818
819
820 \subsection{Job Bandwidth Limitation}
821
822 The new {\bf Job Bandwidth Limitation} directive may be added to the File
823 daemon's and/or Director's configuration to limit the bandwidth used by a
824 Job on a Client.  It can be set in the File daemon's conf file for all Jobs
825 run in that File daemon, or it can be set for each Job in the Director's
826 conf file. The speed is always specified in bytes per second.
827
828 For example:
829 \begin{lstlisting}
830 FileDaemon {
831   Name = localhost-fd
832   Working Directory = /some/path
833   Pid Directory = /some/path
834   ...
835   Maximum Bandwidth Per Job = 5Mb/s
836 }
837 \end{lstlisting}
838
839 The above example would cause any jobs running with the FileDaemon to not
840 exceed 5 megabytes per second of throughput when sending data to the
841 Storage Daemon. Note, the speed is always specified in bytes per second
842 (not in bits per second), and the case (upper/lower) of the specification
843 characters is ignored (i.e. 1MB/s = 1Mb/s).
844
845 You may specify the following speed parameter modifiers:
846    k/s (1,000 bytes per second), kb/s (1,024 bytes per second),
847    m/s (1,000,000 bytes per second), or mb/s (1,048,576 bytes per second).
848
849 For example:
850 \begin{lstlisting}
851 Job {
852   Name = locahost-data
853   FileSet = FS_localhost
854   Accurate = yes
855   ...
856   Maximum Bandwidth = 5Mb/s
857   ...
858 }
859 \end{lstlisting}
860
861 The above example would cause Job \texttt{localhost-data} to not exceed 5MB/s
862 of throughput when sending data from the File daemon to the Storage daemon.
863
864 A new console command \texttt{setbandwidth} permits to set dynamically the
865 maximum throughput of a running Job or for future jobs of a Client.
866
867 \begin{lstlisting}
868 * setbandwidth limit=1000 jobid=10
869 \end{lstlisting}
870
871 Please note that the value specified for the \texttt{limit} command
872 line parameter is always in units of 1024 bytes (i.e. the number
873 is multiplied by 1024 to give the number of bytes per second).  As 
874 a consequence, the above limit of 1000 will be interpreted as a
875 limit of 1000 * 1024 = 1,024,000 bytes per second.
876
877 \medskip
878 This project was funded by Bacula Systems and is available in
879 the Enterprise Edition.
880
881 \subsection{Incremental/Differential Block Level Difference Backup}
882
883 The new \texttt{delta} Plugin is able to compute and apply signature-based file
884 differences. It can be used to backup only changes in a big binary file like
885 Outlook PST, VirtualBox/VMware images or database files.
886
887 It supports both Incremental and Differential backups and stores signatures
888 database in the File Daemon working directory. This plugin is available on all
889 platform including Windows 32 and 64bit.
890
891 Accurate option should be turned on in the Job resource.
892 \begin{lstlisting}
893 Job {
894  Accurate = yes
895  FileSet = DeltaFS
896  ...
897 }
898
899 FileSet {
900  Name = DeltaFS
901  ...
902  Include {
903    # Specify one file
904    Plugin = "delta:/home/eric/.VirtualBox/HardDisks/lenny-i386.vdi"
905  }
906 }
907
908 FileSet {
909  Name = DeltaFS-Include
910  ...
911  Include {
912    Options {
913       Compression = GZIP1
914       Signature = MD5
915       Plugin = delta
916    }
917    # Use the Options{} filtering and options
918    File = /home/user/.VirtualBox
919  }
920 }
921
922 \end{lstlisting}
923
924 Please contact Bacula Systems support to get Delta Plugin specific
925 documentation.
926
927 \medskip
928 This project was funded by Bacula Systems and is available with the Bacula
929 Enterprise Edition.
930
931 \subsection{SAN Shared Tape Storage Plugin}
932
933 The problem with backing up multiple servers at the same time to the
934 same tape library (or autoloader) is that if both servers access the
935 same tape drive same time, you will very likely get data corruption.
936 This is where the Bacula Systems shared tape storage plugin comes into play.  The
937 plugin ensures that only one server at a time can connect to each device
938 (tape drive) by using the SPC-3 SCSI reservation protocol.  Please contact
939 Bacula Systems support to get SAN Shared Storage Plugin specific
940 documentation.
941
942 \medskip
943 This project was funded by Bacula Systems and is available with Bacula
944 Enterprise Edition.
945
946 \subsection{Advanced Autochanger Usage}
947
948 The new \texttt{Shared Storage} Director's directive is a Bacula Enterprise
949 feature that allows you to share volumes between different Storage
950 resources. This directive should be used \textbf{only} if all \texttt{Media
951   Type} are correctly set across all Devices.
952
953 The \texttt{Shared Storage} directive should be used when using the SAN
954 Shared Storage plugin or when accessing from the Director Storage resources
955 directly to Devices of an Autochanger.
956
957 When sharing volumes between different Storage resources, you will
958 need also to use the \texttt{reset-storageid} script before using the
959 \texttt{update slots} command. This script can be scheduled once a day in
960 an Admin job.
961
962 \begin{lstlisting}
963  $ /opt/bacula/scripts/reset-storageid MediaType StorageName
964  $ bconsole
965  * update slots storage=StorageName drive=0
966 \end{lstlisting}
967
968 Please contact Bacula Systems support to get help on this advanced
969 configuration.
970
971 \medskip
972 This project was funded by Bacula Systems and is available with Bacula
973 Enterprise Edition.
974
975 \medskip
976 \textbf{The reset-storageid procedure is no longer required when using
977 the appropriate Autochanger configuration in the Director configuration
978 side.}
979
980 \subsection{Enhancement of the NDMP Plugin}
981
982 The previous NDMP Plugin 4.0 was fully supporting only the NetApp hardware, the
983 new NDMP Plugin should now be able to support all NAS vendors with the
984 \texttt{volume\_format} plugin command option.
985
986 On some NDMP devices such as Celera or Blueray, the administrator can use arbitrary
987 volume structure name, ex:
988
989 \begin{lstlisting}
990  /dev/volume_home
991  /rootvolume/volume_tmp
992  /VG/volume_var
993 \end{lstlisting}
994
995 The NDMP plugin should be aware of the structure organization in order to
996 detect if the administrator wants to restore in a new volume
997 (\texttt{where=/dev/vol\_tmp}) or inside a subdirectory of the targeted volume
998 (\texttt{where=/tmp}).
999
1000 \begin{lstlisting}
1001 FileSet {
1002  Name = NDMPFS
1003  ...
1004  Include {
1005    Plugin = "ndmp:host=nasbox user=root pass=root file=/dev/vol1 volume_format=/dev/"
1006  }
1007 }
1008 \end{lstlisting}
1009
1010 Please contact Bacula Systems support to get NDMP Plugin specific
1011 documentation.
1012
1013 \medskip
1014 This project was funded by Bacula Systems and is available with the Bacula
1015 Enterprise Edition.
1016
1017 \subsection{Always Backup a File}
1018
1019 When the Accurate mode is turned on, you can decide to always backup a file
1020 by using then new {\bf A} Accurate option in your FileSet. For example:
1021
1022 \begin{lstlisting}
1023 Job {
1024    Name = ...
1025    FileSet = FS_Example
1026    Accurate = yes
1027    ...
1028 }
1029
1030 FileSet {
1031  Name = FS_Example
1032  Include {
1033    Options {
1034      Accurate = A
1035    }
1036    File = /file
1037    File = /file2
1038  }
1039  ...
1040 }
1041 \end{lstlisting}
1042
1043 This project was funded by Bacula Systems based on an idea of James Harper and
1044 is available with the Bacula Enterprise Edition.
1045
1046 \subsection{Setting Accurate Mode During at Runtime}
1047
1048 You are now able to specify the Accurate mode on the \texttt{run} command and
1049 in the Schedule resource.
1050
1051 \begin{lstlisting}
1052 * run accurate=yes job=Test
1053 \end{lstlisting}
1054
1055 \begin{lstlisting}
1056 Schedule {
1057   Name = WeeklyCycle
1058   Run = Full 1st sun at 23:05
1059   Run = Differential accurate=yes 2nd-5th sun at 23:05
1060   Run = Incremental  accurate=no  mon-sat at 23:05
1061 }
1062 \end{lstlisting}
1063
1064 It can allow you to save memory and and CPU resources on the catalog server in
1065 some cases.
1066
1067 \medskip
1068 These advanced tuning options are available with the Bacula Enterprise Edition.
1069
1070 % Common with community
1071 \subsection{Additions to RunScript variables}
1072 You can have access to JobBytes, JobFiles and Director name using \%b, \%F and \%D
1073 in your runscript command. The Client address is now available through \%h.
1074
1075 \begin{lstlisting}
1076 RunAfterJob = "/bin/echo Job=%j JobBytes=%b JobFiles=%F ClientAddress=%h Dir=%D"
1077 \end{lstlisting}
1078
1079 \subsection{LZO Compression}
1080
1081 LZO compression was added in the Unix File Daemon. From the user point of view,
1082 it works like the GZIP compression (just replace {\bf compression=GZIP} with
1083 {\bf compression=LZO}).
1084
1085 For example:
1086 \begin{lstlisting}
1087 Include {
1088    Options { compression=LZO }
1089    File = /home
1090    File = /data
1091 }
1092 \end{lstlisting}
1093
1094 LZO provides much faster compression and decompression speed but lower
1095 compression ratio than GZIP. It is a good option when you backup to disk. For
1096 tape, the built-in compression may be a better option.
1097
1098 LZO is a good alternative for GZIP1 when you don't want to slow down your
1099 backup. On a modern CPU it should be able to run almost as fast as:
1100
1101 \begin{bsysitemize}
1102 \item your client can read data from disk. Unless you have very fast disks like
1103   SSD or large/fast RAID array.
1104 \item the data transfers between the file daemon and the storage daemon even on
1105   a 1Gb/s link.
1106 \end{bsysitemize}
1107
1108 Note that bacula only use one compression level LZO1X-1.
1109
1110 \medskip
1111 The code for this feature was contributed by Laurent Papier.
1112
1113 \subsection{New Tray Monitor}
1114
1115 Since the old integrated Windows tray monitor doesn't work with
1116 recent Windows versions, we have written a new Qt Tray Monitor that is available
1117 for both Linux and Windows.  In addition to all the previous features,
1118 this new version allows you to run Backups from
1119 the tray monitor menu.
1120
1121 \bsysimageH{tray-monitor}{New tray monitor}{figbs6:traymonitor}
1122
1123 \bsysimageH{tray-monitor1}{Run a Job through the new tray monitor}{figbs6:traymonitor1}
1124
1125
1126
1127 To be able to run a job from the tray monitor, you need to
1128 allow specific commands in the Director monitor console:
1129 \begin{lstlisting}
1130 Console {
1131     Name = win2003-mon
1132     Password = "xxx"
1133     CommandACL = status, .clients, .jobs, .pools, .storage, .filesets, .messages, run
1134     ClientACL = *all*               # you can restrict to a specific host
1135     CatalogACL = *all*
1136     JobACL = *all*
1137     StorageACL = *all*
1138     ScheduleACL = *all*
1139     PoolACL = *all*
1140     FileSetACL = *all*
1141     WhereACL = *all*
1142 }
1143 \end{lstlisting}
1144
1145 \medskip
1146 This project was funded by Bacula Systems and is available with Bacula
1147 the Enterprise Edition and the Community Edition.
1148
1149 \subsection{Purge Migration Job}
1150
1151 The new {\bf Purge Migration Job} directive may be added to the Migration
1152 Job definition in the Director's configuration file. When it is enabled
1153 the Job that was migrated during a migration will be purged at
1154 the end of the migration job.
1155
1156 For example:
1157 \begin{lstlisting}
1158 Job {
1159   Name = "migrate-job"
1160   Type = Migrate
1161   Level = Full
1162   Client = localhost-fd
1163   FileSet = "Full Set"
1164   Messages = Standard
1165   Storage = DiskChanger
1166   Pool = Default
1167   Selection Type = Job
1168   Selection Pattern = ".*Save"
1169 ...
1170   Purge Migration Job = yes
1171 }
1172 \end{lstlisting}
1173
1174 \medskip
1175
1176 This project was submitted by Dunlap Blake; testing and documentation was funded
1177 by Bacula Systems.
1178
1179 \subsection{Changes in the Pruning Algorithm}
1180
1181 We rewrote the job pruning algorithm in this version. Previously, in some users
1182 reported that the pruning process at the end of jobs was very long. It should
1183 not be longer the case. Now, Bacula won't prune automatically a Job if this
1184 particular Job is needed to restore data. Example:
1185
1186 \begin{lstlisting}
1187 JobId: 1  Level: Full
1188 JobId: 2  Level: Incremental
1189 JobId: 3  Level: Incremental
1190 JobId: 4  Level: Differential
1191 .. Other incrementals up to now
1192 \end{lstlisting}
1193
1194 In this example, if the Job Retention defined in the Pool or in the Client
1195 resource causes that Jobs with Jobid in 1,2,3,4 can be pruned, Bacula will
1196 detect that JobId 1 and 4 are essential to restore data at the current state
1197 and will prune only JobId 2 and 3.
1198
1199 \texttt{Important}, this change affect only the automatic pruning step after a
1200 Job and the \texttt{prune jobs} Bconsole command. If a volume expires after the
1201 \texttt{VolumeRetention} period, important jobs can be pruned.
1202
1203 \subsection{Ability to Verify any specified Job}
1204 You now have the ability to tell Bacula which Job should verify instead of
1205 automatically verify just the last one.
1206
1207 This feature can be used with VolumeToCatalog, DiskToCatalog and Catalog level.
1208
1209 To verify a given job, just specify the Job jobid in argument when starting the
1210 job.
1211 \begin{lstlisting}
1212 *run job=VerifyVolume jobid=1 level=VolumeToCatalog
1213 Run Verify job
1214 JobName:     VerifyVolume
1215 Level:       VolumeToCatalog
1216 Client:      127.0.0.1-fd
1217 FileSet:     Full Set
1218 Pool:        Default (From Job resource)
1219 Storage:     File (From Job resource)
1220 Verify Job:  VerifyVol.2010-09-08_14.17.17_03
1221 Verify List: /tmp/regress/working/VerifyVol.bsr
1222 When:        2010-09-08 14:17:31
1223 Priority:    10
1224 OK to run? (yes/mod/no):
1225 \end{lstlisting}
1226
1227 \medskip
1228 This project was funded by Bacula Systems and is available with Bacula
1229 Enterprise Edition and Community Edition.