----.----1----.----2----.----3----.----4----.----5----.----6----.----7----.----8 TO-DO list as of 2513 : 1. DONE: Handle clean-up globally (on abort) 2. DONE: Parse cmd line args and override conf setting with them 3. DONE: Improve bklist.residue reliability & CD-change decision process 4. DONE: Prevent "future dated" files from being included in every CD. 5. DONE: Use the first free loopback device, instead of /dev/loop0 6. DONE: Improve reliability of sanity checks (KISS) 7. DONE: Relocate temp media preparation section to more appropriate place. 8. DONE: Put cd-set relevant data files into separate "cdset" directory. 9. Introduce multiple CD-sets via a separate directory for each set. 10. Use multi-session instead of creating whole CD from scratch every time. Shortens burn-time. Especially important for CD-R media, and when all versions wanted on CDs. Also important for incremental (^differential) backups. But tedious to forward-recover and wastes CD space. 11. DONE: Write check(EMBEDDED)/list(DONE)/restore(DONE) utilities. 12. Write conditional gui: gdialog/xdialog --> dialog --> raw-text 13. Find out how to foresee ISO size more precisely. (Already within +/- 0.3%) 14. DONE: Prevent concurrent runs via a global lock file. (/var/lock/CdBk.pid) 15. Make it (cdbk) work when called as a symlink. Currently the real executable must be called/run directly (using absolute or relative path). 16. DONE: Provide option for 2-step cd burning (from iso image) 17. Overlap mode (Burn CD while preparing next) for online multi-volume backups. (Run mkisofs and cdrecord with high priority!) 18. DONE (See 11): Verify after write, controlled by a parameter. 19. DONE: Verify parms, and use factory defaults for invalid/missing ones. 20. DONE: Trap critical signals to rollback/cleanup depending on progress. 21. DONE: "Exclude directory" (regexp) feature. 22. REDO: Use "cdbk." prefix for every file in $TEMP to prevent possible clash. Or, concentrate all temporary stuff under $TEMP/CdBk.YazBoz directory. (Such a directory might also be needed for bug-10 fix.) Or, employ mktemp(1) to create and use unique-named temp files. 23. DONE: Compute LEVEL dynamically instead of taking it from cdbk.conf 24. REDO: User must be able to force an arbitrary "back level" backup. 25. Check whether a gap exists in contents.N.bz2 files sequence. 26. DONE: Use (as default) dynamic SHADOWSIZE derived from "cdrecord -atip" 27. DONE: Use (as default) dynamic CDSCSI obtained from "cdrecord -scanbus" 28. Use dynamic (default) WRITESPD & BLANKSPD obtained from cdrecord. Use the smaller of Max-Drive-Speed (-prcap) and Max-Media-Speed (-atip). (Unfortunately no speed info given by cdrecord, for CD-R media) 29. Reevaluate whether it is good to report excluded files in cdbk.rejects . It impairs visibility of "real rejects" in the crowd, and it may also produce quite big cdbk.rejects files, with scarcely any value. 30. DONE: Check free space on TEMP before proceeding. Min: [2*]SHADOWSIZE+16 31. 0nn (as in "0$LEVEL") interpreted as octal nn in arithmetic evaluations. Check whether this can have unforeseen side effects (bugs) anywhere. If so, use ["1$VAR" -ge "199"] instead of ["0$VAR" -ge "099"] to check whether $VAR >= 99 (arithmetically). 32. BLANKSPD=0 means no blanking. But speed=0 is meaningful for cdrecord. Find another way to tell CdBk that no blanking requested. 33. DONE: Automatically force "no-blank" for non-erasable media (CD-R). 34. Use "-1" or "-f" (Full) instead of "-m". More intuitive and precise than "master". Also avoids confusion over Master vs. Full backup vs. CD#1. 35. DONE: "Reach" root via mail and/or other means, when necessary. Introduce user-exit script (FYI) with return code and LEVEL passed as parameters. 36. FORGET: Get rid of $VPARMNT variable and use $TEMP/cdbk.vparmnt directly. 37. FORGET: While backing up, use gzip if bzip2 is not found on the system. (No big deal (imho), while cumbersome.) 38. DONE: Automatically (forced) exclude $TEMP directory from backup. 39. DONE: Always report optimum SHADOWSIZE. (Not just in overflow) 40. DONE: bklist.residue is compressed in CD, but not in HD. Keep it compressed in HD too, but decompress it while running. (Compress it again at exit) 41a. DONE: When possible, verify from iso image instead of F/S traversal. Define VERIFY=0|1[|2|3]. 0= Don't verify, 1= Opportunist: Verify from iso-image in buffered mode, traverse F/S in unbuffered mode. 41b. [2]= Pessimist: Do both verification types, if possible. Force RETRY=<1 [3]= Paranoid: Force both verification types (ISO_IMAGE=1) and RETRY=0. 42. DONE: Mounting CD for verify & restore use "-o dev,suid" to override fstab. 43. DONE: For really large backup data, CDRW is better for incremental backups: Introduce "external syncing" to a SYNCDATE (of an external full backup) 44. Break the manual into multiple html pages (Max 32k or one chapter per page) 45. Introduce multiple CD-RW drives, and round-robin them. 46. Why not do sanity-checks and Oops check according to volume label? This way it is easier to Oops check for all CDs in the set. Not just latest one. 47. FORGET: rejects.$LEVEL.bz2 ---> rejects-$SHORTDATE-$LEVEL.bz2 48. DONE: ./samples/{cdbk.{conf,include,exclude,nocompr}.default,fyi-*.sh} 49. An option to skip compressing less than N bytes files. 50. DONE: (by Giovanni Lopedote) An option to prepare iso image & exit, without requiring a physical drive. 51. DONE: Abort immediately if "cdbk -atip" RC is nonzero. 52. HOW?: Run mkisofs cdrecord with absolute (instead of relative) nice values. So cdbk can be run with any nice value without affecting burn priority. 53. DONE: Introduce "RETRIES" conf parameter to specify retries in readcd (fast verify) Default of readcd is 128, which is too much for verification of of a backup. Make cdbk default 0. (Escalate - not hide - trouble hints) 54. Write "cdsetup" or "cdadmin" in conditional GUI (See #12) 55. Tune up core-loop. Reduce greps, parallelize bzip2 & cp, complete re-write. 56. Currently, retry of blanking with "-force" can recover some bad discs, but not the ones that were being written during a power failure. Find a way for those discs. Make disc recovery a sub-function of "cdadmin". 57. DONE: Enable cdrecord burnproof option for Burn-Proof capable CD/RW drives. 58. Provide means for i18n. (Parameterized messages, cdbk.conf, manual) 59. Ret Codes to start from >63 so that they don't clash with SIGNALs (kill -l) ----.----1----.----2----.----3----.----4----.----5----.----6----.----7----.----8