Kern's ToDo List 25 March 2003 Documentation to do: (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. - Document new MaximumConcurrentJob records (Job, Client, Storage) 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 { Received: from post.larc.nasa.gov (post.larc.nasa.gov [128.155.4.45]) by matou.sibbald.com (8.11.6/8.11.6) with ESMTP id h0ELUIm07622 for ; Tue, 14 Jan 2003 22:30:18 +0100 Received: from Baron.larc.nasa.gov (baron.larc.nasa.gov [128.155.40.132]) by post.larc.nasa.gov (pohub4.6) with ESMTP id QAA09768 for ; Tue, 14 Jan 2003 16:30:14 -0500 (EST) Message-Id: <5.1.0.14.2.20030114153452.028dbae8@pop.larc.nasa.gov> X-Sender: w.a.sellers@pop.larc.nasa.gov X-Mailer: QUALCOMM Windows Eudora Version 5.1 Date: Tue, 14 Jan 2003 16:30:18 -0500 To: Kern Sibbald From: Bill Sellers Subject: Re: [Bacula-users] Bacula remote storage? In-Reply-To: <1042565382.1845.177.camel@rufus> References: <5.1.0.14.2.20030114113004.0293a210@pop.larc.nasa.gov> <5.1.0.14.2.20030113170650.028dad88@pop.larc.nasa.gov> <5.1.0.14.2.20030113170650.028dad88@pop.larc.nasa.gov> <5.1.0.14.2.20030114113004.0293a210@pop.larc.nasa.gov> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; format=flowed X-Annoyance-Filter-Junk-Probability: 0 X-Annoyance-Filter-Classification: Mail At 06:29 PM 1/14/2003 +0100, you wrote: >Hello Bill, > >Well, if you cannot put a Bacula client on the machine, >then it is a big problem. If you know of some software >that can do what you want, let me know, because I >really just don't know how to do it -- at least not >directly. Hi Kern, We have been able to get Amanda to use the HSM as a storage device. Someone here wrote a driver for Amanda. BUT, Amanda doesn't handle Windows systems very well (or at all without Samba). So I am looking for a backup system that has a Windows client. I really like the Windows integration of Bacula. From the command line, its rather trivial to move the data around. We use something like- tar cf - ./files | gzip -c | rsh hsm dd of=path/file.tgz or if you use GNU tar: tar czf hsm:path/file.tgz ./files One idea for you to consider; Sendmail offers pipes in the aliases file; (mailpipe: "|/usr/bin/vacation root") and Perl supports pipes in the "open" statement (open FILE, "|/bin/nroff -man";) Could you could make a pipe available, as a storage device? Then we could use any command that handles stdin as a storage destination. Something like- Storage { Name = HSM-RSH Address = hsm #Password is not used in rsh, but might be used in ftp. Device = "| gzip -c | rsh hsm dd of=path/file.tgz" MediaType = Pipe } Storage { Name = HSM-FTP Address = hsm Password = "foobar&-" Device = "| ncftpput -c hsm /path/file.bacula" MediaType = Pipe } >If you have some local storage available, you could >use Bacula to backup to disk volumes, then use some >other software (ftp, scp) to move them to the HSM >machine. However, this is a bit kludgy. It is, but maybe worth a try. Is there some function in Bacula to put variables in filenames? i.e. backup.2003-01-15.root Thanks! Bill --- Bill Sellers w.a.sellers@larc.nasa.gov ============================================== The Project for the above I finally realized that this is not at all the same as reader/writer programs or plugins, which are alternate ways of accessing the files to be backed up. Rather, it is an alternate form of storage device, and I have always planned that Bacula should be able to handle all sorts of storage devices. So, I propose the following phases: 1. OK from you to invest some time in testing this as I implement it (requires that you know how to download from the SourceForge cvs -- which I imagine is a piece of cake for you). 2. Dumb implementation by allowing a device to be a fifo for write only. Reason: easy to implement, proof of concept. 3. Try reading from fifo but with fixed block sizes. Reason: proof of concept, easy to implement. 4. Extend reading from fifo (restores) to handle variable blocks. Reason: requires some delicate low level coding which could destabilize all of Bacula. 5. Implementation of above but to a program. E.g. Device = "|program" (not full pipeline). Reason: routines already exist, and program can be a shell script which contains anything. 6. Add full pipeline as a possibility. E.g. Device = "| gzip -c | rsh hsm dd of=path/file.tgz" Reason: needs additional coding to implement full pipeline (must fire off either a shell or all programs and connect their pipes). There are a good number of details in each step that I have left out, but I will specify them at every stage, and there may be a few changes as things evolve. I expect that to get to stage 5 will take a few weeks, and at that point, you will have everything you need (just inside a script). Stage 6 will probably take longer, but if this project pleases you, what we do for 5 should be adequate for some time. ============================================= Done: (see kernsdone for more) - Look into Pruning/purging problems or why there seem to be so many files listed each night. - Fix cancel in find_one -- need jcr. - Cancel does not work for restore in FD. - Write SetJobStatus() function so cancel status not lost. - Add include list to end of chain in findlib - Zap sd_auth_key after use - Add Bar code reading capabilities (new mtx-changer) - Figure out some way to automatically backup all local partitions - Make hash table for linked files in findlib/find_one.c:161 (not necessary) - Rewrite find_one.c to use only pool_memory instead of alloca and malloc (probably not necessary). - Make sure btraceback goes into /sbin not sysconf directory. - InitVerify is getting pruned and it shouldn't (document it) - Make 1.28c release ??? NO do 1.29 directly - Set timeout on opening fifo for save or restore (findlib) - Document FIFO storage device. - Document fifo and | and < ====== 1.30 ======= - Implement SHA1 - Get correct error status from run_program or open_bpipe(). - Restrict permissions on File Volumes (now 0640). - Umasked 022 daemons - Fix restore of hard linked file. - Figure out how to allow multiple simultaneous file Volumes on a single device. - Implement multiple simultaneous file Volumes on a single device. - Cleanup db_update_media and db_update_pool - Flush all the daemon messages at the end of every job. - Change stat1= fgets()!=NULL to stat1=fgest()==NULL; in run_program -- bpipe.c - Apparently cancel does not work for jobs waiting to be scheduled. - Implement TCP/IP connection for MySQL - Pull a canceled job from the Scheduling queue. - Implement max_file_size in block.c (already done, just tweaked). - Look at purge jobs volume (at least document it, and see if it is logical). - Add list volumes does all pools. list volumes pool=xxx now works. - Add pool= to "list media" in ua_output.c - Strip trailing slashes from Include directory names in the FD. - Fix Error: bnet.c:408 gethostbyname() for lpmatou failed: ERR=Operation not permited loop. - Add code if there is no mtio.h (cannot do -- too many ioctl defines needed) - Produce better error messages in when error/eof writing block. - Cancelling of a queued job does NOT work!!!!!! - Get two rufus-dir: Volume used once. Marking Volume "File0003" as Used. rufus-sd: Recycled volume File0003 on device /home/kern/bacula/working, all previous data lost. rufus-dir: Volume used once. Marking Volume "File0003" as Used. - Ability to backup to a file then later transfer to a tape -- Migration. Migration based on MaxJobs(MinJobs),MaxVols(MinVols),AgeJobs,MaxBytes(MinBytes) (i.e. HighwaterMark, LowwaterMark). - Eugeny Fisher wants to cycle through a 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.