Kern's ToDo List
- 13 January 2004
+ 22 July 2004
+
+1.35 Items to do:
+- Add bscan to four-concurrent-jobs regression.
+- Do tape alerts -- see tapealert.txt
+- Document a get out of jail procedure if everything breaks if
+ you lost/broke the Catalog -- do the same for "I know my
+ file is there how do I get it back?".
+- When passwords do not match, print message that points the
+ user to the doc.
+- Make Verify jobs require exclusive use of Volume as Restore
+ jobs do.
+- Perhaps add read/write programs and/or plugins to FileSets.
+- Look at adding Client run command that will use the
+ port opened by the client.
+- Fix find_device in stored/dircmd.c:462
+- Add new DCR calling sequences everywhere in SD.
+ This will permit simultaneous use of multiple
+ devices by a single job.
+- bscan does not put first of two volumes back with all info in
+ bscan-test.
+- Fix restore ++++ that get intermingled with "Building directory tree"
+- Solve the termcap.h problem on Solaris configure.
+- Fix ./configure to handle installed SQLite
+- Test Win32 errno handling.
Documentation to do: (any release a little bit at a time)
-- Document running a test version.
- Document query file format.
-- Document static linking
- Document problems with Verify and pruning.
- Document how to use multiple databases.
-- For FreeBSD typical /dev/nrsa0 and for mtx /dev/pass1
- VXA drives have a "cleaning required"
indicator, but Exabyte recommends preventive cleaning after every 75
hours of operation.
changing tape settings while a job is running.)
- Lookup HP cleaning recommendations.
- Lookup HP tape replacement recommendations (see trouble shooting autochanger)
-- Create a man page for each binary (Debian package requirement).
+- Add more obvious documentation of @ for conf files.
+- Document doing table repair
Testing to do: (painful)
- Test drive polling!
-- that ALL console command line options work and are always implemented
- blocksize recognition code.
- Test if rewind at end of tape waits for tape to rewind.
- Test cancel at EOM.
-For 1.33 Testing/Documentation:
-- Document new alias records in Director. SDAddress SDDeviceName, SDPassword.
- FDPassword, FDAddress, DBAddress, DBPort, DBPassword.
-- Document new Include/Exclude ...
-- Add test of exclusion, test multiple Include {} statements.
-- Add counter variable test.
-- Document ln -sf /usr/lib/libncurses.so /usr/lib/libtermcap.so
- and install the esound-dev package for compiling Console on SuSE.
- This should read 'Document LDFLAGS="-L/usr/lib/termcap" ... '
-- Add an example of using a FIFO in dirdconf.wml
-- Add an item to the FAQ about running jobs in different timezones.
-- Add some examples of job editing codes.
-
-- Document Dan's new --with-dir-user, ... options.
- See userid.txt
-- Figure out how to use ssh or stunnel to protect Bacula communications.
- Add Dan's work to manual
- See ssl.txt
+For 1.37 Testing/Documentation:
- Add db check test to regression. Test each function like delete,
purge, ...
-- Add subsections to the Disaster Recovery index section.
-- Document Pool keyword for restore.
-
-For 1.33
-- Implement alist processing for ACLs from Console.
-- Finish code passing files=nnn to restore start.
-- Add Console usr permissions -- do by adding regex filters for
- jobs, clients, storage, ...
-- Put max network buffer size on a directive.
-- Why does "mark cygwin" take so long!!!!!!!!
-- When a file is set for restore, walk back up the chain of
- directories, setting them to be restored.
-- Figure out a way to set restore on a directory without recursively
- decending. (recurse off?).
+- If you use restore replace=never, the directory attributes for
+ non-existent directories will not be restored properly.
+
+Wish list:
+- Figure out how to make named console messages go only to that
+ console and to the non-restricted console (new console class?).
+- Make restricted console prompt for password if *ask* is set or
+ perhaps if password is undefined.
+- Implement "from ISO-date/time every x hours/days/weeks/months" in
+ schedules.
+- Compaction of Disk space by "migrating" Volumes that have pruned
+ Jobs (what criteria? size, #jobs, time).
+- Add prune all command
+- Document fact that purge can destroy a part of a restore by purging
+ one volume while others remain valid -- perhaps mark Jobs.
+- Add multiple-media-types.txt
+- look at mxt-changer.html
+- Make ? do a help command (no return needed).
+- Implement restore directory.
+- Add All Local Partitions = yes to new style saves.
+- Document streams and how to implement them.
+- Possibly implement "Ensure Full Backup = yes" looks for a failed full backup
+ and upgrades the current backup if one exists.
+- Check that barcode reading and update slots scan works.
+- Try not to re-backup a file if a new hard link is added.
+- Add feature to backup hard links only, but not the data.
+- Add "All Local = yes" option to save to include all local partitions.
+- Fix stream handling to be simpler.
+- Add Priority and Bootstrap to Run a Job.
+- Eliminate Restore "Run Restore Job" prompt by allowing new "run command
+ to be issued"
+- Remove View FileSet button from Run a Job dialog.
+- Don't count higher level non-saved directories in Files expected
+ in restore report.
+- Handle prompt for restore job at end of Restore command.
+- Add display of total selected files to Restore window.
+- Add tree pane to left of window.
+- Add progress meter.
+- Polling does not work for restore. It tries a number of times,
+ gives up, and crashes the SD.
+- Lock jcr_chain when doing attach/detach in acquire.c
+- Add assert in free_jcr if attach/detach chain active.
+- Max wait time or max run time causes seg fault -- see runtime-bug.txt
+- Document writing to a CD/DVD with Bacula.
+- Add check for tape alerts.
+- Add a "base" package to the window installer for pthreadsVCE.dll
+ which is needed by all packages.
+- Add message to user to check for fixed block size when the forward
+ space test fails in btape.
+- When unmarking a directory check if all files below are unmarked and
+ then remove the + flag -- in the restore tree.
+- Possibly implement: Action = Unmount Device="TapeDrive1" in Admin jobs.
+- Setup lrrd graphs: (http://www.linpro.no/projects/lrrd/) Mike Acar.
+- Revisit the question of multiple Volumes (disk) on a single device.
+- Finish SIGHUP work.
+- Check that all change in wait status in the SD are
+ signaled to the Director.
+- Add a block copy option to bcopy.
+- Investigate adding Mac Resource Forks.
+- Finish work on Gnome restore GUI.
+- Fix "llist jobid=xx" where no fileset or client exists.
+- Check pruning of restore jobs.
+- From Chris Hull:
+ it seems to be complaining about 12:00pm which should be a valid 12
+ hour time. I changed the time to 11:59am and everything works fine.
+ Also 12:00am works fine. 0:00pm also works (which I don't think
+ should). None of the values 12:00pm - 12:59pm work for that matter.
- Add level to estimate command.
-- Check time/dates printed during restore when using Win32 API.
+- For each job type (Admin, Restore, ...) require only the really necessary
+ fields.
+- Fix option 2 of restore -- list where file is backed up -- require Client,
+ then list last 20 backups.
+- Add all pools in Dir conf to DB also update them to catch changed
+ LabelFormats and such.
+- Update volumes FromPool=xxx does all volumes.
+- Pass Director resource name as an option to the Console.
+- Add a "batch" mode to the Console (no unsolicited queries, ...).
+- Add code to check for tape alerts -- tapeinfo.
+- Make sure list of Volumes needed is in correct order for restore.
+ See havana.
+- Remove paths (and files that reference them) that have no trailing slash
+ in dbcheck -- or add a trailing slash.
+- Remove Filenames (and files that reference them) that have a trailing
+ slash in dbcheck -- or remove the trailing slash.
+- Remove orphaned paths/filenames by copying them to a new table with a
+ reference count, then mark all referenced files/paths and remove unreferenced
+ ones.
+- Add a .list all files in the restore tree (probably also a list all files)
+ Do both a long and short form.
+- Allow browsing the catalog to see all versions of a file (with
+ stat data on each file).
+- Restore attributes of directory if replace=never set but directory
+ did not exist.
+- Allow "delete job jobid=xxx,yyy,aaa-bbb" i.e. list + ranges.
+- Use SHA1 on authentication if possible.
+- See comtest-xxx.zip for Windows code to talk to USB.
+- Make btape accept Device Names in addition to Archive names.
+- Add Events and Perl scripting.
+- Add John's appended files:
+ Appended = { /files/server/logs/http/*log }
+ and such files would be treated as follows.On a FULL backup, they would
+ be backed up like any other file.On an INCREMENTAL backup, where a
+ previous INCREMENTAL or FULL was already in thecatalogue and the length
+ of the file wasgreater than the length of the last backup, only thedata
+ added since the last backup will be dumped.On an INCREMENTAL backup, if
+ the length of the file is less than thelength of the file with the same
+ name last backed up, the completefile is dumped.On Windows systems, with
+ creation date of files, we can be evensmarter about this and not count
+ entirely upon the length.On a restore, the full and all incrementals
+ since it will beapplied in sequence to restore the file.
+- Add a regression test for dbcheck.
+- Add disk seeking on restore. - Allow
+ for optional cancelling of SD and FD in case DIR
+ gets a fatal error. Requested by Jesse Guardiani <jesse@wingnet.net>
+- Bizarre message: Error: Could not open WriteBootstrap file:
+- Build console in client only build.
+- Add "limit=n" for "list jobs"
+- Check new HAVE_WIN32 open bits.
+- Check if the tape has moved before writing.
+- Handling removable disks -- see below:
+- Multiple drive autochanger support -- see below.
+- Keep track of tape use time, and report when cleaning is necessary.
+- Fix FreeBSD mt_count problem.
+- Add FromClient and ToClient keywords on restore command (or
+ BackupClient RestoreClient).
+- Automatic "update slots" on user configuration directive when a
+ slot error occurs.
+- Implement a JobSet, which groups any number of jobs. If the
+ JobSet is started, all the jobs are started together.
+ Allow Pool, Level, and Schedule overrides.
+- Enhance cancel to timeout BSOCK packets after a specific delay.
+- When I restore to Windows the Created, Accessed and Modifiedtimes are
+ those of the time of the restore, not those of the originalfile.
+ The dates you will find in your restore log seem to be the original
+ creation dates
- Volume "add"ed to Pool gets recycled in first use. VolBytes=0
-- Get rid of 0 dates in LastWritten, ...
-- Fix "llist jobid=xx" where no fileset or client exists.
-- Release SQLite 2.8.9
- If a tape is recycled while it is mounted, Stanislav Tvrudy must do an
additional mount to deblock the job.
- From Johan Decock:
- Correct code so that FileSet MD5 is calculated for < and | filename
generation.
- Mark Volume in error on error from WEOF.
-- Why does Bacula need the drive open to do "autochanger list" ?
-- Add a .list all files in the restore tree (probably also a list all files)
- Do both a long and short form.
- Implement the Media record flag that indicates that the Volume does disk
addressing.
- Implement VolAddr, which is used when Volume is addressed like a disk,
pointer (rec) to try_repositioning().
- Look at extracting Win data from BackupRead.
- Having dashes in filenames apparently creates problems for restore
- by filename.
-- Add data compare on write/read in btape "test".
+ by filename??? hard to believe.
- Implement RestoreJobRetention? Maybe better "JobRetention" in a Job,
which would take precidence over the Catalog "JobRetention".
- Implement Label Format in Add and Label console commands.
- Possibly up network buffers to 65K. Put on variable.
- Put email tape request delays on one or more variables. User wants
to cancel the job after a certain time interval. Maximum Mount Wait?
- Job, Client, Device, Pool, or Volume?
+- Job, Client, Device, Pool, or Volume?
Is it possible to make this a directive which is *optional* in multiple
resources, like Level? If so, I think I'd make it an optional directive
in Job, Client, and Pool, with precedence such that Job overrides Client
which in turn overrides Pool.
- Print a message when a job starts if the conf file is not current.
-- Finish work on conio.c
-- To pass Include 1 or two letter commands
- I Name Include name - first record
- B Name Base name - repeat
- R "xxx" Regexp
- W "xxx" Wild Card
- E zzz Exclude expression (wild card)
- P "plugin" Plugin
- D "reader" Reader program
- T "writer" Writer program
- O Options In current commpressed format
- (compression, signature, onefs, recurse, sparse,
- replace, verify options, ...)
- N End option set
- B BaseName Start second option set any letter
- ...
- E
- F Number Number of filenames to follow
- <file-name>
- B Name
- ...
- N End option set
- F Number Number of filenames to follow
- <file-name>
- ...
+
+- Spooling ideas taken from Volker Sauer's and other's emails:
+ > IMHO job spooling should be turned on
+ >
+ > 1) by job
+ > 2) by schedule
+ > 3) by sd
+ >
+ > where and 2) overrides 1) and 3) is independent.
+
+ Yes, this is the minimum that I think is necessary.
+
+ >
+ > Reason(s):
+ > It should be switched by job, because the job that backs up the machine
+ > with the bacula-sd on doesn't need spooling.
+ > It should be switched by schedule, because for full-backups I don't need
+ > spooling, so I can switch it off (because the network faster then the
+ > tapedrive)
+
+ True, with the exception that if you have enough disk spool space,
+ and you want to run concurrent jobs, spooling can eliminate the block
+ interleaving restore inefficiencies.
+
+ > And you should be able to turn it of by sd for sd-machines with low disk
+ > capacity or if you just don't need or want this feature.
+ >
+ > There should be:
+ > - definitly the possibility for multipe spool direcories
+
+ Having multiple directories is no problem -- having different maximum
+ sizes creates specification problems. At some point, I will probably
+ have a common SD pool of spool directories as well as a set of
+ private spool directories for each device. The first implementation
+ will be a set of private spool directories for each device since
+ managing a global pool with a bunch of threads writing into the same
+ directory is *much* more complicated and prone to error.
+
+ > - the ability to spool parts of a backup (not the whole client)
+
+ This may change in the future, but for the moment, it will spool
+ either to a job high water mark, or until the directory is full
+ (reaches max spool size or I/O error). It will then write to tape,
+ truncate the spool file, and begin spooling again.
+
+ > - spooling while writing to tape
+
+ Not within a job, but yes, if you run concurrent jobs -- each is a
+ different thread. Within a job could be a feature, but *much* later.
+
+ > - parallel spooling (like parallel jobs/ concurrent jobs) of clients
+
+ Yes, this is one of my main motivations for doing it (aside from
+ eliminating tape "shoe shine" during incremental backups.
+
+ > - flushing a backup that only went to disk (like amflush in amanda)
+
+ This will be a future feature, since spooling is different from backing
+ up to disk. The future feature will be "migration" which will move a job
+ from one backup Volume to another.
+
- New Storage specifications:
Passed to SD as a sort of BSR record called Storage Specification
Record or SSR.
In SD allow Device to have Multiple MediaTypes
After 1.33:
+- Look at www.nu2.nu/pebuilder as a helper for full windows
+ bare metal restore.
Ideas from Jerry Scharf:
First let's point out some big pluses that bacula has for this
it's open source
Job report (Volker Sauer).
- Client does not show busy during Estimate command.
- Implement Console mtx commands.
-- Implement 3 Pools for a Job:
- Job {
- Name = ...
- Full Backup Pool = xxx
- Incremental Backup Pool = yyy
- Differential Backup Pool = zzz
- }
- Add a default DB password to MySQL.
GRANT all privileges ON bacula.* TO bacula@localhost IDENTIFIED BY
'bacula_password';
http://csrc.nist.gov/CryptoToolkit/aes/). It's
an officially adopted standard, has survived peer
review, and provides keys up to 256 bits.
-- Add ctl-c to console to stop current command and discard buffered
- output.
-- Estimate to Tibs never returns.
- Think about how space could be freed up on a tape -- perhaps this
is a Merge or Compact feature that is needed.
- Modify FileSet, did not upgrade the current Increment job, but
> woorkstations to be shut down overnight to save power.
>
-- From Terry Manderson <terry@apnic.net>
- jobdefs { # new structure
- name = "monthlyUnixBoxen"
- type = backup
- level = full
- schedule = monthly
- storage = DLT
- messages = Standard
- pool = MonthlyPool
- priority = 10
- }
-
- job {
- name = "wakame"
- jobdefs = "genericUnixSet"
- client = wakame-fd
- }
-
- job {
- name = "durian"
- jobdefs = "genericUnixSet"
- client = durian-fd
- }
-
- job {
- name = "soy"
- jobdefs = "UnixDevelBoxSet"
- client = soy-fd
- }
-
-
- Autolabel should be specified by DIR instead of SD.
- Storage daemon
- Add media capacity
VolSessionId and VolSessionTime.
=========================================================
-
-
-=============================================================
-
- Request For Comments For File Backup Options
- 10 November 2002
-
-Subject: File Backup Options
-
-Problem:
- A few days ago, a Bacula user who is backing up to file volumes and
- using compression asked if it was possible to suppress compressing
- all .gz files since it was a waste of CPU time. Although Bacula
- currently permits using different options (compression, ...) on
- a directory by directory basis, it cannot do it on a file by
- file basis, which is clearly what was desired.
-
-Proposed Implementation:
- To solve this problem, I propose the following:
-
- - Add a new Director resource type called Options.
-
- - The Options resource will have records for all
- options that can currently be specified on the Include record
- (in a FileSet). Examples below.
-
- - The Options resource will permit an exclude option as well
- as a number of additional options.
-
- - The heart of the Options resource is the ability to
- supply any number of Match records which specify POSIX
- regular expressions. These Match regular expressions are
- applied to the fully qualified filename (path and all). If
- one matches, then the Options will be used.
-
- - When an Match specification matches an included file, the
- options specified in the Options resource will override
- the default options specified on the Include record.
-
- - Include records will be modified to permit referencing one or
- more Options resources. The Options will be used
- in the order listed on the Include record and the first
- one that matches will be applied.
-
- - Options (or specifications) currently supplied on the Include
- record will be deprecated (i.e. removed in a later version a
- year or so from now).
-
- - The Exclude record will be deprecated as the same functionality
- can be obtained by using an Exclude = yes in the Options.
-
-Options records:
- The following records can appear in the Options resource. An
- asterisk preceding the name indicates a feature not currently
- implemented.
-
- - Regexp "xxx" - Match regular expression
- - Wild "xxx" - Do a wild card match
-
- For Backup Jobs:
- - Compression= (GZIP, ...)
- - Signature= (MD5, SHA1, ...)
- - *Encryption=
- - OneFs= (yes/no) - remain on one filesystem
- - Recurse= (yes/no) - recurse into subdirectories
- - Sparse= (yes/no) - do sparse file backup
- - *Exclude= (yes/no) - exclude file from being saved
- - *Reader= (filename) - external read (backup) program
- - *Plugin= (filename) - read/write plugin module
-
- - Include= (yes/no) - Include the file matched no additional
- patterns are applied.
-
- For Verify Jobs:
- - verify= (ipnougsamc5) - verify options
-
- For Restore Jobs:
- - replace= (always/ifnewer/ifolder/never) - replace options currently
- implemented in 1.31
- - *Writer= (filename) - external write (restore) program
-
-
-Implementation:
- Currently options specifying compression, MD5 signatures, recursion,
- ... of a FileSet are supplied on the Include record. These will now
- all be collected into a Options resource, which will be
- specified in the Include in place of the options. Multiple Options
- may be specified. Since the Options may contain regular expressions
- that are applied to the full filename, this will give the ability
- to specify backup options on a file by file basis to whatever level
- of detail you wish.
-
-Example:
-
- Today:
-
- FileSet {
- Name = "FullSet"
- Include = compression=GZIP signature=MD5 {
- /
- }
- }
-
- Proposal:
-
- FileSet {
- Name = "FullSet"
- Include {
- Compression = GZIP;
- Signature = MD5
- Wild = /*.?*/ # matches all files.
- File = /
- }
- }
-
- That's a lot more to do the same thing, but it gives the ability to
- apply options on a file by file basis. For example, suppose you
- want to compress all files but not any file with extensions .gz or .Z.
- In that case, you will need to group two sets of options using
- the Options resource. Files may be anywhere except in an
- option set??? All OptionSets apply to all files in the order
- the OptionSets were specified. To have files included with
- different option sets without using wild-cards, use two or more
- Includes -- each one is handled in turn using only the files and
- optionsets specified in the include.
-
- FileSet {
- Name = "FullSet"
- Include {
- OptionSet {
- Signature = MD5
- # Note multiple Matches are ORed
- Wild = "*.gz" # matches .gz files
- Wild = "*.Z" # matches .Z files
- }
- OptionSet {
- Compression = GZIP
- Signature = MD5
- Wild = "*.?*" # matches all files
- }
- File = /
- }
- }
-
- Now, since the no Compression option is specified in the
- first group of Options, *.gz or *.Z file will have an MD5 signature computed,
- but will not be compressed. For all other files, the *.gz *.Z will not
- match, so the second group of options will be used which will include GZIP
- compression.
-
-Questions:
- - Is it necessary to provide some means of ANDing regular expressions
- and negation? (not currently planned)
-
- e.g. Wild = /*.gz/ && !/big.gz/
-
- - I see that Networker has a "null" module which, if specified, does not
- backup the file, but does make an record of the file in the catalog
- so that the catalog will reflect an exact picture of the filesystem.
- The result is that the file can be "seen" when "browsing" the save
- sets, but it cannot be restored.
-
- Is this really useful? Should it be implemented in Bacula?
-
-Results:
- After implementing the above, the user will be able to specify
- on a file by file basis (using regular expressions) what options are
- applied for the backup.
-
-
-=============================================
==========================================================
Unsaved File design
- Implement forward spacing block/file: position_device(bsr) --
just before read_block_from_device();
-=== for 1.33
-- Change console to bconsole.
-- Change smtp to bsmtp.
-- Fix time difference problem between Bacula and Client
- so that everything is in GMT.
-- Fix TimeZone problem!
-- Mount a tape that is not right for the job (wrong # files on tape)
- Bacula asks for another tape, fix problems with first tape and
- say "mount". All works OK, but status shows:
- Device /dev/nst0 open but no Bacula volume is mounted.
- Total Bytes=1,153,820,213 Blocks=17,888 Bytes/block=64,502
- Positioned at File=9 Block=3,951
- Full Backup job Rufus.2003-10-26_16.45.31 using Volume "DLT-24Oct03" on device /dev/nst0
- Files=21,003 Bytes=253,954,408 Bytes/sec=2,919,016
- FDReadSeqNo=192,134 in_msg=129830 out_msg=5 fd=7
-- Upgrade to cygwin 1.5
-- Optimize fsf not to read.
-- Use ioctl() fsf if it exists. Figure out where we are from
- the mt_status command. Use slow fsf only if other does not work.
-- Enhance "update slots" to include a "scan" feature
- scan 1; scan 1-5; scan 1,2,4 ... to update the catalog
-- Allow a slot or range of slots on the label barcodes command.
-- Finish implementation of Verify=DiskToCatalog
-- Make sure that Volumes are recycled based on "Least recently used"
- rather than lowest MediaId.
-- Add flag to write only one EOF mark on the tape.
-- Implement autochanger testing in btape "test" command.
-- Implement lmark to list everyfile marked.
-- Make mark/unmark report how many files marked/unmarked.
-- Keep last 5 or 10 completed jobs and show them in a similar list.
-- Make a Running Jobs: output similar to current Scheduled Jobs:
-- Change "create_media_record in bscan to use Archive instead of Full.
-- Have some way to estimate the restore size or have it printed.
-- Volume problems occurs if you have valid volume, written, then it is
- truncated. You get 12-Nov-2003 11:48 rufus-sd: kernsave.2003-11-12_11.48.09 Warning: mount.c:228 Volume on /tmp is not a Bacula labeled Volume, because:
- block.c:640 Read zero bytes on device /tmp.
-- Make sure that 64 bit I/O packets are used on Cygwin.
-- Add to supported autochangers
- OS : FreeBSD-4.9
- Auto-Changer : QUALSTAR TLS-4210
- Manufufactur : Qualstar
- Tapes : 12 (AIT1: 36GB, AIT2: 50GB all uncompressed)
- Drives : 2xAIT2 (installed in the Qualstar: SONY SDX-500C AIT2)
-- Document estimate command in tree.
-- Document lsmark command in tree.
-- Setup a standard job that builds a bootstrap file and saves
- it with the catalog database.
-- See if a restore job can add a file to the tape (prohibit this).
-- Restrict characters permitted in a name.
-- In restore, provide option for limiting to a particular Pool.
-- In restore, list FileSets that only have different base names --
- i.e. any FileSet with the same name should be treated as the same.
-- Make Scheduler sort jobs by StartTime, Priority.
-- Make sure smtp and any other useful program is executable by the world
- in case Bacula is not running as root.
-- Look at Dan's field width problems in PostgreSQL.
-- Look at effect of removing GROUP BYs.
-- In restore take all filesets with same base name.
-- From Alan Brown <ajb2@mssl.ucl.ac.uk>
- BTW, there's a make install bug in 1.33 - with --enable-gnome,
- gnome-console is built, but the binary and .conf are not being installed.
-- Permit Bacula and apcupsd donations (not done for apcupsd).
-- Fix Ctl-C crashing the Console (readline?).
-- Look at code in recycle_oldes_purged_volume() recycle.c. Why not
- let SQL do ORDER BY LastWritten ASC?
-- Look at find_next_volume() algorithm. Currently, it selects:
- +---------+------------+---------------------+-----------+
- | MediaId | VolumeName | LastWritten | VolBytes |
- +---------+------------+---------------------+-----------+
- | 3 | Test13 | 0000-00-00 00:00:00 | 1 |
- | 4 | Test14 | 0000-00-00 00:00:00 | 1 |
- | 1 | test11 | 2003-12-03 18:39:55 | 4,004,926 |
- | 2 | test12 | 2004-01-04 15:25:56 | 2,078,691 |
- +---------+------------+---------------------+-----------+
- but perhaps it should fill already used Volumes first, and use
- Append volumes before Purged, or Recycled, ...
-- Possibly remove the "|| ap == NULL" on lines 123 and 207 of lib/var.c,
- which creates compile problems on alpha systems.
- var.c:123: no match for `va_list & == long int'
-- Check "restore" 3 (JobId), then it asks for Storage resource. Does
- it verify that the correct volume is chosen?
-- Make Bacula "poll a drive".
-- Notes for final checking of Nic's code:
- Could I get you to double check the switch () statements in the
- job_check_maxwaittime and job_check_maxruntime functions in
- src/dird/job.c?
-- Define week of year for scheduler. W01, W02, ...
- Week 01 of a year is per definition the first week that has the
- Thursday in this year, which is equivalent to the week that contains the
- fourth day of January. In other words, the first week of a new year is
- the week that has the majority of its days in the new year. Week 01
- might also contain days from the previous year and the week before week
- 01 of a year is the last week (52 or 53) of the previous year even if it
- contains days from the new year. A week starts with Monday (day 1) and
- ends with Sunday (day 7). For example, the first week of the year 1997
- lasts from 1996-12-30 to 1997-01-05 and can be written in standard
- notation as
- 1997-W01 or 1997W01
- The week notation can also be extended by a number indicating the day
- of the week. For example, the day 1996-12-31, which is the Tuesday (day
- 2) of the first week of 1997, can also be written as
- 1997-W01-2 or 1997W012
-- Either restrict the characters in a name, or fix the problem
- emailing with names containing / (smtp command line breaks).
-- Implement .consolerc for Console
-- Implement scan: for every slot it finds, zero the slot of
- Volume other volume having that slot.
-- Make restore job check if all the files are actually restored.
-- Look at 2Gb limit for SQLite.
-- Fix get_storage_from_media_type (ua_restore) to use command line
- storage=
-- Don't print "Warning: Wrong Volume mounted ..." if mounting second volume.
-- Write a mini-readline with history and editing.
-- Take a careful look a the Basic recycling algorithm. When Bacula
- chooses, the order should be:
- - Look for Append
- - Look for Recycle or Purged
- - Prune volumes
- - Look for purged
- Instead of using lowest media Id, find the least recently used
- volume.
-
- When the tape is mounted and Bacula requests the status
- - Do everything possible to use it.
-
- Define a "available" status, which is the currently mounted
- Volume and all volumes that are currently in the autochanger.
-- Is a pool specification really needed for a restore? Yes, and
- you may want to exclude archive Pools.
-- Implement a PostgreSQL driver.
-- Fix restore to list errors if Invalid block found, and if # files
- restored does not match # expected.
-- Something is not right in last block of fill command.
-- Add FileSet to command line arguments for restore.
-- Enhance time and size scanning routines.
+=====
+ Multiple drive autochanger data: see Alan Brown
+ mtx -f xxx unloadStorage Element 1 is Already Full(drive 0 was empty)
+ Unloading Data Transfer Element into Storage Element 1...source Element
+ Address 480 is Empty
+
+ (drive 0 was empty and so was slot 1)
+ > mtx -f xxx load 15 0
+ no response, just returns to the command prompt when complete.
+ > mtx -f xxx status Storage Changer /dev/changer:2 Drives, 60 Slots ( 2 Import/Export )
+ Data Transfer Element 0:Full (Storage Element 15 Loaded):VolumeTag = HX001
+ Data Transfer Element 1:Empty
+ Storage Element 1:Empty
+ Storage Element 2:Full :VolumeTag=HX002
+ Storage Element 3:Full :VolumeTag=HX003
+ Storage Element 4:Full :VolumeTag=HX004
+ Storage Element 5:Full :VolumeTag=HX005
+ Storage Element 6:Full :VolumeTag=HX006
+ Storage Element 7:Full :VolumeTag=HX007
+ Storage Element 8:Full :VolumeTag=HX008
+ Storage Element 9:Full :VolumeTag=HX009
+ Storage Element 10:Full :VolumeTag=HX010
+ Storage Element 11:Empty
+ Storage Element 12:Empty
+ Storage Element 13:Empty
+ Storage Element 14:Empty
+ Storage Element 15:Empty
+ Storage Element 16:Empty....
+ Storage Element 28:Empty
+ Storage Element 29:Full :VolumeTag=CLNU01L1
+ Storage Element 30:Empty....
+ Storage Element 57:Empty
+ Storage Element 58:Full :VolumeTag=NEX261L2
+ Storage Element 59 IMPORT/EXPORT:Empty
+ Storage Element 60 IMPORT/EXPORT:Empty
+ $ mtx -f xxx unload
+ Unloading Data Transfer Element into Storage Element 15...done
+
+ (just to verify it remembers where it came from, however it can be
+ overrriden with mtx unload {slotnumber} to go to any storage slot.)
+ Configuration wise:
+ There needs to be a table of drive # to devices somewhere - If there are
+ multiple changers or drives there may not be a 1:1 correspondance between
+ changer drive number and system device name - and depending on the way the
+ drives are hooked up to scsi busses, they may not be linearly numbered
+ from an offset point either.something like
+
+ Autochanger drives = 2
+ Autochanger drive 0 = /dev/nst1
+ Autochanger drive 1 = /dev/nst2
+ IMHO, it would be _safest_ to use explicit mtx unload commands at all
+ times, not just for multidrive changers. For a 1 drive changer, that's
+ just:
+
+ mtx load xx 0
+ mtx unload xx 0
+
+ MTX's manpage (1.2.15):
+ unload [<slotnum>] [ <drivenum> ]
+ Unloads media from drive <drivenum> into slot
+ <slotnum>. If <drivenum> is omitted, defaults to
+ drive 0 (as do all commands). If <slotnum> is
+ omitted, defaults to the slot that the drive was
+ loaded from. Note that there's currently no way
+ to say 'unload drive 1's media to the slot it
+ came from', other than to explicitly use that
+ slot number as the destination.AB
+====
+
+====
+SCSI info:
+FreeBSD
+undef# camcontrol devlist
+<WANGTEK 51000 SCSI M74H 12B3> at scbus0 target 2 lun 0 (pass0,sa0)
+<ARCHIVE 4586XX 28887-XXX 4BGD> at scbus0 target 4 lun 0 (pass1,sa1)
+<ARCHIVE 4586XX 28887-XXX 4BGD> at scbus0 target 4 lun 1 (pass2)
+
+tapeinfo -f /dev/sg0 with a bad tape in drive 1:
+[kern@rufus mtx-1.2.17kes]$ ./tapeinfo -f /dev/sg0
+Product Type: Tape Drive
+Vendor ID: 'HP '
+Product ID: 'C5713A '
+Revision: 'H107'
+Attached Changer: No
+TapeAlert[3]: Hard Error: Uncorrectable read/write error.
+TapeAlert[20]: Clean Now: The tape drive neads cleaning NOW.
+MinBlock:1
+MaxBlock:16777215
+SCSI ID: 5
+SCSI LUN: 0
+Ready: yes
+BufferedMode: yes
+Medium Type: Not Loaded
+Density Code: 0x26
+BlockSize: 0
+DataCompEnabled: yes
+DataCompCapable: yes
+DataDeCompEnabled: yes
+CompType: 0x20
+DeCompType: 0x0
+Block Position: 0
+=====
+
+====
+ Handling removable disks
+
+ From: Karl Cunningham <karlc@keckec.com>
+
+ My backups are only to hard disk these days, in removable bays. This is my
+ idea of how a backup to hard disk would work more smoothly. Some of these
+ things Bacula does already, but I mention them for completeness. If others
+ have better ways to do this, I'd like to hear about it.
+
+ 1. Accommodate several disks, rotated similar to how tapes are. Identified
+ by partition volume ID or perhaps by the name of a subdirectory.
+ 2. Abort & notify the admin if the wrong disk is in the bay.
+ 3. Write backups to different subdirectories for each machine to be backed
+ up.
+ 4. Volumes (files) get created as needed in the proper subdirectory, one
+ for each backup.
+ 5. When a disk is recycled, remove or zero all old backup files. This is
+ important as the disk being recycled may be close to full. This may be
+ better done manually since the backup files for many machines may be
+ scattered in many subdirectories.
+====
+
+
+=== Done in 1.34.3
+- To pass Include 1 or two letter commands
+ I Name Include name - first record
+ B Name Base name - repeat
+ R "xxx" Regexp
+ W "xxx" Wild Card
+ E zzz Exclude expression (wild card)
+ P "plugin" Plugin
+ D "reader" Reader program
+ T "writer" Writer program
+ O Options In current commpressed format
+ (compression, signature, onefs, recurse, sparse,
+ replace, verify options, ...)
+ N End option set
+ B BaseName Start second option set any letter
+ ...
+ E
+ F Number Number of filenames to follow
+ <file-name>
+ B Name
+ ...
+ N End option set
+ F Number Number of filenames to follow
+ <file-name>
+ ...
+- Add regression of btape "fill"
+==== Done in 1.34.4
+- Implement "label slots=1,2... pool=yyy barcodes"
+- Mark a non-removable disk Volume in error rather than asking sys op to
+ mount it.
+- Implement Fixed storage LabelFormat test.
+- Add reporting in attr despooling.
+- Figure out how to use ssh or stunnel to protect Bacula communications.
+ Add Dan's work to manual See ssl.txt
+
+==== Done in 1.35.0
+- Implement fast tree insert (doubly linked list)
+- Disallow using Internal database
+- Feedback while the restore tree is being built.
+- Add detection of Whitebox release in ./configure
+- Add InChanger to "list media"
+- Implement second cut of SIGHUP in Dir
+ (Implement resources on a single pointer)
+- Add regular expressions to FileSets (needs testing).
+- Test new despooling error recovery code when partition fills.
+- Sort Scheduled jobs status listing by start time.
+- Add priority to Scheduled jobs status listing.
+- Look at Win32 inc problem when new directory added files not saved???
+- Require resource names to be unique.
+- Make sure that all errors from libacl are printed.
+- Make FD run on Win95 if possible (not really possible).
+- Fix GROUP BYs in all SQL (done by Dan -- thanks)
+- Make entering multiple Storage names in Dir illegal.
+- Make btape release the drive during the "test" append.
+- Fix restore:
+ You have selected the following JobIds: 739,856,797
+ Building directory tree for JobId 739 ...
+ Building directory tree for JobId 856 ...
+ Building directory tree for JobId 797 ...3
+ Jobs inserted into the tree.
+- Fix errno handling in win32 compat routines.
+- Add better error codes to run_program (10000+)
+- Revisit and revise Disaster Recovery (fix SCSI and RAID
+ disk detection)
+