Warning: these pages are currently being updated for 2016/17
Backing up Files
When working with several thousand lines of code over a period of months it becomes important to consider file backup and recoverability, and you should organise your work so that the inevitable mistakes can easily be undone.
Modern computer systems are remarkably reliable. Those administered by the University or Department (e.g.MCS) will have their file systems carefully and regularly backed up as protection against any hardware failure.
The Department observes that maybe one or two of its students suffer a serious computer failure each year. So while this is not very likely to hit you, you need to be protected in case it does. You should institute a regular schedule for backing up project files, perhaps onto CD, DVD or USB memory stick. Links to Computing Service information on making backups can be seen at http://www.ucs.cam.ac.uk/arch/intro. Keeping regularly updated copies of files on your own machine, on the MCS and perhaps even on friends’ computers can also be a sensible strategy if carried through in a well thought out and organised way.
In practice the biggest danger to your files is not hardware failure but clumsy editing or confusion about file-names; when tired it is painfully easy to delete an important file instead of the temporary one you intended to discard. There are also times when you may discover that a full week’s work of heavy adjustment to your code was in fact misguided and that the best thing to do would be to restore your files to an earlier state. You should therefore arrange to make regular safe copies of your files, and preserve several generations of them (e.g. by use of a system such as RCS or subversion). The situation when this becomes most critical is when you are working under most pressure, which is of course when making backups feels most like a piece of bureaucracy that wastes your time!
When estimating your disc requirements, ensure that your quota will be large enough to permit adequate revision control.