- Release Notes for Bacula 1.37.12
-
- 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.
-
-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.
-- New communications protocol between DIR and SD to reserve
- drives. The DIR and SD are no longer compatible with 1.36 or
- lower versions.
-- Python Event support has been added. See below for
- configuration and details.
-- DVD writing support, using parts, and a lot of new directives in
- the Device resource of the Storage configuration file.
-- Seven new options keywords in a FileSet resource:
- ignorecase, fstype, hfsplussupport, wilddir, wildfile, regexdir,
- and regexfile. 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.
-
-New Directives:
-- 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.
- 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
- 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,
- so the script could also be in any of the Python system 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.
-- 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.
-
-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.
-
-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.
-- You must either create a new catalog database or upgrade your
- old database (upgrade scripts not yet tested).
-
-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
- 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
-====
+ Release Notes for Bacula 2.2.0
+
+ Bacula code: Total files = 438 Total lines = 154,329 (*.h *.c *.in)
+
+This Director and Storage daemon must be upgraded at the same time,
+but they should be compatible with all 2.0.x File daemons, unless you
+use some of the new features that affect the FD. In other words, you should
+not have to upgrade all your File daemons.
+
+The major features are:
+- First cut of bat (Bacula Administration Tool). Note to build
+ bat you must explicitly enable it on the ./configure line, you
+ must have the Qt4 libraries loaded, and qmake and the other Qt4
+ tools must be available.
+- Red/Black restore in memory tree (500 times faster loading).
+- Much faster insertion of attributes (somewhere around 10 times).
+- The Regex Where code to allow easier relocation of restored files.
+- Socket level heartbeat for all connections (untested).
+- posix_fadvise() use in the FD to improve performance.
+- Simpler locking in the SD in the reservation system.
+- Much improved Volume reservation code that should eliminate most
+ conflicts experienced in multiple drive autochangers.
+- Detection of file size/date change during backup if enabled.
+- New Recycle Pool feature.
+- Efficient implementation of very large include/exclude lists.
+- Volumes are no longer pruned during 'status dir'
+- Pruning is now more efficient, and if a Volume is purged,
+ during pruning, it is immediately discovered.
+
+Other features or bug fixes:
+- Fixed bugs: 846, 809, 772, 822, 825, 824, 808, 802, 797,
+ 798, 795, 789, 791, 788, 780, 763, 782, 612, 767,
+ 775, 621, 772, 764, 766, 621, 761, 755, 750, 741,
+ 747, 742, 744, and 743.
+- Only the minumum number of volumes are pruned rather than
+ all volumes in the pool.
+- wx-console renamed to bwx-console
+- gnome-console renamed to bgnome-console
+- Migration preserves original job's FileSetId
+- Spooling implemented for migration jobs.
+- Config files can be read through a pipe, by specifying a leading |
+ in front of the configuration path/filename.
+- New memory command (bconsole) that will print the current Director's
+ memory usage, and a in use buffer dump.
+- Solaris door and event port files are no longer restored.
+- Console name changed from *Console* to -Console- to accomodate Win32
+ filename restrictions.
+- Corrected Win32 ftruncate bug.
+- Additional version information added to Job reports.
+- New -8 option for bsmtp to specify UTF-8 encoding type.
+- bsmtp will no longer add < > to target (from, to, cc) if there
+ is already a < in the target.
+- Perfer Mounted Volumes extended to mean a volume that is being
+ mounted by another job.
+- Runscript timing set to same as version 1.38.11
+- New TLS Allowed CN directive(s) permitted.
+- New bconsole 'exec' command to run external script/command.
+- Turn on FreeBSD/OpenBSD code to set EOT model on tape.
+- Drop from root done before database is opened.
+- database user and name can be configured with:
+ --with-db-name=name --with-db-user=user
+- turn on wait_for_drive in mtx-changer script.
+- rework how bar codes are handled in mtx-changer script.
+ This appears to have been an unreported bug.
+- Updated nagios plugin supplied by Christian Masopust
+- Better restricted console ACL checking.
+- New Client Connect Wait directive in Storage daemon so that
+ users can configure how long SD waits for FD connection.
+- Bacula will no longer permit pruning of the currently running
+ job (note, if other jobs are running, they may be pruned).
+- Sockets are no longer restored.
+- dbcheck works in 300K chunks so will typically run faster.
+- Include/Exclude lists can now be efficiently handled for quite
+ large sizes -- tens of thousands of entries.
+- Several memory leaks in migration and database usage were fixed.
+- New console keyword restoreclient, which specifies the client to
+ which the restore will be sent. The client keyword specifies
+ the backup client. The restoreclient keyword is optional if it is
+ not specified, the backup client will also be the restore client.
+- The disk file size is now checked to ensure that it agrees with the
+ catalog value before Bacula will append to the disk (same as tape
+ and DVD).