------------------------------------------------------------------------------
rsnapshot changelog
http://www.rsnapshot.org/
------------------------------------------------------------------------------

VERSION 1.2.1 (Apr 09 15:10 2005)
------------------------------------------------------------------------------
- Fixed security bug when neither cmd_cp or link_dest are enabled

VERSION 1.2.0 (Jan 31 21:43 2005)
------------------------------------------------------------------------------
- Turned off buffering ($|=1)
- Changed default lockfile to /var/run/rsnapshot.pid, for FHS compliance
- Clarified man page licensing (GPL)
- Fixed is_real_local_abs_path() to handle dangling symlinks
- Changed utils/backup_smb_share.sh to re-order the smbtar arguments
- Added "-uroot" to utils/backup_mysql.sh example file
- Changed regex in is_blank() subroutine
- Changed rsync include/exclude mode to relative
- Peter Palfrader <weasel@debian.org> enhanced error reporting to include
  command line options
- Bharat Mediratta <bharat@menalto.com> improved the exclusion rules to avoid
  backing up the snapshot root. The old way was also kept for users who can't
  or don't want to upgrade their destination paths in their backup points.
- Bharat Mediratta <bharat@menalto.com> added a "+" feature to the per-backup
  point args to allow additive include/exclude rules.
- Added safe_rename() subroutine to work around a semi-obscure timestamp bug
  in certain Linux kernels
- Clarified error message about local/relative paths in config file parsing
- Added check for leading/trailing spaces in remote (ssh) paths
- Added du(1) and crontab(1) to man page references
- Added config.guess and config.sub for automake
- Changed default destination paths for backup points in example config file
  for compatibility with --relative rsync flag
- Added formatting fix to show one slash only when invoking backup_script
  with link_dest option enabled
- Broke backwards compatibility for the benefit of fixing several outstanding
  issues. The default value for rsync_long_args is now different.
- Changed add_lockfile() verbose message to "echo $$ > /path/to/lockfile.pid"
  which is actually what the code is doing
- Added check to make sure backup_scripts can't share destination path with
  backup points
- Added check to make sure different backup_script destinations don't overlap
  and don't clobber backup point destinations
- Added "cmd_du" parameter to allow specifying the path to "du"
- Nicolas Kaiser <nikai@nikai.net> provided various typo fixes in the program
  and man page
- Fixed "missing rsync/configtest ok" bug
- Added config_version parameter, which is now required
- All autoconf files were updated with the ones from Debian sarge
- Added upgrade-config-file feature for "make upgrade" target and manual use
- Added upgrade feature to RPM spec file
- Added check-config-version feature for use with shell scripts, etc.
- Changed version_only argument to version-only, for consistency with new
  options
- Conditionalized configure script to only advise the user to copy the
  rsnapshot.conf.default file to rsnapshot.conf if it's a new installation
- Added rollback feature to restore interval.0 snapshots when using link_dest
- Added second option for du, to compare subdirectories or files
- Added "du_args" to pass arguments to du
- Relaxed cmd line option validation, but only when du is the command
- Now only show command invocation for logger on verbose level 4
- Added rsync cleanup after native_cp_al() to preserve special files
- Removed warning messages from native_cp_al() about special files
- Modified error printing so full run string is displayed once at the top
  of a list of error messages
- Fixed bug in old method of preventing the snapshot root from being backed
  up, which occurred when snapshot root was more than one level down from a
  backup point
- Added commented out du_args to rsnapshot.conf.default.in
- Added descriptive error if "du" fails

VERSION 1.1.6 (Jul 05 16:35 2004)
------------------------------------------------------------------------------
- Moved the bulk of the program into smaller subroutines (finally)
- show_disk_usage() now exits the program directly instead of returning a
  value
- "0" can now be used as a valid interval name
- Config error messages now wrap before 80 columns.
- Moved $file_line_num global var into parse_config_file()
- Split on \s+ instead of \s where appropriate
- Moved $rsync_include_args and $rsync_include_file_args into
  parse_config_file()
- Removed the $have_{cmd} global variables entirely
- Took %opts out of the global namespace and into get_cmd_line_opts()
- Changed a failed syslog call from an error to a warning
- Removed $cwd from global namespace
- Fixed bug where cp_al() commands would not be displayed in test mode
- Removed redundant $done flag from file_diff() while loop
- Downgraded close() file errors to warnings
- Added utils/backup_dpkg.sh to backup Debian package information
- Simplified the utils/ section of the Makefile under "make tar"
- Now exits with an error if unknown command line flags are found
- Added a check in parse_cmd_line_opts() for the config file if specified
- Changed link_dest rsync error message to description instead of number
- Changed description of test mode in the help cmd
- Changed description of -V mode
- Removed perl defaults from man page
- Clarified crontab entry timing in man page
- Removed trailing slashes on calls to mkpath() to fix bug with NetBSD
- Removed trailing slashes on calls to rename() to fix bug with NetBSD
- Removed trailing slashes on calls to rmtree() just in case
- Fixed man page generation in "make tar" target
- Changed -V message when there's no directory to rotate

VERSION 1.1.5 (Jun 20 20:56 2004)
------------------------------------------------------------------------------
- /bin/rm is the default for deleting directories (in the default config file)
- Removed redundant validation (re: intervals) in execution section
- Print PID in lockfile
- Added a few more comments, clarified some existing comments
- Made some minor updates to the man page
- Fix display formatting double-slash bug when '/' is a backup point
- Changed return value when called with no cmd line args to 1
- Added a new exit code, for warnings (2)
- rsync exit codes 23 and 24 make rsnapshot return a warning exit code
  instead of an error
- Changed link_dest comment in config file to mention "cross-platform"
- Added utils/debug_moving_files.sh abuse script for testing
- Added 'du' option to show disk usage in snapshot_root
- Moved setlocale() after begin message
- Added manual link() call when we're using --link-dest and a single file
- Don't call syslog in bail() if it's a test run

VERSION 1.1.4 (May 16 23:44 2004)
------------------------------------------------------------------------------
- (re)added the cmd_rm parameter. rmtree() can't delete some obscure files
  on some systems
- Added rm_rf() stub function to recursively remove things using either
  rmtree() or /bin/rm -rf, depending on the configuration.
- Added cp and rm detection to ./configure script
- Set LC_ALL locale variable to C in an attempt to fix rmtree() locale issue
- Added no_create_root option to rsnapshot
- Added utils/make_cvs_snapshot.sh utility script
- Added utils/sign_packages.sh utility script
- Added utils/rsnapshot_if_mounted.sh utility script
- Standardized comment headers in utils/ scripts
- Added DEBIAN/copyright file
- Fixed man page to say RSNAPSHOT instead of RSNAPSHOT-PROGRAM for the title

VERSION 1.1.3 (Apr 06 14:24 2004)
------------------------------------------------------------------------------
- Validating rsync_short_args, must be in format '-an', not '-a -n'
- Assembling @cmd_stack list one at a time, rather than using join()
- Added "don't panic" message in rotate_interval() at verbose >= 4
  when no filesystem actions get performed
- Fixed latent display bug in print_msg() (now that it's getting used)
- Fixed "cd //" display bug when running from root directory (removed extra /)

VERSION 1.1.2 (Mar 17 02:12 2004)
------------------------------------------------------------------------------
- Fixed slash formatting issue with non-ssh rsync protocol calls
- Fixed a slightly inconvenient permissions issue in rsnaptar
- Added support for arbitrary arguments to backup_script files

VERSION 1.1.1 (Feb 11 23:24 2004)
------------------------------------------------------------------------------
- Changed some fatal errors to warnings in some recursive subroutines
- Added optional GPG support to the rsnaptar utility shell script

VERSION 1.1.0 (Jan 24 16:41 2004)
------------------------------------------------------------------------------
- The first interval must now have a value of at least 2 if more than one
  interval is being used
- Now allows "/" as a backup point on the local drive
- Cleaned up command formatting to consolidate slashes
- Added subroutines for centralized print/logging
- Added logfile and loglevel parameters to the config file
- Added logging feature
- Moved loglevel/verbose number validation into a seperate subroutine
- Added much more error checking on the config file
- Changed @snapshot_points to @backup_points for more consistent terminology
- Made all "-x" executable checks also check for "-f" file
- Made rsync error messages report the full path to rsync and the correct
  return value
- Fixed minor screen formatting issue with print_cmd() subroutine where it
  could line wrap the first element of a command
- Changed exit error code from -1 (255) to 1, to be more standard
- Added include, exclude, include_file, and exclude_file params
- Fixed bug where not all locally specified backup options would be parsed
- Replaced calls to bail() from config parsing code with config_err() calls
- Added directory traversal checks for commands
- Changed indentation in print_cmd() to 4 spaces instead of 2
- Fixed bug where a file named "tmp" in the snapshot root would not be
  deleted properly at runtime (if sync_if_different() was used)

VERSION 1.0.10 (Jan 20 00:43 2004)
------------------------------------------------------------------------------
- Added link_dest option, to use the --link-dest flag with rsync
- Now checking the return values from rsync, with conditional syntax warning
  for --link-dest on older versions
- Added additional calls to syslog, to report rsync failures
- Now checking the return value of scripts called from backup_script
- Conditionalized the backup_interval() and rotate_interval() subroutines to
  only delete the oldest interval if we're keeping more than one of that
  interval
- Reformatted source code so it doesn't wrap (at 126 columns, or 1024x768)
- Shortened output when invoked with no args or from help to fix in 80 columns
- Changed rotate_interval() subroutine to simply move directories from lower
  intervals up instead of recursively copying hard links
- Added formatting subroutine to wrap all verbose command output at 80 columns

VERSION 1.0.9 (Jan 6 19:17 2004)
------------------------------------------------------------------------------
- Added backup_mysql.sh example script in utils/ to backup a MySQL database
- Added backup_smb_share.sh example script in utils/ to backup an SMB share
- Changed verbose settings internally to use numbers, instead of several
  arbitrary variables.
- Added optional "verbose" field to the config file, with values 1-5
- Fixed lockfile code to not run in test mode

VERSION 1.0.8 (Dec 26 12:56 2003)
------------------------------------------------------------------------------
- Added backup_script option to have rsnapshot invoke backup scripts directly
- Added two example backup scripts in the utils/ directory, one for Postgres,
  and one for downloading the CVS root for rsnapshot
- Added optional syslog support using the "logger" command
- Fixed ssh_args local override for individual backup points
- Added additional comments to various sections of the code
- Removed redundant rsync arguments from the default
- Moved add_lockfile() call so it runs later in the program

VERSION 1.0.7 (Dec 19 19:22 2003)
------------------------------------------------------------------------------
- Added ssh_args parameter to pass arbitrary args to ssh
- Fully integrated Autoconf build support for the program and config file
- Provided more helpful error messages when the config file is not found
- Fixed false "Can not remove lockfile" error when cmd_ssh is not defined
  but is referenced later in backup points

VERSION 1.0.6 (Nov 26 21:03 2003)
------------------------------------------------------------------------------
- added \n to utime() debug message
- moved all rsync calls into dynamically populated arrays
- added rsync_short_args and rsync_long_args to config file
- improved parse_backup_opts() validation code
- Fixed "make install" vs. INSTALL bug for Mac OS X
- Ted Zlatanov <tzz@lifelogs.com> added Autoconf support!

VERSION 1.0.5 (Nov 14 00:22 2003)
------------------------------------------------------------------------------
- Changed domain to rsnapshot.org
- Added lockfile feature, with patch to enable it by default in the RPM
- Updated man page to include the one_fs feature, did general clean up
- Fixed '..' pattern matching bug that would exclude valid files
- Updated Makefile to use "install", now allows "make tar" as a non-root user
- Moved most remaining regexes into dedicated subroutines

VERSION 1.0.4 (Nov 6 23:18 2003)
------------------------------------------------------------------------------
- Added one_fs feature to the config file (same as -x on the command line)
- Fixed anonymous rsync feature, which had been broken in 1.0.3
- Added verification data to the RPM package

VERSION 1.0.3 (Nov 2 14:43 2003)
------------------------------------------------------------------------------
- Carl Wilhelm Soderstrom <chrome@real-time.com> added RPM format to release.
- Added "one filesystem" option to prevent rsnapshot from crossing filesystems
  within a backup point. Patch provided by Ted Zlatanov <tzz@lifelogs.com>
- Minor typographical errors fixed.

VERSION 1.0.2 (Oct 24 23:22 2003)
------------------------------------------------------------------------------
- added -V "extra verbose" option, to show rsync verbose output

VERSION 1.0.1 (Oct 18 03:22 2003)
------------------------------------------------------------------------------
- Make sure the snapshot directory either needs to be created or already is a
  directory. Previously we were checking only if the snapshot root existed,
  which would cause problems if it were a file.
- Cleaned up and streamlined the config file parsing portion of the code.
- Changed numeric comparisons so that a typo would prevent compilation,
  instead of acting weird. i.e. (0 == $foo) instead of ($foo == 0)

VERSION 1.0.0 (Sep 14 02:58 2003)
------------------------------------------------------------------------------
- Removed backward compatibility cruft for mkdir, touch, rm, and mv.
- rsnapshot has now been tested successfully on Debian and Redhat Linux, as well
  as IRIX and Solaris.
- Man pages are no longer gzipped, for compatibility with Solaris and others.

VERSION 0.9.5 (Sep 9 20:11 2003)
------------------------------------------------------------------------------
- Removed most dependencies on external shell programs.
- Added compatibility for non-Linux platforms.
- Did significant testing/debugging to ensure compatibility with perl 5.004,
  5.6, and 5.8
- Tested and working successfully on IRIX, more tests to follow.

VERSION 0.9.4 (Sep 1 23:55 2003)
------------------------------------------------------------------------------
- Heavily commented variables, and added much stricter syntax checking of the
  config file.
- Additional error checking on mkdir
- updated the man page.

VERSION 0.9.3 (Sep 1 01:46 2003)
------------------------------------------------------------------------------
- Anonymous rsync connections now supported.
- Reverted back from recycling the oldest snapshots to the tried and true
  method of deleting the old ones.
- Now rsnapshot will not only create the snapshot root directory as it did
  before, but it will also chmod 0700 the directory when it creates it.

VERSION 0.9.2 (Aug 31 04:08 2003)
------------------------------------------------------------------------------
- Optimized rotating snapshot intervals by recycling the last directory to the
  first, instead of deleting the last and copying .0 to .1
- Added support for spaces in path names.
- The config file now requires tabs to seperate all entries, where spaces were
  before acceptable. This was the easiest way to support spaces in path names.
- Directory entries now require a trailing slash. This is so that files can be
  treated correctly without having to be examined directly (which is
  impractical over rsync/ssh).
