Kern's ToDo List
- 25 March 2003
+ 28 April 2003
-Documentation to do: (a little bit at a time)
+Documentation to do: (any release a little bit at a time)
- Document running a test version.
- Document query file format.
- Document static linking
-- Document how to automatically backup all local partitions
- Document problems with Verify and pruning.
- Document how to use multiple databases.
-- Document Maximum File Size
-
-***** Write up how to use/manage disk Volume Storage. ******
- Add a section to the doc on Manual cycling of Volumes.
-
+
Testing to do: (painful)
- that ALL console command line options work and are always implemented
- blocksize recognition code.
- multiple simultaneous Volumes
-- ***test GetFileAttributexEx, and remove MessageBox at 335 of winservice.cpp ****
-
-For 1.30 release:
-- If tape is marked read-only, then try opening it read-only rather than
- failing, and remember that it cannot be written.
-- Refine SD waiting output:
- Device is being positioned
- > Device is being positioned for append
- > Device is being positioned to file x
- >
-- > Hello,
->
-> Possibly your /etc/bacula/my_exclude is not
-> marked as executable. It MUST be executable.
-
-the script is executeabe (0777 for testing)
-
-> Another solution is simply to include the
-> find command in the exclude:
-> Exclude = {
-> "|find / -iname *.avi -o -iname *.mpg -o -iname *.mp3"
-> }
-
-it doesn't work :(
-
-i tried it on two different systems with bacula 1.29
-
-this works:
-Exclude {
- <file.list
- }
-
-Exclude {
- *.avi
- }
-
-this doesn't:
-Exclude {
- "|find / -iname *.avi"
- }
-
-Exclude {
- "|/etc/bacula/my_exclude
- }
+For 1.30a release:
+- Examine Bare Metal restore problem.
+- Test multiple simultaneous Volumes
+- Document FInclude ...
+
+- Figure out how to use ssh or stunnel to protect Bacula communications.
+
+After 1.30:
+- Fix command prompt in gnome-console by checking on Ready.
+- Implement HEART_BEAT while SD waiting for tapes.
+- Include RunBeforeJob and RunAfterJob output in the message
+ stream.
+- Check if Job/File retentions apply to multivolume jobs.
+- Change M_INFO to M_RESTORED for all restored files.
+- Remove subsysdir from conf files (used only in autostart scripts).
+- Implement console @echo command.
+- Implement global with DB name and add to btraceback.gdb
+- Bug: fix access problems on files restored on WinXP.
+- Implement a Slot priority (loaded/not loaded).
+- Implement "vacation" Incremental only saves.
+- Implement single pane restore (much like the Gftp panes).
+- Implement Automatic Mount even in operator wait.
+- Implement create "FileSet"?
+- Implement Release Device in the Job resource to unmount a drive.
+- Implement Acquire Device in the Job resource to mount a drive,
+ be sure this works with admin jobs so that the user can get
+ prompted to insert the correct tape. Possibly some way to say to
+ run the job but don't save the files.
+- Implement all command line args on run.
+- Implement command line "restore" args.
+- Implement "restore current select=no"
+- Fix watchdog pthread crash on Win32
+- Fix "access not allowed" for backup of files on WinXP.
+- Implement "scratch pool" where tapes are defined and can be
+ taken by any pool that needs them.
+- Implement restore "current system", but take all files without
+ doing selection tree -- so that jobs without File records can
+ be restored.
+- Make | and < work on FD side.
+- Pass prefix_links to FD.
+- Implement a M_SECURITY message class.
+- Implement disk spooling. Two parts: 1. Spool to disk then
+ immediately to tape to speed up tape operations. 2. Spool to
+ disk only when the tape is full, then when a tape is hung move
+ it to tape.
+- From Phil Stracchino:
+ It would probably be a per-client option, and would be called
+ something like, say, "Automatically purge obsoleted jobs". What it
+ would do is, when you successfully complete a Differential backup of a
+ client, it would automatically purge all Incremental backups for that
+ client that are rendered redundant by that Differential. Likewise,
+ when a Full backup on a client completed, it would automatically purge
+ all Differential and Incremental jobs obsoleted by that Full backup.
+ This would let people minimize the number of tapes they're keeping on
+ hand without having to master the art of retention times.
-i dont understand it anymore :(
-
+- Allow multiple Storage specifications (or multiple names on
+ a single Storage specification) in the Job record. Thus a job
+ can be backed up to a number of storage devices.
+- Implement dump label to UA
+- Add prefixlinks to where or not where absolute links to FD.
+- Look at Python for a Bacula scripting language -- www.python.org
- Issue message to mount a new tape before the rewind.
- Simplified client job initiation for portables.
- If SD cannot open a drive, make it periodically retry.
- Implement LabelTemplate (at least first cut).
-- Bevan Anderson suggests having a run queue for each device
- so that multiple simultaneous jobs can run but each writing
- to a different Volume.
-- Fix "access not allowed" for backup of files on WinXP.
-- Figure out some way to specify a retention period for files
- that no longer exist on the machine -- so that we maintain
- say backups for 30 days, but if the file is deleted, we maintain
- the last copy for 1 year.
-- Have Bacula "poll" the tape to see if it is there.
- Add more of the config info to the tape label.
-- Implement bar code reader for autochangers
-- Add a default File storage so that new users can do backup
- and restores right away.
- Implement a Mount Command and an Unmount Command where
the users could specify a system command to be performed
to do the mount, after which Bacula could attempt to
- Make some way so that if a machine is skipped because it is not up
that Bacula will continue retrying for a specified period of time --
periodically.
+- If tape is marked read-only, then try opening it read-only rather than
+ failing, and remember that it cannot be written.
+- Refine SD waiting output:
+ Device is being positioned
+ > Device is being positioned for append
+ > Device is being positioned to file x
+ >
- Figure out some way to estimate output size and to avoid splitting
a backup across two Volumes -- this could be useful for writing CDROMs
where you really prefer not to have it split -- not serious.
-- Add chflags() code for FreeBSD file flags
- Add RunBeforeJob and RunAfterJob to the Client program.
- Have SD compute MD5 or SHA1 and compare to what FD computes.
- Make VolumeToCatalog calculate an MD5 or SHA1 from the
- Make Restore report an error if FD or SD term codes are not OK.
- CD into subdirectory when open()ing files for backup to
speed up things. Test with testfind().
-- Add prefixlinks to where or not where absolute links to FD.
-- Look at handling <> in smtp doesn't work with exim.
- Priority job to go to top of list.
-- Why is catreq.c:111 Find vol called twice for a job?
- Find out why Full saves run slower and slower (hashing?)
- Why are save/restore of device different sizes (sparse?) Yup! Fix it.
- Implement some way for the Console to dynamically create a job.
- Restore to a particular time -- e.g. before date, after date.
-- Implement disk spooling
-- Implement finer multiprocessing options.
- Solaris -I on tar for include list
-- Enable avoid backing up archive device (findlib/find_one.c:128)
+- Prohibit backing up archive device (findlib/find_one.c:128)
- Need a verbose mode in restore, perhaps to bsr.
- bscan without -v is too quiet -- perhaps show jobs.
- Add code to reject whole blocks if not wanted on restore.
- Start working on Base jobs.
+- Check if we can increase Bacula FD priorty in Win2000
- Make sure the MaxVolFiles is fully implemented in SD
- Check if both CatalogFiles and UseCatalog are set to SD.
-- Check if we can increase Bacula FD priorty in Win2000
- Need return status on read_cb() from read_records(). Need multiple
records -- one per Job, maybe a JCR or some other structure with
a block and a record.
- Figure out how to do a bare metal Windows restore
- Put system type returned by FD into catalog.
-- Need to specify MaximumConcurrentJobs in the Job resource.
- Possibly add email to Watchdog if drive is unmounted too
long and a job is waiting on the drive.
- Use read_record.c in SD code.
- Add JobLevel in FD status (but make sure it is defined).
- Make Pool resource handle Counter resources.
- Remove NextId for SQLite. Optimize.
-- Strip trailing / from Include
- Move all SQL statements into a single location.
- Add UA rc and history files.
- put termcap (used by console) in ./configure and
- Fix Autoprune for Volumes to respect need for full save.
- Fix Win32 config file definition name on /install
- No READLINE_SRC if found in alternate directory.
-- Add Client FS/OS id (Linux, Win95/98, ...).
- Test a second language e.g. french.
- Compare tape to Client files (attributes, or attributes and data)
- Make all database Ids 64 bit.
- Implement script driven addition of File daemon to config files.
- Think about how to make Bacula work better with File (non-tape) archives.
- Write Unix emulator for Windows.
-
- Implement new serialize subroutines
send(socket, "string", &Vol, "uint32", &i, NULL)
- Audit all UA commands to ensure that we always prompt where possible.
- Set flag for uname -a. Add to Volume label.
- Implement throttled work queue.
- Check for EOT at ENOSPC or EIO or ENXIO (unix Pc)
-- Allow multiple Storage specifications (or multiple names on
- a single Storage specification) in the Job record. Thus a job
- can be backed up to a number of storage devices.
-- Implement dump label to UA
-- Concept of VolumeSet during restore which is a list
- of Volume names needed.
- Restore files modified after date
- Restore file modified before date
- Emergency restore info:
- Need a structure for pending actions:
- buffered messages
- termination status (part of buffered msgs?)
-- Concept of grouping Storage devices and job can use
- any of a number of devices
- Drive management
Read, Write, Clean, Delete
- Login to Bacula; Bacula users with different permissions:
- Identify unchanged or "system" files and save them to a
special tape thus removing them from the standard
backup FileSet -- BASE backup.
-- Turn virutally all sprintfs into snprintfs.
- Heartbeat between daemons.
- Audit M_ error codes to ensure they are correct and consistent.
- Add variable break characters to lex analyzer.
Item 6: Write a regression script.
-Started
+Done -- Continue to expand its testing.
What: This is an automatic script that runs and tests as many features
of Bacula as possible. The output is compared to previous
set of volumes recycling the oldest volume when it is needed.
- gethostbyname failure in bnet_connect() continues
generating errors -- should stop.
+- Add chflags() code for FreeBSD file flags
+- Bevan Anderson suggests having a run queue for each device
+ so that multiple simultaneous jobs can run but each writing
+ to a different Volume.
+- Look at handling <> in smtp doesn't work with exim.
+- Need to specify MaximumConcurrentJobs in the Job resource.
+- ***test GetFileAttributexEx, and remove MessageBox at 335 of winservice.cpp ****
+- Implement finer multiprocessing options.
+- Implement | and < in Exclude statements.
+- Figure out some way to specify a retention period for files
+ that no longer exist on the machine -- so that we maintain
+ say backups for 30 days, but if the file is deleted, we maintain
+ the last copy for 1 year. -- answer Volume retention.
+- Make non-zero status from RunJobBefore/After error the job.
+- Need define of int_least16_t in sha1.h for SuSE.
+- Implement bar code reader for autochangers
+- Document new MaximumConcurrentJob records (Job, Client, Storage)
+- Write up how to use/manage disk Volume Storage. ******
+- Remove kern and kelvin from mysql_grant...
+- Install grant_mysql...
+- Strip trailing / from Include
+- add #define ENABLE_NLS for Gnome compile on SuSE.
+- Add Client FS/OS id (Linux, Win95/98, ...).
+- Concept of VolumeSet during restore which is a list
+ of Volume names needed.
+- Turn virutally all sprintfs into snprintfs.
+- Update volume=Test01 requests pool, then lists volumes.
+ **** Test select_pool_and_media ...
+- Document relabel
+- Add IP address to authentication failures.
+- Add a default File storage so that new users can do backup
+ and restores right away.
+- Forbid sbindir and with-subsys-dir from being the same (otherwise
+ the binary gets deleted when the daemon is stopped in the
+ rc.d/inid.d directory.
+- Do not ignore SIGCHLD
+- Add Cleaning to list of volume statuses
+- Implement run at "xxx"
+- Document new transparent Console commands and wait command.
+- Document . and @ commands
+- Document run when.
+- Document Lutz Kittler's trick of using "Run Before Job" to
+ abort a job on a particular day.
+- Document Ludovic Strappazon's Win32 raw device save/restore.
+- Document not to restore .journal .autofsck
+- Document labeling a whole magazine using "cat"
+- Document how to automatically backup all local partitions
+- Document logrotate
+- Document OPTIMIZE TABLE in MySQL
+- Document new immediate File save configuration (walk user
+ through first save to file Volume with automatic Volume labeling?).
+- Implement scheduling of one time "run" jobs (i.e. instead of
+ starting immediately start at some specified time).
+- Bug: up arrow prints garbage in command line on gnome-console!