- Release Notes for Bacula 1.37.1
-
- Bacula code: Total files = 398 Total lines = 117,151 (*.h *.c *.in)
+ Release Notes for Bacula 1.37.32
+ Bacula code: Total files = 420 Total lines = 137,098 (*.h *.c *.in)
Major Changes:
-- Preliminary Python Event support has been added. See below for
- configuration.
- A Python script will be called at particular points or conditions
- in Bacula called Events. The currently defined Events are called:
-
- StartJob, EndJob, NewVolume
-
- Where StartJob is called before the RunBeforeJob, EndJob is called after
- RunAfterJob, and NewVolume, is called before all other "methods" of
- obtaining a new Volume name, when one is needed.
-
- The Python script of the same name as the Event name (but with a .py)
- is called from the Scripts Directory (a directive defined in the
- Director resource). Note, both the Filename, and the name of
- the function in the file must correspond to the Event name.
-
- Once the Python script gets control, it can have access to Bacula
- variables by doing:
-
- import bacula
-
- The script is called with one argument, typically called j. This
- argument *must* be passed unchanged to each bacula function. The
- format of the call is slightly different for reading Bacula
- variable and for writing bacula variables. See below.
-
- Bacula variables can be read with:
-
- bacula.get(j, "Variable-name")
-
- where j is the argument passed to the function, and Variable-name
- is on of the following:
-
- JoId, Client, Pool, Storage, Catalog, MediaType, NumVols, DirName,
- Level, Type, Job, JobName, JobStatus
-
- Bacula varibles can be set using Python keyword arguments:
-
- bacula.set(jcr=j, VolumeName="xyz")
-
- The two currently implemented writable "variables" are:
-
- VolumeName and JobReport
-
- Example:
-
-== File EndJob.py ===
-import bacula
-
-def EndJob(j):
- jobid = bacula.get(j, "JobId")
- client = bacula.get(j, "Client")
- bacula.set(jcr=j, JobReport="EndJob output: JobId=%d Client=%s.\n" % (jobid, client))
- return 1
-====
-
-== File NewVolume.py ===
-import bacula
-
-def NewVolume(j):
- jobid = bacula.get(j, "JobId")
- print "JobId=", jobid
- client = bacula.get(j, "Client")
- print "Client=" + client
- numvol = bacula.get(j, "NumVols");
- print "NumVols=", numvol
- bacula.set(jcr=j, JobReport="New Volume set for Job.\n")
- bacula.set(jcr=j, VolumeName="TestA-001")
- return 1
-====
-
+- There is a new database format that is not compatible
+ with previous databases. You must upgrade if converting
+ from 1.36.x.
+- The Director, Storage daemon, and File daemons are
+ Deamons are not compatible with prior versions.
+ All FDs must be upgraded at the same time.
+- Multiple drive autochanger support. You *must* update
+ your SD conf file.
+- Support for ANSI/IBM labels.
+- New communications protocol between DIR and SD to reserve
+ drives.
+- Faster database inserts due to combining the MD5/SHA1 into
+ the attributes record, eliminating one INSERT/file backed up.
+- Python Event support has been added. See below for
+ configuration and details. Unfortunately, it is not yet complete
+ and the only really useful function is defining a new
+ Volume name.
+- DVD writing support, using parts, and a lot of new directives in
+ the Device resource of the Storage configuration file thanks
+ to Nicolas Boichat. Please note that this code is still
+ experimental and should be carefully tested before using in
+ production.
+- Seven new options keywords in a FileSet resource:
+ ignorecase, fstype, hfsplussupport, wilddir, wildfile, regexdir,
+ and regexfile thanks to Pruben Guldberg). See below for details.
+- Restore of all files for a Job or set of jobs even if the file
+ records have been removed from the catalog.
+- Restore of a directory (non-recursive, i.e. only one level).
+- Support for TLS (ssl) between all the daemon connections thanks
+ to Landon Fuller. This is mostly untested.
+- Any Volume in the Pool named Scratch may be reassigned to any
+ other Pool when a new Volume is needed.
+- You may clone a Job and thus write (almost) the same data
+ to multiple Volumes simultaneously (see below). Actually,
+ any Job may start any other Job with this mechanism, so it
+ also be used to group jobs.
+- Unicode filename support for Win32 (thanks to Thorsten Engel)
+- Volume Shadow Copy support for Win32 thus the capability to
+ backup exclusively opened files (thanks to Thorsten Engel).
+ A VSS enabled Win32 FD is available. You must explicitly
+ turn on VSS with "Enable VSS = yes" in your FileSet resource.
+- New manual format with an index (thanks to Karl Cunningham).
+- New Web site format (thanks to Michael Scherer).
+- SQLite3 support, but it seems to run at 1/2 to 1/4 the speed of
+ SQLite2.
+- Web-bacula, previously a separate project by Juan Luis Frances,
+ is now included in the Bacula GUI release (yet to be fully
+ created).
New Directives:
+- New Job directive "Prefer Mounted Volumes = yes|no" causes the
+ SD to select either an Autochanger or a drive with a valid
+ Volume already mounted in preference. If none is available,
+ it will select the first available drive.
+- New Run directive in Job resource of DIR. It permits
+ cloning of jobs. To clone a copy of the current job, use
+ Run = "job-name level=%l since=\"%s\""
+ Note, job-name is normally the same name as the job that
+ is running but there is no restriction on what you put. If you
+ want to start the job by hand and use job overrides such as
+ storage=xxx, realize that the job will be started with the
+ default storage values not the overrides. The level=%l guarantees
+ that the chosen level of the job is the same, and the since=...
+ ensures that the job uses *exactly* the same time/date for incremental
+ and differential jobs. The since=... is ignored when level=Full.
+ A cloned job will not start additional clones, so it is not possible
+ to recurse.
+- New Options keywords in a FileSet directive:
+ - WildDir xxx
+ Will do a wild card match against directories (files will not
+ be matched).
+ - WildFile xxx
+ Will do a wild card match against files (directories will not
+ be matched).
+ - RegexDir xxx
+ Will do a regular expression match against directories (files
+ will not be matched).
+ - RegexFile xxx
+ Will do a regular expression match against files( directories
+ will not be matched).
+ - IgnoreCase = yes | no
+ Will ignore case in wild card and regular expression matches.
+ This is handy for Windows where filename case is not significant.
+ - FsType = string
+ where string is a filesystem type: ext2, jfs, ntfs, proc,
+ reiserfs, xfs, usbdevfs, sysfs, smbfs, iso9660. For ext3
+ systems, use ext2. You may have multiple fstype directives
+ and thus permit multiple filesystem types. If the type
+ specified on the fstype directive does not match the
+ filesystem for a particular directive, that directory will
+ not be backed up. This directive can be used to prevent
+ backing up non-local filesystems.
+ - HFS Plus Support = yes | no
+ If set, Mac OS X resource forks will be saved and restored.
+- Label Type = ANSI | IBM | Bacula
+ Implemented in Director Pool resource and in SD Device resource.
+ If it is specified in the SD Device resource, it will take
+ precedence over the value passed from the Director to the SD.
+- Check Labels = yes | no
+ Implemented in the SD Device resource. If you intend to read
+ ANSI or IBM labels, this *must* be set. Even if the volume
+ is not ANSI labeled, you can set this to yes, and Bacula will
+ check the label type.
- Scripts Directory = <directory> name. Defines the directory from
which Bacula scripts will be called for events. In fact, Bacula
appends this name to the standard Python list of search directories,
- In FileSet, you can exclude backing up of hardlinks (if you have
a lot, it can be very expensive), by using:
HardLinks = no
- in the Options section. Patch supplied by David R Bosso. Thanks.
+ in the Options section. Patch supplied by David R Bosso. Thanks.
+- MaximumPartSize = bytes (SD, Device resource)
+ Defines the maximum part size.
+- Requires Mount = Yes/No (SD, Device resource)
+ Defines if the device require to be mounted to be read, and if it
+ must be written in a special way. If it set, the following directives
+ must be defined in the same Device resource:
+ + Mount Point = directory
+ Directory where the device must be mounted.
+ + Mount Command = name-string
+ Command that must be executed to mount the device. Before the command
+ is executed, %a is replaced with the Archive Device, and %m with the
+ Mount Point.
+ + Unmount Command = name-string
+ Command that must be executed to unmount the device. Before the
+ command is executed, %a is replaced with the Archive Device, and
+ %m with the Mount Point.
+ + Write Part Command = name-string
+ Command that must be executed to write a part to the device. Before
+ the command is executed, %a is replaced with the Archive Device, %m
+ with the Mount Point, %n with the current part number (0-based),
+ and %v with the current part filename.
+ + Free Space Command = name-string
+ Command that must be executed to check how much free space is left
+ on the device. Before the command is executed, %a is replaced with
+ the Archive Device, %m with the Mount Point, %n with the current part
+ number (0-based), and %v with the current part filename.
+- Write Part After Job = Yes/No (DIR, Job Resource, and Schedule Resource)
+ If this directive is set to yes (default no), a new part file will be
+ created after the job is finished.
+- A pile of new Directives to support TLS. Please see the TLS chapter
+ of the manual.
New Commands:
- "python restart" restarts the Python interpreter. Rather brutal, make
Items to note!!!
- You must add --with-python=[DIR] to the configure command line
- if you want Python support. Python 2.2 and 2.3 should be automatically
- detected if in the standard place.
-- With Python 2.2 version, the link of the Director gets a few linker
- warnings due to the fact that Python pulls in some old non-secure
- libraries.
-- With Python 2.3, there are a few compiler warnings.
+ if you want Python support. Python 2.2, 2.3 and 2.4 should be
+ automatically detected if in the standard place.
+- When linking with --with-python, there are a few warnings that
+ can be ignored.
+- You must either create a new catalog database or upgrade your
+ old database.
+- The TLS code is for the most part untested.
+- You must add --with-openssl to the configure command line if
+ you want TLS communications encryption support.
+- If you use an Autochanger, you *must* update your SD conf file
+ to use the new Autochanger resource. Otherwise, certain commands
+ such as "update slots" may not work.
+- Disk seeking during restores does not yet work correctly in
+ all cases, so it is turned off.
Other Items:
+- 2 new scripts, dvd-writepart and dvd-freespace, in the scripts directory,
+ which are designed to be used as parameters to Write Part Command and
+ Free Space Command. They need the dvd+rw-tools to be installed
+ (http://fy.chalmers.se/~appro/linux/DVD+RW/).
+ You must have Python installed to run the dvd-freespace script.
+- Part files support: File volumes can now be split into multiple
+ files, called "parts".
+
+- For the details of the Python scripting support, please see the new
+ Python Scripting chapter in the manual.