Data recovery is a very important topic for any Developer, whether a Software Developer, Web Developer, Graphics Designer, or anybody else whose data is their entire business. I've known several Shareware developers who have gone out of business because the unthinkable happened and they didn't have good disaster recovery processes in place.
Upgrading to a new computer is a good time to rethink data recovery plans. In most cases, backup software needs to be updated for new versions of Windows because of changes to the file structure.
I've taken a day to go over my own data recovery process. In the past, I have used a combination of Acronis True Image for image backup, and Subversion (and TortoiseSVN) for Version Control. True Image is a nice solution because while creating an image that can be easily restored if an entire disk fails, you can also recover individual files very easily. It's also very fast and efficient.
On my new Windows 7 computer I upgraded True Image to the latest 2010 version. True Image has never let me down and has been a great disaster recovery tool. There have been several instances where it has saved my business.
While backup tools are needed for full disk recovery, they don't handle the job of version control. Backup is great for maintaining the *current* state of files, but not so good when you want the old version of a source code file from two weeks ago.
I've used Subversion and TortoiseSVN in the past, but I'll be the first to admit that I've been lazy. It's just a pain to remember to put the latest versions of my files into SVN all the time. I tried to create some automated scripts a couple of years ago, but there were always issues with new files causing exceptions. It just wasn't a system I could trust to run in the background and always be working.
In addition, while TortoiseSVN is a nice Windows Explorer interface into SVN, it always has it's problems. It takes resources in the background, and can interfere with the normal operation of Windows Explorer.
I've always been jealous of Macintosh users. Macs have a tool called "Time Machine". You just select which past day you want, and it shows you all of your files as they were on that date. Want a source code file from two months ago on Tuesday? No problem. Windows hasn't really had a tool like this...until now.
Yesterday I ran across a very nice looking "Time Machine for Windows" called Oops!Backup. It is a very well-designed piece of software...very easy to use. You tell it what you want to back up, where you want to put it, and off it goes. It updates the backup each hour (customizable of course).
It keeps the latest version of each file in a normal readable file format so you don't need any special software to access the current version of a file. Past files are stored as differences, much like in SubVersion. When you want an old version of a file, you run Oops!Backup and select the day and time you want to look at. Just like with Time Machine.
Oops!Backup is specifically designed to use external USB drives for the backup location, so it handles the fact that the USB drive might not be connected. When you reconnect the USB drive, the backup runs automatically.
My Seagate FreeAgent drive promised "backup and forget" software like this, but it had all sorts of problems. It would give errors about system files, causing it's log files to be bloated with warnings that were meaningless, hiding any real backup problems. The Seagate software was also a resource hog. Oops!Backup is almost un-noticeable when it runs in the background. And it just works. No fuss and no muss.
I'll let you know how I feel about it in another week of use. So far I think it is going to finally replace my Subversion/TortoiseSVN system. The combination of True Image for real disk recovery, and Oops!Backup for file recovery and version control looks like just what I've been wanting for years.
Oh yes...and don't forget about "off site" backups. I've still never found a remote network backup system that I really like. I've tried Carbonite and Mozy. Acronis True Image has a new remote backup system that I might try. Or I might just continue putting my most important files on an encrypted USB flash drive that I carry around with me.
But at least with the new external USB hard drive, I can always just grab the drive from it's dock if there is a fire or other disaster when I'm at home.
Joined: 18 Oct 2000 Posts: 2733 Location: Atlanta, USA
Posted: Mon Jan 18, 2010 4:10 pm
Thanks for the tip Zugg.. I'll definitely by checking out Oops Backup. I've been trying to get a good CVSNT set up going for my own development. Do you think you'd need SVN for intra-day changes as well? Or is your plan to use the hourly version of the back up so you can version by time roughly (and not by discrete version)?
Joined: 25 Sep 2000 Posts: 23377 Location: Colorado, USA
Posted: Mon Jan 18, 2010 6:30 pm
Yeah, I just plan to use the time-based backup. So far, the only thing I miss is a quick way to do a DIFF between the old version and the current working version, but I should be able to get around that (it was just a nice function built-in to TortoiseSVN).
When using SVN, there was no way for me to track intra-day changes since I was lucky if I even remembered to check-in my source code for each discrete version. Although Delphi itself also has a History feature that tracks older file versions that I've also used on occasion.
Joined: 10 Oct 2000 Posts: 1551 Location: Australia
Posted: Sat Jan 23, 2010 11:50 am
In an ideal world, you'd have both... it's best that you have something like Subversion so you can "check in" a fully compiling/working copy, but taking an hourly shadow copy as well is nice to have.
I'm actually running Windows Home Server and -love- it. It backs up all the PC's on my network overnight while I sleep but only stores one copy of communal files (eg DLL's/EXE's, etc) for all the computers so that saves on a significant amount of space. You can 'mount' these backups as a read only drive and copy out individual files, or do a full restore... when I reformatted my laptop recently I did a full backup, told WHS to 'keep forever', reloaded the OS, mounted the image, copied all the rest of my stuff off.
The only thing I have been pretty slack about is maintaining an off-site backup, so if my house burns down I'm in trouble. Not code-wise (I keep that offsite), but emails, photos, etc. I've been planning to investigate that, I read somewhere that people were using encrypted external SATA drives to backup the home server using scheduled tasks.
The only gripe I have about WHS is it's not stable on my machine, so I usually bluescreen 2-3 times a week. The hardware is pretty old, so I'm thinking maybe the motherboard is at fault, but I don't know for sure. I hear migrating to new hardware is pretty hard though, so I haven't been keen to try.
Joined: 25 Sep 2000 Posts: 23377 Location: Colorado, USA
Posted: Mon Jan 25, 2010 5:30 pm
I should post a quick comment about "support". While I generally like the Acronis True Image tool, I haven't gotten very good support from them. I've emailed questions to their support line many times and have never gotten responses.
On the other hand, the support for Oops!Backup has been great. I've gotten very quick email response to my questions. I have sent them suggestions (like support for an external DIFF tool) that they have added to their to-do list for a future version. We'll have to wait and see how long it takes for updated versions, but so far I've been really happy with them.
I agree that real version control still has it's place. Obviously it is required for anybody working in a team environment where you might have multiple people checking files in and out of the version control system. Also, you need something like SVN if you ever want to start making multiple code branches, and stuff like that.
Joined: 25 Sep 2000 Posts: 23377 Location: Colorado, USA
Posted: Wed Mar 24, 2010 5:15 pm
I have finally solved the final piece of my source code backup/share/versioning puzzle!
What I have long dreamed of is being able to work on CMUD software from either my desktop or my laptop seamlessly. When a Delphi source code file is changed by my desktop system, I want it almost immediately available on my laptop. If I change the file on my laptop, I want it updated on my desktop. A shared LAN drive would work fine except that I would lose access to it when my laptop is disconnected from the network (like when on travel).
I've tried various synchronization software (GoodSync, Allways sync, etc) but have never found anything that just worked. For example, I was recently trying to use GoodSync with a USB drive. The problem was that Windows 7 no longer runs the "autorun" file on USB drives. So I'd need to manually run GoodSync when I inserted the drive. On my WinXP laptop, it would sometimes run when inserting the USB drive, but sometimes not. It was very unreliable.
Anyway, I finally found the PERFECT solution! It is called DropBox. DropBox creates a local folder on your computer and automatically syncs this folder with their web site. If multiple computers share the same DropBox folder, then each computer gets a local synced copy of that folder. Everything is completely encrypted and secure. If the network connection is down, you still have the local copy of the files. And the files will sync as soon as you reconnect to the net. The local folder is a perfectly normal folder and is *not* a network drive, which means that my Acronis Home Backup software will back up the files stored there.
So now it just *works*! I have the same shared DropBox on my desktop and laptop. I put all of my Delphi source files into a Projects folder within my Dropbox folder. When I change a file on my desktop, it immediately syncs with my laptop (or whenever I take my laptop out of standby mode). If I change a file on my laptop, it is updated on my desktop. If I disconnect my laptop, I still have access to all of my files. I can then change a Delphi file and when I reconnect to the network, my desktop is updated. If all of my computers died, I have an offsite backup on the DropBox site. In fact, if I need to access a file when I don't have my laptop, I can log into their website and access my file. My Acronis Backup makes a nightly backup of my DropBox so if the DropBox service suddenly went away, I still have all of my files.
Even better is that DropBox maintains a file history, just like OopsBackup. DropBox gives you 2GB of storage for free with 30-days of file change history. You can pay for more storage (like $9.99 for 50 GB) and with any paid plan, you get unlimited file change history. If you right-click any file in your DropBox, you can view the file change history on the web site. It doesn't have any "diff viewing" like a proper version control system, but neither does Oopsbackup.
In fact, since the DropBox folder is just a normal folder, you can easily put the files within it into a version control system, such as SVN. DropBox uses the Amazon S3 storage system, so you are not dealing with some small set of servers that might be unreliable.
So while I was happy with OopsBackup (and am still using it since I just have a free DropBox account for now), I am even happier with DropBox. Check it out if you need seamless file sharing between your computers.