Home : Projects : FTPull
FTPull is a simple system for maintaining a mirror of a filesystem tree accessible via an FTP server. It was originally written for a customer who needed some way to efficiently back up a fairly large quantity of data, of which relatively little would change often, from several Windows PCs which, for security reasons, did not allow normal Windows file sharing and could not have additional non-Microsoft software installed.
My solution was to use the IIS FTP service and write FTPull. FTPull is basically a pair of Tcl/Tk scripts; one provides a GUI with which the configuration settings and job details can be edited, while the other runs all the backup jobs as described in its configuration file. The general idea is that the configuration utility is used to set up the configuration and make any necessary subsequent changes to it, while the backup script is called by a scheduled task periodically to update the local mirrors to match the configured sources.
The system produces a textual log file for each backup run, and also generates an HTML report which can be automatically emailed to a configurable recipient. The backup software can run with or without its user interface; if the user interface is shown, the configuration utility provides a lot of control over which UI elements are and which are not displayed during the backup run.
The software is written in pure Tcl/Tk, which, as you might expect, should make it very portable between Windows, Unix and Macintosh platforms. However, because Windows was the primary target for the customer who requested, specified, tested and used the software, it's the best supported so far. Linux administrators tend just to use rsync to synchronise mirrors, though, and Macintoshes are essentially toys. (Just kidding.)
The project could use a clean up and a final 2.x release, with some attention given to the portability of the system. My medium to long term plan is to rewrite this system taking advantage of the Tcl VFS to be much more flexible about the types of repository mirrors can be read from and reflected in, but I think one more 2.x release would still be worthwhile; watch this space!






