I’ve been setting up a Subversion server for our programming projects at work, and as I was working on it, the professor in charge of our lab accidentally overwrote an Excel spreadsheet he was working on with an empty version of the file and lost several hours of work. I tried many a half-dozen tactics and utilities to recover the file, and of course Excel was set to save AutoRecover information every 5 minutes, but it did no good because the autorecover information was overwritten as well.
So when I returned to setting up the Subversion server, it occurred to me to wonder if there’s some file server or file repository or file something software out there that would allow me to create network drives for the users in our lab; they would save their files to their network folders and everything would be transparent from their end. But every time a file was written to, the file server would save that copy of the file in a backup directory; even if you deleted the file, it would keep the backup versions. That way, even if you overwrote your file with a blank copy, it would be a simple matter to roll back to a previous version. And to avoid cluttering the server with various versions of files, it would presumably have to be configured to keep versions for X days or weeks or whatever.
We got a rudimentary system sort-of working with our Subversion server, but it’s hardly transparent because the user has to actually use TortoiseSVN (or the console svn utility) to commit their changes and checkout the file to make changes again. Basically a huge hassle.
So does a system like the one I’m imagining exist? We’re using Windows Server 2008 for our servers, but I would have no problem installing a Linux or Netware server if necessary.
I have a client who uses commercial backup software to do exactly this. I’m not sure of the company or software name, but I’ll be in their office sometime this week and can ask. I’ve noticed it in their case because sometimes we close a QuickBooks file and then reopen it again and we have to wait a few seconds while it finishes copying the file. (QB files can get to tens or hundreds of MB; it would be transparent for most uses).
If you’re feeling adventurous, you can take a look at the volume shadow copy utility that comes with windows. Basically it allows you to keep snapshots of previous copies of the file.
This is known as Shadow Copy, although it is done on a timed basis rather than as copy-on-write - it is supported on NTFS file servers, as well as Samba on Linux. I use it on an hourly basis to save backup edited files on my home server - it uses hard links so is very efficient and has saved my kids some grief.
However, Subversion supports “autoversioning” via WEBDAV, so take a look at that given that you are using it. WEBDAV folders can be mounted in the same way as a CIFS share. Cascade Systems also provide a file system driver that works with Subversion to provide similar functionality, but that costs money.
Awesome. Thanks for pointing me in the right direction, everybody. I haven’t had a chance to look into Shadow Copy and WEBDAV yet, but it sounds like one of them should work out.