- Release Notes for Bacula 1.37.14
-
- Bacula code: Total files = 422 Total lines = 129,844 (*.h *.c *.in)
-
-Note! The DB has been upgraded from version 8 to 9 and requres
-a DB upgrade.
-
-Major Changes:
-- This version has a new DIR <--> SD protocol. Both must be
- upgraded at the same time. Deamons are not compatible with
- prior versions. All FDs must be upgraded.
-- There is a new database format that is not compatible
- with previous databases.
-- SQLite3 support, but it seems to run at 1/2 to 1/4 the speed of
- SQLite2.
-- Multiple drive autochanger support.
-- Support for ANSI/IBM labels.
-- New communications protocol between DIR and SD to reserve
- drives.
-- 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 thanks
- to Nicolas Boichat.
-- 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.
-- 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)
-- New manual format with an index (thanks to Karl Cunningham).
-- New Web site format (thanks to Michael Scherer).
-- Seeking on disk Volumes during restore.
-
-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 (the PostgreSQL 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.1.28
+
+ Bacula code: Total files = 516 Total lines = 244,888 (*.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. However, bat works only with
+a 2.1.8 Director or greater.
+
+!!!!!!!!!!!!!!!!!!!!!!! Please Note !!!!!!!!!!!!!!!!!!!!!!!!!!!
+Restore on Win32, and in particular on Vista is untested. Please
+test before relying on it. It should backup and restore reparse
+points.
+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+Changes since Beta release 2.1.26
+- Several bug fixes #842, 893, and some unreported bugs.
+- Storage overrides delete all previous storage definitions instead
+ of prepending.
+- One should be able to mount and unmount removable devices if the
+ Device resource has Removeable Media set and the mount and unmount
+ directives are defined.
+- ./configure will do a better job of searching for qwt libraries.
+- The Win32 version can no longer be shutdown from the tray monitor.
+ Use the command line or the Services panne.
+- Make Mac OS X compile work.
+
+Changes since Beta release 2.1.24
+- Add qwt graphics library (for Qt4) needed to build bat to the
+ depkgs-11Jul07.tar.gz package
+- You now need a --with-qwt=<dir> to be able to build bat.
+- Keep prune_volumes() from pruning the whole Scratch pool.
+- More debug output in status storage.
+- Correct moving a Scratch volume from pool to pool (some
+ critical columns were lost).
+- New more efficient db_get_query_dbids() -- not yet implemented
+ everywhere, but currently used in volume pruning.
+
+Changes since Beta release 2.1.22
+- Different locking in reservations and despooling systems,
+ which means more micro-locking and less macro-locking, which
+ should give a lot more concurrency at the expense of slightly
+ (<0.1%) more overhead due to more locking/unlocking, but
+ concurrent jobs should run much faster.
+- Patch from Sergey Svishchev <svs@ropnet.ru> that fixes bug in
+ migration code where a job that spanned two volumes was
+ migrated twice.
+
+Changes since Beta release 2.1.20
+- New graphs in bat
+- Due to a typo, I had inadvertantly turned off batch insert mode.
+ It is now re-enabled
+- Possible fix for bug #888 (dropped comm lines using TLS).
+- Test version of Win32 binaries for Vista.
+
+Changes since Beta release 2.1.18
+- Fixed bug #886 (multidrive autochanger: SD doesn't use drive with
+ loaded tape but uses first drive).
+- Fixed bug #807 Restore encrypted backup failed on Windows 2003
+ This was indeed a Win32 issue.
+
+Changes since Beta release 2.1.12
+- Version 2.1.14 not released.
+- Possible solution to Win32 encryption restore signature errors.
+- Reload with syntax errors in @include now works.
+- Gnome console builds with encryption.
+- Fixed bugs #864, 872, 874, 882, 882, 877, 886, 885.
+- License is now GPL v2 without modifications, fix a few copyright
+ mistakes made when adding FSFE copyright notice.
+- Fix update all from pool to pass pool name.
+- Correct reservation system bug that invalidated Volumes by
+ calling find_next_appendable volume before acquiring a device.
+
+Changes since Beta release 2.1.10
+- Lots of new bat functionality !!!!!!
+- Additional drive reservation algorithm that should solve a lot of
+ the problems experienced with multiple drive autochangers.
+- Reload was broken in 2.1.10 -- now fixed.
+- Storage daemon status command enhanced to more clearly show Volume,
+ pool and media type when a job is waiting.
+- Made bsmtp work with more strict SMTP servers.
+- Detect doubly freed buffers in smartall.c
+- Reduce the impact of a backup on the FD's memory usage (OS file
+ caching). This works only on POSIX compliant systems. This allows
+ users to work with less interference on a Client machine during a
+ backup.
+- bat should now handle non-English characters.
+- ./configure now permits --enable-batch-insert (as well as --disable...).
+ This feature is enabled by default if your SQL libraries are thread
+ safe.
+- The default setting for SQLite3 is now 'PRAGMA synchronous=OFF'.
+ This makes it run 30 times faster, but increases the possiblity
+ of a corrupted database if your server shuts down unexpectedly.
+ The default behavior can be changed in src/version.h
+
+Areas requiring caution or testing:
+- You must have Qt4 Version 4.2 or greater loaded to build bat
+- You must have the thread safe version of MySQL client libraries loaded
+ to build with MySQL enabled.
+- The Volume management in the Storage daemon is extensively rewritten.
+ It appears to function much better, but is largely untested under
+ severe production stress conditions (multiple drive autochangers, ...).
+- Volumes are pruned only when absolutely necessary -- this may cause
+ your database to grow compared to prior Bacula version.
+- Socket level heartbeat is untested.
+- Solaris door and even port files are no longer restored (equivalent
+ to what we do with sockets).
+- Win32 servers are untested, and very likely not to work.
+- SQLite is no longer supported for Solaris -- it fails too often with
+ bus errors.
+
+The major new features are:
+- Much faster insertion of attributes (somewhere around 10 times),
+ many thanks to Eric Bollengier and Marc Cousin.
+- 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 version 4.2 or later libraries loaded, and
+ qmake and the other Qt4 tools must be available. bat is ALPHA
+ software. A large part of the work was done by Dirk Bartley.
+- Red/Black restore in memory tree (500 times faster loading).
+- The Regex Where code to allow easier relocation of restored files
+ thanks to Eric.
+- 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 -- thanks to Eric.
+- 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: 856, 854, 845, 847, 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).