Changelog for bu
Author: Vincent Stemen  <bu@AdvancedResearch.org>

9/30/01  Version 2.8
         Fixed to properly detect GNU cp is installed with the newer
         fileutils-4.x package.  They changed the output of 
         "cp --version" to just output "fileutils" rather than 
         "GNU fileutils" which broke bu's detection since it was
         looking for the string, "GNU".

8/27/01  Version 2.7
         Fixed bug that caused warnings to be printed from the expr
         command when running under Linux.
         
         Fixed a portability bug that prevented using non-GNU awk.

         Modified to work with GNU cp installed as gcp as well as cp.

         Improved the Install script to preserve existing custom
         Include/Exclude files when upgrading from a previous version.

	 Improved the Un-install script to offer a choice whether to do
	 a completely clean un-install or preserve the configuration
	 and log files.

         Miscellaneous minor code clean up and improvements.

8/22/01  Version 2.6
         Fixed bug with using wild cards in the Include list.  It now
         works with wild cards specified in the directory paths.

         Security fix: Logs are now created with 640 perms (no world
         read access) by default.  Before, users could read the backup
         log files to see what files existed in directories that they
         had no 'x' permission to.  The log permissions are also now
         configurable in ~/.burc via LOG_ACCESS_PERMS.

         Enhanced the handling of file names.  Before, names with
         spaces in them could not be specified directly, even though
         they could exist in specified directories.  Now, file names
         with spaces can be specified directly on the command line as
         well as in the Include/Exclude lists.

         Since almost any valid Unix file name may now be specified,
         bu no longer errors on unknown switches.  It just assumes it
         is a file name that starts with a dash.

         Improved the file exclusion filtering code to be more modular
         and more robust.

         All files are now filtered through the Exclude file.  Before,
         individual files specified were not filtered.  The Exclude
         filter was only used when directories were specified.

         Modified log generation to show files exactly as specified,
         with wild cards un-expanded, in the "Specified files or
         directories" section of the log.

         Moved the temp files into their own subdirectory in /var/tmp
         for each instance of bu, rather than using the log directory.

         Enhanced to automatically clean up stale temp files left
         behind by a system crash or bu getting ungracefully killed
         via SIGKILL (signal 9).

         Enhanced to check to see if your cp command is the GNU one
         since bu depends on it.  If not, it prints and error message
         and exits.

         Other miscellaneous code improvements.
	
7/30/01  Version 2.5
 	 Fixed bug generated in version 2.4 where the file list did not
	 get created in quite mode causing the log to say there were no
	 changed files to back up, even though the backup was successful.

	 Enhanced the log to show the time it was interrupted if bu gets
	 interrupted or killed.
	
7/29/01	 Version 2.4.1
	 Somehow, the updated default Exclude file got left out of 2.4.
	 It now has it.  No other changes.
	
7/24/01  Version 2.4
	 Ported to FreeBSD's sh shell.  It no longer requires GNU bash.
         I expect it will now run on most any modern Bourne compatable
	 shell.

         Added signal handling and made improvements to the handling of
	 the log files.  Most importantly, it now cleans up it's tmp files
	 and completes the log file before exiting when killed by a
	 SIGTERM or SIGINT signal.
	
	 Enhanced to create unique log filenames for multiple instances of
	 bu running at the same time so that there are no conflicts
	 running parallel bu's, even when backing up the same file system.
	 Each instance keeps it's own unique temporary file list of what
	 it is backing up.

	 Simplified the default log filename by removing the hour and
	 minute, because it now adds -# to the name, where # is a unique
	 number if a log for the same date already exists.

         Changed the default log directory from /var/backups to
	 /var/backups/bu.

	 Added -m option to mail the log to a specified email address
	 after the backup is finished.
		
         Changed the cp option, -P, to --parents.  Apparently, the meaning
	 of -P is being changed in GNU cp to conform to POSIX standards.

         Dropped the -v switch for verbose mode and added -q for quiet.
	 Verbose mode is now the default.

	 Improvements to the default Exclude file.
	
         Changed the copying policy from GNU style to BSD.
	
9/06/99  Version 2.2
	 Fixed bug when using wild cards in an Exclude list.  File name
 	 globbing had to be turned off when constructing the regular
 	 expressions for the sed filter so that wild cards would not be
 	 expanded during that time.  It was causing some files that matched
	 the exclude expressions to be backed up anyway.

	 Fixed bug.  When files rather than directories were specified, it did
 	 not expand the symbolic links to the real absolute path of the files.

	 Updated comments in the default .burc file for the INCREMENTAL
	 setting.  It still said that incremental only applied when
	 directories were specified, which is incorrect.

	 Changed the default log directory from /usr/local/backups to
	 /var/backups.
	 
02/17/99 Version 2.1
         Changed the default LOGDIR from /usr/local/backups to /var/backups.

10/15/98 Version 2.0  Minor clean up.

10/15/98 Version 1.9
         In version 1.8 I accidently broke the -d and -f switches so
         that they didn't override the configuration file settings.  This
         fixes that.

10/1/98  Version 1.8
         Rewrote the backup() function so that it no longer uses cpio.
         Although cpio preserved the ownership of regular files, it sets the
         owner and group to root for directories it creates.  It now uses
         cp to backup all files (utilizing the -u and -a options).  It
         actually calls on cp for each and every file being backed up.  This
         may sound slow, but it was reasonably fast in my tests.  Apparently
         a tribute to Linux's lightning fast filesystem.  Here is a
         description of the problems I ran into that prompted me to take this
         approach for those who are interested.  If anybody has any better
         ideas, I am open to suggestions.

         In order to fix the directory ownerships that cpio incorrectly set,
         I would have to extract the directory name from every file being
         backed up and find what the ownership is on the source directory and
         then do a chown on the destination directory.  I don't want it to
         have that much overhead.  When directories are specified, it creates
         the list of files before backing them up so they can be filtered
         through the exclude expressions.  Then it needs to feed this list to
         one of the tools to do the copy.  Tar handles permissions correctly
         but it won't read a list of files from stdin, like cpio will, and I
         can't put the whole list on the command line because of command line
         length limitations.  I can't use it with xargs because I need to
         insert the args before the last argument (the destination) with cp.
         I experimented with going through a loop with a counter to break up
         the input file list into chuncks of x number of files and call on cp
         with each group until all the files were backed up.  It turned out
         that the shell script overhead of creating the list of files for
         each copy was great enough that it bench marked considerably faster
         to just call on cp for each separate file.

         Now, since it is going through a loop for each file, I went ahead
         and left the counter in it for the next feature.
                  
       o Added the variables, GROUP_SIZE and DELAY (which are configurable in
         .burc), allowing a configurable number of files to copy at a time
         and a sleep time between each group of files so that the bandwith on
         a network can be spread out if you have to back up over NFS during
         high traffic hours.  I don't know how many people need such a
         feature but it seemed nifty :-).  I would appreciate email from
         anybody who thinks it is useful.  If nobody ever uses it, I could
         eventually take it back out (unless I end up using it myself of
         course :-).

       o Fixed to work with filenames that have spaces in them.
       
       o Added "-c" option to specify an alternate runtime configuration
         file.

       o When Incremental mode is on, it now applies to all specified files,
         not just if directories are specified.

       o The log file that was specified by $LOG is no longer kept.  Now
         there is only one log file for each backup.  The filename is
         specified by the variable, $LOG, but it is the same as what used to
         be $FILELIST.  Before, $LOG just contained the list of each top
         level directory with the number of bytes backed up.  Since bu is no
         longer using cpio to get the number of bytes, and there was already
         $FILELIST, the old $LOG file didn't seem that useful.  However, the
         new logfile is nicer with more information about the backup,
         including start and finish times.
                  
9/19/98  Modified the README file to describe some of bu's features better.
	 Especially the way it handles symbolic links.

