TalkBack (SmallTALK BACKup) is a native backup utility that was designed to backup my Smalltalk image and changes file, but could also be used to backup files in general to a disk location. Requires InstanceEncoder package.
You should use the Scheduler package to schedule a backup to occur on a repeating basis (or your favorite scheduler).
To backup your Smalltalk image use the class-side helper of BackupAgent as follows:
agent := BackupAgent newZipBackupForImageAt: 'backups' versionsToKeep: 5.
The backup agent will not "save" your current running image, but this will just zip up the .image and .changes files to the 'backups' folder (in this case). If you need to save your image periodically you just run "Smalltalk snapshot: true andQuit: false." periodically.
Additionally, the backup agent is configurable to keep only so many verions of your files -- so in the above example, only the last 5 versions of the image will be preserved.
To backup other things besides the image, read the SUnit tests for examples, but it follows the general form of:
agent := ZipBackupAgent new
You can specify certain files in a source folder as well by just providing them in an array to the files: setter method.
Lastly, you can backup recursively by calling 'recurse' on the backup agent instance.
There are two backup agent subclasses. The ZipBackupAgent will backup the source files into a destination target zip file (with a unique serial number-based file name). The SimpleBackupAgent just copies files, renaming each source file in the target folder with a unique serial number-based file. Both can be forced to work in a full backup mode if you always want to copy the source file whether it has changed or not.