]> git.sur5r.net Git - bacula/bacula/blob - bacula/projects
- Applied a patch from Peter Eriksson that removes a dynamic stack
[bacula/bacula] / bacula / projects
1                 
2 Projects:
3                      Bacula Projects Roadmap 
4                        03 August 2004
5
6 Item 1:   Implement Base jobs.
7
8   What:   A base job is sort of like a Full save except that you 
9           will want the FileSet to contain only files that are
10           unlikely to change in the future (i.e.  a snapshot of
11           most of your system after installing it).  After the
12           base job has been run, when you are doing a Full save,
13           you specify one or more Base jobs to be used.  All
14           files that have been backed up in the Base job/jobs but
15           not modified will then be excluded from the backup.
16           During a restore, the Base jobs will be automatically
17           pulled in where necessary.
18
19   Why:    This is something none of the competition does, as far as
20           we know (except BackupPC, which is a Perl program that
21           saves to disk only).  It is big win for the user, it
22           makes Bacula stand out as offering a unique
23           optimization that immediately saves time and money.
24           Basically, imagine that you have 100 nearly identical
25           Windows or Linux machine containing the OS and user
26           files.  Now for the OS part, a Base job will be backed
27           up once, and rather than making 100 copies of the OS,
28           there will be only one.  If one or more of the systems
29           have some files updated, no problem, they will be
30           automatically restored.
31
32   Notes:  Huge savings in tape usage even for a single machine.
33           Will require more resources because the DIR must send
34           FD a list of files/attribs, and the FD must search the
35           list and compare it for each file to be saved.
36
37 Item 2:   Add Regular Expression Matching and Plug-ins to the
38           FileSet Include statements.
39 Done: Regular expression matching.  Plug-ins are not yet started.
40
41   What:   Allow users to specify wild-card and/or regular
42           expressions to be matched in both the Include and
43           Exclude directives in a FileSet.  At the same time,
44           allow users to define plug-ins to be called (based on
45           regular expression/wild-card matching).
46
47   Why:    This would give the users the ultimate ability to control
48           how files are backed up/restored.  A user could write a
49           plug-in knows how to backup his Oracle database without
50           stopping/starting it, for example.
51
52 Item 3:   Implement a Migration job type that will move the job
53           data from one device to another.
54
55   What:   The ability to copy, move, or archive data that is on a
56           device to another device is very important. 
57
58   Why:    An ISP might want to backup to disk, but after 30 days
59           migrate the data to tape backup and delete it from
60           disk.  Bacula should be able to handle this
61           automatically.  It needs to know what was put where,
62           and when, and what to migrate -- it is a bit like
63           retention periods.  Doing so would allow space to be
64           freed up for current backups while maintaining older
65           data on tape drives.
66
67   Notes:  Migration could be triggered by:
68            Number of Jobs
69            Number of Volumes
70            Age of Jobs
71            Highwater size (keep total size)
72            Lowwater mark
73
74
75 Item 4:   Embedded Perl Scripting (precursor to 5).
76
77   What:   On a configuration parameter, embed the Perl language in
78           Bacula.
79
80   Why:    The embedded Perl scripting can be called to implement
81           Events such as "Volume Name needed", "End of Tape",
82           "Tape at x% of rated capacity", "Job started", 
83           "Job Ended", "Job error", ...
84
85   Notes:  This needs Events.
86
87
88 Item 5:   Implement Events
89
90   What:   When a particular user defined Event occurs, call the
91           embedded Perl interpreter.
92
93   Why:    This will provide the ultimate in user customization for
94           Bacula. Almost anything imaginable can be done if Events
95           are called at the appropriate place.
96
97   Notes:  There is a certain amount of work to be done on how
98           the user defines or "registers" events.
99
100
101 Item 6:   Multiple Storage Devices for a Single Job
102 Modifications to SD in progress: 1.35
103
104   What:   Allow any Job to use more than one Storage device.
105
106   Why:    With two devices, for example, the second device could
107           have the next backup tape pre-mounted reducing operator
108           intervention in the middle of the night.
109
110
111 Item  7:  Backup a Single Job Simultaneously to Multiple Storage 
112           Devices
113 Modifications to SD in progress: 1.35
114
115   What:   Make two copies of the backup data at the same time.
116
117   Why:    Large shops typically do this and then take one set of
118           backups off-site.  Some design work it needed in how to
119           specify the type of backup (backup, archive, ...) for
120           each Device.
121
122
123
124 Item  8:  Break the one-to-one Relationship between a Job and a
125           Specific Storage Device (or Devices if #10 is implemented).
126
127   What:   Allow a Job to simply specify one or more MediaType, and
128           the Storage daemon will select a device for it.  In
129           fact, the user should be able to specify one or more
130           MediaType, Storage daemon, and/or device to be used.
131
132   Why:    To allow more flexibility in large shops that have multiple 
133           drives and/or multiple drives of different types.
134
135
136 Item  9:  Implement data encryption (as opposed to communications
137           encryption)
138 Assigned: to Meno Abels (both data and communications encryption).
139
140   What:   Currently the data that is stored on the Volume is not
141           encrypted. For confidentiality, encryption of data at
142           the File daemon level is essential. Note, communications
143           encryption encrypts the data when leaving the File daemon,
144           then decrypts the data on entry to the Storage daemon.
145           Data encryption encrypts the data in the File daemon and
146           decrypts the data in the File daemon during a restore.
147
148   Why:    Large sites require this.
149
150   Notes:  The only algorithm that is needed is AES.
151           http://csrc.nist.gov/CryptoToolkit/aes/
152
153
154 Item 10:  New daemon communication protocol.
155
156   What:   The current daemon to daemon protocol is basically an ASCII
157           printf() and sending the buffer. On the receiving end, the
158           buffer is sscanf()ed to unpack it. The new scheme would
159           retain the current ASCII sending, but would add an 
160           argc, argv like table driven scanner to replace sscanf.
161
162   Why:    Named fields will permit error checking to ensure that
163           what is sent is what the receiver really wants.  The
164           fields can be in any order and additional fields can be
165           ignored allowing better upward compatibility.  Much
166           better checking of the types and values passed can be
167           done.
168
169   Notes:  These are internal improvements in the interest of the
170           long-term stability and evolution of the program.  On
171           the one hand, the sooner they're done, the less code we
172           have to rip up when the time comes to install them.  On
173           the other hand, they don't bring an immediately
174           perceptible benefit to potential users.
175
176
177
178 Completed items from last year's list:
179 Item 1:   Multiple simultaneous Jobs. (done)
180 Item 3:   Write the bscan program -- also write a bcopy program (done).
181 Item 5:   Implement Label templates (done).
182 Item 6:   Write a regression script (done)
183 Item 9:   Add SSL to daemon communications (For now, implement with
184           stunnel)
185 Item 10:  Define definitive tape format (done)
186 Item 3:   GUI for interactive restore. Partially Implemented in 1.34
187           Note, there is now a complete Webmin plugin, a partial
188           GNOME console, and a partial wxWidgets console.
189 Item 4:   GUI for interactive backup
190 Item 2:   Job Data Spooling.