- Release Notes for Bacula 1.37.6
-
- Bacula code: Total files = 414 Total lines = 123,723 (*.h *.c *.in)
-
-
-Major Changes:
-- 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.
-- Preliminary 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.
-
-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".
-- 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 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:
-
- JobId, 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
-
- It is possible to submit a Bacula run command with the following:
-
- bacula.run(j, "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(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))
- if (jobid < 5) :
- startid = bacula.run(j, "run kernsave")
- print "Python started jobid=", startid
-
- 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
-====
+ Release Notes for Bacula 3.0.2
+
+ Bacula code: Total files = 1,009 Total lines = 205,726 (Using SLOCCount)
+
+Note, if you are not already running 3.0.x, read the 3.0.x release notes
+below. Important!!!
+
+Version 3.0.2 is primarily a important bug fix update to version 3.0.1 with
+some enhancements (see below).
+
+Changes since 3.0.1:
+
+Bug fixes:
+ 1029, 1285, 1298, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1311, 1315
+ 1317, 1318, 1323, 1325, 1331, 1333, 1335
+
+Fixed:
+ - Fix problem with the Postgresql driver that sometime displays <NULL> values
+ - Cleanup old job records when starting the Director
+ - Fix bugs in xattr code
+ - Fix encoding problem with Postgresql
+ - Fix that prevents restore by file selection from using Copy job
+
+Enhancements:
+ - Security enhancement for the File Daemon
+ - New directive to specify source address for outgoing connexions
+ - Show volume availability in autochanger when doing restore.
+ This is project 31 in the projects file.
+ - Add accurate=yes/no option to estimate command
+ - Add --with-hostname, --with-bsrdir, --with-logdir to ./configure
+ - Add a restore menu that contructs a full restore when entering a JobId.
+ This is project 2 in the projects file.
+ - Add new Nagios plugin
+
+Compatibility:
+Like always, both the Director and Storage daemon must be upgraded at
+the same time.
+
+Older 3.0.x and possibly 2.4.x File Daemons are compatible with the 3.0.2
+Director and Storage daemons. It should be no need to upgrade older File
+Daemon.
+
+============ Documentation improvements needed ==================
+
+Note!!!!! The 3.0.0+ documentation needs rather extensive modifications in the
+following areas:
+
+1. Missing documentation.
+2. Correction of links within various manuals -- most fail.
+3. Integration of the new features into the main documents.
+4. Much more.
+
+The documentation will not be completed in the near future due to lack
+manpower. If you are unhappy with this situation as we are, we suggest
+you help by submitting patches to the documentation. Thanks.
+=====
+
+================== 3.0.1 Release Notes ========================
+
+Version 3.0.1 is primarily a minor bug fix update to version 3.0.0 with
+one enhancement.
+
+================== 3.0.0 Release Notes ========================
+
+The diff between 2.4.4 and 2.5.x is 208,340 lines, so this release
+represents an enormous effort.
+
+This Director and Storage daemon must be upgraded at the same time,
+but they should be compatible with all 2.4.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 when you upgrade. However, any
+release of version 2.5.40 or greater requires a database upgrade.
+
+================== Warning !!!!!! ==========================
+New Catalog format in version 3.0.0 (2.5.40 or later)
+-----------------------------------------------------
+
+This release of Bacula uses a new catalog format. We provide a set of
+scripts that permit to convert a 2.4.x (version 10) catalog to 3.0.0 (version
+11). The Bacula project rpms distributed on Source Forge will automatically
+detect the database change and do the upgrade for you. We strongly
+recommend that you save a copy of your existing database before upgrading
+using rpms.
+
+The simplest way to upgrade the database assuming you are building from
+source:
+1. Stop any current version of Bacula from running.
+2. Save a copy of your existing database.
+3. Configure, build, and install the 3.0.0 version of Bacula
+ Note the new ./configure options in the manuals see the link
+ at the bottom of this file.
+4. cd <your-scripts-installation-directory>
+5. ./update_bacula_tables
+6. If you have multiple catalogs, edit the update_bacula_tables
+ script and put the name of another database, and then
+ execute the script again. Repeat this until all Bacula
+ catalogs have been updated.
+7. Start the new Bacula. If everything worked, it should
+ not print any error messages.
+
+The upgrade operation will convert the FileId index field of the File table
+from 32 bits to 64 bits. This operation will take TIME and will *temporarily*
+DOUBLE THE SIZE of your catalog. Bacula must be shutdown during this update,
+so, won't be able to run jobs during this period. For example, a 3 million files
+catalog will take 2 mins to upgrade on a normal machine. Don't forget to
+backup it before executing the script.
+
+If you start from scratch, you don't need to run the update_bacula_tables
+script because the create_bacula_tables script automatically creates the new
+table format. However, if you are using a version of Bacula older than 2.5.40
+(e.g. 2.4.4) then you need to run the update_bacula_tables script that will
+be found in the <bacula>/src/cats directory after you run the ./configure
+command. As mentioned above, before running this script, please backup your
+catalog database, and when you do running it, be sure shutdown Bacula and be
+aware that running the script can take some time depending on your database
+size.
+
+
+Important New configure options :
+----------------------
+
+This release of Bacula 3.0.0 uses libtool by default
+to generate the Bacula libraries as shared objects rather than
+being directly linked in as in prior versions. This means that
+the Bacula shared objects, must either be in a shared object
+directory known to the loader or they must be in the directory
+where the Bacula binaries are installed. It is also possible
+to explicitly specify the libraries directory on the ./configure
+line (--libdir=/full-path/dir), but this should not be necessary.
+
+ ./configure --libdir=<full-path>
+
+If you have problems with libtool or you wish to use the old
+way of building libraries and linking them into Bacula, you
+can do so by disabling libtool on the configure command line with:
+
+ ./configure --disable-libtool
+
+During the installation of Bacula 3.0.0, it will now install
+bat help files (if you have configured bat). These files
+are placed in /usr/share/doc/bacula/html by default. If you
+want to put them elsewhere use:
+
+ ./configure --htmldir=<full-path>
+
+During the installation of Bacula, it will now install the
+ReleaseNotes, License, technotes, ChangeLog, and similar
+files in /usr/share/doc/bacula by default. If you
+want to put them elsewhere use:
+
+ ./configure --docdir=<full-path>
+
+During the installation of Bacula, any plugins will be
+installed in the plugindir, which is by default the
+same as libdir (/usr/lib). You can specify an alternate
+location with:
+
+ ./configure --with-plugindir=<full-path>
+
+==============================================================
+
+This release includes large number of new features and changes.
+It should be more or less compatible with previous xx.conf files
+and File daemons providing that you are not using any of the new
+features.
+
+Please see the New Features chapter of the new manual, which documents
+some but not all the new features (we are still working on it):
+
+http://www.bacula.org/manuals/en/concepts/concepts/New_Features.html
+
+
+
+
+The ChangeLog has more details.