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