]> git.sur5r.net Git - bacula/docs/blob - docs/home-page/pages/projects.php
Update FOSDEM talk
[bacula/docs] / docs / home-page / pages / projects.php
1 <? require_once("inc/header.php"); ?>
2 <table>
3 </tr>
4 <tr>
5         <td class="content">
6
7 <pre>
8                 
9                 
10                 
11 Projects:
12                      Bacula Projects Roadmap 
13                     Status updated 12 January 2007
14
15 Summary:
16 Item  1:  Accurate restoration of renamed/deleted files
17 Item  2:  Implement a Bacula GUI/management tool.
18 Item  3:  Implement Base jobs.
19 Item  4:  Implement from-client and to-client on restore command line.
20 Item  5:  Implement creation and maintenance of copy pools
21 Item  6:  Merge multiple backups (Synthetic Backup or Consolidation).
22 Item  7:  Deletion of Disk-Based Bacula Volumes
23 Item  8:  Implement a Python interface to the Bacula catalog.
24 Item  9:  Archival (removal) of User Files to Tape
25 Item 10:  Add Plug-ins to the FileSet Include statements.
26 Item 11:  Implement more Python events in Bacula.
27 Item 12:  Quick release of FD-SD connection after backup.
28 Item 13:  Implement huge exclude list support using hashing.
29 Item 14:  Allow skipping execution of Jobs
30 Item 15:  Tray monitor window cleanups
31 Item 16:  Split documentation
32 Item 17:  Automatic promotion of backup levels
33 Item 18:  Add an override in Schedule for Pools based on backup types.
34 Item 10:  An option to operate on all pools with update vol parameters
35 Item 20:  Include JobID in spool file name
36 Item 21:  Include timestamp of job launch in "stat clients" output
37 Item 22:  Message mailing based on backup types
38 Item 23:  Allow inclusion/exclusion of files in a fileset by creation/mod times
39 Item 24:  Add a scheduling syntax that permits weekly rotations
40 Item 25:  Improve Bacula's tape and drive usage and cleaning management.
41 Item 26:  Implement support for stacking arbitrary stream filters, sinks.
42 Item 27:  Allow FD to initiate a backup
43 Item 28:  Directive/mode to backup only file changes, not entire file
44 Item 29:  Automatic disabling of devices
45 Item 30:  Incorporation of XACML2/SAML2 parsing
46 Item 31:  Clustered file-daemons
47 Item 32:  Commercial database support
48 Item 33:  Archive data
49 Item 34:  Filesystem watch triggered backup.
50 Item 35:  Implement multiple numeric backup levels as supported by dump
51 Item 36:  Implement a server-side compression feature
52 Item 37:  Cause daemons to use a specific IP address to source communications
53 Item 38:  Multiple threads in file daemon for the same job
54 Item 39:  Restore only file attributes (permissions, ACL, owner, group...)
55 Item 40:  Add an item to the restore option where you can select a pool
56
57 Below, you will find more information on future projects:
58
59 Item  1:  Accurate restoration of renamed/deleted files
60   Date:   28 November 2005
61   Origin: Martin Simmons (martin at lispworks dot com)
62   Status: Robert Nelson will implement this
63
64   What:   When restoring a fileset for a specified date (including "most
65           recent"), Bacula should give you exactly the files and directories
66           that existed at the time of the last backup prior to that date.
67
68           Currently this only works if the last backup was a Full backup.
69           When the last backup was Incremental/Differential, files and
70           directories that have been renamed or deleted since the last Full
71           backup are not currently restored correctly.  Ditto for files with
72           extra/fewer hard links than at the time of the last Full backup.
73
74   Why:    Incremental/Differential would be much more useful if this worked.
75
76   Notes:  Merging of multiple backups into a single one seems to
77           rely on this working, otherwise the merged backups will not be
78           truly equivalent to a Full backup.  
79
80           Kern: notes shortened. This can be done without the need for 
81           inodes. It is essentially the same as the current Verify job,
82           but one additional database record must be written, which does 
83           not need any database change.
84
85           Kern: see if we can correct restoration of directories if
86           replace=ifnewer is set.  Currently, if the directory does not
87           exist, a "dummy" directory is created, then when all the files
88           are updated, the dummy directory is newer so the real values
89           are not updated.
90
91 Item  2:  Implement a Bacula GUI/management tool.
92   Origin: Kern
93   Date:   28 October 2005
94   Status:         
95
96   What:   Implement a Bacula console, and management tools
97           probably using Qt3 and C++.
98
99   Why:    Don't we already have a wxWidgets GUI?  Yes, but
100           it is written in C++ and changes to the user interface
101           must be hand tailored using C++ code. By developing
102           the user interface using Qt designer, the interface
103           can be very easily updated and most of the new Python       
104           code will be automatically created.  The user interface
105           changes become very simple, and only the new features
106           must be implement.  In addition, the code will be in
107           Python, which will give many more users easy (or easier)
108           access to making additions or modifications.
109
110  Notes:   There is a partial Python-GTK implementation
111           Lucas Di Pentima <lucas at lunix dot com dot ar> but
112           it is no longer being developed.
113
114
115 Item  3:  Implement Base jobs.
116   Date:   28 October 2005
117   Origin: Kern
118   Status: 
119   
120   What:   A base job is sort of like a Full save except that you 
121           will want the FileSet to contain only files that are
122           unlikely to change in the future (i.e.  a snapshot of
123           most of your system after installing it).  After the
124           base job has been run, when you are doing a Full save,
125           you specify one or more Base jobs to be used.  All
126           files that have been backed up in the Base job/jobs but
127           not modified will then be excluded from the backup.
128           During a restore, the Base jobs will be automatically
129           pulled in where necessary.
130
131   Why:    This is something none of the competition does, as far as
132           we know (except perhaps BackupPC, which is a Perl program that
133           saves to disk only).  It is big win for the user, it
134           makes Bacula stand out as offering a unique
135           optimization that immediately saves time and money.
136           Basically, imagine that you have 100 nearly identical
137           Windows or Linux machine containing the OS and user
138           files.  Now for the OS part, a Base job will be backed
139           up once, and rather than making 100 copies of the OS,
140           there will be only one.  If one or more of the systems
141           have some files updated, no problem, they will be
142           automatically restored.
143
144   Notes:  Huge savings in tape usage even for a single machine.
145           Will require more resources because the DIR must send
146           FD a list of files/attribs, and the FD must search the
147           list and compare it for each file to be saved.
148
149 Item  4:  Implement from-client and to-client on restore command line.
150    Date:  11 December 2006
151   Origin: Discussion on Bacula-users entitled 'Scripted restores to
152           different clients', December 2006 
153   Status: New feature request
154  
155   What:   While using bconsole interactively, you can specify the client
156           that a backup job is to be restored for, and then you can
157           specify later a different client to send the restored files
158           back to. However, using the 'restore' command with all options
159           on the command line, this cannot be done, due to the ambiguous
160           'client' parameter. Additionally, this parameter means different
161           things depending on if it's specified on the command line or
162           afterwards, in the Modify Job screens.
163  
164      Why: This feature would enable restore jobs to be more completely
165           automated, for example by a web or GUI front-end.
166  
167    Notes: client can also be implied by specifying the jobid on the command
168           line
169
170 Item  5:  Implement creation and maintenance of copy pools
171   Date:   27 November 2005
172   Origin: David Boyes (dboyes at sinenomine dot net)
173   Status:
174
175   What:   I would like Bacula to have the capability to write copies
176           of backed-up data on multiple physical volumes selected
177           from different pools without transferring the data
178           multiple times, and to accept any of the copy volumes
179           as valid for restore.
180
181   Why:    In many cases, businesses are required to keep offsite
182           copies of backup volumes, or just wish for simple
183           protection against a human operator dropping a storage
184           volume and damaging it. The ability to generate multiple
185           volumes in the course of a single backup job allows
186           customers to simple check out one copy and send it
187           offsite, marking it as out of changer or otherwise
188           unavailable. Currently, the library and magazine
189           management capability in Bacula does not make this process
190           simple.
191
192           Restores would use the copy of the data on the first
193           available volume, in order of copy pool chain definition.
194
195           This is also a major scalability issue -- as the number of
196           clients increases beyond several thousand, and the volume
197           of data increases, transferring the data multiple times to
198           produce additional copies of the backups will become
199           physically impossible due to transfer speed
200           issues. Generating multiple copies at server side will
201           become the only practical option. 
202
203   How:    I suspect that this will require adding a multiplexing
204           SD that appears to be a SD to a specific FD, but 1-n FDs
205           to the specific back end SDs managing the primary and copy
206           pools.  Storage pools will also need to acquire parameters
207           to define the pools to be used for copies. 
208
209   Notes:  I would commit some of my developers' time if we can agree
210           on the design and behavior. 
211
212 Item  6:  Merge multiple backups (Synthetic Backup or Consolidation).
213   Origin: Marc Cousin and Eric Bollengier 
214   Date:   15 November 2005
215   Status: Waiting implementation. Depends on first implementing 
216           project Item 2 (Migration) which is now done.
217
218   What:   A merged backup is a backup made without connecting to the Client.
219           It would be a Merge of existing backups into a single backup.
220           In effect, it is like a restore but to the backup medium.
221
222           For instance, say that last Sunday we made a full backup.  Then
223           all week long, we created incremental backups, in order to do
224           them fast.  Now comes Sunday again, and we need another full.
225           The merged backup makes it possible to do instead an incremental
226           backup (during the night for instance), and then create a merged
227           backup during the day, by using the full and incrementals from
228           the week.  The merged backup will be exactly like a full made
229           Sunday night on the tape, but the production interruption on the
230           Client will be minimal, as the Client will only have to send
231           incrementals.
232
233           In fact, if it's done correctly, you could merge all the
234           Incrementals into single Incremental, or all the Incrementals
235           and the last Differential into a new Differential, or the Full,
236           last differential and all the Incrementals into a new Full
237           backup.  And there is no need to involve the Client.
238
239   Why:    The benefit is that :
240           - the Client just does an incremental ;
241           - the merged backup on tape is just as a single full backup,
242             and can be restored very fast.
243
244           This is also a way of reducing the backup data since the old
245           data can then be pruned (or not) from the catalog, possibly
246           allowing older volumes to be recycled
247
248 Item  7:  Deletion of Disk-Based Bacula Volumes
249   Date:   Nov 25, 2005
250   Origin: Ross Boylan <RossBoylan at stanfordalumni dot org> (edited
251           by Kern)
252   Status:         
253
254    What:  Provide a way for Bacula to automatically remove Volumes
255           from the filesystem, or optionally to truncate them.
256           Obviously, the Volume must be pruned prior removal.
257
258   Why:    This would allow users more control over their Volumes and
259           prevent disk based volumes from consuming too much space.
260
261   Notes:  The following two directives might do the trick:
262
263           Volume Data Retention = <time period>
264           Remove Volume After = <time period>
265
266           The migration project should also remove a Volume that is
267           migrated. This might also work for tape Volumes.
268
269 Item  8:  Implement a Python interface to the Bacula catalog.
270   Date:   28 October 2005
271   Origin: Kern
272   Status: 
273
274   What:   Implement an interface for Python scripts to access
275           the catalog through Bacula.
276
277   Why:    This will permit users to customize Bacula through
278           Python scripts.
279
280 Item  9:  Archival (removal) of User Files to Tape
281
282   Date:   Nov. 24/2005 
283
284   Origin: Ray Pengelly [ray at biomed dot queensu dot ca
285   Status: 
286
287   What:   The ability to archive data to storage based on certain parameters
288           such as age, size, or location.  Once the data has been written to
289           storage and logged it is then pruned from the originating
290           filesystem. Note! We are talking about user's files and not
291           Bacula Volumes.
292
293   Why:    This would allow fully automatic storage management which becomes
294           useful for large datastores.  It would also allow for auto-staging
295           from one media type to another.
296
297           Example 1) Medical imaging needs to store large amounts of data.
298           They decide to keep data on their servers for 6 months and then put
299           it away for long term storage.  The server then finds all files
300           older than 6 months writes them to tape.  The files are then removed
301           from the server.
302
303           Example 2) All data that hasn't been accessed in 2 months could be
304           moved from high-cost, fibre-channel disk storage to a low-cost
305           large-capacity SATA disk storage pool which doesn't have as quick of
306           access time.  Then after another 6 months (or possibly as one
307           storage pool gets full) data is migrated to Tape.
308
309 Item 10:  Add Plug-ins to the FileSet Include statements.
310   Date:   28 October 2005
311   Origin:
312   Status: Partially coded in 1.37 -- much more to do.
313
314   What:   Allow users to specify wild-card and/or regular
315           expressions to be matched in both the Include and
316           Exclude directives in a FileSet.  At the same time,
317           allow users to define plug-ins to be called (based on
318           regular expression/wild-card matching).
319
320   Why:    This would give the users the ultimate ability to control
321           how files are backed up/restored.  A user could write a
322           plug-in knows how to backup his Oracle database without
323           stopping/starting it, for example.
324
325 Item 11:  Implement more Python events in Bacula.
326   Date:   28 October 2005
327   Origin: Kern
328   Status: 
329
330   What:   Allow Python scripts to be called at more places 
331           within Bacula and provide additional access to Bacula
332           internal variables.
333
334   Why:    This will permit users to customize Bacula through
335           Python scripts.
336
337   Notes:  Recycle event
338           Scratch pool event
339           NeedVolume event
340           MediaFull event
341            
342           Also add a way to get a listing of currently running
343           jobs (possibly also scheduled jobs).
344
345
346 Item 12:  Quick release of FD-SD connection after backup.
347   Origin: Frank Volf (frank at deze dot org)
348   Date:   17 November 2005
349   Status:
350
351    What:  In the Bacula implementation a backup is finished after all data
352           and attributes are successfully written to storage.  When using a
353           tape backup it is very annoying that a backup can take a day,
354           simply because the current tape (or whatever) is full and the
355           administrator has not put a new one in.  During that time the
356           system cannot be taken off-line, because there is still an open
357           session between the storage daemon and the file daemon on the
358           client.
359
360           Although this is a very good strategy for making "safe backups"
361           This can be annoying for e.g.  laptops, that must remain
362           connected until the backup is completed.
363
364           Using a new feature called "migration" it will be possible to
365           spool first to harddisk (using a special 'spool' migration
366           scheme) and then migrate the backup to tape.
367
368           There is still the problem of getting the attributes committed.
369           If it takes a very long time to do, with the current code, the
370           job has not terminated, and the File daemon is not freed up.  The
371           Storage daemon should release the File daemon as soon as all the
372           file data and all the attributes have been sent to it (the SD).
373           Currently the SD waits until everything is on tape and all the
374           attributes are transmitted to the Director before signaling
375           completion to the FD. I don't think I would have any problem
376           changing this.  The reason is that even if the FD reports back to
377           the Dir that all is OK, the job will not terminate until the SD
378           has done the same thing -- so in a way keeping the SD-FD link
379           open to the very end is not really very productive ...
380
381    Why:   Makes backup of laptops much faster.
382
383
384
385 Item 13:  Implement huge exclude list support using hashing.
386   Date:   28 October 2005
387   Origin: Kern
388   Status: 
389
390   What:   Allow users to specify very large exclude list (currently
391           more than about 1000 files is too many).
392
393   Why:    This would give the users the ability to exclude all
394           files that are loaded with the OS (e.g. using rpms
395           or debs). If the user can restore the base OS from
396           CDs, there is no need to backup all those files. A
397           complete restore would be to restore the base OS, then
398           do a Bacula restore. By excluding the base OS files, the
399           backup set will be *much* smaller.
400
401
402 Item 14:  Allow skipping execution of Jobs
403   Date:   29 November 2005
404   Origin: Florian Schnabel <florian.schnabel at docufy dot de>
405   Status:
406
407     What: An easy option to skip a certain job  on a certain date.
408      Why: You could then easily skip tape backups on holidays.  Especially
409           if you got no autochanger and can only fit one backup on a tape
410           that would be really handy, other jobs could proceed normally
411           and you won't get errors that way.
412
413
414 Item 15:  Tray monitor window cleanups
415   Origin: Alan Brown ajb2 at mssl dot ucl dot ac dot uk
416   Date:   24 July 2006
417   Status:
418   What:   Resizeable and scrollable windows in the tray monitor.
419
420   Why:    With multiple clients, or with many jobs running, the displayed
421           window often ends up larger than the available screen, making
422           the trailing items difficult to read.
423
424
425 Item 16:  Split documentation
426   Origin: Maxx <maxxatworkat gmail dot com>
427   Date:   27th July 2006
428   Status:
429
430   What:   Split documentation in several books
431
432   Why:    Bacula manual has now more than 600 pages, and looking for
433           implementation details is getting complicated.  I think
434           it would be good to split the single volume in two or
435           maybe three parts:
436
437           1) Introduction, requirements and tutorial, typically
438              are useful only until first installation time
439
440           2) Basic installation and configuration, with all the
441              gory details about the directives supported 3)
442              Advanced Bacula: testing, troubleshooting, GUI and
443              ancillary programs, security managements, scripting,
444              etc.
445
446
447
448 Item 17:  Automatic promotion of backup levels
449    Date:  19 January 2006
450   Origin: Adam Thornton <athornton@sinenomine.net>
451   Status: 
452
453     What: Amanda has a feature whereby it estimates the space that a  
454           differential, incremental, and full backup would take.  If the  
455           difference in space required between the scheduled level and the next  
456           level up is beneath some user-defined critical threshold, the backup  
457           level is bumped to the next type.  Doing this minimizes the number of  
458           volumes necessary during a restore, with a fairly minimal cost in  
459           backup media space.
460
461     Why:  I know at least one (quite sophisticated and smart) user  
462           for whom the absence of this feature is a deal-breaker in terms of  
463           using Bacula; if we had it it would eliminate the one cool thing  
464           Amanda can do and we can't (at least, the one cool thing I know of).
465
466
467 Item 18:  Add an override in Schedule for Pools based on backup types.
468 Date:     19 Jan 2005
469 Origin:   Chad Slater <chad.slater@clickfox.com>
470 Status: 
471                                                 
472   What:   Adding a FullStorage=BigTapeLibrary in the Schedule resource
473           would help those of us who use different storage devices for different
474           backup levels cope with the "auto-upgrade" of a backup.
475
476   Why:    Assume I add several new device to be backed up, i.e. several
477           hosts with 1TB RAID.  To avoid tape switching hassles, incrementals are
478           stored in a disk set on a 2TB RAID.  If you add these devices in the
479           middle of the month, the incrementals are upgraded to "full" backups,
480           but they try to use the same storage device as requested in the
481           incremental job, filling up the RAID holding the differentials.  If we
482           could override the Storage parameter for full and/or differential
483           backups, then the Full job would use the proper Storage device, which
484           has more capacity (i.e. a 8TB tape library.
485
486 Item 19:  An option to operate on all pools with update vol parameters
487   Origin: Dmitriy Pinchukov <absh@bossdev.kiev.ua>
488    Date:  16 August 2006
489   Status:
490
491    What:  When I do update -> Volume parameters -> All Volumes
492           from Pool, then I have to select pools one by one.  I'd like
493           console to have an option like "0: All Pools" in the list of
494           defined pools.
495
496    Why:   I have many pools and therefore unhappy with manually
497           updating each of them using update -> Volume parameters -> All
498           Volumes from Pool -> pool #.
499
500
501
502 Item 20:  Include JobID in spool file name ****DONE****
503   Origin: Mark Bergman <mark.bergman@uphs.upenn.edu>
504   Date:   Tue Aug 22 17:13:39 EDT 2006
505   Status: Done. (patches/testing/project-include-jobid-in-spool-name.patch)
506           No need to vote for this item.
507
508   What:   Change the name of the spool file to include the JobID
509
510   Why:    JobIDs are the common key used to refer to jobs, yet the 
511           spoolfile name doesn't include that information. The date/time
512           stamp is useful (and should be retained).
513
514
515
516 Item 21:  Include timestamp of job launch in "stat clients" output
517   Origin: Mark Bergman <mark.bergman@uphs.upenn.edu>
518   Date:   Tue Aug 22 17:13:39 EDT 2006
519   Status:
520
521   What:   The "stat clients" command doesn't include any detail on when
522           the active backup jobs were launched.
523
524   Why:    Including the timestamp would make it much easier to decide whether
525           a job is running properly. 
526
527   Notes:  It may be helpful to have the output from "stat clients" formatted 
528           more like that from "stat dir" (and other commands), in a column
529           format. The per-client information that's currently shown (level,
530           client name, JobId, Volume, pool, device, Files, etc.) is good, but
531           somewhat hard to parse (both programmatically and visually), 
532           particularly when there are many active clients.
533
534
535
536 Item 22:  Message mailing based on backup types
537  Origin:  Evan Kaufman <evan.kaufman@gmail.com>
538    Date:  January 6, 2006
539  Status:
540
541    What:  In the "Messages" resource definitions, allowing messages
542           to be mailed based on the type (backup, restore, etc.) and level
543           (full, differential, etc) of job that created the originating
544           message(s).
545
546  Why:     It would, for example, allow someone's boss to be emailed
547           automatically only when a Full Backup job runs, so he can
548           retrieve the tapes for offsite storage, even if the IT dept.
549           doesn't (or can't) explicitly notify him.  At the same time, his
550           mailbox wouldnt be filled by notifications of Verifies, Restores,
551           or Incremental/Differential Backups (which would likely be kept
552           onsite).
553
554  Notes:   One way this could be done is through additional message types, for example:
555
556    Messages {
557      # email the boss only on full system backups
558      Mail = boss@mycompany.com = full, !incremental, !differential, !restore, 
559             !verify, !admin
560      # email us only when something breaks
561      MailOnError = itdept@mycompany.com = all
562    }
563
564
565 Item 23:  Allow inclusion/exclusion of files in a fileset by creation/mod times
566   Origin: Evan Kaufman <evan.kaufman@gmail.com>
567   Date:   January 11, 2006
568   Status:
569
570   What:   In the vein of the Wild and Regex directives in a Fileset's
571           Options, it would be helpful to allow a user to include or exclude
572           files and directories by creation or modification times.
573
574           You could factor the Exclude=yes|no option in much the same way it
575           affects the Wild and Regex directives.  For example, you could exclude
576           all files modified before a certain date:
577
578    Options {
579      Exclude = yes
580      Modified Before = ####
581    }
582
583            Or you could exclude all files created/modified since a certain date:
584
585    Options {
586       Exclude = yes
587      Created Modified Since = ####
588    }
589
590            The format of the time/date could be done several ways, say the number
591            of seconds since the epoch:
592            1137008553 = Jan 11 2006, 1:42:33PM   # result of `date +%s`
593
594            Or a human readable date in a cryptic form:
595            20060111134233 = Jan 11 2006, 1:42:33PM   # YYYYMMDDhhmmss
596
597   Why:    I imagine a feature like this could have many uses. It would
598           allow a user to do a full backup while excluding the base operating
599           system files, so if I installed a Linux snapshot from a CD yesterday,
600           I'll *exclude* all files modified *before* today.  If I need to
601           recover the system, I use the CD I already have, plus the tape backup.
602           Or if, say, a Windows client is hit by a particularly corrosive
603           virus, and I need to *exclude* any files created/modified *since* the
604           time of infection.
605
606   Notes:  Of course, this feature would work in concert with other
607           in/exclude rules, and wouldnt override them (or each other).
608
609   Notes:  The directives I'd imagine would be along the lines of
610           "[Created] [Modified] [Before|Since] = <date>".
611           So one could compare against 'ctime' and/or 'mtime', but ONLY 'before'
612            or 'since'.
613
614
615 Item 24:  Add a scheduling syntax that permits weekly rotations
616    Date:  15 December 2006
617   Origin: Gregory Brauer (greg at wildbrain dot com)
618   Status:
619
620    What:  Currently, Bacula only understands how to deal with weeks of the
621           month or weeks of the year in schedules.  This makes it impossible
622           to do a true weekly rotation of tapes.  There will always be a
623           discontinuity that will require disruptive manual intervention at
624           least monthly or yearly because week boundaries never align with
625           month or year boundaries.
626
627           A solution would be to add a new syntax that defines (at least)
628           a start timestamp, and repetition period.
629
630    Why:   Rotated backups done at weekly intervals are useful, and Bacula
631           cannot currently do them without extensive hacking.
632
633    Notes: Here is an example syntax showing a 3-week rotation where full
634           Backups would be performed every week on Saturday, and an
635           incremental would be performed every week on Tuesday.  Each
636           set of tapes could be removed from the loader for the following
637           two cycles before coming back and being reused on the third
638           week.  Since the execution times are determined by intervals
639           from a given point in time, there will never be any issues with
640           having to adjust to any sort of arbitrary time boundary.  In
641           the example provided, I even define the starting schedule
642           as crossing both a year and a month boundary, but the run times
643           would be based on the "Repeat" value and would therefore happen
644           weekly as desired.
645
646
647           Schedule {
648               Name = "Week 1 Rotation"
649               #Saturday.  Would run Dec 30, Jan 20, Feb 10, etc.
650               Run {
651                   Options {
652                       Type   = Full
653                       Start  = 2006-12-30 01:00
654                       Repeat = 3w
655                   }
656               }
657               #Tuesday.  Would run Jan 2, Jan 23, Feb 13, etc.
658               Run {
659                   Options {
660                       Type   = Incremental
661                       Start  = 2007-01-02 01:00
662                       Repeat = 3w
663                   }
664               }
665           }
666
667           Schedule {
668               Name = "Week 2 Rotation"
669               #Saturday.  Would run Jan 6, Jan 27, Feb 17, etc.
670               Run {
671                   Options {
672                       Type   = Full
673                       Start  = 2007-01-06 01:00
674                       Repeat = 3w
675                   }
676               }
677               #Tuesday.  Would run Jan 9, Jan 30, Feb 20, etc.
678               Run {
679                   Options {
680                       Type   = Incremental
681                       Start  = 2007-01-09 01:00
682                       Repeat = 3w
683                   }
684               }
685           }
686
687           Schedule {
688               Name = "Week 3 Rotation"
689               #Saturday.  Would run Jan 13, Feb 3, Feb 24, etc.
690               Run {
691                   Options {
692                       Type   = Full
693                       Start  = 2007-01-13 01:00
694                       Repeat = 3w
695                   }
696               }
697               #Tuesday.  Would run Jan 16, Feb 6, Feb 27, etc.
698               Run {
699                   Options {
700                       Type   = Incremental
701                       Start  = 2007-01-16 01:00
702                       Repeat = 3w
703                   }
704               }
705           }
706
707
708 Item 25:  Improve Bacula's tape and drive usage and cleaning management.
709   Date:   8 November 2005, November 11, 2005
710   Origin: Adam Thornton <athornton at sinenomine dot net>,
711           Arno Lehmann <al at its-lehmann dot de>
712   Status:
713
714   What:   Make Bacula manage tape life cycle information, tape reuse
715           times and drive cleaning cycles.
716
717   Why:    All three parts of this project are important when operating
718           backups.
719           We need to know which tapes need replacement, and we need to
720           make sure the drives are cleaned when necessary.  While many
721           tape libraries and even autoloaders can handle all this
722           automatically, support by Bacula can be helpful for smaller
723           (older) libraries and single drives.  Limiting the number of
724           times a tape is used might prevent tape errors when using
725           tapes until the drives can't read it any more.  Also, checking
726           drive status during operation can prevent some failures (as I
727           [Arno] had to learn the hard way...)
728
729   Notes:  First, Bacula could (and even does, to some limited extent)
730           record tape and drive usage.  For tapes, the number of mounts,
731           the amount of data, and the time the tape has actually been
732           running could be recorded.  Data fields for Read and Write
733           time and Number of mounts already exist in the catalog (I'm
734           not sure if VolBytes is the sum of all bytes ever written to
735           that volume by Bacula).  This information can be important
736           when determining which media to replace.  The ability to mark
737           Volumes as "used up" after a given number of write cycles
738           should also be implemented so that a tape is never actually
739           worn out.  For the tape drives known to Bacula, similar
740           information is interesting to determine the device status and
741           expected life time: Time it's been Reading and Writing, number
742           of tape Loads / Unloads / Errors.  This information is not yet
743           recorded as far as I [Arno] know.  A new volume status would
744           be necessary for the new state, like "Used up" or "Worn out".
745           Volumes with this state could be used for restores, but not
746           for writing. These volumes should be migrated first (assuming
747           migration is implemented) and, once they are no longer needed,
748           could be moved to a Trash pool.
749
750           The next step would be to implement a drive cleaning setup.
751           Bacula already has knowledge about cleaning tapes.  Once it
752           has some information about cleaning cycles (measured in drive
753           run time, number of tapes used, or calender days, for example)
754           it can automatically execute tape cleaning (with an
755           autochanger, obviously) or ask for operator assistance loading
756           a cleaning tape.
757
758           The final step would be to implement TAPEALERT checks not only
759           when changing tapes and only sending the information to the
760           administrator, but rather checking after each tape error,
761           checking on a regular basis (for example after each tape
762           file), and also before unloading and after loading a new tape.
763           Then, depending on the drives TAPEALERT state and the known
764           drive cleaning state Bacula could automatically schedule later
765           cleaning, clean immediately, or inform the operator.
766
767           Implementing this would perhaps require another catalog change
768           and perhaps major changes in SD code and the DIR-SD protocol,
769           so I'd only consider this worth implementing if it would
770           actually be used or even needed by many people.
771
772           Implementation of these projects could happen in three distinct
773           sub-projects: Measuring Tape and Drive usage, retiring
774           volumes, and handling drive cleaning and TAPEALERTs.
775
776 Item 26:  Implement support for stacking arbitrary stream filters, sinks.
777 Date:     23 November 2006
778 Origin:   Landon Fuller <landonf@threerings.net>
779 Status:   Planning. Assigned to landonf.
780
781   What:   Implement support for the following:
782           - Stacking arbitrary stream filters (eg, encryption, compression,  
783             sparse data handling))
784           - Attaching file sinks to terminate stream filters (ie, write out  
785             the resultant data to a file)
786           - Refactor the restoration state machine accordingly
787
788    Why:   The existing stream implementation suffers from the following:
789            - All state (compression, encryption, stream restoration), is  
790              global across the entire restore process, for all streams. There are  
791              multiple entry and exit points in the restoration state machine, and  
792              thus multiple places where state must be allocated, deallocated,  
793              initialized, or reinitialized. This results in exceptional complexity  
794              for the author of a stream filter.
795            - The developer must enumerate all possible combinations of filters  
796              and stream types (ie, win32 data with encryption, without encryption,  
797              with encryption AND compression, etc).
798
799   Notes:  This feature request only covers implementing the stream filters/ 
800           sinks, and refactoring the file daemon's restoration implementation  
801           accordingly. If I have extra time, I will also rewrite the backup  
802           implementation. My intent in implementing the restoration first is to  
803           solve pressing bugs in the restoration handling, and to ensure that  
804           the new restore implementation handles existing backups correctly.
805
806           I do not plan on changing the network or tape data structures to  
807           support defining arbitrary stream filters, but supporting that  
808           functionality is the ultimate goal.
809
810           Assistance with either code or testing would be fantastic.
811
812 Item 27:  Allow FD to initiate a backup
813   Origin: Frank Volf (frank at deze dot org)
814   Date:   17 November 2005
815   Status:
816
817    What:  Provide some means, possibly by a restricted console that
818           allows a FD to initiate a backup, and that uses the connection
819           established by the FD to the Director for the backup so that
820           a Director that is firewalled can do the backup.
821
822    Why:   Makes backup of laptops much easier.
823
824 Item 28:  Directive/mode to backup only file changes, not entire file
825   Date:   11 November 2005
826   Origin: Joshua Kugler <joshua dot kugler at uaf dot edu>
827           Marek Bajon <mbajon at bimsplus dot com dot pl>
828   Status: 
829
830   What:   Currently when a file changes, the entire file will be backed up in
831           the next incremental or full backup.  To save space on the tapes
832           it would be nice to have a mode whereby only the changes to the
833           file would be backed up when it is changed.
834
835   Why:    This would save lots of space when backing up large files such as 
836           logs, mbox files, Outlook PST files and the like.
837
838   Notes:  This would require the usage of disk-based volumes as comparing 
839           files would not be feasible using a tape drive.
840
841 Item 29:  Automatic disabling of devices
842    Date:  2005-11-11
843   Origin: Peter Eriksson <peter at ifm.liu dot se>
844   Status:
845
846    What:  After a configurable amount of fatal errors with a tape drive
847           Bacula should automatically disable further use of a certain
848           tape drive. There should also be "disable"/"enable" commands in
849           the "bconsole" tool.
850
851    Why:   On a multi-drive jukebox there is a possibility of tape drives
852           going bad during large backups (needing a cleaning tape run,
853           tapes getting stuck). It would be advantageous if Bacula would
854           automatically disable further use of a problematic tape drive
855           after a configurable amount of errors has occurred.
856
857           An example: I have a multi-drive jukebox (6 drives, 380+ slots)
858           where tapes occasionally get stuck inside the drive. Bacula will
859           notice that the "mtx-changer" command will fail and then fail
860           any backup jobs trying to use that drive. However, it will still
861           keep on trying to run new jobs using that drive and fail -
862           forever, and thus failing lots and lots of jobs... Since we have
863           many drives Bacula could have just automatically disabled
864           further use of that drive and used one of the other ones
865           instead.
866
867 Item 30:  Incorporation of XACML2/SAML2 parsing
868    Date:   19 January 2006
869    Origin: Adam Thornton <athornton@sinenomine.net>
870    Status: Blue sky
871
872    What:   XACML is "eXtensible Access Control Markup Language" and  
873           "SAML is the "Security Assertion Markup Language"--an XML standard  
874           for making statements about identity and authorization.  Having these  
875           would give us a framework to approach ACLs in a generic manner, and  
876           in a way flexible enough to support the four major sorts of ACLs I  
877           see as a concern to Bacula at this point, as well as (probably) to  
878           deal with new sorts of ACLs that may appear in the future.
879
880    Why:    Bacula is beginning to need to back up systems with ACLs  
881           that do not map cleanly onto traditional Unix permissions.  I see  
882           four sets of ACLs--in general, mutually incompatible with one  
883           another--that we're going to need to deal with.  These are: NTFS  
884           ACLs, POSIX ACLs, NFSv4 ACLS, and AFS ACLS.  (Some may question the  
885           relevance of AFS; AFS is one of Sine Nomine's core consulting  
886           businesses, and having a reputable file-level backup and restore  
887           technology for it (as Tivoli is probably going to drop AFS support  
888           soon since IBM no longer supports AFS) would be of huge benefit to  
889           our customers; we'd most likely create the AFS support at Sine Nomine  
890           for inclusion into the Bacula (and perhaps some changes to the  
891           OpenAFS volserver) core code.)
892
893           Now, obviously, Bacula already handles NTFS just fine.  However, I  
894           think there's a lot of value in implementing a generic ACL model, so  
895           that it's easy to support whatever particular instances of ACLs come  
896           down the pike: POSIX ACLS (think SELinux) and NFSv4 are the obvious  
897           things arriving in the Linux world in a big way in the near future.   
898           XACML, although overcomplicated for our needs, provides this  
899           framework, and we should be able to leverage other people's  
900           implementations to minimize the amount of work *we* have to do to get  
901           a generic ACL framework.  Basically, the costs of implementation are  
902           high, but they're largely both external to Bacula and already sunk.
903
904
905 Item 31:  Clustered file-daemons
906   Origin: Alan Brown ajb2 at mssl dot ucl dot ac dot uk
907   Date:   24 July 2006
908   Status:
909   What:   A "virtual" filedaemon, which is actually a cluster of real ones.
910
911   Why:    In the case of clustered filesystems (SAN setups, GFS, or OCFS2, etc)
912           multiple machines may have access to the same set of filesystems
913
914           For performance reasons, one may wish to initate backups from
915           several of these machines simultaneously, instead of just using
916           one backup source for the common clustered filesystem.
917
918           For obvious reasons, normally backups of $A-FD/$PATH and
919           B-FD/$PATH are treated as different backup sets. In this case
920           they are the same communal set.
921
922           Likewise when restoring, it would be easier to just specify
923           one of the cluster machines and let bacula decide which to use.
924
925           This can be faked to some extent using DNS round robin entries
926           and a virtual IP address, however it means "status client" will
927           always give bogus answers. Additionally there is no way of
928           spreading the load evenly among the servers.
929
930           What is required is something similar to the storage daemon
931           autochanger directives, so that Bacula can keep track of
932           operating backups/restores and direct new jobs to a "free"
933           client.
934
935    Notes:
936
937 Item 32:  Commercial database support
938   Origin: Russell Howe <russell_howe dot wreckage dot org>
939   Date:   26 July 2006
940   Status:
941
942   What:   It would be nice for the database backend to support more 
943           databases. I'm thinking of SQL Server at the moment, but I guess Oracle, 
944           DB2, MaxDB, etc are all candidates. SQL Server would presumably be 
945           implemented using FreeTDS or maybe an ODBC library?
946
947   Why:    We only really have one database server, which is MS SQL Server 
948           2000. Maintaining a second one for the backup software (we grew out of 
949           SQLite, which I liked, but which didn't work so well with our database 
950           size). We don't really have a machine with the resources to run 
951           postgres, and would rather only maintain a single DBMS. We're stuck with 
952           SQL Server because pretty much all the company's custom applications 
953           (written by consultants) are locked into SQL Server 2000. I can imagine 
954           this scenario is fairly common, and it would be nice to use the existing 
955           properly specced database server for storing Bacula's catalog, rather 
956           than having to run a second DBMS.
957
958
959 Item 33:  Archive data
960   Date:   15/5/2006
961   Origin: calvin streeting calvin at absentdream dot com
962   Status:
963
964   What:   The abilty to archive to media (dvd/cd) in a uncompressed format
965           for dead filing (archiving not backing up)
966
967     Why:  At my works when jobs are finished and moved off of the main file
968           servers (raid based systems) onto a simple linux file server (ide based
969           system) so users can find old information without contacting the IT
970           dept.
971
972           So this data dosn't realy change it only gets added to,
973           But it also needs backing up.  At the moment it takes
974           about 8 hours to back up our servers (working data) so
975           rather than add more time to existing backups i am trying
976           to implement a system where we backup the acrhive data to
977           cd/dvd these disks would only need to be appended to
978           (burn only new/changed files to new disks for off site
979           storage).  basialy understand the differnce between
980           achive data and live data.
981
982   Notes:  Scan the data and email me when it needs burning divide
983           into predifind chunks keep a recored of what is on what
984           disk make me a label (simple php->mysql=>pdf stuff) i
985           could do this bit ability to save data uncompresed so
986           it can be read in any other system (future proof data)
987           save the catalog with the disk as some kind of menu
988           system 
989
990 Item 34:  Filesystem watch triggered backup.
991   Date:   31 August 2006
992   Origin: Jesper Krogh <jesper@krogh.cc>
993   Status: Unimplemented, depends probably on "client initiated backups"
994
995   What:   With inotify and similar filesystem triggeret notification
996           systems is it possible to have the file-daemon to monitor
997           filesystem changes and initiate backup.
998
999   Why:    There are 2 situations where this is nice to have.
1000           1) It is possible to get a much finer-grained backup than
1001              the fixed schedules used now.. A file created and deleted
1002              a few hours later, can automatically be caught.
1003
1004           2) The introduced load on the system will probably be
1005              distributed more even on the system.
1006
1007   Notes:  This can be combined with configration that specifies
1008           something like: "at most every 15 minutes or when changes
1009           consumed XX MB".
1010
1011 Kern Notes: I would rather see this implemented by an external program
1012           that monitors the Filesystem changes, then uses the console
1013           to start the appropriate job.
1014
1015 Item 35:  Implement multiple numeric backup levels as supported by dump
1016 Date:     3 April 2006
1017 Origin:   Daniel Rich <drich@employees.org>
1018 Status:
1019 What:     Dump allows specification of backup levels numerically instead of just
1020           "full", "incr", and "diff".  In this system, at any given level, all
1021           files are backed up that were were modified since the last backup of a
1022           higher level (with 0 being the highest and 9 being the lowest).  A
1023           level 0 is therefore equivalent to a full, level 9 an incremental, and
1024           the levels 1 through 8 are varying levels of differentials.  For
1025           bacula's sake, these could be represented as "full", "incr", and
1026           "diff1", "diff2", etc.
1027
1028 Why:      Support of multiple backup levels would provide for more advanced backup
1029           rotation schemes such as "Towers of Hanoi".  This would allow better
1030           flexibility in performing backups, and can lead to shorter recover
1031           times.
1032
1033 Notes:    Legato Networker supports a similar system with full, incr, and 1-9 as
1034           levels.
1035
1036 Item 36:  Implement a server-side compression feature
1037   Date:   18 December 2006
1038   Origin: Vadim A. Umanski , e-mail umanski@ext.ru
1039   Status:
1040   What:   The ability to compress backup data on server receiving data
1041           instead of doing that on client sending data.
1042   Why:    The need is practical. I've got some machines that can send
1043           data to the network 4 or 5 times faster than compressing
1044           them (I've measured that). They're using fast enough SCSI/FC
1045           disk subsystems but rather slow CPUs (ex. UltraSPARC II).
1046           And the backup server has got a quite fast CPUs (ex. Dual P4
1047           Xeons) and quite a low load. When you have 20, 50 or 100 GB
1048           of raw data - running a job 4 to 5 times faster - that
1049           really matters. On the other hand, the data can be
1050           compressed 50% or better - so losing twice more space for
1051           disk backup is not good at all. And the network is all mine
1052           (I have a dedicated management/provisioning network) and I
1053           can get as high bandwidth as I need - 100Mbps, 1000Mbps...
1054           That's why the server-side compression feature is needed!
1055   Notes:
1056
1057 Item 37:  Cause daemons to use a specific IP address to source communications
1058  Origin:  Bill Moran <wmoran@collaborativefusion.com>
1059  Date:    18 Dec 2006
1060  Status:
1061  What:    Cause Bacula daemons (dir, fd, sd) to always use the ip address
1062           specified in the [DIR|DF|SD]Addr directive as the source IP
1063           for initiating communication.
1064  Why:     On complex networks, as well as extremely secure networks, it's
1065           not unusual to have multiple possible routes through the network.
1066           Often, each of these routes is secured by different policies
1067           (effectively, firewalls allow or deny different traffic depending
1068           on the source address)
1069           Unfortunately, it can sometimes be difficult or impossible to
1070           represent this in a system routing table, as the result is
1071           excessive subnetting that quickly exhausts available IP space.
1072           The best available workaround is to provide multiple IPs to
1073           a single machine that are all on the same subnet.  In order
1074           for this to work properly, applications must support the ability
1075           to bind outgoing connections to a specified address, otherwise
1076           the operating system will always choose the first IP that
1077           matches the required route.
1078  Notes:   Many other programs support this.  For example, the following
1079           can be configured in BIND:
1080           query-source address 10.0.0.1;
1081           transfer-source 10.0.0.2;
1082           Which means queries from this server will always come from
1083           10.0.0.1 and zone transfers will always originate from
1084           10.0.0.2.
1085
1086 Item 38:  Multiple threads in file daemon for the same job
1087   Date:   27 November 2005
1088   Origin: Ove Risberg (Ove.Risberg at octocode dot com)
1089   Status:
1090
1091   What:   I want the file daemon to start multiple threads for a backup
1092           job so the fastest possible backup can be made.
1093
1094           The file daemon could parse the FileSet information and start
1095           one thread for each File entry located on a separate
1096           filesystem.
1097
1098           A confiuration option in the job section should be used to
1099           enable or disable this feature. The confgutration option could
1100           specify the maximum number of threads in the file daemon.
1101
1102           If the theads could spool the data to separate spool files
1103           the restore process will not be much slower.
1104
1105   Why:    Multiple concurrent backups of a large fileserver with many
1106           disks and controllers will be much faster.
1107
1108 Item 39:  Restore only file attributes (permissions, ACL, owner, group...)
1109   Origin: Eric Bollengier
1110   Date:   30/12/2006
1111   Status:
1112
1113   What:   The goal of this project is to be able to restore only rights
1114           and attributes of files without crushing them.
1115
1116   Why:    Who have never had to repair a chmod -R 777, or a wild update
1117           of recursive right under Windows? At this time, you must have
1118           enough space to restore data, dump attributes (easy with acl,
1119           more complex with unix/windows rights) and apply them to your 
1120           broken tree. With this options, it will be very easy to compare
1121           right or ACL over the time.
1122
1123   Notes:  If the file is here, we skip restore and we change rights.
1124           If the file isn't here, we can create an empty one and apply
1125           rights or do nothing.
1126
1127 Item 40:  Add an item to the restore option where you can select a pool
1128   Origin: kshatriyak at gmail dot com
1129     Date: 1/1/2006
1130   Status:
1131
1132     What: In the restore option (Select the most recent backup for a
1133           client) it would be useful to add an option where you can limit
1134           the selection to a certain pool.
1135
1136      Why: When using cloned jobs, most of the time you have 2 pools - a
1137           disk pool and a tape pool.  People who have 2 pools would like to
1138           select the most recent backup from disk, not from tape (tape
1139           would be only needed in emergency).  However, the most recent
1140           backup (which may just differ a second from the disk backup) may
1141           be on tape and would be selected.  The problem becomes bigger if
1142           you have a full and differential - the most "recent" full backup
1143           may be on disk, while the most recent differential may be on tape
1144           (though the differential on disk may differ even only a second or
1145           so).  Bacula will complain that the backups reside on different
1146           media then.  For now the only solution now when restoring things
1147           when you have 2 pools is to manually search for the right
1148           job-id's and enter them by hand, which is a bit fault tolerant.
1149
1150 ============= Empty Feature Request form ===========
1151 Item  n:  One line summary ...
1152   Date:   Date submitted 
1153   Origin: Name and email of originator.
1154   Status: 
1155
1156   What:   More detailed explanation ...
1157
1158   Why:    Why it is important ...
1159
1160   Notes:  Additional notes or features (omit if not used)
1161 ============== End Feature Request form ==============
1162
1163
1164 </pre>
1165
1166         </td>
1167 </tr>
1168 </table>
1169
1170 <? require_once("inc/footer.php"); ?>