]> git.sur5r.net Git - bacula/bacula/blob - bacula/projects
Update version
[bacula/bacula] / bacula / projects
1                 
2 Projects:
3                      Bacula Projects Roadmap 
4                        10 October 2005
5
6 Below, you will find more information on future projects:
7
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.
11
12   What:   The ability to copy, move, or archive data that is on a
13           device to another device is very important. 
14
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
22           data on tape drives.
23
24   Notes:  Migration could be triggered by:
25            Number of Jobs
26            Number of Volumes
27            Age of Jobs
28            Highwater size (keep total size)
29            Lowwater mark
30
31 Item 2:   Implement a Bacula GUI/management tool using Python
32           and Qt.
33   Status: 
34
35   What:   Implement a Bacula console, and management tools
36           using Python and Qt.
37
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.
48
49 Item 3:   Implement a Python interface to the Bacula catalog.
50   Status: 
51
52   What:   Implement an interface for Python scripts to access
53           the catalog through Bacula.
54
55   Why:    This will permit users to customize Bacula through
56           Python scripts.
57
58 Item 4:   Implement more Python events in Bacula.
59   Status: 
60
61   What:   Allow Python scripts to be called at more places 
62           within Bacula and provide additional access to Bacula
63           internal variables.
64
65   Why:    This will permit users to customize Bacula through
66           Python scripts.
67
68
69 Item 5:   Implement Base jobs.
70   Status: 
71   
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.
82
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.
95
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.
100
101 Item 6:   Add Plug-ins to the FileSet Include statements.
102   Status: Partially coded in 1.37 -- much more to do.
103
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).
109
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.
114
115 Item 7:   Implement huge exclude list support using hashing.
116   Status: 
117
118   What:   Allow users to specify very large exclude list (currently
119           more than about 1000 files is too many).
120
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.
128
129
130 Item  8:  Implement data encryption (as opposed to communications
131           encryption)
132   Status: Landon Fuller is currently working on this.
133                   
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.
139
140   Why:    Large sites require this.
141
142
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).
158
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).