The goal of the script is to keep a backup copy of a certain configured filesystem directory on (possibly multiple) optical discs. The contents of the directory may be bigger than what fits on a single optical disc. The script needs to handle it by properly burning the data onto several discs (a “backup set”).
The script also needs to support re-burning of new and updated files from the directory to a previously started and burned backup set. It needs to calculate which files are newer (or modified since) than the last one which was burned into the backup set, and burn them into the current backup set.
The idea behind the script is to have minimal user interaction, so the script needs to have an established operation pattern that the user needs to conform to, in which case the user interaction will be minimized (basically down to only removing and inserting discs into the optical drive). (This interaction pattern is well described in the State Machine section.)
The script will output reports and some minimal required user interaction prompts through email.
To accomplish these tasks, the script will need to keep some minimal meta information on the discs of the backup set in some format, as well as to perform error detection of the previously burned data.
Please see the full description document for detailed specification.