X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fprojects;h=98719b61bd00cb3dbf020e3d67b98485707882f6;hb=372f204da3c90d3491de3e311a71ea2761a8eba5;hp=4dd5f76505bc2516fc5ad02316c0d310c2e5d6f8;hpb=05122c51b0ebbe0dc5b77b58e79c064fde25ea74;p=bacula%2Fbacula diff --git a/bacula/projects b/bacula/projects index 4dd5f76505..98719b61bd 100644 --- a/bacula/projects +++ b/bacula/projects @@ -1,141 +1,258 @@ Projects: Bacula Projects Roadmap - Prioritized by user vote 07 December 2005 - Status updated 30 July 2006 + Status updated 14 Jun 2009 Summary: -Item 1: Implement data encryption (as opposed to comm encryption) -Item 2: Implement Migration that moves Jobs from one Pool to another. -Item 3: Accurate restoration of renamed/deleted files from -Item 4: Implement a Bacula GUI/management tool using Python. -Item 5: Implement Base jobs. -Item 6: Allow FD to initiate a backup -Item 7: Improve Bacula's tape and drive usage and cleaning management. -Item 8: Implement creation and maintenance of copy pools -Item 9: Implement new {Client}Run{Before|After}Job feature. -Item 10: Merge multiple backups (Synthetic Backup or Consolidation). -Item 11: Deletion of Disk-Based Bacula Volumes -Item 12: Directive/mode to backup only file changes, not entire file -Item 13: Multiple threads in file daemon for the same job -Item 14: Implement red/black binary tree routines. -Item 15: Add support for FileSets in user directories CACHEDIR.TAG -Item 16: Implement extraction of Win32 BackupWrite data. -Item 17: Implement a Python interface to the Bacula catalog. -Item 18: Archival (removal) of User Files to Tape -Item 19: Add Plug-ins to the FileSet Include statements. -Item 20: Implement more Python events in Bacula. -Item 21: Quick release of FD-SD connection after backup. -Item 22: Permit multiple Media Types in an Autochanger -Item 23: Allow different autochanger definitions for one autochanger. -Item 24: Automatic disabling of devices -Item 25: Implement huge exclude list support using hashing. - - -Below, you will find more information on future projects: - -Item 1: Implement data encryption (as opposed to comm encryption) - Date: 28 October 2005 - Origin: Sponsored by Landon and 13 contributors to EFF. - Status: Done: Landon Fuller has implemented this in 1.39.x. - - What: Currently the data that is stored on the Volume is not - encrypted. For confidentiality, encryption of data at - the File daemon level is essential. - Data encryption encrypts the data in the File daemon and - decrypts the data in the File daemon during a restore. - - Why: Large sites require this. - -Item 2: Implement Migration that moves Jobs from one Pool to another. - Origin: Sponsored by Riege Software International GmbH. Contact: - Daniel Holtkamp - Date: 28 October 2005 - Status: 90% complete: Working in 1.39, more to do. Assigned to - Kern. - - What: The ability to copy, move, or archive data that is on a - device to another device is very important. - - Why: An ISP might want to backup to disk, but after 30 days - migrate the data to tape backup and delete it from - disk. Bacula should be able to handle this - automatically. It needs to know what was put where, - and when, and what to migrate -- it is a bit like - retention periods. Doing so would allow space to be - freed up for current backups while maintaining older - data on tape drives. - - Notes: Riege Software have asked for the following migration - triggers: - Age of Job - Highwater mark (stopped by Lowwater mark?) - - Notes: Migration could be additionally triggered by: - Number of Jobs - Number of Volumes - -Item 3: Accurate restoration of renamed/deleted files from - Incremental/Differential backups - Date: 28 November 2005 - Origin: Martin Simmons (martin at lispworks dot com) +* => item complete + + Item 1: Ability to restart failed jobs +*Item 2: 'restore' menu: enter a JobId, automatically select dependents + Item 3: Scheduling syntax that permits more flexibility and options + Item 4: Data encryption on storage daemon + Item 5: Deletion of disk Volumes when pruned + Item 6: Implement Base jobs + Item 7: Add ability to Verify any specified Job. + Item 8: Improve Bacula's tape and drive usage and cleaning management + Item 9: Allow FD to initiate a backup +*Item 10: Restore from volumes on multiple storage daemons + Item 11: Implement Storage daemon compression + Item 12: Reduction of communications bandwidth for a backup + Item 13: Ability to reconnect a disconnected comm line + Item 14: Start spooling even when waiting on tape + Item 15: Enable/disable compression depending on storage device (disk/tape) + Item 16: Include all conf files in specified directory + Item 17: Multiple threads in file daemon for the same job + Item 18: Possibilty to schedule Jobs on last Friday of the month + Item 19: Include timestamp of job launch in "stat clients" output +*Item 20: Cause daemons to use a specific IP address to source communications + Item 21: Message mailing based on backup types + Item 22: Ability to import/export Bacula database entities +*Item 23: "Maximum Concurrent Jobs" for drives when used with changer device + Item 24: Implementation of running Job speed limit. + Item 25: Add an override in Schedule for Pools based on backup types + Item 26: Automatic promotion of backup levels based on backup size + Item 27: Allow inclusion/exclusion of files in a fileset by creation/mod times + Item 28: Archival (removal) of User Files to Tape + Item 29: An option to operate on all pools with update vol parameters + Item 30: Automatic disabling of devices +*Item 31: List InChanger flag when doing restore. + Item 32: Ability to defer Batch Insert to a later time + Item 33: Add MaxVolumeSize/MaxVolumeBytes statement to Storage resource + Item 34: Enable persistent naming/number of SQL queries + Item 35: Port bat to Win32 + Item 36: Bacula Dir, FD and SD to support proxies + Item 37: Add Minumum Spool Size directive + Item 38: Backup and Restore of Windows Encrypted Files using Win raw encryption + Item 39: Implement an interface between Bacula and Amazon's S3. + Item 40: Convert Bacula existing tray monitor on Windows to a stand alone program + +Item 1: Ability to restart failed jobs + Date: 26 April 2009 + Origin: Kern/Eric + Status: + + What: Often jobs fail because of a communications line drop or max run time, + cancel, or some other non-critical problem. Currrently any data + saved is lost. This implementation should modify the Storage daemon + so that it saves all the files that it knows are completely backed + up to the Volume + + The jobs should then be marked as incomplete and a subsequent + Incremental Accurate backup will then take into account all the + previously saved job. + + Why: Avoids backuping data already saved. + + Notes: Requires Accurate to restart correctly. Must completed have a minimum + volume of data or files stored on Volume before enabling. + + +Item 2: 'restore' menu: enter a JobId, automatically select dependents +Origin: Graham Keeling (graham@equiinet.com) +Date: 13 March 2009 +Status: Done in 3.0.2 + +What: Add to the bconsole 'restore' menu the ability to select a job + by JobId, and have bacula automatically select all the + dependent jobs. + + Why: Currently, you either have to... + + a) laboriously type in a date that is greater than the date of the + backup that you want and is less than the subsequent backup (bacula + then figures out the dependent jobs), or + b) manually figure out all the JobIds that you want and laboriously + type them all in. It would be extremely useful (in a programmatical + sense, as well as for humans) to be able to just give it a single JobId + and let bacula do the hard work (work that it already knows how to do). + + Notes (Kern): I think this should either be modified to have Bacula + print a list of dates that the user can choose from as is done in + bwx-console and bat or the name of this command must be carefully + chosen so that the user clearly understands that the JobId is being + used to specify what Job and the date to which he wishes the restore to + happen. + + +Item 3: Scheduling syntax that permits more flexibility and options + Date: 15 December 2006 + Origin: Gregory Brauer (greg at wildbrain dot com) and + Florian Schnabel Status: - What: When restoring a fileset for a specified date (including "most - recent"), Bacula should give you exactly the files and directories - that existed at the time of the last backup prior to that date. + What: Currently, Bacula only understands how to deal with weeks of the + month or weeks of the year in schedules. This makes it impossible + to do a true weekly rotation of tapes. There will always be a + discontinuity that will require disruptive manual intervention at + least monthly or yearly because week boundaries never align with + month or year boundaries. + + A solution would be to add a new syntax that defines (at least) + a start timestamp, and repetition period. + + An easy option to skip a certain job on a certain date. + + + Why: Rotated backups done at weekly intervals are useful, and Bacula + cannot currently do them without extensive hacking. + + You could then easily skip tape backups on holidays. Especially + if you got no autochanger and can only fit one backup on a tape + that would be really handy, other jobs could proceed normally + and you won't get errors that way. + + + Notes: Here is an example syntax showing a 3-week rotation where full + Backups would be performed every week on Saturday, and an + incremental would be performed every week on Tuesday. Each + set of tapes could be removed from the loader for the following + two cycles before coming back and being reused on the third + week. Since the execution times are determined by intervals + from a given point in time, there will never be any issues with + having to adjust to any sort of arbitrary time boundary. In + the example provided, I even define the starting schedule + as crossing both a year and a month boundary, but the run times + would be based on the "Repeat" value and would therefore happen + weekly as desired. + + + Schedule { + Name = "Week 1 Rotation" + #Saturday. Would run Dec 30, Jan 20, Feb 10, etc. + Run { + Options { + Type = Full + Start = 2006-12-30 01:00 + Repeat = 3w + } + } + #Tuesday. Would run Jan 2, Jan 23, Feb 13, etc. + Run { + Options { + Type = Incremental + Start = 2007-01-02 01:00 + Repeat = 3w + } + } + } - Currently this only works if the last backup was a Full backup. - When the last backup was Incremental/Differential, files and - directories that have been renamed or deleted since the last Full - backup are not currently restored correctly. Ditto for files with - extra/fewer hard links than at the time of the last Full backup. + Schedule { + Name = "Week 2 Rotation" + #Saturday. Would run Jan 6, Jan 27, Feb 17, etc. + Run { + Options { + Type = Full + Start = 2007-01-06 01:00 + Repeat = 3w + } + } + #Tuesday. Would run Jan 9, Jan 30, Feb 20, etc. + Run { + Options { + Type = Incremental + Start = 2007-01-09 01:00 + Repeat = 3w + } + } + } - Why: Incremental/Differential would be much more useful if this worked. + Schedule { + Name = "Week 3 Rotation" + #Saturday. Would run Jan 13, Feb 3, Feb 24, etc. + Run { + Options { + Type = Full + Start = 2007-01-13 01:00 + Repeat = 3w + } + } + #Tuesday. Would run Jan 16, Feb 6, Feb 27, etc. + Run { + Options { + Type = Incremental + Start = 2007-01-16 01:00 + Repeat = 3w + } + } + } - Notes: Item 14 (Merging of multiple backups into a single one) seems to - rely on this working, otherwise the merged backups will not be - truly equivalent to a Full backup. + Notes: Kern: I have merged the previously separate project of skipping + jobs (via Schedule syntax) into this. - Kern: notes shortened. This can be done without the need for - inodes. It is essentially the same as the current Verify job, - but one additional database record must be written, which does - not need any database change. - Kern: see if we can correct restoration of directories if - replace=ifnewer is set. Currently, if the directory does not - exist, a "dummy" directory is created, then when all the files - are updated, the dummy directory is newer so the real values - are not updated. +Item 4: Data encryption on storage daemon + Origin: Tobias Barth + Date: 04 February 2009 + Status: new -Item 4: Implement a Bacula GUI/management tool using Python. - Origin: Kern - Date: 28 October 2005 - Status: Lucus is working on this for Python GTK+. - - What: Implement a Bacula console, and management tools - using Python and Qt or GTK. - - Why: Don't we already have a wxWidgets GUI? Yes, but - it is written in C++ and changes to the user interface - must be hand tailored using C++ code. By developing - the user interface using Qt designer, the interface - can be very easily updated and most of the new Python - code will be automatically created. The user interface - changes become very simple, and only the new features - must be implement. In addition, the code will be in - Python, which will give many more users easy (or easier) - access to making additions or modifications. - - Notes: This is currently being implemented using Python-GTK by - Lucas Di Pentima - -Item 5: Implement Base jobs. - Date: 28 October 2005 + What: The storage demon should be able to do the data encryption that can + currently be done by the file daemon. + + Why: This would have 2 advantages: + 1) one could encrypt the data of unencrypted tapes by doing a + migration job + 2) the storage daemon would be the only machine that would have + to keep the encryption keys. + + Notes from Landon: + As an addendum to the feature request, here are some crypto + implementation details I wrote up regarding SD-encryption back in Jan + 2008: + http://www.mail-archive.com/bacula-users@lists.sourceforge.net/msg28860.html + + +Item 5: Deletion of disk Volumes when pruned + Date: Nov 25, 2005 + Origin: Ross Boylan (edited + by Kern) + Status: Truncate operation implemented in 3.1.4 + + What: Provide a way for Bacula to automatically remove Volumes + from the filesystem, or optionally to truncate them. + Obviously, the Volume must be pruned prior removal. + + Why: This would allow users more control over their Volumes and + prevent disk based volumes from consuming too much space. + + Notes: The following two directives might do the trick: + + Volume Data Retention =