- Release Notes for Bacula 1.37.12
+ Release Notes for Bacula 1.37.36
- Bacula code: Total files = 419 Total lines = 124,877 (*.h *.c *.in)
-
-Note! The DB has been upgraded from version 8 to 9 and requres
-a DB upgrade.
+ Bacula code: Total files = 420 Total lines = 137,650 (*.h *.c *.in)
Major Changes:
-- The Python interface has been updated to be object oriented.
-- This version has a new DIR <--> SD protocol. Both must be
- upgraded at the same time.
-- This version has a new database format that is not compatible
- with previous databases. The upgrade scripts should work, but
- they are not yet tested.
-- SQLite3 support, but it seems to run at 1/2 to 1/4 the speed of
- SQLite2.
-- First cut at ANSI labels.
+- Improved algorithm for reserving drives in multiple drive
+ autochangers.
+- There is a new database format that is not compatible
+ with previous databases. You must upgrade if converting
+ from 1.36.x. No changes from version 1.37.30.
+- 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. The DIR and SD are no longer compatible with 1.36 or
- lower versions.
+ 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.
+ 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.
+ 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. See below for details.
+ 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 Unicode filenames on Win32.
-- Support for TLS (ssl) between all the daemon connections.
+- 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).
+- The code is now Internationalized so that it can be localized
+ in native languages. Thanks to Nicolas Boichat.
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\""
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.
- IBM is not yet implemented.
- 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
- 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
sure no Python scripts are running. This permits you to change
a Python script and get Bacula to use the new script.
+New configure options:
+- --with-libintl-prefix for defining alternate locations for
+ the NLS internationalization libraries. Not normally required.
+- --datadir for defining where the language files will be installed
+ required only if you do not want the default /usr/share.
+
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 (upgrade scripts not yet tested).
+ 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/).
-- Part files support: File volumes can now be splitted in multiple
+ You must have Python installed to run the scripts.
+- Part files support: File volumes can now be split into multiple
files, called "parts".
-NOTE THE FOLLOWING IS NOW OUT OF DATE!!!!
-- Python scripting support:
- 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 jcr. This
- argument *must* be used to access 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:
-
- jcr.get("Variable-name")
-
- where jcr is the argument passed to the function, and Variable-name
- is on of the following:
-
- JobId, Client, Pool, Storage, Catalog, MediaType, NumVols, DirName,
- Level, Type, Job, JobName, JobStatus
-
- Bacula varibles can be set using Python keyword arguments:
-
- jcr.set(VolumeName="xyz")
-
- The two currently implemented writable "variables" are:
-
- VolumeName and JobReport
-
- It is possible to submit a Bacula run command with the following:
-
- jcr.run("run kernsave client=Matou storage=File")
-
- this function returns the JobId of the job that was started. If
- there is an error, the return value is zero.
-
- Example:
-
-== File EndJob.py ===
-import bacula
-
-def EndJob(jcr):
- jobid = jcr.get("JobId")
- client = jcr.get("Client")
- jcr.set(JobReport="EndJob output: JobId=%d Client=%s.\n" % (jobid, client))
- if (jobid < 5) :
- startid = jcr.run("run kernsave")
- print "Python started jobid=", startid
-
- return 1
-====
-
-== File NewVolume.py ===
-import bacula
-
-def NewVolume(jcr):
- jobid = jcr.get("JobId")
- print "JobId=", jobid
- client = jcr.get("Client")
- print "Client=" + client
- numvol = jcr.get("NumVols");
- print "NumVols=", numvol
- jcr.set(JobReport="New Volume set for Job.\n")
- jcr.set(VolumeName="TestA-001")
- return 1
-====
+- For the details of the Python scripting support, please see the new
+ Python Scripting chapter in the manual.