Versioned files (take 2)

Jason M. Felice jfelice at
Wed Oct 15 03:09:03 EST 2003

I've pondered the feedback and revised my proposal to the client.  Here
is the revised project objectives.  Notably, this is the addition of 4),
the deletion of the whole slew of items actually related to handling
versioned files, and mention of preexisting work on 1).

I've took a little gander at some of the backup wrappers, and it looks
like I will probably use one of these.  I'll have to look a bit closer
to see which ones best fit my needs.

-Jay 'Eraserhead' Felice

                               Project objectives

   The backup system project will meet the following objectives:

    1. Implement SSL connections.

       The modified client will use SSL for encryption of the protocol
       stream. Existing clients can use an external shell program such as SSH
       to provide encryption, but this is not portable and it is difficult to

       An "--ssl" option will be added to the rsync program to enable this
       feature. This option will be accepted in both client and daemon mode.

       Patches to rsync exist which do this. They will be evaluated and
       applied or modified as appropriate.

    2. Write a Windows backup service.

       This service will be a wrapper for the rsync program. It will read its
       configuration from the registry, then loop forever attempting to back
       up configured directories to the server then sleeping a configurable

       The backup service will be aware of changes to its configuration and
       adjust its operation appropriately.

    3. Write a configuration GUI for the Windows backup service.

       This will be a simple program which maintains the registry settings.
       It can be used to set the server, authentication information, and
       select which directories should be backed up to the server.

    4. Add a "--link-dest-type" option.

       Currently, rsync's "--link-dest" option will hard link files against
       an older copy in an identical directory structure when they have not
       changed in order to save space. With this option, the user would be
       able to specify the link destination type as either "mirror" or
       "hash." Mirror is the default, and will behave like existing versions
       of rsync.

       The "hash" type will calculate a directory name based on a strong hash
       of the file and the file's size, for example
       "/f7/d6/22/d9e9a6d8b9e9e4f00/1ff". rsync will search this directory
       for a file with identical contents to the one being transferred. If it
       finds one, it will hard link the transferred file to it. If it does
       not, it will create a new file with the next available integer
       containing the new file and hard link it to the destination.

       This will allow us to store only one copy of a file which might exist
       in multiple places in a filesystem or even on multiple clients.

    5. Write a restore GUI for Windows.

       This program will be a graphical wrapper for the rsync command. It
       will read the backup service's configuration to find the server and
       get authentication information, then it will display backed-up
       versions of files in a file-browser type interface. It will allow the
       user to select files and versions to restore.

    6. Create Windows installer.

       Cronosys will create the files required to build a self-installing
       executable for Windows which contains all of the programs, utilities,
       and data files required to back up to a server.

 Jason M. Felice
 Cronosys, LLC <>
 216.221.4600 x302

More information about the rsync mailing list