Versioned files (take 2)
Jason M. Felice
jfelice at cronosys.com
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
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
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 <http://www.cronosys.com/>
More information about the rsync