As part of a project I’m involved with, I’ve begun looking at desktop backup solutions to replace our company’s obsolete Veritas NetBackup Professional 3.60 system. Although our current system is at least 8 years old, it’s been difficult to find a modern replacement that offers the feature set we’re looking for, which includes:
- Support for Windows XP and Windows 7 clients
- Enable users to restore their own files and folders without administrator access
- Enable users to initiate a backup anytime
- Scheduled backups, which may be different for different groups of machines
- Ability to set a limit on the total size of a backup, including different limits for different groups of users
- Deduplication of the data stored on the server
- Compression of data stored on the server
- Bandwidth throttling for clients on slower connections
- Robust reporting capabilities, including the ability to view statistics on data backed up by user, group, file extension, PC, etc.
Toward that end, I downloaded and installed the open source desktop backup solution BackupPC. BackupPC describes itself as "a high-performance, enterprise-grade system for backing up Linux, WinXX, and Mac OS X PCs and laptops to a server’s disk."
To test the software, I created a Virtual Machine (VM) in VMWare Workstation 6.5 on my Windows 7 desktop. I loaded the VM with the Ubuntu 64-bit Linux distribution, updated it to the current patch levels, and used the Ubuntu Software Center to install BackupPC. At the end of the installation process, the installer provided the name of the administrator account for the software and a randomly generated password. This entire process, VM creation through to the end of the BackupPC installation, took maybe an hour. It was very painless.
Configuration and Testing
I launched a web browser and went to the URL provided by the installer. Using the credentials displayed in the installer, I logged in and found myself in the BackupPC administration interface.
(The above screenshot was taken after I’d gotten the software configured and backing up a couple of systems.)
The first step was to click the "Edit Hosts" link, which displayed a page where I could identify systems to be backed up:
I entered the name of two PCs on our network and the login names of the users of those PCs. Then I hit the "Save" button at the top of the page to record the changes.
Next, I went to the Edit Config page to adjust the configuration of BackupPC so that it could properly connect to the PCs. I started with the transfer or "Xfer" settings:
On this page, I specified the name of an account (in PC\account or Domain\account format) and the password to that account in the SmbShareUserName and SmbSharePassword fields. I also specified in the SmbShareName field the administrative shares for the two drive letters we typically use (C$ and D$).
Later, in the Include/Exclude area, I listed files to be excluded from the backups.
At this point, I went to each of the PCs I wanted to back up. I added the account name entered on the page above into the Backup Operators group on the PC. Then, I ensured that the VM could ping each of the two PCs. Satisfied that this was working, I went to the Host Summary page:
Here, I clicked on the name of one of the PCs. This resulted in a display similar to the following:
I clicked the "Start Full Backup" button and then went back to the Server Status page to watch the backup in action:
I watched the Currently Running Jobs section to ensure that the backups worked as intended. Eventually, the server reported that the backup of one of the PCs was complete. I clicked on the "Host Summary" page, then clicked the PC name to get to the PC Summary display.
From here, I clicked the "0" link under the "Backup #" column in the table under "Backup Summary". This showed me the files included in the backup:
It was clear that BackupPC had managed to back up pretty much everything on the PC’s C: drive, which was what I expected. I was now ready to test its ability to restore files.
I checked one of the files from the backup, and clicked the "Restore selected files" button. BackupPC presented three restoration options for the file:
As you can see, BackupPC can restore files to the original PC (or another PC on the network). It can compress the files into a Zip archive, which you can download. It can also compress the files into a Tar archive, which can also be downloaded. I tested all three options and they worked as designed.
Evaluating the Solution
I spent some additional time with BackupPC once I had gotten it running, to understand its capabilities and limitations. In the end, I had a lot of good things to say about it:
- Setup was very easy, especially compared to other open source backup solutions like Amanda and Bacula.
- No agent is required on the client if SMB is used, which means that you are less likely to run into compatibility problems with future Windows Service Packs or versions.
- In my testing, BackupPC achieved compression rates around 40% out of the box. Adjusting the compression settings might have increased this further.
- The software includes deduplication to further reduce storage requirements.
- The web-based administrative interface eliminates the need to have a locally-installed console application.
- It’s easy to add clients to the system.
- Configuration was pretty simple, although I can imagine a Windows administrator with little Linux or UNIX experience finding some parts of the configuration a bit cryptic.
- The option to restore files to the original PC, another PC, a network share, a zip file, or a tar ball allow for a lot of administrative flexibility.
- The web console status displays are detailed but very readable and easy to understand.
- It handles both incremental and full backups.
- Even running on a virtual machine that resided on an external USB hard drive, the system was able to achieve data transfer rates around 3 megabytes per second.
- BackupPC is open source, and therefore free of charge to install and use.
This is not to say that BackupPC is perfect. Relative to my company’s needs, it does come up short in a few areas:
- Users cannot restore their own data from their clients. The web interface focuses on a single shared administrator account and you wouldn’t want to share that with users, as they could choose to restore someone else’s data.
- All the machines backed up to the server appear to share a single set of backup settings. In our environment, we backup different sets of data for different groups of users. Some get only the information in their user profile. Others get the profile and more. A few get the entire system backed up. Unless I missed something, it looks like BackupPC is more of a one-size-fits-all solution (though it might be possible to modify some settings on a per PC basis, which is too granular for what I need).
- All of the backups appear to happen at the same time of day, or hourly. We typically only backup laptops during the day (since they tend to be offline at night) and desktops during the evening hours. Even within those categories, we spread the backups out over several hours to avoid overwhelming the server. I didn’t see facilities in BackupPC to do something like this.
- There is only one administrator account, though it looks like you could set up others. It doesn’t look like you can restrict what those accounts do. Our IT Security people would prefer that some users can only restore files to the PC they came from, while others have the ability to exercise the full range of restore options.
- It wasn’t clear from what I saw how obsolete data gets removed from the storage. For example, if PC #1 has 2GB of files that are unique to it and we take that PC out of service, I’d want those files to disappear when I get rid of the PC. It looks like BackupPC takes care of this, but it didn’t seem clear to me when or how.
- End users cannot manually initiate backups of their PCs, unless they have administrator access to the BackupPC interface, which is unacceptable in our environment.
- If bandwidth throttling is possible in BackupPC, it is probably accomplished through the parameters passed to rsync. If it’s not accomplished that way, I didn’t see how it could be.
- It doesn’t appear to be possible to limit the size of a PC’s backup. This is important because we’ve seen many situations over the years where (for example) a software developer starts a test running overnight. The test generates a log file that is many gigabytes in size. The log gets backed up and fills up the available space on the backup server, preventing anyone’s data from being backed up.
Ultimately, the apparent lack of ability to create groups of users to be backed up differently, the inability for users to easily restore files and folders themselves, and the lack of granular permissions on the web interface side were deal breakers for my company. That does not mean you should avoid the software. If I worked in an organization where it wasn’t necessary or desirable for users to restore their own files, and where I didn’t have a need to separate my PC population into different groups that are treated differently, BackupPC would be an excellent solution. It’s fast, easy to setup, easy to use, is fairly frugal in its storage use, and handles Windows, Linux, and OS X clients in a single solution. If you’re looking for a centrally managed and monitored backup solution, you should check it out.