$Id: TODO,v 1.137.2.59 2003/06/18 23:50:00 edwinh Exp $
$Name: v1_1_7 $

Flexbackup to-do list
Some of these might not happen

Cleanup/fix:

 - If on-disk backups, and yous use -rmfile all, the index for the keyfile
   gets removed.

 - Look into find -prune and -depth w/ gnu findutils problem
 - Better cleanup after error in backup
 - Clean up more $main:: vars, split into types or refactor code
 - When level > 9 and rm old logs/stamps, order is printed wrong (cosmetic nit)
 - If comp_log is changed, we don't nuke old logs that normally would be
   overwritten with ourselves if comp_log stayed the same. (cosmetic nit)
 - Try to refactor backup all/single, each fs, >1 tapes, etc.  Duplicated
     logic in some spots..
 - Fix afio w/null (FreeBSD printf can't spit out null char)
 - Whole class of problems like:
    - Use dump combined flags (for older dumps that want abc not -a -b -c)
    - Not all finds have the -fstype flag (from $traverse_fs)
    - How to handle (use lowest common denominator flags?  sorta what's tried now)

Misc:
 - Add faq on files changing underneath tar
 - Add faq on sql db dump
 - re-word faq re trying by hand.
 - Add faq on max size
 - Add faq on -erase -newtape taking forever / erase_rewind_only
     could be mt erase, could be dd index hang (-test-tape-drive)
 - Add faq on extract filelist
     also .z at end if afio
 - Sample setup conf/cron
 - Update README/faq/spec/lsm for new items changes since 1.0.3
     set/dir
     pruning
     pkgdelta
     filelist
     copy
     mt_blksize
     example for -wday use
     onefile
     -files -> -flist
     spaces in dirs/prune
     updating your conf file
 - Create mbuffer rpm

 - Make a manual page (AND other enchanced documentation, more than a README)
   someone made a good start or two:
     http://www.law.utulsa.edu:8080/users/bchapman/linuxnotes/flexbackup
     http://myezserver.com/downloads/mitel/howto/flexbackup-howto.html
     http://www.cyber-euskadi.com/howtos/contrib/flexbackup-restore-from-disk-howto.html
     how about french?  http://sgmf.free.fr/flexbackup_doc.html
 - Try against torture-test list:
     http://ftp.berlios.de/pub/star/testscripts/zwicky/testdump.doc.html
 - Update mt manpages collection I keep in cvs
 - Get someone to do .debs?


Features to add:
 - Configure buffer delay time?

 - Stdout output?

 - Handle multi-volume backups (original idea w/ 'multibuf' never panned out)

      Found "multivol" program.
      Ack.  still not workable.  need edits to multivol...

      mbuffer can do this?  Bah.  Does not cooperate with nullpadding.
      won't work over remote, needs terminal attached.

      I might just give up on this as backups-to-disk don't have this
      problem.  Tapes just haven't kept capacity with using spare disks in
      other machines, for example.

 - Make package delta work with debian pkgs

 - If we detect an error and are using tapes, do something intelligent
     to reposition tape, add another filemark, etc to get tape to known state
     and avoid the maybe-error in the index & what 'nextfile' is on the tape

 - Log tape sizes (output of buffer or dd or mt tell can be used?)

 - ftpbackup?

 - smbtar?
     doable - overload type 'tar'. smbtar triggers with a fs spec of something like
               smb:user:pass@host/share:dir
     smbtar has "files newer than" option, test
     don't want password echoed
     no exclude from find
     top level of shares only?

 - Make -extract -files for afio/cpio/zip recurse dirs
      dump/tar already to this. Actually just check that all act the same.

 - Interactive restore-like shell for types besides dump
      see notes below

 - Destdir option for compare / extract

 - Umask spec for on-disk archives/logs/stamps.  check tmpfiles too.

 - Spiff up the contributed CGI program?

 - Split main program; use separate libs for archiver types that are stored
   in different files?  downside: install then requires more than just program + conf file.

 - Do we want to count on perl (or flexbackup for that matter) being
     installed on remote machines?  We could do some built-in replacements
     for the 'find' for instance and make things more standardized. although
     keeping it simply built out of standard commandline utils is a big plus
     as well...

 - Make remote machine path overrides possible, that supercede others?

 - Stor lists of files backed up in a on-disk db (to help find what to
     restore from?). Actually now you can just 'zgrep filename
    /var/log/flexbackup/*' and that works pretty well.

 - Extract options to not overwrite existing files

 - Store the index db on the tapes?
      But we don't know the size ahead of time unless hard-limited resperved size.
      Updating db at the beginning of the tape will add tape-travel overhead for every backup.
      rewind->write loses the rest of the contents past the first file?

 - CD-ROM burning (or just .iso type?) for full backups? any?
      just act like to-file archives, and take those files & write to CD?

 - gnuplot graphs of backup size/duration vs time (parse logfiles)

 - Encryption with gnupg?

 - Make file-based backups able to use split for smaller archives?

 - Along the same lines of "-toc all" there should be facilities in
   flexbackup to query when the last level N backup of a filesystem was done and
   what tape it was on.
     -showindex /u -level 0
   would print you out when the last level 0 backup was done and what the key
   index was.

 - Multiple devices at once?  (tape + disk)?

-------------------------------------------------------------

Notes for cloning restore shell for afio/tar/cpio types)
Use perl readline module
(Maybe a seperate program or module that runs off a list fed to it)

1) do a listing
2) parse & put into data structures
3) mt bsf 1
4) then give a shell w/ all commands from regular dump
5) mark things for extraction
6) reopen archive & extract that list

Help from restore to jog my brain...

        ls [arg] - list directory
        cd arg - change directory
        pwd - print current directory
        add [arg] - add `arg' to list of files to be extracted
        delete [arg] - delete `arg' from list of files to be extracted
        extract - extract requested files
        setmodes - set modes of requested directories
        quit - immediately exit program
        what - list dump header information
        verbose - toggle verbose flag (useful with ``ls'')
        help or `?' - print this list
If no `arg' is supplied, the current directory is used


Local Variables:
mode: flyspell
end:
