It's World Backup Day: Time to Protect Your Data!

A wise man once said, "I pity the fool... who doesn't backup their data", and despite having just made that up, it's a piece of guidance that I stand behind 100%. Part of the reason I feel so strongly about backing-up important data is that on two occasions in the past, I have been foolish enough to lose data because I didn't have proper backup schemes in place. Likewise, I've also had a good friend of mine lose a slew of baby photos because he deemed it safe to keep them stored in a single location. It's situations like those when that hard drive click-clack can make you feel sick to your stomach.

With 2TB drives regularly costing less than $100 nowadays, there's really no reason to not equip yourself with a redundant storage setup. Ideally, you shouldn't plan on keeping the redundant hard drive in the same PC as your main data in case something goes wrong and kills both hard drives (rare, and often caused by stupidity, like a personal experience I had in 2005). However, a NAS or home server is not an option for everyone, so the next-best thing is to purchase an external enclosure for your drive that you'll plug in everytime (every week, at least, I'd recommend) to run your backup scripts. I personally recommend Thermaltake's BlacX 5G series. If you're able to sync some cash (see what I did there?) into a NAS, I highly recommend checking out Paul's round-up from this past fall.

One thing I often hear others recommend for a backup solution is "RAID 1", however it's not one I'd personally recommend unless you happen to have extra redundancy in place. RAID 1 is accomplished by placing two equal-density drives in the same PC and setting them up to store identical copies of the data - right down to the bit level. This is fantastic if one drive dies, because you won't be left without access to the data. However, as my above scenario suggests, RAID 1 protects against nothing if both drives happen to die at the same time, either by a fault of yours or not. Your PC could suffer an explosive power surge or burn-up in a fire. You don't want to take chances.

It's for that reason that offsite backups are also a good idea, which would ideally be done with the external solution mentioned above. I have a couple of friends who regularly backup their data to an external, and then bring it on over to their family member's house for storage, and vice versa. While pretty inconvenient, this does reduce the possibility of data loss in the event of a fire or theft.

One of the best things about backing-up is that there exist a number of free solutions that are not just good, but great. A personal favorite of mine (for Windows) is SyncBack Free, by BrightSparks. I happen to own the Pro version, but I have a lot of experience with the free edition, and can heartily recommend it.

With SyncBack, you're able to create profiles to backup or synchronize, tweaking a large number of options (or very little, depending on how straight-forward your backup is), and with the help of the task scheduler built right into Windows, you can make sure the backup runs whenever you want. If your PC happens to not be on when your backup should have run, it will simply run the next time the PC is on.

More advanced versions of SyncBack can backup to remote servers (FTP, Amazon S3, Azure, et cetera), external optical media, and also enable better compression options along with a bevy of other features. For a lot of people, however, the free version will more than suffice.

On the commercial side, I've become a major fan of Acronis' True Image over the past couple of years. Like SyncBack, it has the ability to backup any and all data that you need, with the ability to automatically backup in increments. Its further use is being able to backup your entire OS, so that if something goes wrong, you'll be able to revert to a previous point in time very quickly. Windows has a similar ability, but Acronis tends to be more advanced, and acts as a great replacement.

My favorite feature of Acronis is its ability to backup an entire OS drive via a boot disc. Because there's no interference from the operating system this way, it can backup every single partition on the drive (bit-by-bit, if you prefer) along with the Master Boot Record. If that wasn't enough, it can also backup Linux partitions. Though the screenshot below shows Linux partitions from within Windows, I would not recommend backing them up through the OS unless all you care about is your personal data - and even then, I'd be sketched-out. While Linux natively supports NTFS nowadays, Windows doesn't even remotely support Linux's filesystems. Through the boot disc though, all things are fair game.

I unfortunately do not have great recommendations for Linux or Mac - although for the latter, CrashPlan is a name that gets passed-around a lot. Like SyncBack Free, it's also 100% free, with premium accounts available for those interested in taking their backups online (something I always recommend as long as you have the bandwidth to support it and are sure to encrypt your sensitive data). Admittedly, the bulk of my backup solution involves Linux, where I write simple BASH scripts that I run twice a week to A) sync website data I need locally, and B) sync a collection of folders from around my PC to both my external hard drive and NAS box.

The nice thing about Linux is that most of its software is free, including rsync, an extremely powerful synchronization tool. While full instructions for backing-up under Linux via this method goes outside the scope of this post, here's the basic idea. A typical BASH script for me would look something like this:

#!/bin/bash
backup=nightly_`date +%m-%d-%Y`
backup_log=/var/log/nightly_backup.log
rsync -av --delete /home /mnt/extstore/Backups/home/ >> $backup_log

The first line here initiates the BASH script; the second establishes a variable so the script can grab the current date; the third establishes a variable for a log file (so that you can quickly see if the script ran or not), while the fourth syncs up your entire /home/ folder with your external backup, whilst deleting anything that exists on the target but not the source. The ">> $backup_log" prints out the current date to a new line in the established log file.

If you were to save this script as "backup.sh", you could then add it to a schedule using your crontab file (usually /etc/crontab) as root (or sudo) like this:

0 6 * * * rwilliams sh /home/backup.sh

This would execute the script each and every day at 6:00AM localtime, as your main user. If it needs to be done as root for permissions reasons, you can simply change your username to "root".

This began out as a simple post but turned into quite another, so I hope that you're better-equipped to get your backups underway now that you've made it through the whole thing. If you have better recommendations, or need better recommendations, hit up the comments!