I run an Amazon Linux server as my production web server, running Wordpress and a photo gallery. AWS provides a good way to restore the server if it fails (I take automatic weekly EBS snapshots), but I want an offsite backup of my content and configuration in case my AWS account becomes inaccessible, is lost due to error, etc. Not much changes on my server day to day - Wordpress updates, a bit of new content, but the average delta is in the low MB.
I currently use Borg Backup. Borg creates deduplicated block level backups locally, which I upload to S3 using the AWS command line. The problem with Borg is every time it runs it creates a new file with all of the data, not just the new data. It does this in an efficient way, appending information, but it means I effectively upload all my data to Amazon S3 every night, which increases my bandwidth charges.
Here are my requirements:
- Suitable for nightly backup on Amazon Linux (no GUI, console only)
- Memory efficient - I run a t2.nano, which is 0.5GB of RAM with 0.5GB swap. Right now it has 100MB RAM free (once disk cache is emptied) and 470MB swap free. I can tweak PHP a little more to make another 100MB of RAM available.
- Bandwidth efficient - should create incremental backup files each day, without renaming the existing files.
- Disk efficient - ideally doesn't keep a full second copy of all data on the disk, but I do have enough disk space for this if required.
- Incremental backups, with a schedule to remove old backups.
- Includes Backup scheduling or is compatible with cron.
- Must not rely on a backup server to control or receive backups, or backing up to a computer over ssh. It must be able to back up to a simple file store like Amazon S3. This counts out quite a few products.
- Not too difficult to install (I can build from source but prefer to get a package / release).
Here's what I've considered
Duplicati seems like great software with a lot of potential, though there is at least one known restore bug when you use non-standard block sizes - which I don't need to do with my web server. The developer says it's an interface bug, there's no problem with the core of the system, but it's been outstanding for more than a year. I think it fulfills all my requirements above, though I'd have to check about memory efficiency. It has a nice web interface.
It relies on extra packages like Mono, which I can get installed on Amazon Linux, but it's not totally trivial.
This is probably my top pick, if I can get it working without too much effort.
Duplicity looks interesting. It's stable and "fairly mature" and is released fairly regularly. It basically uses rsync and tar to create delta files and can upload them to S3. It's on my list to try as it's meant to be fairly stable.
I thought ZBackup looked quite promising, but there hasn't been any development for about three years. That might indicate it's stable, but the text on the website suggests some work is required and no-one has bothered. This is probably my third choice.
I use CloudBerry backup for my PC, and they offer a Linux edition. I don't totally trust CloudBerry, for reasons I can't quite put my finger on, so I keep an incremental backup and a mirror when I use their software. When I use CB to back up to S3 I use their "sync" feature, and rely on S3 for versioning and encryption.
I don't like that instead of large backup files they tend to create one backup file for each file being backed up, plus delta files, which isn't disk space efficient. They do have an option that lumps everything together, but it has limitations. Their deduplication algorithm is pretty poor in my testing.
However, having said that, my restore tests have always been successful, it's fairly mature, and it's a commercial supported product which means it's likely tested reasonably well. But because of my gut feel I'd prefer something else.