3 Bacula Projects Roadmap
6 Below, you will find more information on future projects:
8 Item 1: Implement a Migration job type that will move the job
9 data from one device to another.
10 Status: Partially coded in 1.37 -- much more to do.
12 What: The ability to copy, move, or archive data that is on a
13 device to another device is very important.
15 Why: An ISP might want to backup to disk, but after 30 days
16 migrate the data to tape backup and delete it from
17 disk. Bacula should be able to handle this
18 automatically. It needs to know what was put where,
19 and when, and what to migrate -- it is a bit like
20 retention periods. Doing so would allow space to be
21 freed up for current backups while maintaining older
24 Notes: Migration could be triggered by:
28 Highwater size (keep total size)
31 Item 2: Implement a Bacula GUI/management tool using Python
35 What: Implement a Bacula console, and management tools
38 Why: Don't we already have a wxWidgets GUI? Yes, but
39 it is written in C++ and changes to the user interface
40 must be hand tailored using C++ code. By developing
41 the user interface using Qt designer, the interface
42 can be very easily updated and most of the new Python
43 code will be automatically created. The user interface
44 changes become very simple, and only the new features
45 must be implement. In addition, the code will be in
46 Python, which will give many more users easy (or easier)
47 access to making additions or modifications.
49 Item 3: Implement a Python interface to the Bacula catalog.
52 What: Implement an interface for Python scripts to access
53 the catalog through Bacula.
55 Why: This will permit users to customize Bacula through
58 Item 4: Implement more Python events in Bacula.
61 What: Allow Python scripts to be called at more places
62 within Bacula and provide additional access to Bacula
65 Why: This will permit users to customize Bacula through
69 Item 5: Implement Base jobs.
72 What: A base job is sort of like a Full save except that you
73 will want the FileSet to contain only files that are
74 unlikely to change in the future (i.e. a snapshot of
75 most of your system after installing it). After the
76 base job has been run, when you are doing a Full save,
77 you specify one or more Base jobs to be used. All
78 files that have been backed up in the Base job/jobs but
79 not modified will then be excluded from the backup.
80 During a restore, the Base jobs will be automatically
81 pulled in where necessary.
83 Why: This is something none of the competition does, as far as
84 we know (except perhpas BackupPC, which is a Perl program that
85 saves to disk only). It is big win for the user, it
86 makes Bacula stand out as offering a unique
87 optimization that immediately saves time and money.
88 Basically, imagine that you have 100 nearly identical
89 Windows or Linux machine containing the OS and user
90 files. Now for the OS part, a Base job will be backed
91 up once, and rather than making 100 copies of the OS,
92 there will be only one. If one or more of the systems
93 have some files updated, no problem, they will be
94 automatically restored.
96 Notes: Huge savings in tape usage even for a single machine.
97 Will require more resources because the DIR must send
98 FD a list of files/attribs, and the FD must search the
99 list and compare it for each file to be saved.
101 Item 6: Add Plug-ins to the FileSet Include statements.
102 Status: Partially coded in 1.37 -- much more to do.
104 What: Allow users to specify wild-card and/or regular
105 expressions to be matched in both the Include and
106 Exclude directives in a FileSet. At the same time,
107 allow users to define plug-ins to be called (based on
108 regular expression/wild-card matching).
110 Why: This would give the users the ultimate ability to control
111 how files are backed up/restored. A user could write a
112 plug-in knows how to backup his Oracle database without
113 stopping/starting it, for example.
115 Item 7: Implement huge exclude list support using hashing.
118 What: Allow users to specify very large exclude list (currently
119 more than about 1000 files is too many).
121 Why: This would give the users the ability to exclude all
122 files that are loaded with the OS (e.g. using rpms
123 or debs). If the user can restore the base OS from
124 CDs, there is no need to backup all those files. A
125 complete restore would be to restore the base OS, then
126 do a Bacula restore. By excluding the base OS files, the
127 backup set will be *much* smaller.
130 Item 8: Implement data encryption (as opposed to communications
132 Status: Landon Fuller is currently working on this.
134 What: Currently the data that is stored on the Volume is not
135 encrypted. For confidentiality, encryption of data at
136 the File daemon level is essential.
137 Data encryption encrypts the data in the File daemon and
138 decrypts the data in the File daemon during a restore.
140 Why: Large sites require this.
143 Items completed for release 1.38.0:
144 #4 Embedded Python Scripting (implemented in all Daemons)
145 #5 Events that call a Python program (Implemented in all
146 daemons, but more cleanup work to be done).
147 #6 Select one from among Multiple Storage Devices for Job.
148 This is already implemented in 1.37.
149 #7 Single Job Writing to Multiple Storage Devices. This is
150 currently implemented with a Clone feature.
151 #- Full multiple drive Autochanger support (done in 1.37)
152 #- Built in support for communications encryption (TLS)
153 done by Landon Fuller.
154 # Support for Unicode characters
155 (via UTF-8) on Win32 machines thanks to Thorsten Engle.
156 Item 8: Break the one-to-one Relationship between a Job and a
157 Specific Storage Device (or Devices if #10 is implemented).
159 Completed items from last year's list:
160 Item 1: Multiple simultaneous Jobs. (done)
161 Item 3: Write the bscan program -- also write a bcopy program (done).
162 Item 5: Implement Label templates (done).
163 Item 6: Write a regression script (done)
164 Item 9: Add SSL to daemon communications (done by Landon Fuller)
165 Item 10: Define definitive tape format (done)
166 Item 3: GUI for interactive restore. Partially Implemented in 1.34
167 Note, there is now a complete Webmin plugin, a partial
168 GNOME console, and an excellent wx-console GUI.
169 Item 4: GUI for interactive backup
170 Item 2: Job Data Spooling.
171 Done: Regular expression matching.
172 Item 10: New daemon communication protocol (this has been dropped).