From 706afc05a66cd8cb7bc68e351602d526689622e3 Mon Sep 17 00:00:00 2001 From: Kern Sibbald Date: Fri, 19 Jan 2007 08:11:24 +0000 Subject: [PATCH] Update FOSDEM talk --- docs/home-page/fr/inc/header.php | 1 + docs/home-page/fr/news.txt | 1104 ++++++-------- docs/home-page/fr/pages/presentations.php | 24 + docs/home-page/news.txt | 27 + docs/home-page/pages/professional.php | 34 +- docs/home-page/pages/projects.php | 1291 ++++++++++------- .../Bacula-FOSDEM-talk-25Feb07.pdf | Bin 749793 -> 750032 bytes 7 files changed, 1271 insertions(+), 1210 deletions(-) create mode 100644 docs/home-page/fr/pages/presentations.php diff --git a/docs/home-page/fr/inc/header.php b/docs/home-page/fr/inc/header.php index af9ef668..783db402 100644 --- a/docs/home-page/fr/inc/header.php +++ b/docs/home-page/fr/inc/header.php @@ -153,6 +153,7 @@ diff --git a/docs/home-page/fr/news.txt b/docs/home-page/fr/news.txt index 37c53f47..45cd27dd 100644 --- a/docs/home-page/fr/news.txt +++ b/docs/home-page/fr/news.txt @@ -1,704 +1,436 @@ -Kern;;;2006/05/02;;;14:30 - Release Notes pour Bacula 1.38.9 - -Attention pour les versions ultérieures à 1.38.8: - -- le File Daemon Windows est désormais sensible à la casse. Pour retrouver le -comportement des versions antérieures, vous devez explicitement utiliser -"Ignore case = yes" dans la définition du FileSet. - -- Le caractère anti-slash n'est désormais plus autorisé dans les directives -File (erreur typique pour les utilisateurs Windows), à moins que la chaîne -soit encadrée de guillemets, auquel cas les caractères anti-slash doivent -être doublés. - -- Le nouvel algorithme pour la sélection des volumes issus du "Scratch Pool" -qui était implémenté dans les version 1.38.6 et 1.38.7 a été abandonné au -profit de la version corrigée de l'algorithme de la version -1.38.5. - -Nouvelle fonctionnalité pour la version 1.38.9: -- un bouton "Dir Status" a été ajouté pour la console Gnome. - -Cette version contient principalement des corrections de bugs mineurs pour la -version 1.38.8. - -;;; - -Kern;;;2006/05/02;;;14:30 -Erreur de segmentation pour les versions antérieures à la version 1.38.5 - -Important ! -Dans les versions 1.38.5 et antérieures, il y avait apparemment un bug qui -engendrait une erreur de segmentation pour le démon de stockage. - -Un contournement a été implémenté dans la version 1.38.6 et supérieure qui -semble fonctionner. Toutefois si vous rencontrez des problèmes, suivez les -instructions ci-dessous. - -Si vous compilez Bacula sur un machine 64 bits, vous devez vous assurer que -le code est compilé avec l'option -O0 sinon le SD devrait se planter sur -presque toutes les opérations. Ceci est apparemment dû à un bug du -compilateur gcc lors de la génération du code 64 bits. +Kern;;;2007/1/13;;;14:30 + +Bacula Version 2.0.1 has been released to Source Forge. +This is bug fix update to version 2.0.0 and contains +the following fixes: + +- Fix Bacula->Documentation link on Win32 to point to index.html + instead of bacula.html. Fixed bug #750. +- Return JobId in db_get_job_record() when JobId==0. This should + fix bug #741. +- Do not release source pointers when restarting a failed job. +- Add dynamic dll entry point for SHGetFolderPath to Win32 code. + This *should* fix bug #747. +- Modify winbacula.nsi to substitute with g bin_dir_cmd. Should fix + bug #742. +- Modify USTORE constructor to set an empty store_source string, + and don't copy the store_source string in a cancel. Hopefully + this will fix Arno's seg fault, bug #744. +- Add back code to disable conio in configure. Fixes bug #743. +- Correct the Options scanner in the FD to correctly handle + SHA1 option, which was eating the next option. Reported by + Sebastien Guilbaud. +- Add code to indicate when the SD is spooling, spool wait, and + despooling as requested by Alan Brown. ;;; -Kern;;;2006/04/14;;;14:30 - Release Notes for Bacula 1.38.8 - -New features for 1.38.8: -- Regex, RegexFile, and RegexDir are now implemented in the - Win32 FD. However, this is new experimental code that is - largely untested. It may not work, it may cause memory - leaks, or it may even crash the FD. Please test carefully - before using. -- On Linux/Unix systems there are two new programs, bregex - and bwild that allow you to test regular expressions and - wild-cards. These programs are installed with the other - binaries. They are not available on Win32 systems. +Kern;;;2007/1/4;;;14:30 -Fixes: -- See below. +Bacula Version 2.0.0 has been released to Source Forge. -New Features from pre-1.38.8 releases: -- For autochanger get Scratch tape if in autochanger if - no appendable Volumes are available. -- New virtual disk autochanger. See scripts/disk-changer for - documentation. -- New optional Device resource directive in SD. 'Device Type =', - which may have types: File, DVD, Tape, or FIFO. This can - be useful for writing DVDs on FreeBSD where Bacula cannot - correctly detect the DVD. -- Faster restore tree building and uses less memory. -- The command line keyword job (or jobname) now refers to the - name of the job specified in the Job resource; jobid refers - as before to the non-unique numeric jobid; and ujobid refers - to the unique job identification that Bacula creates for each - job. -- The job report for Backups has a few more user friendly ways - of displaying the information. -- The wait command can now be made to wait for jobids. -- New command line keywords are permitted in update volume. They - are Inchanger=yes/no, slot=nn. -- Add two new console commands: enable job=<job-name> and - disable job=<job-name>. When a job is disabled, it will not - be started by the scheduler. If you disable a job and restart - Bacula or reload the .conf file, the job will be re-enabled. -- Add a new Job resource directive "enable = yes|no". -- There is a new program named regex in the tools directory that - allows you to try regular expressions on your system. - -Major bug fixes: -- Fix race condition in multiple-drive autochangers where - both drives want the same Volume. -- Do not allow opening default catalog for restricted console - if it is not in ACL. -- Writable FIFOs now work for restore. -- ACLs are now checked in all dot commands. -- Multiple drive autochangers and multiple different autochangers - should now work correctly (no race conditions for Volume names, - update slots use correct StorageId). -- Fix bug where drive was always reserved if a restore job failed - while in the reservation process. +There is an English Press Kit, written by Dan Langille at: + http://www.bacula.org/about/press/presskit200.html.en -Minor bug fixes: -- See below: -14Apr06 -- Correct Makefile for Solaris /bin/sh -- Correct mtx-changer.in for Solaris /bin/sh -- Abort if a conf resource does not have a Name = -12Apr06 -- Change the name of the regex program to bregex. -- Add the bwild program to the tools directory. It is similar - to the bregex program. -- Implement create bregex.h and bregex.c in src/lib from the - Python regexp program. -- Use the new bregex.c to implement Regex expressions on Win32. -11Apr06 -- Modify Makefile to change the permissions on Working Directory - to 770 if the directory is created. -- Do not fail the Makefile if changing the permissions or - owner/group on WorkingDir fails. -- Correct the old recycling algorithm so that Scratch Volumes - are selected when looking for a Volume in the changer. -- Correct a typo in the Verify SQL reported by Joe Park. -10Apr06 -- Remove automatic case folding on Windows FDs. You must - explictly use the 'Ignore Case = yes' option. -- Remove the code added to 1.38.6 and 1.38.7 that pulls a - scratch volume in an Autochanger early in the 'recycling' - algorithm. -08Apr06 -- Tweak license to include Microsoft restrictions. -- Move mysql.reconnect to after real_connect(). Thanks to - Frank Sweetser for the patch. -- Disallow a backslash in a File = directive (Windows junk) - unless the string is quoted. -- Apply Eric's patch to ua_label.c so that daemon protocol - is not translated. - -;;; +and a German version, translated by Arno Lehmann at: -Kern;;;2006/04/07;;;14:30 - Release Notes for Bacula 1.38.7 -06Apr06 -- Remove timed wait for VSS on Win2K3 as it is not yet - implemented. -- Correct bacula.in script to reference bacula-ctl-xx in the - sysconfig directory rather than the bin directory. + http://www.bacula.org/about/press/presskit200.html.de -Release 1.38.6 (28Mar06) released 29Mar06 -28Mar06 -- Back port from 1.39 fixes to lib/jcr.c to use foreach_jcr() - and new jcr chain locking. -26Mar06 -- Fix a long standing bug in the bacula start/stop scripts. -- Attempt to add the new bacula-ctl-* files to the rpm. -- Switch to using typeof() for list traversing to avoid - as many FC5 g++ compiler warnings as possible. -25Mar06 +;;; + +Kern;;;2007/1/4;;;14:31 + + Release Notes for Bacula 2.0.0 + + Bacula code: Total files = 438 Total lines = 154,329 (*.h *.c *.in) + +==== IMPORTANT Catalog update required ===== +- The database format has been updated from what was used in + Bacula 1.38.x. You must manually update your database before + running Bacula 1.39.x or higher. If you are using Bacula supplied + RPMs this is not necessary as the RPM does it automatically. + Please backup your previous version of the database before + running the update. The update script will be automatically + installed in your scripts directory, or can also be found in + /src/cats. It is called: + + ./update_bacula_tables + + It is necessary to run it only once the first time you move to + a 2.0.0. Upgrading the Bacula version thereafter does not + require updating the database again. Depending on the size of + your database the script make take a bit of time, to run, but + in general, it should be very fast. + +==== IMPORTANT new Win32 install procedure ===== + For Win32 migrations from versions prior to 1.39.0 nothing special + needs to be done to upgrade. Everything should be taken care of + automatically. The only thing not done is to delete the old C:\bacula + directory mostly out of paranoia. + +==== IMPORTANT miscellaneous ==== +- The Gnome console program (gconsole) no longer functions as it + should.More importantly, in restore mode, the restore tree is + no longer shown in the left pane. I suspect this is due to + incompatible changes in the GTK+ API, and hence have given up + on gnome and gtk+, as this has already happened several times + previously. At some point there will be a new GUI console. +- The bacula-dir.conf directive Accept Any Volume has been + removed because it was never implemented. You must delete all + occurrence of this directive for the Director to run. The Storage + daemon will automatically accept any valid Volume that you mount. +- The --mandir ./configure option now points to the top level man + directory. The man files will be installed under mandir/man8 and + mandir/man1 as appropriate. +- You *should* be able to use 1.38.x FDs with version 2.0.0 Director + and SD providing you do not use any of the new features (runscript, + data encryption). It seems to work here, but we do not guarantee it. +- Your Director and SD must be simultaneously upgraded. +- The restore command no longer uses the MediaType as the primary method + of finding a suitable Storage device. Normally it will select the last + device used to write a Volume. If no storage device is defined, it + will use the old algorithm which selects the first Storage resource + with the correct MediaType. +- The MD5/SHA1 hash codes kept in the database are now kept in a binary + format compatible with the rest of the world. If you are running verify + jobs, you *must* do an InitCatalog or all files will show an MD5 + difference. Also, authentication uses the new algorithm by + default, but *should* accept connections from older components (FD) using + the old non-compatible algorithm. This has been tested, but more + more testing is still needed. +- A stock SuSE 10.1 kernel may crash when Bacula runs and accesses + the tape drive. Workaround, load the SuSE 10.1 version 2.6.16.21-0.25 + kernel or later. The SuSE 10.2 Alpha 5 or later kernel also works. + This problem may also be present in certain Fedora FC5 kernels. +- If you have been using the data encryption feature of 1.39.x, please + be aware that certain combinations of encryption and other options + with version 1.39.0 through 1.39.26 created Volume data that cannot + be restored. We strongly recommend that anyone using encryption + carefully review his/her backups and at a minium do a Full backup + with 1.39.28 of all encrypted data. Robert Nelson has identified + and fixed it as follows: + As of 1.39.27: + No filters = Works fine + Sparse = Works fine + Compression = Works fine + Encryption = Works fine + Sparse + Compression = Works fine + + Sparse + Encryption = Restore broken + Sparse + Compression + Encryption = Restore broken + Compression + Encryption = Restore broken + + As of 1.39.28: + Most combinations work, but some encrypted files are + not properly restored. + + As of 1.39.30: + All combinations work fine except Sparse+Encryption. + + Bottom line, if you are using data encryption, please test restoring + data to be sure it all works correctly. +- The current Volume format written by 1.39.22 is different from + the format written by previous versions. The two formats + are not compatible. Thus any DVDs written prior to 1.39.22 will + be unreadable by version 1.39.22. +- If you previously run a Bacula version prior to 1.39.30, the JobMedia + data may not be correct for disk Volumes. This can cause incorrect + seeking in versions after 1.39.30. If you experience what appears to + be data I/O or integrity errors during restores, please add the + following directive to your disk DEVICE resource in the Storage + daemon conf file: + + Block Positioning = no + + This will turn off all seek requests during restores and avoid + this problem. +- VSS for Windows clients is now enabled by default. +- Do not unload autochanger when doing "update slots" +- Implement mount command for autochanger, see manual. + +New Features in 2.0.0: +- Turn on disk seek code for restores. +- There is a partial but reasonable translation of the Bacula + messages for French. To install it, first configure and build + Bacula, then as root run: + + cd /po + make install + + If you have your locale set properly you will get the translated + messages. +- Bacula now support Migration jobs that are documented in a new + Migration chapter in the manual + http://www.bacula.org/dev-manual/Migration.html +- Data encryption is now implemented and is documented in + a new chapter of the manual at: + http://www.bacula.org/dev-manual/Bacula_Data_Encryption.html +- Additional support for removable devices. See the + Requires Mount, Mount Point, Mount Command, and Unmount + Commands in the Storage daemon configuration chapter: + http://www.bacula.org/dev-manual/Storage_Daemon_Configuratio.html + Also see the Edit Codes for Mount and Unmount Directives in the + same chapter. +- Switch the Win32 build from using Microsoft C++ to using mingw32 + cross-compiling. The initial work was done by Howard Thomson, + then tweaked by me. Robert Nelson then totally reworked the + cross-compiling code so that it not only cross-compiles, but + also compiles on Visual Studio, and at the same time, he added + all the current Unix features to the FD, such as selection on + drives, encryption support, building *all* the tools, ... +- The Director and Storage daemon have now been ported to Win32. + This code is working but should still be tested carefully + before putting into production. +- Bacula restore and bextract can now extract non-portable Win32 data to + any client (including Unix/Linux clients). Of course, in doing so, + the Microsoft specific permissions and ACLs will be lost. Thanks + to Thorsten Engel for this code. +- The 260 character limitation for Win32 paths name lengths is now + eliminated thanks to Thorsten Engel. However, if you are using + Volume Shadow Copy, please be careful to specify all the paths + in the bacula-fd.conf file using a full path notation including + the drive letter. +- Eric Bollengier wrote new RunScript directives that includes + the old RunBefore/AfterJob and ClientRunBefore/AfterJob features + plus a *lot* more, allowing you to control just about every aspect + of running scripts. See the manual for detailed documentation. + http://www.bacula.org/dev-manual/Configuring_Director.html#5227 +- SunOS ACLs should now work thanks to a patch from David Duchscher. +- Apply days keyword patch from Alexander.Bergolth at wu-wien.ac.at + If this patch is applied, the number of days can be specified with + "list nextvol days=xx" + or + "status dir days=xx" + This can be used to preview the next scheduled job (and the + next tape to be used) on Fridays if there are no scheduled jobs during + the weekend. +- From Eric Bollengier. One can now using the bconsole wait command do: + wait (wait for all jobs to stop) + wait jobid=nn + wait jobuid=unique id + wait job=job-name +- Volumes can now be set to Enable, Disable, or Archive. If they + are not enabled, Volumes will not be mounted. + Implement update volume enable=(on|off|true|false|archived|0|1|2) +- Add Catalog message destination in Messages resource that puts the + job report in the Log database table. +- Writing/reading DVD Volumes is much more stable -- to the point + of being useful. Thanks to Richard Mortimer. +- Add enable/disable job=. This command prevents + the specified job from being scheduled. Even when disabled, + the job can be manually started from the console. +- The database Id records should be 32/64 bit independent now. 64 bits + can be enabled by changing one define and changing the appropriate + table variable. Normally, you need 64 bits only for FileId. +- Relative path specifications (i.e. ../xxx) are now permitted in + the restore cd command. +- When running multiple simultaneous jobs, most jobs that use spooling + will now finish faster due to a mutex optimization made by Eric + Bollengier. +- Conf files containing UTF-8 marker at the head of the file as well as + conf files containing Window cr/lf and Mac cr line termination characters + are now accepted thanks to Robert Nelson. +- Windows tray status windows are scrollable and resizable. +- Win32 external script execution is much more flexible -- handles + spaces in names better, ... +- Lots of DVD fixes -- writing DVDs is now reported to work. +- Fix opening of database in a restricted console to respect + any Catalog ACL. +- Much better automatic handling of multiple database catalogs in + the restore command. +- Permit multiple console/director resources in bconsole.conf. + patch from Carsten Paeth calle@calle.in-berlin.de +- Character substitution in Job/JobDefs WriteBootStrap. + from Eric Bollengier. +- Apply patch supplied in bug #656 to pass priority field + in the run dialog to the Director in gnome console. +- Add support of encrypted data stream to bscan from Eric. + display data_len instead of data content (may be binary). +- Add Enabled=xxx on update slots command. +- Add host:port to connect failure messages to FD and SD from Dir/ +- Add WhereACL to console ACL list. If nothing is specified, only + the default is permitted for restore. Otherwise, *all* allows any + path, or you can specify permitted paths. This should allow control + over where users can restore files. This is untested. +- Install man pages with 'make install'. +- Add Media.Enabled flag to client backups for dotcmds.c +- Enforce Media.Enabled=1 for a current restore to work +- Require restore case 3 to have sqlquery permission to work. +- Add -n option to bconsole to turn off conio -- used in bweb. +- The bytes field in the terminated jobs part of the status + command now reports in KB, MB, ... units. +- When not descending into a directory, print the File= name that + triggered it -- makes why not descending a bit clearer +- Do not unload autochanger when doing "update slots" +- Implement mount command for autochanger +- Fix bug #462 incorrect error message printed when client script called + from File= was not found. +- Fix bug #558 (waiting for feedback) where Bacula needs too much time to + do a rewind on Solaris when no tape is in the drive (Solaris does not + have the detailed errno found on Linux). Added Solaris specific code. + Note, this may apply to other OSes as well. +- The examples directory has a new bacula_mail_summary.sh file that + creates a single email summary of any number of jobs. Submitted by + Andrew J. Millar. +- Add nagios plugin to the examples directory. Submitted by + Christian Masopust. +- Modify most restore error messages to be queued so that they + appear at the end of the job rather than mixed with the restore + listing where they could be "lost". +- Apply patch supplied by user (slightly modified) to fix + correct detection of holes in block devices and FIFOs. + Bug # 506. +- Added a report.pl program to the examples directory from Jonas Bjorklund. +- Add two new queries to query.sql provided by Arno. One + list volumes known to the Storage device, and the other + lists volumes possibly needing replacement (error, ...). +- Implement new code for changing userid and group at startup. This + should get Bacula into the correct groups. +- Implement support for removable filesystems -- device type directive + and mount, unmount directives. +- Transfer rates are now presented in a more readable format thanks + to a user submission. +- SD is now aware of what volumes are mounted. More information is printed + in the Status report. You must take much more care now to unmount + devices prior to removing tapes that Bacula has open or prior to + changing a magazine. Don't forget to do a mount afterwards or the + device will be blocked. +- The Pool Maximum Volumes directive is now respected in all places. +- A Storage device can now be specified in a Pool resource. It will override + all other Storage specifications. +- Most but not all directives accept true/false in place of yes/no. +- A patch from Karl Hakimian that reads JobIds, FileIndexes + from a database table for restore. +- There are a number of new tables. Some such as the Location table are + designed for user use in doing Volume Management software. +- Maximum Changer Wait, Maximum Open Wait, Maximum Rewind Wait to + accept time qualifiers. +- Implement jobuid to replace old usage of job in keywords as + suggested by Eric Bollengier. +- Implement write variables for Python to set Priority (anytime), and + Job Level, only during JobInit event. +- Use the keyword ujobid to mean the unique job id; job or jobname + to mean the Job name given on the Name directive, and jobid to + be the numeric (non-unique) job id. +- Allow the SD to use multiple drives during a backup/restore (only + one at a time). +- Integrate addition of line count limitation to bsmtp -l from + Sebastian Stark - Split the bacula start/start script into four files: bacula -- starts and stops calling other scripts bacula-ctl-dir -- starts/stops the director bacula-ctl-fd -- starts/stops the File daemon bacula-ctl-sd -- starts/stops the Storage daemon -- Create datestyle fix for PostgreSQL. Fixes bug #574. -- Correct editing of JobId from int to int64 in fd_cmds.c -- Eliminate FileSet name race with bash_spaces() and multiple - threads by bashing in a local. -- Fix error return from 'use storage' to print a correct error - message rather than nothing. -- Correct false re-read last block error message when two jobs - are simultaneously writing at the end of a tape. -- Simplify exit conditions in the reserve.c code to avoid - possible non-release of reservation_lock(). -- Suffle lock order in reserve to avoid deadlock between - reservation lock and device mutex. -- Add Thorsten's VSS timeout code to 1.38 branch. -- Initialize jcr mutex before first use. Thanks to Thorsten for - tracking this down for me !!!! as it broke the Win32 build. -- Integrate addition of line count limitation to bsmtp -l from - Sebastian Stark <stark at tuebingen.mpg.de> -- Implement regex test program in tools directory. -- Attempt to fix time problem with bsmtp with foreign langs. -- Add strip_trailing_newline() submitted by user. - -Release 1.38.6 beta6 16Mar06 -- Fix bug #537 to allow arbitrary time to mount a volume for - restore, if polling is turned on. -- Disallow multiple storage specifications for a job. Should fix Arno's - problem. -- Add back a missing store of poolid in jr.poolid. -- If dir_user or dir-group is specified in ./configure apply it to - the working-dir. Fixes bug #533. -- If rescheduling a job cancel the previous incarnation with the SD. - Fixes bugs #566 and 557. -- Fix bug #567 do_message() definition type conflict. - -Release 1.38.6 beta5 14Mar06 -- Add more jcr methods and make mutex and use_count private. -- Create lock/unlock methods for jcr. -- Fix PostgreSQL bug doing sql_data_seeek() by explicitly reading - records to get to seek position. -- Integrate patch from bug #561 to correct conio.c signal definitions. -- Fix Rescheduling failed Jobs. Ensure that SD message thread - terminates correctly by doing pthread_kill(). Do not destroy - SD cond wait variable between executions of the job. Use local - mutex for cond variable to avoid blocking jcr chain. Fix poor - use of jcr use count in jobq.c for restarted jobs. -- Fix obsolete usage of foreach_dlist() to use foreach_jcr() in - lib/jcr.c -- prevents locking the jcr chaing. -- Apply patch from bug #564, which corrects listing volumes with - multiple autochangers. Apply same fix to next volume list. -- Fix bug #562 where restore bootstrap file is not unique. -- Use new routine lock_reservations() to lock the reservations - system, and call it while looking for a volume in askdir.c. - This could possibly fix bug #543. -- Stop SD command loop if job is canceled. - -Release 1.38.6 beta3 4Mar06 -04Mar06 -- The po files should now be current. -- Fix new sql_use_result() code to properly release the - buffers in all cases. -- Convert to using new Python class definitons with (object). -- Use the keyword ujobid to mean the unique job id; job or jobname - to mean the Job name given on the Name directive, and jobid to - be the numeric (non-unique) job id. -- Allow listing by any of the above. -- Add the user friendly job report code for reporting job elapsed time - and rates with suffexes. -- Add Priority and JobLevel as Python settable items. -- Use TEMPORARY table creation where the table is created by - Bacula. -- Add new code submitted by Eric for waiting on specific jobid. -- Add ACL checking for the dot commands. -- Fix restore of writable FIFOs. -- Fix a bug in bpipe where the string was freed too early. - -26Feb06 -- Fix bug reported by Arno listing blocks with bls -- Update the po files at Eric's request. - -Release 1.38.6-beta2 25Feb06 -25Feb06 -- Add sql_use_result() define. - -Changes to 1.38.6-beta1 -- Don't open default catalog if not in ACL. -- Add virtual disk autochanger code. -- Add user supplied bug fix to make two autochangers work - correctly using StorageId with InChanger checks. -- Correct new/old_jcr confusion in copy_storage(). -- Remove & from Job during scan in msgchan.c -- probably - trashed the stack. -- When getting the next Volume if no Volume in Append mode - exists and we are dealing with an Autochanger, search - for a Scratch Volume. -- Check for missing value in dot commands -- bug fix. -- Fix bug in update barcodes command line scanning. -- Make sure Pool Max Vols is respected. -- Check that user supplied a value before referencing - it in restore -- pointed out by Karl Hakimian. -- Add Karl Hakimian's table insert code. -- Don't ask user to select a specific Volume when - updating all volumes in a Pool. -- Remove reservation if set for read when removing dcr. -- Lock code that requests next appendable volume so that - two jobs to get the same Volume at the same time. -- Add new Device Type = xxx code. Values are file, tape, - dvd, and fifo. -- Preserve certain modes (ST_LABEL|ST_APPEND|ST_READ) across - a re-open to change read/write permission on a device. -- Correct a misplaced double quote in certain autochanger - scripts. -- Make make_catalog_backup.in a bit more portable. -- Implement Karl Hakimian's sql_use_result(), which speeds - up restore tree building and reduces the memory load. -- Correct a number of minor bugs in getting a Volume from - the Scratch Pool. -- Implement additional command line options for update Volume. -- Don't require user to enter a Volume name when updating - all Volumes in a pool. - -Release 1.38.5 released 19Jan06: -- Apply label barcodes fix supplied by Rudolf Cejka. -- Modify standard rpm installation to set SD group to disk - so that SD will by default have access to tape drives. -- Allow users to specify user/group and start options - for each daemon in /etc/sysconf/bacula file. - -Changes to 1.38.4 released 17Jan06: -- The main changes are to the Director and the Storage daemon, - thus there is no need to update your File daemons. Just the - same, I do recommend running with the release 1.38.3 Win32 - FD or later. -- Add two new queries to query.sql provided by Arno. One - list volumes known to the Storage device, and the other - lists volumes possibly needing replacement (error, ...). -- Add periodic (every 24 hours) garbage collection of memory - pool by releasing free buffers. -- Correct bug counting sized (for display only) in smartall.c -- Print FD mempool stats if debug > 0 rather than 5. -- Correct bug in alist.c that re-allocated the list if the - number of items goes to zero. -- Move the reservation system thread locking to the top level - so that one job at a time tries all possible drives before - waiting. -- Implement a reservation 'fail' message queue that is built - and destroyed on each pass through the reservation system. - These messages are displayed in a 'Jobs waiting to reserve - a drive' list during a 'status storage='. Note, multiple - messages will generally print for each JobId because they - represent the different problems with either the same drive - or different drives. If this output proves too confusing - of voluminous, I will display it only when debug level 1 - or greater is enabled in the SD. -- Add enable/disable job=<job-name>. This command prevents - the specified job from being scheduled. Even when disabled, - the job can be manually started from the console. -- During 'update slots' clear all InChanger flags where the - StorageId is zero (old Media records). -- Fix autochanger code to strip leading spaces from returned - slots number. Remove bc from chio-changer. -- Back port a bit of 1.39 crypto code to reduce diffs. -- Fix first call to autochanger that missed close()ing the - drive. Put close() just before each run_program(). Fixes - Arno's changer bug. -- Add PoolId to Job record when updating it at job start time. -- Pull in more code from 1.39 so that there are fewer file - differences (the new ua_dotcmds.c, base64.h, crypto.h - hmac.c jcr.c (dird and lib) lib.h md5.h parse_conf.c - util.c. Aside from ua_dotcmds.c these are mostly crypto - upgrades. -- Implement new method of walking the jcr chain. The - incr/dec of the use_count is done within the walking - routines. This should prevent a jcr from being freed - from under the walk routines. - - -Changes to 1.38.3 released 05Jan06: -- This is mainly a bug release fix. In addition, the multiple drive - reservation algorithm has been rewritten. -- In addition, the method of handling waiting for tapes to be - mounted and the mount messages has been modified. - (the above two items are a potential source of problems). -- Simplify code in askdir.c that waits for creating an appendable - volume so that it can handle multiple returns from the wait code. -- Modify the wait code to permit multiple returns. -- Return a zero when 'autochanger drives' is called and - it is not an autochanger. -- Make rewind_dev() a method taking a DCR as an argument. - This permits closing and reopening the drive if the - rewind fails as happens if the drive was loaded while the - file descriptor was open. This refreshes the file descriptor. -- Remove the ST_OPENED flag and always rely on fd < 0 for knowing - if the device is open or not. This should eliminate - Arnos problem. -- Return error if reserve cannot find at least one suitable device. -- Make wait_for_sysop() return correct state information. -- Fix Win32 state file problem. write was not using compat - code. This should fix bug #500. -- Modify gui on command to set only GUI mode and not batch. -- Modify .messages command to always print messages regardless - of the mode. -- If GUI mode is on, suppress automatic printing of - You have messages. -- Modify restore command in wx-console to set gui on and to use - only .messages instead of messages. Hopefully this fixes bug - #514. -- Implement load balancing code with multiple drive autochangers. -- Rewrite reservation algorithm again. Rename variables to be - more logical, add HEARTBEAT with Director, allow cancel of - jobs stuck in reservation, add last resourt any_drive. -- Fix seg fault if user labels a drive directly bug #513 -- Remove quotes around Version as it breaks things. -- Merge in Aleksandar Milivojevic's mods to the spec file. -- Apply sparse code fix for raw drives and fifos. Bug 506 -- Thorsten fixed Unicode cd problem with wx-console bug 505. -- Correct reservation system to do a last ditch try - for any mounted volume, then anyone anywhere. -- Updates to ssh-tunnel from Joshua Kugler. -- Added a report.pl program from Jonas Bjorklund. -- Simplify the O_NONBLOCK open() code for tape drives, - and always open nonblocking. -- Do not wait for open() if EIO returned (shouldn't happen). -- Eliminate 3 argument to tape open(). -- Correct the slot # edited in the 3995 Bad autochanger unload - message. -- With -S on bscan (show progress) do not divide by zero. -- Make cancel pthread_cond_signal() pthread_cond_broadcast(). -- When dcr is freed, also broadcast dev->wait_next_vol signal. -- Remove unused code in wait_for_device. -- Make wait_for_device() always return after 60 seconds of wait. -- Use localhost if no network configured -- Eliminated duplicate MaxVolBytes in cat update -- bug 509. -- Update specs to include mysql4 define. -- Return rec->FileIndex in dcr->VolLastIndex for normal - and partial records in read_record(). This allows bscan - to get FileIndex at EOT correct. -- Fix butil.c to correctly set dcr -- fixes seg fault in bls. -- Apply patch supplied by user (slightly modified) to fix - correct detection of holes in block devices and FIFOs. - Bug # 506. -- Apply patch supplied by user (slightly modified) - to fix SD hang with multiple pools and bad client - IP. Fixes bug # 508. -- Add nagios plugin to the examples directory. Submitted by - Christian Masopust. -- Remove warning message about multiple saves of hardlinked files - from find_one.c as it can generate too many warning messages. -- Reset timeout values before select() per patch from - Frank Sweetser for problems with non-blocking sockets. -- Unlink the state file if either reading or writing it gets - errors. Hopefully this will fix Win32 exit problems. -- Get next volume from Scratch pool before creating a volume. -- Set new Pool defaults in Vol when moved from Scratch Pool. -- Remove argument from create_bacula_database for SQLite as it - caused an error. -- Fix reservation so that mutexes are properly applied. -- Rework reservation algorithm so that two drives can be used - at the same time. -- Apply days keyword patch from Alexander.Bergolth at wu-wien.ac.at - If this patch is applied, the number of days can be specified with - 'list nextvol days=xx' - or - 'status dir days=xx' - My use case is to be able to preview the next scheduled job (and the - next tape to be used) on fridays if there are no scheduled jobs during - the weekend. -- Fix font code in gnome2 console user patch. Fixes bug #501. -- Fix malformatted bnet error message that caused seg fault - fixes bug 502 -- Applied user patch to improve README.vc8 in src/win32. -- Ensure that StorageId is stored in Media record when ever possible. -- Remove old code from winservice.cpp -- Break on error in scan. -- Fix typo in signal.c -- Separate read/write DCR in SD. Add jcr->read_dcr. -- Cleanup how find_device() works. -- Remove abs() in bfile.c so that it compiles on Solaris. Bug #491. - -Changes to 1.38.2: -- Fix crash in tray-monitor when daemon disconnects. Bug #479. -- Fix bnet-server bug found on OpenBSD. Bug #486 -- Fix cancel failure bug. Bug #481 -- Fix failure when Pool name has spaces. Bug #487 -- Fix SD crash in autochanger code. Mutex failure. Bug #488 -- Fix a couple of free()s in src/filed/acl.c -- Fix memory overrun in bfile.c in building OS X resource - fork filename. Bug #489 -- Add Pool name to SD status output. -- Add Python install dir for Solaris to configure. Bug #492 - -Changes to 1.38.1: -- Corrected ACL for Solaris (David Duchscher and Attila Fulop). -- Add bacula_mail_summary.sh to examples directory. It makes - a single email summary of any number of jobs. Submitted - by Adrew J. Millar. -- Unmount command now unloads autochanger. -- Fix hang in FD (Martin Simmons) -- Fix Win98 stat() problem in FD (Thorsten Engel) -- Fix update slots which did not clear missing tapes. -- Fix autostart install for FreeBSD (user reported) -- Fix several problems with PostgreSQL scripts (Eric Bollinger) -- Critical: allow restore of the first file of non-portable Win32 backup. -- Important: with muliple concurrent jobs the autochanger could get - confused because of a missing mutex. -- Fix accessing last slot in label and update slots. -- Modify configure.in to add execute option to sqlite3 catalog - scripts. -- Create update_xxx_table_8_to_9 scripts for updatedb -- Move the -lcrypt for PostgreSQL after the PostgreSQL libs in - autoconf/bacula-macros/db.m4 as suggested by user. Fixes bug #457. -- Remove @STATIC_CONS@ from tray-monitor Makefile as suggested - by user. Fixes bug #456. -- AMD64 users see compiler bug warning below!!!!!!!!! - -Major Changes in 1.38: -- Fixed out of order Volumes in restore. -- Improved algorithm for reserving drives in multiple drive - autochangers. Autochange users MUST use the new Autochanger - resource in the Storage daemon. -- There is a new database format that is not compatible - with previous databases. You must upgrade if converting - from 1.36.x. No changes from version 1.37.30. -- The Director, Storage daemon, and File daemons are - Deamons are not compatible with prior versions. - All FDs must be upgraded at the same time. -- Support for ANSI/IBM labels. -- Faster database inserts due to combining the MD5/SHA1 into - the attributes record, eliminating one INSERT/file backed up. -- Python Event support has been added. See below for - configuration and details. The implementation is somewhat minimal, - so the functionality is not complete. The Python interface - has not been extensively tested, so please consider it BETA. -- DVD writing support, using parts, and some new directives in - the Device resource of the Storage configuration file thanks - to Nicolas Boichat. Please note that this code is still - BETA and should be carefully tested before using in - production. -- Seven new options keywords in a FileSet resource: - ignorecase, fstype, hfsplussupport, wilddir, wildfile, regexdir, - and regexfile thanks to Pruben Guldberg). See below for details. -- Restore of all files for a Job or set of jobs even if the file - records have been removed from the catalog. -- Restore of a directory (non-recursive, i.e. only one level). -- Support for TLS (ssl) between all the daemon connections thanks - to Landon Fuller. -- Any Volume in the Pool named Scratch may be reassigned to any - other Pool when a new Volume is needed. -- You may clone a Job and thus write (almost) the same data - to multiple Volumes simultaneously (see below). Actually, - any Job may start any other Job with this mechanism, so it - also be used to group jobs. -- Unicode filename support for Win32 (thanks to Thorsten Engel) -- Volume Shadow Copy support for Win32 thus the capability to - backup exclusively opened files (thanks to Thorsten Engel). - A VSS enabled Win32 FD is available. You must explicitly - turn on VSS with 'Enable VSS = yes' in your FileSet resource. -- New manual format with an index (thanks to Karl Cunningham). -- New Web site format (thanks to Michael Scherer). -- SQLite3 support. -- Web-bacula, previously a separate project by Juan Luis Frances, - is now included in the Bacula GUI release. This is a management - level tool for reporting the state of Bacula jobs. -- The code is now Internationalized so that it can be localized - in native languages. Thanks to Nicolas Boichat. - -New Directives: -- New Job directive 'Prefer Mounted Volumes = yes|no' causes the - SD to select either an Autochanger or a drive with a valid - Volume already mounted in preference. If none is available, - it will select the first available drive. -- New Run directive in Job resource of DIR. It permits - cloning of jobs. To clone a copy of the current job, use - Run = 'job-name level=%l since=\'%s\'' - Note, job-name is normally the same name as the job that - is running but there is no restriction on what you put. If you - want to start the job by hand and use job overrides such as - storage=xxx, realize that the job will be started with the - default storage values not the overrides. The level=%l guarantees - that the chosen level of the job is the same, and the since=... - ensures that the job uses *exactly* the same time/date for incremental - and differential jobs. The since=... is ignored when level=Full. - A cloned job will not start additional clones, so it is not possible - to recurse. -- New Options keywords in a FileSet directive (backported to 1.36.3): - - WildDir xxx - Will do a wild card match against directories (files will not - be matched). - - WildFile xxx - Will do a wild card match against files (directories will not - be matched). - - RegexDir xxx - Will do a regular expression match against directories (files - will not be matched). - - RegexFile xxx - Will do a regular expression match against files( directories - will not be matched). - - IgnoreCase = yes | no - Will ignore case in wild card and regular expression matches. - This is handy for Windows where filename case is not significant. - - FsType = string - where string is a filesystem type: ext2, jfs, ntfs, proc, - reiserfs, xfs, usbdevfs, sysfs, smbfs, iso9660. For ext3 - systems, use ext2. You may have multiple fstype directives - and thus permit multiple filesystem types. If the type - specified on the fstype directive does not match the - filesystem for a particular directive, that directory will - not be backed up. This directive can be used to prevent - backing up non-local filesystems. - - HFS Plus Support = yes | no - If set, Mac OS X resource forks will be saved and restored. -- Label Type = ANSI | IBM | Bacula - Implemented in Director Pool resource and in SD Device resource. - If it is specified in the SD Device resource, it will take - precedence over the value passed from the Director to the SD. -- Check Labels = yes | no - Implemented in the SD Device resource. If you intend to read - ANSI or IBM labels, this *must* be set. Even if the volume - is not ANSI labeled, you can set this to yes, and Bacula will - check the label type. -- Scripts Directory = <directory> name. Defines the directory from - which Bacula scripts will be called for events. In fact, Bacula - appends this name to the standard Python list of search directories, - so the script could also be in any of the Python system directories. -- In FileSet, you can exclude backing up of hardlinks (if you have - a lot, it can be very expensive), by using: - HardLinks = no - in the Options section. Patch supplied by David R Bosso. Thanks. -- MaximumPartSize = bytes (SD, Device resource) - Defines the maximum part size. -- Requires Mount = Yes/No (SD, Device resource) - Defines if the device require to be mounted to be read, and if it - must be written in a special way. If it set, the following directives - must be defined in the same Device resource: - + Mount Point = directory - Directory where the device must be mounted. - + Mount Command = name-string - Command that must be executed to mount the device. Before the command - is executed, %a is replaced with the Archive Device, and %m with the - Mount Point. - + Unmount Command = name-string - Command that must be executed to unmount the device. Before the - command is executed, %a is replaced with the Archive Device, and - %m with the Mount Point. - + Write Part Command = name-string - Command that must be executed to write a part to the device. Before - the command is executed, %a is replaced with the Archive Device, %m - with the Mount Point, %n with the current part number (0-based), - and %v with the current part filename. - + Free Space Command = name-string - Command that must be executed to check how much free space is left - on the device. Before the command is executed, %a is replaced with - the Archive Device, %m with the Mount Point, %n with the current part - number (0-based), and %v with the current part filename. -- Write Part After Job = Yes/No (DIR, Job Resource, and Schedule Resource) - If this directive is set to yes (default no), a new part file will be - created after the job is finished. -- A pile of new Directives to support TLS. Please see the TLS chapter - of the manual. - -New Commands: -- 'python restart' restarts the Python interpreter. Rather brutal, make - sure no Python scripts are running. This permits you to change - a Python script and get Bacula to use the new script. - -New configure options: -- --with-libintl-prefix for defining alternate locations for - the NLS internationalization libraries. Not normally required. -- --datadir for defining where the language files will be installed - required only if you do not want the default /usr/share. - -Items to note!!! -- The Storage daemon now keeps track of what tapes it is using - (was not the case in 1.36.x). This means that you must be much - more careful when removing tapes and putting up a new one. In - general, you should always do a 'unmount' prior to removing a - tape, and a 'mount' after putting a new one into the drive. -- If you use an Autochanger, you MUST update your SD conf file - to use the new Autochanger resource. Otherwise, certain commands - such as 'update slots' may not work. -- You must add --with-python=[DIR] to the configure command line - if you want Python support. Python 2.2, 2.3 and 2.4 should be - automatically detected if in the standard place. -- When linking with --with-python, there are a few warnings that - can be ignored. -- You must either create a new catalog database or upgrade your - old database. After installation, run from your scripts - directory: - - ./upgrade_bacula_tables - - You can also find this script in the <bacula-source>/src/cats - directory. -- The Director, Storage daemon, and File daemons are - Deamons are not compatible with prior versions. - All FDs must be upgraded at the same time. -- You must add --with-openssl to the configure command line if - you want TLS communications encryption support. -- Disk seeking during restores does not yet work correctly in - all cases, so it is turned off. -- Note, with gcc (GCC) 4.0.1 20050727 (Red Hat 4.0.1-5) on an - AMD64 CPU running 64 bit CentOS4, there is a compiler bug that - generates bad code that causes Bacula to segment fault. - Typically you will see this in the Storage daemon first. The - solution is to compile Bacula ensuring that no optimization is - turned on (normally it is -O2). - This same compiler bug has been reported and confirmed with - gcc (GCC) 4.0.2 20050901 (prerelease) (SUSE Linux) running on - an AMD64 CPU. This for the moment, I would recommend that all - users of GCC 4.0.1 or greater turn off all optimization when - compiling. - +- Remove automatic case folding on Windows FDs. You must + explicitly use the 'Ignore Case = yes' option. +- Implement wild program in tools directory for testing + wild-cards. Almost identical to the regex program. +- Use the new bregex.c to implement Regex expressions on Win32. +- Apply patch from Christopher Hull + - Allow multiple connections to database with different + parameters. + - Invalidate the scheduler when doing a reload. Fixes seg + fault, but still 60 second window. + - Additional info in Reschedule message. + - Use set_jcr_job_status() everywhere to prevent loss of + cancel, error. + - Display peer IP in FD if error from connecting DIR. + - Don't increment file count for DIRBEGIN. + - Replace illegal characters in Win32 filename by _. + - Add SE_CREATE_PERMANENT_NAME privilege in Win32. + - Hash hard link filenames rather than linked list (performance). + - Fix for security failure in chdir on Win32. + - Add CreateDirectoryA/W win32 API entry points. +- programs to duplicate Bacula's base64 algorithm using standard + routines. This fixes bugs #296, and 565. Patch submitted by + author of bug #565. +- Fixes to reloading the Dir conf file from Eric Bollengier and Christopher + Hull. +- Modify LICENSE to correct some problems pointed out by Debian. +- Apply a patch submitted by cesarb in bug #606 to implement O_NOATIME support. + O_NOATIME is a open() flag which makes it possible to read a file without + updating the inode atime (and also without the inode ctime update which + happens if you try to set the atime back to its previous value). It also + prevents a race condition when two programs are reading the same file, but + only one does not want to change the atime. It's most useful for backup + programs and file integrity checkers (and bacula can fit on both + categories). + You enable it in the Bacula FileSet Options resource by setting: + noatime = yes + The effect of this option is similar to the keepatime option except + it is more efficient and avoids modifying ctime. +- Implement a pile of new man pages contributed by Jose Tallon. +- Modify the database format for handling Migration jobs: + Add PriorJobId, RealEndTime to Job table + Delete MAC table + Remove Stripe from JobMedia record (not used, wasting space) + Add ScratchPoolId, RecyclePoolId, Enabled to Media record + Add Cost to Location table. + Enabled to Media table and Location table. +- Security: harden authentication failure in FD by single threading errors + and forcing a 6 second wait. +- If using GCC (actually g++) add the following compiler flags + -fno-strict-aliasing -fno-exceptions -fno-rtti +- Turn on new bsnprintf() code. The reason for this code is to + eliminate the security problems associated with using the + system libraries print routines. +- Implement job report that indicates where Storage and Pool + came from -- with overrides and Pool storage and NextPool, + it is all very complicated. +- Add more detail (Storage, Device) to list of volumes printed + for restore. +- Add new VOLMGMT message class. No messages are yet sent with this + class. +- Improved Bacula rescue procedures -- see the Disaster Recovery + chapter of the manual +- Add spooling/despooling info in status output of SD. +- Add Comment field to llist of a volume. +- Allow true/false in many but not all yes/no directives. +- The Bacula source code is now copyrighted by the Free Software + Foundation Europe. The Developer's Guide documents the new procedures, + and the LICENSE file has been updated. +- Apply Jaime Ventura's patch that implements the Messages resource + Mail On Success directive. +- The Client returns its Version string, which is printed in the Job + report. +- The Client returns whether or not VSS and Encryption are used, which + are printed in the Job report. + +Additional Features Added for Win32: +- Added DriveType directive to the Director's Include Option FileSet + resource. Allowed values are: fixed, removable, cdrom, and remote. There + is only an implementation for Windows because it is the only platform that + has the concept of drives. + +- Adds EnhancedWild directive to the Director's Include Option FileSet + resource. Allowed values are: yes and no. + + When EnhancedWild is enabled then the processing of the + Wild, WildDir and WildFile is changed in the following ways. + + Patterns conform to Posix + \ is not a special character in character classification [] + To match a - it must be the first or last character + To match a ] it must be the first character + + fnmatch option FNM_FILE_NAME is specified * doesn't match a / + so it won't match multiple directory levels in a path + +- Relative WildFile patterns (ones without a leading /) match + against the filename portion. This in combination with the + FNM_FILE_NAME fnmatch() flag makes directives such as WildFile = + abc*.def work as expected. + +- Adds support for the shell's feature of brace expansion. -Other Items Fixed: -- Security fixes for temp files created in mtx-changer, during - ./configure, and during making of Rescue disk. -- A new script, dvd-handler, in the scripts directory, - which is designed to be used as parameters to Write Part Command and - Free Space Command. They need the dvd+rw-tools to be installed - (http://fy.chalmers.se/~appro/linux/DVD+RW/) AND, the growisofs - program must be patched using the - <bacula-source>/patches/dvd+rw-tools-5.21.4.10.8.bacula.patch - You must have Python installed to run the scripts. -- Part files support: File volumes can now be split into multiple - files, called 'parts'. -- For the details of the Python scripting support, please see the new - Python Scripting chapter in the manual. -- The default user/group for the Director and Storage daemon installed - by rpms is bacula/bacula, thus you may need to add additional permissions - to your database, or modify the permissions of the tape drive. If - all else fails, change to using user=root. However, it is more secure - to use user=bacula. -;;; + Here is an example where braces allow 24 lines to be expressed in 5. -Michael;;;2005/02/25;;;19:59 -News-Page for the Bacula-Website finished -When you read this, you read the first news posted by me *hehe* -through the new Bacula-News-System. + # Exclude directories full of lots and lots of useless little files + WildDir = "[A-Z]:/{Documents and Settings,{WINNT,Windows}/Profiles}/*/Cookies" + WildDir = "[A-Z]:/{Documents and Settings,{WINNT,Windows}/Profiles}/*/Recent" + WildDir = "[A-Z]:/{Documents and Settings,{WINNT,Windows}/Profiles}/*/{Local Settings,LOCALS~1}/History" + WildDir = "[A-Z]:/{Documents and Settings,{WINNT,Windows}/Profiles}/*/{Local Settings,LOCALS~1}/Temp" + WildDir = "[A-Z]:/{Documents and Settings,{WINNT,Windows}/Profiles}/*/{Local Settings,LOCALS~1}/Temporary Internet Files" -Its file-based, no fancy database need. ;;; diff --git a/docs/home-page/fr/pages/presentations.php b/docs/home-page/fr/pages/presentations.php new file mode 100644 index 00000000..443b33ec --- /dev/null +++ b/docs/home-page/fr/pages/presentations.php @@ -0,0 +1,24 @@ + + + + + + + + + + + +
+ Presentations de Bacula +
+ + +
    +
+
+

+ diff --git a/docs/home-page/news.txt b/docs/home-page/news.txt index 0d70e11b..45cd27dd 100644 --- a/docs/home-page/news.txt +++ b/docs/home-page/news.txt @@ -1,3 +1,30 @@ +Kern;;;2007/1/13;;;14:30 + +Bacula Version 2.0.1 has been released to Source Forge. +This is bug fix update to version 2.0.0 and contains +the following fixes: + +- Fix Bacula->Documentation link on Win32 to point to index.html + instead of bacula.html. Fixed bug #750. +- Return JobId in db_get_job_record() when JobId==0. This should + fix bug #741. +- Do not release source pointers when restarting a failed job. +- Add dynamic dll entry point for SHGetFolderPath to Win32 code. + This *should* fix bug #747. +- Modify winbacula.nsi to substitute with g bin_dir_cmd. Should fix + bug #742. +- Modify USTORE constructor to set an empty store_source string, + and don't copy the store_source string in a cancel. Hopefully + this will fix Arno's seg fault, bug #744. +- Add back code to disable conio in configure. Fixes bug #743. +- Correct the Options scanner in the FD to correctly handle + SHA1 option, which was eating the next option. Reported by + Sebastien Guilbaud. +- Add code to indicate when the SD is spooling, spool wait, and + despooling as requested by Alan Brown. + +;;; + Kern;;;2007/1/4;;;14:30 Bacula Version 2.0.0 has been released to Source Forge. diff --git a/docs/home-page/pages/professional.php b/docs/home-page/pages/professional.php index 4b6a1442..ddb531f7 100644 --- a/docs/home-page/pages/professional.php +++ b/docs/home-page/pages/professional.php @@ -269,8 +269,9 @@ solutions, based on Open Source software, help you run your servers and applications failure-free. Special focus on Nagios, Bacula, - Request Tracker, and cluster solutions.
http://www.netways.de
+ Request Tracker, and cluster solutions.
+
+ http://www.netways.de
@@ -295,7 +296,7 @@
Modern communications, Internet projects and IT services since 1996! Specialized in heterogeneous networks (linux, mac, windows) and open - source solutions. + source solutions.

http://www.raptus.com
@@ -331,6 +332,32 @@ http://www.sinenomine.net
+ + +


+ + + + Thinxsolutions + + + + + Müller, Bender, Guth GbR
+   Maarweg 139
+   50825 Cologne, Germany
+
+   +49 221 35503530
+
+ We implement and manage corporate networks for our customers + and offer consulting and professional support for various open source + software solutions.
+
+ http://www.thinxsolutions.com
+ + + +
@@ -351,6 +378,7 @@ (Spamassassin/Amavis/Clamav/BitDefender) and backup (with Bacula of course). Network monitoring with Nagios.
+
http://www.WinFix.IT
diff --git a/docs/home-page/pages/projects.php b/docs/home-page/pages/projects.php index 765d1645..a8ca9077 100644 --- a/docs/home-page/pages/projects.php +++ b/docs/home-page/pages/projects.php @@ -7,87 +7,59 @@
                 
                 
+                
 Projects:
                      Bacula Projects Roadmap 
-                Prioritized by user vote 07 December 2005
-                    Status updated 30 July 2006
+                    Status updated 12 January 2007
 
 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.
-
+Item  1:  Accurate restoration of renamed/deleted files
+Item  2:  Implement a Bacula GUI/management tool.
+Item  3:  Implement Base jobs.
+Item  4:  Implement from-client and to-client on restore command line.
+Item  5:  Implement creation and maintenance of copy pools
+Item  6:  Merge multiple backups (Synthetic Backup or Consolidation).
+Item  7:  Deletion of Disk-Based Bacula Volumes
+Item  8:  Implement a Python interface to the Bacula catalog.
+Item  9:  Archival (removal) of User Files to Tape
+Item 10:  Add Plug-ins to the FileSet Include statements.
+Item 11:  Implement more Python events in Bacula.
+Item 12:  Quick release of FD-SD connection after backup.
+Item 13:  Implement huge exclude list support using hashing.
+Item 14:  Allow skipping execution of Jobs
+Item 15:  Tray monitor window cleanups
+Item 16:  Split documentation
+Item 17:  Automatic promotion of backup levels
+Item 18:  Add an override in Schedule for Pools based on backup types.
+Item 10:  An option to operate on all pools with update vol parameters
+Item 20:  Include JobID in spool file name
+Item 21:  Include timestamp of job launch in "stat clients" output
+Item 22:  Message mailing based on backup types
+Item 23:  Allow inclusion/exclusion of files in a fileset by creation/mod times
+Item 24:  Add a scheduling syntax that permits weekly rotations
+Item 25:  Improve Bacula's tape and drive usage and cleaning management.
+Item 26:  Implement support for stacking arbitrary stream filters, sinks.
+Item 27:  Allow FD to initiate a backup
+Item 28:  Directive/mode to backup only file changes, not entire file
+Item 29:  Automatic disabling of devices
+Item 30:  Incorporation of XACML2/SAML2 parsing
+Item 31:  Clustered file-daemons
+Item 32:  Commercial database support
+Item 33:  Archive data
+Item 34:  Filesystem watch triggered backup.
+Item 35:  Implement multiple numeric backup levels as supported by dump
+Item 36:  Implement a server-side compression feature
+Item 37:  Cause daemons to use a specific IP address to source communications
+Item 38:  Multiple threads in file daemon for the same job
+Item 39:  Restore only file attributes (permissions, ACL, owner, group...)
+Item 40:  Add an item to the restore option where you can select a pool
 
 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
+Item  1:  Accurate restoration of renamed/deleted files
   Date:   28 November 2005
   Origin: Martin Simmons (martin at lispworks dot com)
-  Status:
+  Status: Robert Nelson will implement this
 
   What:   When restoring a fileset for a specified date (including "most
           recent"), Bacula should give you exactly the files and directories
@@ -101,7 +73,7 @@ Item  3:  Accurate restoration of renamed/deleted files from
 
   Why:    Incremental/Differential would be much more useful if this worked.
 
-  Notes:  Item 14 (Merging of multiple backups into a single one) seems to
+  Notes:  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.  
 
@@ -116,13 +88,13 @@ Item  3:  Accurate restoration of renamed/deleted files from
           are updated, the dummy directory is newer so the real values
           are not updated.
 
-Item 4:   Implement a Bacula GUI/management tool using Python.
+Item  2:  Implement a Bacula GUI/management tool.
   Origin: Kern
   Date:   28 October 2005
-  Status: Lucus is working on this for Python GTK+.
+  Status:         
 
   What:   Implement a Bacula console, and management tools
-          using Python and Qt or GTK.
+          probably using Qt3 and C++.
 
   Why:    Don't we already have a wxWidgets GUI?  Yes, but
           it is written in C++ and changes to the user interface
@@ -135,10 +107,12 @@ Item 4:   Implement a Bacula GUI/management tool using Python.
           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 
+ Notes:   There is a partial Python-GTK implementation
+          Lucas Di Pentima  but
+          it is no longer being developed.
 
-Item 5:   Implement Base jobs.
+
+Item  3:  Implement Base jobs.
   Date:   28 October 2005
   Origin: Kern
   Status: 
@@ -172,87 +146,28 @@ Item 5:   Implement Base jobs.
           FD a list of files/attribs, and the FD must search the
           list and compare it for each file to be saved.
 
-Item  6:  Allow FD to initiate a backup
-  Origin: Frank Volf (frank at deze dot org)
-  Date:   17 November 2005
-  Status:
-
-   What:  Provide some means, possibly by a restricted console that
-          allows a FD to initiate a backup, and that uses the connection
-          established by the FD to the Director for the backup so that
-          a Director that is firewalled can do the backup.
-
-   Why:   Makes backup of laptops much easier.
-
-Item  7:  Improve Bacula's tape and drive usage and cleaning management.
-  Date:   8 November 2005, November 11, 2005
-  Origin: Adam Thornton ,
-          Arno Lehmann 
-  Status:
-
-  What:   Make Bacula manage tape life cycle information, tape reuse
-          times and drive cleaning cycles.
-
-  Why:    All three parts of this project are important when operating
-          backups.
-          We need to know which tapes need replacement, and we need to
-          make sure the drives are cleaned when necessary.  While many
-          tape libraries and even autoloaders can handle all this
-          automatically, support by Bacula can be helpful for smaller
-          (older) libraries and single drives.  Limiting the number of
-          times a tape is used might prevent tape errors when using
-          tapes until the drives can't read it any more.  Also, checking
-          drive status during operation can prevent some failures (as I
-          [Arno] had to learn the hard way...)
-
-  Notes:  First, Bacula could (and even does, to some limited extent)
-          record tape and drive usage.  For tapes, the number of mounts,
-          the amount of data, and the time the tape has actually been
-          running could be recorded.  Data fields for Read and Write
-          time and Number of mounts already exist in the catalog (I'm
-          not sure if VolBytes is the sum of all bytes ever written to
-          that volume by Bacula).  This information can be important
-          when determining which media to replace.  The ability to mark
-          Volumes as "used up" after a given number of write cycles
-          should also be implemented so that a tape is never actually
-          worn out.  For the tape drives known to Bacula, similar
-          information is interesting to determine the device status and
-          expected life time: Time it's been Reading and Writing, number
-          of tape Loads / Unloads / Errors.  This information is not yet
-          recorded as far as I [Arno] know.  A new volume status would
-          be necessary for the new state, like "Used up" or "Worn out".
-          Volumes with this state could be used for restores, but not
-          for writing. These volumes should be migrated first (assuming
-          migration is implemented) and, once they are no longer needed,
-          could be moved to a Trash pool.
-
-          The next step would be to implement a drive cleaning setup.
-          Bacula already has knowledge about cleaning tapes.  Once it
-          has some information about cleaning cycles (measured in drive
-          run time, number of tapes used, or calender days, for example)
-          it can automatically execute tape cleaning (with an
-          autochanger, obviously) or ask for operator assistance loading
-          a cleaning tape.
-
-          The final step would be to implement TAPEALERT checks not only
-          when changing tapes and only sending the information to the
-          administrator, but rather checking after each tape error,
-          checking on a regular basis (for example after each tape
-          file), and also before unloading and after loading a new tape.
-          Then, depending on the drives TAPEALERT state and the known
-          drive cleaning state Bacula could automatically schedule later
-          cleaning, clean immediately, or inform the operator.
-
-          Implementing this would perhaps require another catalog change
-          and perhaps major changes in SD code and the DIR-SD protocol,
-          so I'd only consider this worth implementing if it would
-          actually be used or even needed by many people.
-
-          Implementation of these projects could happen in three distinct
-          sub-projects: Measuring Tape and Drive usage, retiring
-          volumes, and handling drive cleaning and TAPEALERTs.
-
-Item  8:  Implement creation and maintenance of copy pools
+Item  4:  Implement from-client and to-client on restore command line.
+   Date:  11 December 2006
+  Origin: Discussion on Bacula-users entitled 'Scripted restores to
+          different clients', December 2006 
+  Status: New feature request
+ 
+  What:   While using bconsole interactively, you can specify the client
+          that a backup job is to be restored for, and then you can
+          specify later a different client to send the restored files
+          back to. However, using the 'restore' command with all options
+          on the command line, this cannot be done, due to the ambiguous
+          'client' parameter. Additionally, this parameter means different
+          things depending on if it's specified on the command line or
+          afterwards, in the Modify Job screens.
+ 
+     Why: This feature would enable restore jobs to be more completely
+          automated, for example by a web or GUI front-end.
+ 
+   Notes: client can also be implied by specifying the jobid on the command
+          line
+
+Item  5:  Implement creation and maintenance of copy pools
   Date:   27 November 2005
   Origin: David Boyes (dboyes at sinenomine dot net)
   Status:
@@ -294,111 +209,11 @@ Item  8:  Implement creation and maintenance of copy pools
   Notes:  I would commit some of my developers' time if we can agree
           on the design and behavior. 
 
-Item  9:  Implement new {Client}Run{Before|After}Job feature.
-  Date:   26 September 2005
-  Origin: Phil Stracchino
-  Status: Done. This has been implemented by Eric Bollengier
-
-  What:   Some time ago, there was a discussion of RunAfterJob and
-          ClientRunAfterJob, and the fact that they do not run after failed
-          jobs.  At the time, there was a suggestion to add a
-          RunAfterFailedJob directive (and, presumably, a matching
-          ClientRunAfterFailedJob directive), but to my knowledge these
-          were never implemented.
-
-          The current implementation doesn't permit to add new feature easily.
-
-          An alternate way of approaching the problem has just occurred to
-          me.  Suppose the RunBeforeJob and RunAfterJob directives were
-          expanded in a manner like this example:
-
-          RunScript {
-              Command = "/opt/bacula/etc/checkhost %c"
-              RunsOnClient = No          # default
-              AbortJobOnError = Yes      # default
-              RunsWhen = Before
-          }
-          RunScript {
-              Command = c:/bacula/systemstate.bat
-              RunsOnClient = yes
-              AbortJobOnError = No
-              RunsWhen = After
-              RunsOnFailure = yes
-          }
-
-          RunScript {
-              Command = c:/bacula/deletestatefile.bat
-              Target = rico-fd
-              RunsWhen = Always
-          }
-
-          It's now possible to specify more than 1 command per Job.
-          (you can stop your database and your webserver without a script)
-
-          ex :
-          Job {
-              Name = "Client1"
-              JobDefs = "DefaultJob"
-              Write Bootstrap = "/tmp/bacula/var/bacula/working/Client1.bsr"
-              FileSet = "Minimal"
-
-              RunBeforeJob = "echo test before ; echo test before2"       
-              RunBeforeJob = "echo test before (2nd time)"
-              RunBeforeJob = "echo test before (3rd time)"
-              RunAfterJob = "echo test after"
-              ClientRunAfterJob = "echo test after client"
-
-              RunScript {
-                Command = "echo test RunScript in error"
-                Runsonclient = yes
-                RunsOnSuccess = no
-                RunsOnFailure = yes
-                RunsWhen = After            # never by default
-              }
-              RunScript {
-                Command = "echo test RunScript on success"
-                Runsonclient = yes
-                RunsOnSuccess = yes # default
-                RunsOnFailure = no  # default
-                RunsWhen = After
-              }
-          }
-
-  Why:    It would be a significant change to the structure of the
-          directives, but allows for a lot more flexibility, including
-          RunAfter commands that will run regardless of whether the job
-          succeeds, or RunBefore tasks that still allow the job to run even
-          if that specific RunBefore fails.
-
-  Notes:  (More notes from Phil, Kern, David and Eric)
-          I would prefer to have a single new Resource called
-          RunScript.
-
-            RunsWhen = After|Before|Always
-            RunsAtJobLevels = All|Full|Diff|Inc # not yet implemented
-
-          The AbortJobOnError, RunsOnSuccess and RunsOnFailure directives
-          could be optional, and possibly RunWhen as well.
-
-          AbortJobOnError would be ignored unless RunsWhen was set to Before
-          and would default to Yes if omitted.
-          If AbortJobOnError was set to No, failure of the script
-          would still generate a warning.
-
-          RunsOnSuccess would be ignored unless RunsWhen was set to After
-          (or RunsBeforeJob set to No), and default to Yes.
-
-          RunsOnFailure would be ignored unless RunsWhen was set to After,
-          and default to No.
-
-          Allow having the before/after status on the script command
-          line so that the same script can be used both before/after.
-
-Item 10:  Merge multiple backups (Synthetic Backup or Consolidation).
+Item  6:  Merge multiple backups (Synthetic Backup or Consolidation).
   Origin: Marc Cousin and Eric Bollengier 
   Date:   15 November 2005
   Status: Waiting implementation. Depends on first implementing 
-          project Item 2 (Migration).
+          project Item 2 (Migration) which is now done.
 
   What:   A merged backup is a backup made without connecting to the Client.
           It would be a Merge of existing backups into a single backup.
@@ -430,7 +245,7 @@ Item 10:  Merge multiple backups (Synthetic Backup or Consolidation).
           data can then be pruned (or not) from the catalog, possibly
           allowing older volumes to be recycled
 
-Item 11:  Deletion of Disk-Based Bacula Volumes
+Item  7:  Deletion of Disk-Based Bacula Volumes
   Date:   Nov 25, 2005
   Origin: Ross Boylan  (edited
           by Kern)
@@ -451,111 +266,7 @@ Item 11:  Deletion of Disk-Based Bacula Volumes
           The migration project should also remove a Volume that is
           migrated. This might also work for tape Volumes.
 
-Item 12:  Directive/mode to backup only file changes, not entire file
-  Date:   11 November 2005
-  Origin: Joshua Kugler 
-          Marek Bajon 
-  Status: 
-
-  What:   Currently when a file changes, the entire file will be backed up in
-          the next incremental or full backup.  To save space on the tapes
-          it would be nice to have a mode whereby only the changes to the
-          file would be backed up when it is changed.
-
-  Why:    This would save lots of space when backing up large files such as 
-          logs, mbox files, Outlook PST files and the like.
-
-  Notes:  This would require the usage of disk-based volumes as comparing 
-          files would not be feasible using a tape drive.
-
-Item 13:  Multiple threads in file daemon for the same job
-  Date:   27 November 2005
-  Origin: Ove Risberg (Ove.Risberg at octocode dot com)
-  Status:
-
-  What:   I want the file daemon to start multiple threads for a backup
-          job so the fastest possible backup can be made.
-
-          The file daemon could parse the FileSet information and start
-          one thread for each File entry located on a separate
-          filesystem.
-
-          A configuration option in the job section should be used to
-          enable or disable this feature. The configuration option could
-          specify the maximum number of threads in the file daemon.
-
-          If the theads could spool the data to separate spool files
-          the restore process will not be much slower.
-
-  Why:    Multiple concurrent backups of a large fileserver with many
-          disks and controllers will be much faster.
-
-  Notes:  I am willing to try to implement this but I will probably
-          need some help and advice.  (No problem -- Kern)
-
-Item 14:  Implement red/black binary tree routines.
-  Date:   28 October 2005
-  Origin: Kern
-  Status: Class code is complete. Code needs to be integrated into
-          restore tree code.
-
-  What:   Implement a red/black binary tree class. This could 
-          then replace the current binary insert/search routines
-          used in the restore in memory tree.  This could significantly
-          speed up the creation of the in memory restore tree.
-
-  Why:    Performance enhancement.
-
-Item 15:  Add support for FileSets in user directories  CACHEDIR.TAG
-  Origin: Norbert Kiesel 
-  Date:   21 November 2005
-  Status: (I think this is better done using a Python event that I
-           will implement in version 1.39.x).
-
-  What:   CACHDIR.TAG is a proposal for identifying directories which
-          should be ignored for archiving/backup.  It works by ignoring
-          directory trees which have a file named CACHEDIR.TAG with a
-          specific content.  See
-          http://www.brynosaurus.com/cachedir/spec.html
-          for details.
-
-          From Peter Eriksson:
-          I suggest that if this is implemented (I've also asked for this
-          feature some year ago) that it is made compatible with Legato
-          Networkers ".nsr" files where you can specify a lot of options on
-          how to handle files/directories (including denying further
-          parsing of .nsr files lower down into the directory trees).  A
-          PDF version of the .nsr man page can be viewed at:
-
-          http://www.ifm.liu.se/~peter/nsr.pdf
-
-  Why:    It's a nice alternative to "exclude" patterns for directories
-          which don't have regular pathnames.  Also, it allows users to
-          control backup for themselves.  Implementation should be pretty
-          simple.  GNU tar >= 1.14 or so supports it, too.
-
-  Notes:  I envision this as an optional feature to a fileset
-          specification.
-
-
-Item 16:  Implement extraction of Win32 BackupWrite data.
-  Origin: Thorsten Engel 
-  Date:   28 October 2005
-  Status: Done. Assigned to Thorsten. Implemented in current CVS
-
-  What:   This provides the Bacula File daemon with code that
-          can pick apart the stream output that Microsoft writes
-          for BackupWrite data, and thus the data can be read
-          and restored on non-Win32 machines.
-
-  Why:    BackupWrite data is the portable=no option in Win32
-          FileSets, and in previous Baculas, this data could
-          only be extracted using a Win32 FD. With this new code,
-          the Windows data can be extracted and restored on
-          any OS.
-
-
-Item 18:  Implement a Python interface to the Bacula catalog.
+Item  8:  Implement a Python interface to the Bacula catalog.
   Date:   28 October 2005
   Origin: Kern
   Status: 
@@ -566,7 +277,7 @@ Item 18:  Implement a Python interface to the Bacula catalog.
   Why:    This will permit users to customize Bacula through
           Python scripts.
 
-Item 18:  Archival (removal) of User Files to Tape
+Item  9:  Archival (removal) of User Files to Tape
 
   Date:   Nov. 24/2005 
 
@@ -595,7 +306,7 @@ Item 18:  Archival (removal) of User Files to Tape
           access time.  Then after another 6 months (or possibly as one
           storage pool gets full) data is migrated to Tape.
 
-Item 19:  Add Plug-ins to the FileSet Include statements.
+Item 10:  Add Plug-ins to the FileSet Include statements.
   Date:   28 October 2005
   Origin:
   Status: Partially coded in 1.37 -- much more to do.
@@ -611,9 +322,9 @@ Item 19:  Add Plug-ins to the FileSet Include statements.
           plug-in knows how to backup his Oracle database without
           stopping/starting it, for example.
 
-Item 20:  Implement more Python events in Bacula.
+Item 11:  Implement more Python events in Bacula.
   Date:   28 October 2005
-  Origin: 
+  Origin: Kern
   Status: 
 
   What:   Allow Python scripts to be called at more places 
@@ -632,7 +343,7 @@ Item 20:  Implement more Python events in Bacula.
           jobs (possibly also scheduled jobs).
 
 
-Item 21:  Quick release of FD-SD connection after backup.
+Item 12:  Quick release of FD-SD connection after backup.
   Origin: Frank Volf (frank at deze dot org)
   Date:   17 November 2005
   Status:
@@ -667,71 +378,11 @@ Item 21:  Quick release of FD-SD connection after backup.
           has done the same thing -- so in a way keeping the SD-FD link
           open to the very end is not really very productive ...
 
-   Why:   Makes backup of laptops much easier.
-
-Item 22:  Permit multiple Media Types in an Autochanger
-  Origin: Kern
-  Status: Done. Implemented in 1.38.9 (I think).  
-
-  What:   Modify the Storage daemon so that multiple Media Types
-          can be specified in an autochanger. This would be somewhat
-          of a simplistic implementation in that each drive would
-          still be allowed to have only one Media Type.  However,
-          the Storage daemon will ensure that only a drive with
-          the Media Type that matches what the Director specifies
-          is chosen.
+   Why:   Makes backup of laptops much faster.
 
-  Why:    This will permit user with several different drive types
-          to make full use of their autochangers.
-
-Item 23:  Allow different autochanger definitions for one autochanger.
-  Date:   28 October 2005
-  Origin: Kern
-  Status: 
 
-  What:   Currently, the autochanger script is locked based on
-          the autochanger. That is, if multiple drives are being
-          simultaneously used, the Storage daemon ensures that only
-          one drive at a time can access the mtx-changer script.
-          This change would base the locking on the control device,
-          rather than the autochanger. It would then permit two autochanger
-          definitions for the same autochanger, but with different 
-          drives. Logically, the autochanger could then be "partitioned"
-          for different jobs, clients, or class of jobs, and if the locking
-          is based on the control device (e.g. /dev/sg0) the mtx-changer
-          script will be locked appropriately.
-
-  Why:    This will permit users to partition autochangers for specific
-          use. It would also permit implementation of multiple Media
-          Types with no changes to the Storage daemon.
-
-Item 24:  Automatic disabling of devices
-   Date:   2005-11-11
-   Origin: Peter Eriksson 
-   Status:
-
-   What:  After a configurable amount of fatal errors with a tape drive
-          Bacula should automatically disable further use of a certain
-          tape drive. There should also be "disable"/"enable" commands in
-          the "bconsole" tool.
-
-   Why:   On a multi-drive jukebox there is a possibility of tape drives
-          going bad during large backups (needing a cleaning tape run,
-          tapes getting stuck). It would be advantageous if Bacula would
-          automatically disable further use of a problematic tape drive
-          after a configurable amount of errors has occurred.
-
-          An example: I have a multi-drive jukebox (6 drives, 380+ slots)
-          where tapes occasionally get stuck inside the drive. Bacula will
-          notice that the "mtx-changer" command will fail and then fail
-          any backup jobs trying to use that drive. However, it will still
-          keep on trying to run new jobs using that drive and fail -
-          forever, and thus failing lots and lots of jobs... Since we have
-          many drives Bacula could have just automatically disabled
-          further use of that drive and used one of the other ones
-          instead.
 
-Item 25:  Implement huge exclude list support using hashing.
+Item 13:  Implement huge exclude list support using hashing.
   Date:   28 October 2005
   Origin: Kern
   Status: 
@@ -748,81 +399,510 @@ Item 25:  Implement huge exclude list support using hashing.
           backup set will be *much* smaller.
 
 
-============= Empty Feature Request form ===========
-Item n:   One line summary ...
-  Date:   Date submitted 
-  Origin: Name and email of originator.
+Item 14:  Allow skipping execution of Jobs
+  Date:   29 November 2005
+  Origin: Florian Schnabel 
+  Status:
+
+    What: An easy option to skip a certain job  on a certain date.
+     Why: 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.
+
+
+Item 15:  Tray monitor window cleanups
+  Origin: Alan Brown ajb2 at mssl dot ucl dot ac dot uk
+  Date:   24 July 2006
+  Status:
+  What:   Resizeable and scrollable windows in the tray monitor.
+
+  Why:    With multiple clients, or with many jobs running, the displayed
+          window often ends up larger than the available screen, making
+          the trailing items difficult to read.
+
+
+Item 16:  Split documentation
+  Origin: Maxx 
+  Date:   27th July 2006
+  Status:
+
+  What:   Split documentation in several books
+
+  Why:    Bacula manual has now more than 600 pages, and looking for
+          implementation details is getting complicated.  I think
+          it would be good to split the single volume in two or
+          maybe three parts:
+
+          1) Introduction, requirements and tutorial, typically
+             are useful only until first installation time
+
+          2) Basic installation and configuration, with all the
+             gory details about the directives supported 3)
+             Advanced Bacula: testing, troubleshooting, GUI and
+             ancillary programs, security managements, scripting,
+             etc.
+
+
+
+Item 17:  Automatic promotion of backup levels
+   Date:  19 January 2006
+  Origin: Adam Thornton 
   Status: 
 
-  What:   More detailed explanation ...
+    What: Amanda has a feature whereby it estimates the space that a  
+          differential, incremental, and full backup would take.  If the  
+          difference in space required between the scheduled level and the next  
+          level up is beneath some user-defined critical threshold, the backup  
+          level is bumped to the next type.  Doing this minimizes the number of  
+          volumes necessary during a restore, with a fairly minimal cost in  
+          backup media space.
+
+    Why:  I know at least one (quite sophisticated and smart) user  
+          for whom the absence of this feature is a deal-breaker in terms of  
+          using Bacula; if we had it it would eliminate the one cool thing  
+          Amanda can do and we can't (at least, the one cool thing I know of).
+
+
+Item 18:  Add an override in Schedule for Pools based on backup types.
+Date:     19 Jan 2005
+Origin:   Chad Slater 
+Status: 
+                                                
+  What:   Adding a FullStorage=BigTapeLibrary in the Schedule resource
+          would help those of us who use different storage devices for different
+          backup levels cope with the "auto-upgrade" of a backup.
+
+  Why:    Assume I add several new device to be backed up, i.e. several
+          hosts with 1TB RAID.  To avoid tape switching hassles, incrementals are
+          stored in a disk set on a 2TB RAID.  If you add these devices in the
+          middle of the month, the incrementals are upgraded to "full" backups,
+          but they try to use the same storage device as requested in the
+          incremental job, filling up the RAID holding the differentials.  If we
+          could override the Storage parameter for full and/or differential
+          backups, then the Full job would use the proper Storage device, which
+          has more capacity (i.e. a 8TB tape library.
+
+Item 19:  An option to operate on all pools with update vol parameters
+  Origin: Dmitriy Pinchukov 
+   Date:  16 August 2006
+  Status:
 
-  Why:    Why it is important ...
+   What:  When I do update -> Volume parameters -> All Volumes
+          from Pool, then I have to select pools one by one.  I'd like
+          console to have an option like "0: All Pools" in the list of
+          defined pools.
 
-  Notes:  Additional notes or features (omit if not used)
-============== End Feature Request form ==============
+   Why:   I have many pools and therefore unhappy with manually
+          updating each of them using update -> Volume parameters -> All
+          Volumes from Pool -> pool #.
 
 
-===============================================
-Feature requests submitted after cutoff for December 2005 vote
-  and not yet discussed.
-===============================================
-Item n:   Allow skipping execution of Jobs
-  Date:   29 November 2005
-  Origin: Florian Schnabel 
+
+Item 20:  Include JobID in spool file name ****DONE****
+  Origin: Mark Bergman 
+  Date:   Tue Aug 22 17:13:39 EDT 2006
+  Status: Done. (patches/testing/project-include-jobid-in-spool-name.patch)
+          No need to vote for this item.
+
+  What:   Change the name of the spool file to include the JobID
+
+  Why:    JobIDs are the common key used to refer to jobs, yet the 
+          spoolfile name doesn't include that information. The date/time
+          stamp is useful (and should be retained).
+
+
+
+Item 21:  Include timestamp of job launch in "stat clients" output
+  Origin: Mark Bergman 
+  Date:   Tue Aug 22 17:13:39 EDT 2006
   Status:
 
-     What: An easy option to skip a certain job  on a certain date.
-     Why:  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.
+  What:   The "stat clients" command doesn't include any detail on when
+          the active backup jobs were launched.
 
-===================================================
+  Why:    Including the timestamp would make it much easier to decide whether
+          a job is running properly. 
 
-Item n: archive data
+  Notes:  It may be helpful to have the output from "stat clients" formatted 
+          more like that from "stat dir" (and other commands), in a column
+          format. The per-client information that's currently shown (level,
+          client name, JobId, Volume, pool, device, Files, etc.) is good, but
+          somewhat hard to parse (both programmatically and visually), 
+          particularly when there are many active clients.
 
-  Origin: calvin streeting calvin at absentdream dot com
-  Date:   15/5/2006
 
-  What:   The abilty to archive to media (dvd/cd) in a uncompressd format
-          for dead filing (archiving not backing up)
 
-  Why:  At my works when jobs are finished and moved off of the main file
-        servers (raid based systems) onto a simple linux file server (ide based
-        system) so users can find old information without contacting the IT
-        dept.
-
-        So this data dosn't realy change it only gets added to,
-        But it also needs backing up.  At the moment it takes
-        about 8 hours to back up our servers (working data) so
-        rather than add more time to existing backups i am trying
-        to implement a system where we backup the acrhive data to
-        cd/dvd these disks would only need to be appended to
-        (burn only new/changed files to new disks for off site
-        storage).  basialy understand the differnce between
-        achive data and live data.
-
-  Notes: scan the data and email me when it needs burning divide
-          into predifind chunks keep a recored of what is on what
-          disk make me a label (simple php->mysql=>pdf stuff) i
-          could do this bit ability to save data uncompresed so
-          it can be read in any other system (future proof data)
-          save the catalog with the disk as some kind of menu
-          system 
+Item 22:  Message mailing based on backup types
+ Origin:  Evan Kaufman 
+   Date:  January 6, 2006
+ Status:
 
-Item :  Tray monitor window cleanups
-  Origin: Alan Brown ajb2 at mssl dot ucl dot ac dot uk
-  Date:   24 July 2006
+   What:  In the "Messages" resource definitions, allowing messages
+          to be mailed based on the type (backup, restore, etc.) and level
+          (full, differential, etc) of job that created the originating
+          message(s).
+
+ Why:     It would, for example, allow someone's boss to be emailed
+          automatically only when a Full Backup job runs, so he can
+          retrieve the tapes for offsite storage, even if the IT dept.
+          doesn't (or can't) explicitly notify him.  At the same time, his
+          mailbox wouldnt be filled by notifications of Verifies, Restores,
+          or Incremental/Differential Backups (which would likely be kept
+          onsite).
+
+ Notes:   One way this could be done is through additional message types, for example:
+
+   Messages {
+     # email the boss only on full system backups
+     Mail = boss@mycompany.com = full, !incremental, !differential, !restore, 
+            !verify, !admin
+     # email us only when something breaks
+     MailOnError = itdept@mycompany.com = all
+   }
+
+
+Item 23:  Allow inclusion/exclusion of files in a fileset by creation/mod times
+  Origin: Evan Kaufman 
+  Date:   January 11, 2006
   Status:
-  What:   Resizeable and scrollable windows in the tray monitor.
 
-  Why:    With multiple clients, or with many jobs running, the displayed
-          window often ends up larger than the available screen, making
-          the trailing items difficult to read.
+  What:   In the vein of the Wild and Regex directives in a Fileset's
+          Options, it would be helpful to allow a user to include or exclude
+          files and directories by creation or modification times.
 
-   Notes:
+          You could factor the Exclude=yes|no option in much the same way it
+          affects the Wild and Regex directives.  For example, you could exclude
+          all files modified before a certain date:
+
+   Options {
+     Exclude = yes
+     Modified Before = ####
+   }
+
+           Or you could exclude all files created/modified since a certain date:
+
+   Options {
+      Exclude = yes
+     Created Modified Since = ####
+   }
+
+           The format of the time/date could be done several ways, say the number
+           of seconds since the epoch:
+           1137008553 = Jan 11 2006, 1:42:33PM   # result of `date +%s`
+
+           Or a human readable date in a cryptic form:
+           20060111134233 = Jan 11 2006, 1:42:33PM   # YYYYMMDDhhmmss
+
+  Why:    I imagine a feature like this could have many uses. It would
+          allow a user to do a full backup while excluding the base operating
+          system files, so if I installed a Linux snapshot from a CD yesterday,
+          I'll *exclude* all files modified *before* today.  If I need to
+          recover the system, I use the CD I already have, plus the tape backup.
+          Or if, say, a Windows client is hit by a particularly corrosive
+          virus, and I need to *exclude* any files created/modified *since* the
+          time of infection.
+
+  Notes:  Of course, this feature would work in concert with other
+          in/exclude rules, and wouldnt override them (or each other).
+
+  Notes:  The directives I'd imagine would be along the lines of
+          "[Created] [Modified] [Before|Since] = ".
+          So one could compare against 'ctime' and/or 'mtime', but ONLY 'before'
+           or 'since'.
+
+
+Item 24:  Add a scheduling syntax that permits weekly rotations
+   Date:  15 December 2006
+  Origin: Gregory Brauer (greg at wildbrain dot com)
+  Status:
+
+   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.
+
+   Why:   Rotated backups done at weekly intervals are useful, and Bacula
+          cannot currently do them without extensive hacking.
+
+   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
+                  }
+              }
+          }
+
+          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
+                  }
+              }
+          }
+
+          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
+                  }
+              }
+          }
+
+
+Item 25:  Improve Bacula's tape and drive usage and cleaning management.
+  Date:   8 November 2005, November 11, 2005
+  Origin: Adam Thornton ,
+          Arno Lehmann 
+  Status:
+
+  What:   Make Bacula manage tape life cycle information, tape reuse
+          times and drive cleaning cycles.
+
+  Why:    All three parts of this project are important when operating
+          backups.
+          We need to know which tapes need replacement, and we need to
+          make sure the drives are cleaned when necessary.  While many
+          tape libraries and even autoloaders can handle all this
+          automatically, support by Bacula can be helpful for smaller
+          (older) libraries and single drives.  Limiting the number of
+          times a tape is used might prevent tape errors when using
+          tapes until the drives can't read it any more.  Also, checking
+          drive status during operation can prevent some failures (as I
+          [Arno] had to learn the hard way...)
+
+  Notes:  First, Bacula could (and even does, to some limited extent)
+          record tape and drive usage.  For tapes, the number of mounts,
+          the amount of data, and the time the tape has actually been
+          running could be recorded.  Data fields for Read and Write
+          time and Number of mounts already exist in the catalog (I'm
+          not sure if VolBytes is the sum of all bytes ever written to
+          that volume by Bacula).  This information can be important
+          when determining which media to replace.  The ability to mark
+          Volumes as "used up" after a given number of write cycles
+          should also be implemented so that a tape is never actually
+          worn out.  For the tape drives known to Bacula, similar
+          information is interesting to determine the device status and
+          expected life time: Time it's been Reading and Writing, number
+          of tape Loads / Unloads / Errors.  This information is not yet
+          recorded as far as I [Arno] know.  A new volume status would
+          be necessary for the new state, like "Used up" or "Worn out".
+          Volumes with this state could be used for restores, but not
+          for writing. These volumes should be migrated first (assuming
+          migration is implemented) and, once they are no longer needed,
+          could be moved to a Trash pool.
+
+          The next step would be to implement a drive cleaning setup.
+          Bacula already has knowledge about cleaning tapes.  Once it
+          has some information about cleaning cycles (measured in drive
+          run time, number of tapes used, or calender days, for example)
+          it can automatically execute tape cleaning (with an
+          autochanger, obviously) or ask for operator assistance loading
+          a cleaning tape.
+
+          The final step would be to implement TAPEALERT checks not only
+          when changing tapes and only sending the information to the
+          administrator, but rather checking after each tape error,
+          checking on a regular basis (for example after each tape
+          file), and also before unloading and after loading a new tape.
+          Then, depending on the drives TAPEALERT state and the known
+          drive cleaning state Bacula could automatically schedule later
+          cleaning, clean immediately, or inform the operator.
+
+          Implementing this would perhaps require another catalog change
+          and perhaps major changes in SD code and the DIR-SD protocol,
+          so I'd only consider this worth implementing if it would
+          actually be used or even needed by many people.
+
+          Implementation of these projects could happen in three distinct
+          sub-projects: Measuring Tape and Drive usage, retiring
+          volumes, and handling drive cleaning and TAPEALERTs.
+
+Item 26:  Implement support for stacking arbitrary stream filters, sinks.
+Date:     23 November 2006
+Origin:   Landon Fuller 
+Status:   Planning. Assigned to landonf.
+
+  What:   Implement support for the following:
+          - Stacking arbitrary stream filters (eg, encryption, compression,  
+            sparse data handling))
+          - Attaching file sinks to terminate stream filters (ie, write out  
+            the resultant data to a file)
+          - Refactor the restoration state machine accordingly
+
+   Why:   The existing stream implementation suffers from the following:
+           - All state (compression, encryption, stream restoration), is  
+             global across the entire restore process, for all streams. There are  
+             multiple entry and exit points in the restoration state machine, and  
+             thus multiple places where state must be allocated, deallocated,  
+             initialized, or reinitialized. This results in exceptional complexity  
+             for the author of a stream filter.
+           - The developer must enumerate all possible combinations of filters  
+             and stream types (ie, win32 data with encryption, without encryption,  
+             with encryption AND compression, etc).
+
+  Notes:  This feature request only covers implementing the stream filters/ 
+          sinks, and refactoring the file daemon's restoration implementation  
+          accordingly. If I have extra time, I will also rewrite the backup  
+          implementation. My intent in implementing the restoration first is to  
+          solve pressing bugs in the restoration handling, and to ensure that  
+          the new restore implementation handles existing backups correctly.
+
+          I do not plan on changing the network or tape data structures to  
+          support defining arbitrary stream filters, but supporting that  
+          functionality is the ultimate goal.
+
+          Assistance with either code or testing would be fantastic.
+
+Item 27:  Allow FD to initiate a backup
+  Origin: Frank Volf (frank at deze dot org)
+  Date:   17 November 2005
+  Status:
+
+   What:  Provide some means, possibly by a restricted console that
+          allows a FD to initiate a backup, and that uses the connection
+          established by the FD to the Director for the backup so that
+          a Director that is firewalled can do the backup.
+
+   Why:   Makes backup of laptops much easier.
+
+Item 28:  Directive/mode to backup only file changes, not entire file
+  Date:   11 November 2005
+  Origin: Joshua Kugler 
+          Marek Bajon 
+  Status: 
+
+  What:   Currently when a file changes, the entire file will be backed up in
+          the next incremental or full backup.  To save space on the tapes
+          it would be nice to have a mode whereby only the changes to the
+          file would be backed up when it is changed.
+
+  Why:    This would save lots of space when backing up large files such as 
+          logs, mbox files, Outlook PST files and the like.
+
+  Notes:  This would require the usage of disk-based volumes as comparing 
+          files would not be feasible using a tape drive.
+
+Item 29:  Automatic disabling of devices
+   Date:  2005-11-11
+  Origin: Peter Eriksson 
+  Status:
+
+   What:  After a configurable amount of fatal errors with a tape drive
+          Bacula should automatically disable further use of a certain
+          tape drive. There should also be "disable"/"enable" commands in
+          the "bconsole" tool.
+
+   Why:   On a multi-drive jukebox there is a possibility of tape drives
+          going bad during large backups (needing a cleaning tape run,
+          tapes getting stuck). It would be advantageous if Bacula would
+          automatically disable further use of a problematic tape drive
+          after a configurable amount of errors has occurred.
 
-  Item :  Clustered file-daemons
+          An example: I have a multi-drive jukebox (6 drives, 380+ slots)
+          where tapes occasionally get stuck inside the drive. Bacula will
+          notice that the "mtx-changer" command will fail and then fail
+          any backup jobs trying to use that drive. However, it will still
+          keep on trying to run new jobs using that drive and fail -
+          forever, and thus failing lots and lots of jobs... Since we have
+          many drives Bacula could have just automatically disabled
+          further use of that drive and used one of the other ones
+          instead.
+
+Item 30:  Incorporation of XACML2/SAML2 parsing
+   Date:   19 January 2006
+   Origin: Adam Thornton 
+   Status: Blue sky
+
+   What:   XACML is "eXtensible Access Control Markup Language" and  
+          "SAML is the "Security Assertion Markup Language"--an XML standard  
+          for making statements about identity and authorization.  Having these  
+          would give us a framework to approach ACLs in a generic manner, and  
+          in a way flexible enough to support the four major sorts of ACLs I  
+          see as a concern to Bacula at this point, as well as (probably) to  
+          deal with new sorts of ACLs that may appear in the future.
+
+   Why:    Bacula is beginning to need to back up systems with ACLs  
+          that do not map cleanly onto traditional Unix permissions.  I see  
+          four sets of ACLs--in general, mutually incompatible with one  
+          another--that we're going to need to deal with.  These are: NTFS  
+          ACLs, POSIX ACLs, NFSv4 ACLS, and AFS ACLS.  (Some may question the  
+          relevance of AFS; AFS is one of Sine Nomine's core consulting  
+          businesses, and having a reputable file-level backup and restore  
+          technology for it (as Tivoli is probably going to drop AFS support  
+          soon since IBM no longer supports AFS) would be of huge benefit to  
+          our customers; we'd most likely create the AFS support at Sine Nomine  
+          for inclusion into the Bacula (and perhaps some changes to the  
+          OpenAFS volserver) core code.)
+
+          Now, obviously, Bacula already handles NTFS just fine.  However, I  
+          think there's a lot of value in implementing a generic ACL model, so  
+          that it's easy to support whatever particular instances of ACLs come  
+          down the pike: POSIX ACLS (think SELinux) and NFSv4 are the obvious  
+          things arriving in the Linux world in a big way in the near future.   
+          XACML, although overcomplicated for our needs, provides this  
+          framework, and we should be able to leverage other people's  
+          implementations to minimize the amount of work *we* have to do to get  
+          a generic ACL framework.  Basically, the costs of implementation are  
+          high, but they're largely both external to Bacula and already sunk.
+
+
+Item 31:  Clustered file-daemons
   Origin: Alan Brown ajb2 at mssl dot ucl dot ac dot uk
   Date:   24 July 2006
   Status:
@@ -854,19 +934,7 @@ Item :  Tray monitor window cleanups
 
    Notes:
 
-Item :  Tray monitor window cleanups
-  Origin: Alan Brown ajb2 at mssl dot ucl dot ac dot uk
-  Date:   24 July 2006
-  Status:
-  What:   Resizeable and scrollable windows in the tray monitor.
-
-  Why:    With multiple clients, or with many jobs running, the displayed
-          window often ends up larger than the available screen, making
-          the trailing items difficult to read.
-
-  Notes:
-
-Item:    Commercial database support
+Item 32:  Commercial database support
   Origin: Russell Howe 
   Date:   26 July 2006
   Status:
@@ -888,28 +956,209 @@ Item:    Commercial database support
           than having to run a second DBMS.
 
 
-Item n:   Split documentation
-  Origin: Maxx 
-  Date:   27th July 2006
+Item 33:  Archive data
+  Date:   15/5/2006
+  Origin: calvin streeting calvin at absentdream dot com
   Status:
 
-  What:   Split documentation in several books
+  What:   The abilty to archive to media (dvd/cd) in a uncompressed format
+          for dead filing (archiving not backing up)
 
-  Why:    Bacula manual has now more than 600 pages, and looking for
-          implementation details is getting complicated.  I think
-          it would be good to split the single volume in two or
-          maybe three parts:
+    Why:  At my works when jobs are finished and moved off of the main file
+          servers (raid based systems) onto a simple linux file server (ide based
+          system) so users can find old information without contacting the IT
+          dept.
+
+          So this data dosn't realy change it only gets added to,
+          But it also needs backing up.  At the moment it takes
+          about 8 hours to back up our servers (working data) so
+          rather than add more time to existing backups i am trying
+          to implement a system where we backup the acrhive data to
+          cd/dvd these disks would only need to be appended to
+          (burn only new/changed files to new disks for off site
+          storage).  basialy understand the differnce between
+          achive data and live data.
+
+  Notes:  Scan the data and email me when it needs burning divide
+          into predifind chunks keep a recored of what is on what
+          disk make me a label (simple php->mysql=>pdf stuff) i
+          could do this bit ability to save data uncompresed so
+          it can be read in any other system (future proof data)
+          save the catalog with the disk as some kind of menu
+          system 
 
-          1) Introduction, requirements and tutorial, typically
-             are useful only until first installation time
+Item 34:  Filesystem watch triggered backup.
+  Date:   31 August 2006
+  Origin: Jesper Krogh 
+  Status: Unimplemented, depends probably on "client initiated backups"
+
+  What:   With inotify and similar filesystem triggeret notification
+          systems is it possible to have the file-daemon to monitor
+          filesystem changes and initiate backup.
+
+  Why:    There are 2 situations where this is nice to have.
+          1) It is possible to get a much finer-grained backup than
+             the fixed schedules used now.. A file created and deleted
+             a few hours later, can automatically be caught.
+
+          2) The introduced load on the system will probably be
+             distributed more even on the system.
+
+  Notes:  This can be combined with configration that specifies
+          something like: "at most every 15 minutes or when changes
+          consumed XX MB".
+
+Kern Notes: I would rather see this implemented by an external program
+          that monitors the Filesystem changes, then uses the console
+          to start the appropriate job.
+
+Item 35:  Implement multiple numeric backup levels as supported by dump
+Date:     3 April 2006
+Origin:   Daniel Rich 
+Status:
+What:     Dump allows specification of backup levels numerically instead of just
+          "full", "incr", and "diff".  In this system, at any given level, all
+          files are backed up that were were modified since the last backup of a
+          higher level (with 0 being the highest and 9 being the lowest).  A
+          level 0 is therefore equivalent to a full, level 9 an incremental, and
+          the levels 1 through 8 are varying levels of differentials.  For
+          bacula's sake, these could be represented as "full", "incr", and
+          "diff1", "diff2", etc.
+
+Why:      Support of multiple backup levels would provide for more advanced backup
+          rotation schemes such as "Towers of Hanoi".  This would allow better
+          flexibility in performing backups, and can lead to shorter recover
+          times.
+
+Notes:    Legato Networker supports a similar system with full, incr, and 1-9 as
+          levels.
+
+Item 36:  Implement a server-side compression feature
+  Date:   18 December 2006
+  Origin: Vadim A. Umanski , e-mail umanski@ext.ru
+  Status:
+  What:   The ability to compress backup data on server receiving data
+          instead of doing that on client sending data.
+  Why:    The need is practical. I've got some machines that can send
+          data to the network 4 or 5 times faster than compressing
+          them (I've measured that). They're using fast enough SCSI/FC
+          disk subsystems but rather slow CPUs (ex. UltraSPARC II).
+          And the backup server has got a quite fast CPUs (ex. Dual P4
+          Xeons) and quite a low load. When you have 20, 50 or 100 GB
+          of raw data - running a job 4 to 5 times faster - that
+          really matters. On the other hand, the data can be
+          compressed 50% or better - so losing twice more space for
+          disk backup is not good at all. And the network is all mine
+          (I have a dedicated management/provisioning network) and I
+          can get as high bandwidth as I need - 100Mbps, 1000Mbps...
+          That's why the server-side compression feature is needed!
+  Notes:
 
-          2) Basic installation and configuration, with all the
-             gory details about the directives supported 3)
-             Advanced Bacula: testing, troubleshooting, GUI and
-             ancillary programs, security managements, scripting,
-             etc.
+Item 37:  Cause daemons to use a specific IP address to source communications
+ Origin:  Bill Moran 
+ Date:    18 Dec 2006
+ Status:
+ What:    Cause Bacula daemons (dir, fd, sd) to always use the ip address
+          specified in the [DIR|DF|SD]Addr directive as the source IP
+          for initiating communication.
+ Why:     On complex networks, as well as extremely secure networks, it's
+          not unusual to have multiple possible routes through the network.
+          Often, each of these routes is secured by different policies
+          (effectively, firewalls allow or deny different traffic depending
+          on the source address)
+          Unfortunately, it can sometimes be difficult or impossible to
+          represent this in a system routing table, as the result is
+          excessive subnetting that quickly exhausts available IP space.
+          The best available workaround is to provide multiple IPs to
+          a single machine that are all on the same subnet.  In order
+          for this to work properly, applications must support the ability
+          to bind outgoing connections to a specified address, otherwise
+          the operating system will always choose the first IP that
+          matches the required route.
+ Notes:   Many other programs support this.  For example, the following
+          can be configured in BIND:
+          query-source address 10.0.0.1;
+          transfer-source 10.0.0.2;
+          Which means queries from this server will always come from
+          10.0.0.1 and zone transfers will always originate from
+          10.0.0.2.
+
+Item 38:  Multiple threads in file daemon for the same job
+  Date:   27 November 2005
+  Origin: Ove Risberg (Ove.Risberg at octocode dot com)
+  Status:
 
-  Notes:
+  What:   I want the file daemon to start multiple threads for a backup
+          job so the fastest possible backup can be made.
+
+          The file daemon could parse the FileSet information and start
+          one thread for each File entry located on a separate
+          filesystem.
+
+          A confiuration option in the job section should be used to
+          enable or disable this feature. The confgutration option could
+          specify the maximum number of threads in the file daemon.
+
+          If the theads could spool the data to separate spool files
+          the restore process will not be much slower.
+
+  Why:    Multiple concurrent backups of a large fileserver with many
+          disks and controllers will be much faster.
+
+Item 39:  Restore only file attributes (permissions, ACL, owner, group...)
+  Origin: Eric Bollengier
+  Date:   30/12/2006
+  Status:
+
+  What:   The goal of this project is to be able to restore only rights
+          and attributes of files without crushing them.
+
+  Why:    Who have never had to repair a chmod -R 777, or a wild update
+          of recursive right under Windows? At this time, you must have
+          enough space to restore data, dump attributes (easy with acl,
+          more complex with unix/windows rights) and apply them to your 
+          broken tree. With this options, it will be very easy to compare
+          right or ACL over the time.
+
+  Notes:  If the file is here, we skip restore and we change rights.
+          If the file isn't here, we can create an empty one and apply
+          rights or do nothing.
+
+Item 40:  Add an item to the restore option where you can select a pool
+  Origin: kshatriyak at gmail dot com
+    Date: 1/1/2006
+  Status:
+
+    What: In the restore option (Select the most recent backup for a
+          client) it would be useful to add an option where you can limit
+          the selection to a certain pool.
+
+     Why: When using cloned jobs, most of the time you have 2 pools - a
+          disk pool and a tape pool.  People who have 2 pools would like to
+          select the most recent backup from disk, not from tape (tape
+          would be only needed in emergency).  However, the most recent
+          backup (which may just differ a second from the disk backup) may
+          be on tape and would be selected.  The problem becomes bigger if
+          you have a full and differential - the most "recent" full backup
+          may be on disk, while the most recent differential may be on tape
+          (though the differential on disk may differ even only a second or
+          so).  Bacula will complain that the backups reside on different
+          media then.  For now the only solution now when restoring things
+          when you have 2 pools is to manually search for the right
+          job-id's and enter them by hand, which is a bit fault tolerant.
+
+============= Empty Feature Request form ===========
+Item  n:  One line summary ...
+  Date:   Date submitted 
+  Origin: Name and email of originator.
+  Status: 
+
+  What:   More detailed explanation ...
+
+  Why:    Why it is important ...
+
+  Notes:  Additional notes or features (omit if not used)
+============== End Feature Request form ==============
 
 
 
diff --git a/docs/home-page/presentations/Bacula-FOSDEM-talk-25Feb07.pdf b/docs/home-page/presentations/Bacula-FOSDEM-talk-25Feb07.pdf index fcc029490fc81a619eb3f96ae49c499c4919c5b1..cbe305a8cab49742d4dfb07fbf3e92c80ec1a7b4 100644 GIT binary patch delta 11382 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 xzj`fZEm%SX3$mp-+U)