Release Notes

Copyright 2009 by Stephen Vermeulen
Last updated: 2009 Oct 18


This is part of a series of articles on backing up computers. The top page is Design for an Archiving Backup System. This page contains the release notes for this set of utilities.

2009-10-18

Version 4.4 released. This includes:
  • fixed an issue with file name encodings in arcvrestoregui that would prevent files with special characters (like accents) from restoring. This probably is not general enough to handle things like Chinese characters though.
  • added ZeroReadError exception to the inner read loop of the doBackupFile() function, it appears that the overlarge, malformed packages were caused when an f.read() started returning no data (but didn't raise an error exception), so the backup stalled, just gradually writing small wrapper data chunks around the zero length strings it was getting. Now the backup will stop and delete the malformed package. This appears to be caused by how a particular file (Firefox's sessionstore.js on Windows Vista) is getting locked.
  • extended the excludedirs function so it has a way of matching a directory pattern so that c:\work\projects\pfgui\*\debug would cause all the debug directories that are subdirectories of the subdirectories of the pfgui directory from being backed up. This would reduce the backup size of VisualStudio projects greatly.
  • encountered the following problem, and added a fix for it in arcvback.py
      Traceback (most recent call last):
        File "c:\programs\arcvback4\arcvback.py", line 213, in doBackupFile
          d = f.read(nn)
      IOError: [Errno 13] Permission denied
    
      2009/01/19 09:04:39: Service shutdown received while backing up files, deleting incomplete package, exiting
    
  • cleaned up some exception handling at the outer level, which was not catching particular exceptions that are raised when a package file verify fails.
  • added slight fixes to PackageControl.close() and delete() functions so that if a package failed to verify during a close() the cleanup would proceed, the bad package would get deleted and the transaction would be aborted.
  • a couple of general except: clauses were logging at level 1, changed these to log at level 0 to ensure the relevant exceptions get recorded for study.
  • modified arcvpkglist.py to add a bit more diagnostic output.

2008-09-21

Version 4.3 released, added backup file integrity testing to the arcvrestoregui, this will do a full read and verify of all the needed to restore a particular directory (to the most recent version, up to a particular event or only for files in it that were backed up in a particular event). This is equivalent to doing the actual restore operation, but does not write any restored files to disk. If there are problems encountered (such as missing or damaged package files) it will display a list of all such files at the end of the verify operation.

2008-09-14

Version 4.2 released, added support for wake-on-LAN (WOL) to arcvback.py (command and service mode). To configure this you need to describe some machines in the [wol] section of the config.ini file. If you have configured a machine to be woken up, then arcvback will send a broadcast wake-up packet to the subnet, and then wait for a short time (user configurable) before accessing the machine. This can wake up modern (built in say the last 5 years) machines from the suspend to RAM, hibernate or even power off states. For more information on WOL and configuring Windows machines to do WOL see Wake on LAN.

2008-09-11

Version 4.1 released, add arcvrisk.py a utility to report on files that may be at risk. Added some more exception handling to arcvback to handle the case that when a machine that had been running gets shut down, then a different error will happen when you try to access it. It appears to be ioerror #64 "The specified network name is no longer available.". Fixed arcvlist.py so that when run without any parameters will list all the top level directories.

2008-09-08

Version 4.0 released, the main change is that the version database (which stores the meta information about all the versions of all the files that have been backed up) has been rewritten to use the Zope Object Database (ZODB) instead of being stored as a tree of files on disk. Doing this simplified the code (especially when handling some odd error conditions), made little difference in performance, made the system more robust and (unfortunately) increased the size of the version database (possibly by about a factor of 3).

Added database.backupdays (which defaults to 10) to the config.ini file, this sets the minimum number of days old backup zip files of the version database should be kept for. It takes precedence over the backupcount setting, this is to protect against something going bad with the database and if you have arcvback set to run many times a day you might overwrite all the database backups before you realize there is a problem. Of course, with the switch to ZODB this really should not be necessary, but better safe than sorry.

Removed the database.moddbfiles setting from config.ini, no longer needed with ZODB.

Removed transactfile.py as replaced by ZODB.

Removed the restriction that all directory names had to be in UNC form, now you can use drive letter based directory names when they are more convenient.

If you were trying to back up a very large file, that was larger than the maximum allowed per backup pass the old program would just stop each time it reached this file. With version 4 it will skip the file, but write warning messages to the log file.

Enhanced the arcvrestoregui program in a number of ways, removed menu items that had not been implemented, added better progress dialogs, added dialogs for all output, and added the ability to restore directory trees to either:

  1. the latest file version (which was what it did before)
  2. the latest version up to and including a particular backup pass (so if you want to restore a directory to how it was when the backup ran on last Thursday you can now easily do this).
  3. or restore just those files that had been recorded in a particular backup pass over a directory tree. You might use this to examine a large directory tree for the few files that changed between two backup passes, perhaps to undo the effects of some user error or upgrade that went bad.
If a machine was down the old program would stop the backup pass on trying to scan that machine, the new version will skip the directory and continue with other directories.

Converted all exceptions to class-based exceptions.

Added more testing code.

Updated the documentation on the web site.

2007-01-03

Added the readme files to the distribution zip file so people can find the web site to get the documentation, no code changes.

2006-12-31

Small fix to backup schedule parsing logic, if you have two scheduled events that backed up some of the same directories run at the same time (like a daily and a weekly event), then the program would scan those common directories twice. Fixed so each directory only gets scanned once per run, regardless of the number of events containing it that get run at the same time.

Sorted the directory and file listings within the arcvrestoregui tree view (the directories were already sorted but the files were in the order they were added to the system, which would often appear to be nearly sorted).

2006-12-28

For some reason one of my USB-attached drive will not be recognized after a reboot, I must first unplug it and plug it back in to get it seen. Once this is done the drive is recognized but there is no default share for it so I cannot use a UNC path to access files on it. I can get the UNC access to work again by issuing a "net share m$=m:\" command. To help support this I have added two new features to the config.ini file, first is the database.delay, you can set this to a number of seconds (default is 1 second) that the service should wait before doing anything after starting up. I set this to 120, with a line like:

delay=120

so that after the machine is rebooted I have 120 seconds to disconnect and reconnect the drive. The second thing is there is now a [run] section, entries in this section will be executed as DOS commands after the service has waited for the delay time to elapse. This way I can have the service execute the appropriate net share command. So for my config.ini I have added:

[run]
1=net share m$=m:\

you might want to use this to run some commands to delete temporary files before running the backup.

2006-12-26

Added URL to the service start log message and to the help of restore and backup. Made the "Error 2" and "Error 13" type exceptions a level 1 log event (rather than Level 0), this will make the log messages quieter, especially when backing up the Documents and Settings directory tree. Also tested what error happens when trying to connect to a machine that is not on and routed this to a Level 0 message, so you know that a machine was not backed up (look for "machine down?").

2006-12-23

Added a package listing mode to arcvlist.py which will examine the version database and identify any packages that may be present in the cache that are not included in the version database, this can happen when the Windows Service is shut down while it is creating a package. This is not an error condition, those items are never placed into the database, so the next time the service runs it will recheck those files for inclusion in the backup. Also revised the command line parameters for the treediff.py utility.

2006-12-21

initial public release.



                back to arcvback.com home