2 Release Notes for Bacula 1.37.3
4 Bacula code: Total files = 411 Total lines = 122,189 (*.h *.c *.in)
8 - This version has a new database format that is not compatible
9 with previous databases. The upgrade scripts should work, but
10 they are not yet tested.
11 - SQLite3 support, but it seems to run at 1/2 to 1/4 the speed of
13 - First cut at ANSI labels.
14 - New communications protocol between DIR and SD to reserve
15 drives. The DIR and SD are no longer compatible with 1.36 or
17 - Preliminary Python Event support has been added. See below for
18 configuration and details.
19 - DVD writing support, using parts, and a lot of new directives in
20 the Device resource of the Storage configuration file.
21 - Seven new options keywords in a FileSet resource:
22 ignorecase, fstype, hfsplussupport, wilddir, wildfile, regexdir,
23 and regexfile. See below for details.
26 - New Options keywords in a FileSet directive:
28 Will do a wild card match against directories (files will not
31 Will do a wild card match against files (directories will not
34 Will do a regular expression match against directories (files
37 Will do a regular expression match against files( directories
39 - IgnoreCase = yes | no
40 Will ignore case in wild card and regular expression matches.
41 This is handy for Windows where filename case is not significant.
43 where string is a filesystem type: ext2, jfs, ntfs, proc,
44 reiserfs, xfs, usbdevfs, sysfs, smbfs, iso9660. For ext3
45 systems, use ext2. You may have multiple fstype directives
46 and thus permit multiple filesystem types. If the type
47 specified on the fstype directive does not match the
48 filesystem for a particular directive, that directory will
49 not be backed up. This directive can be used to prevent
50 backing up non-local filesystems.
51 - HFS Plus Support = yes | no
52 If set, Mac OS X resource forks will be saved and restored.
53 - Label Type = ANSI | IBM | Bacula
54 Implemented in Director Pool resource and in SD Device resource.
55 If it is specified in the SD Device resource, it will take
56 precedence over the value passed from the Director to the SD.
57 IBM is not yet implemented.
58 - Check Labels = yes | no
59 Implemented in the SD Device resource. If you intend to read
60 ANSI or IBM labels, this *must* be set. Even if the volume
61 is not ANSI labeled, you can set this to yes, and Bacula will
63 - Scripts Directory = <directory> name. Defines the directory from
64 which Bacula scripts will be called for events. In fact, Bacula
65 appends this name to the standard Python list of search directories,
66 so the script could also be in any of the Python system directories.
67 - In FileSet, you can exclude backing up of hardlinks (if you have
68 a lot, it can be very expensive), by using:
70 in the Options section. Patch supplied by David R Bosso. Thanks.
71 - MaximumPartSize = bytes (SD, Device resource)
72 Defines the maximum part size.
73 - Requires Mount = Yes/No (SD, Device resource)
74 Defines if the device require to be mounted to be read, and if it
75 must be written in a special way. If it set, the following directives
76 must be defined in the same Device resource:
77 + Mount Point = directory
78 Directory where the device must be mounted.
79 + Mount Command = name-string
80 Command that must be executed to mount the device. Before the command
81 is executed, %a is replaced with the Archive Device, and %m with the
83 + Unmount Command = name-string
84 Command that must be executed to unmount the device. Before the
85 command is executed, %a is replaced with the Archive Device, and
86 %m with the Mount Point.
87 + Write Part Command = name-string
88 Command that must be executed to write a part to the device. Before
89 the command is executed, %a is replaced with the Archive Device, %m
90 with the Mount Point, %n with the current part number (0-based),
91 and %v with the current part filename.
92 + Free Space Command = name-string
93 Command that must be executed to check how much free space is left
94 on the device. Before the command is executed, %a is replaced with
95 the Archive Device, %m with the Mount Point, %n with the current part
96 number (0-based), and %v with the current part filename.
97 - Write Part After Job = Yes/No (DIR, Job Resource, and Schedule Resource)
98 If this directive is set to yes (default no), a new part file will be
99 created after the job is finished.
102 - "python restart" restarts the Python interpreter. Rather brutal, make
103 sure no Python scripts are running. This permits you to change
104 a Python script and get Bacula to use the new script.
107 - You must add --with-python=[DIR] to the configure command line
108 if you want Python support. Python 2.2 and 2.3 should be automatically
109 detected if in the standard place.
110 - With Python 2.2 version, the link of the Director gets a few linker
111 warnings due to the fact that Python pulls in some old non-secure
113 - With Python 2.3, there are a few compiler warnings.
114 - You must either create a new catalog database or upgrade your
115 old database (upgrade scripts not yet tested).
118 - 2 new scripts, dvd-writepart and dvd-freespace, in the scripts directory,
119 which are designed to be used as parameters to Write Part Command and
120 Free Space Command. They need the dvd+rw-tools to be installed
121 (http://fy.chalmers.se/~appro/linux/DVD+RW/).
122 - Part files support: File volumes can now be splitted in multiple
123 files, called "parts".
124 - Python scripting support:
125 A Python script will be called at particular points or conditions
126 in Bacula called Events. The currently defined Events are called:
128 StartJob, EndJob, NewVolume
130 Where StartJob is called before the RunBeforeJob, EndJob is called
131 after RunAfterJob, and NewVolume, is called before all other
132 "methods" of obtaining a new Volume name, when one is needed.
134 The Python script of the same name as the Event name (but with a .py)
135 is called from the Scripts Directory (a directive defined in the
136 Director resource). Note, both the Filename, and the name of
137 the function in the file must correspond to the Event name.
139 Once the Python script gets control, it can have access to Bacula
144 The script is called with one argument, typically called j. This
145 argument *must* be passed unchanged to each bacula function. The
146 format of the call is slightly different for reading Bacula
147 variable and for writing bacula variables. See below.
149 Bacula variables can be read with:
151 bacula.get(j, "Variable-name")
153 where j is the argument passed to the function, and Variable-name
154 is on of the following:
156 JobId, Client, Pool, Storage, Catalog, MediaType, NumVols, DirName,
157 Level, Type, Job, JobName, JobStatus
159 Bacula varibles can be set using Python keyword arguments:
161 bacula.set(jcr=j, VolumeName="xyz")
163 The two currently implemented writable "variables" are:
165 VolumeName and JobReport
167 It is possible to submit a Bacula run command with the following:
169 bacula.run(j, "run kernsave client=Matou storage=File")
171 this function returns the JobId of the job that was started. If
172 there is an error, the return value is zero.
176 == File EndJob.py ===
180 jobid = bacula.get(j, "JobId")
181 client = bacula.get(j, "Client")
182 bacula.set(jcr=j, JobReport="EndJob output: JobId=%d Client=%s.\n" % (jobid, client))
184 startid = bacula.run(j, "run kernsave")
185 print "Python started jobid=", startid
190 == File NewVolume.py ===
194 jobid = bacula.get(j, "JobId")
195 print "JobId=", jobid
196 client = bacula.get(j, "Client")
197 print "Client=" + client
198 numvol = bacula.get(j, "NumVols");
199 print "NumVols=", numvol
200 bacula.set(jcr=j, JobReport="New Volume set for Job.\n")
201 bacula.set(jcr=j, VolumeName="TestA-001")