Backups are important. They've saved my bacon a number of times. From Omnimaga being hacked due to a weak password, to a drive straight up dying on my home server. Being able to restore from a recent backup gives so much peace-of-mind.
Picking a good backup solution is difficult. I was getting tired of maintaining numerous bash scripts on various servers, all working together to handle backing up my various services and sites. I didn't really want to use a paid service for the backups, and I wanted to continue using rdiff-backup as my main backup solution. What had to go was the mess of bash scripts. I instead wanted a central location to maintain the backup configuration. After exploring the options out there I decided that I just needed a simple configuration file based solution.
Thus, python-backup was born.
I had the following requirements when I started working on the project:
- Configuration should be simple.
- Multiple backup sources and destinations should be supported.
- Backups should be able to depend upon other backups finishing first.
- I should be able to run scripts before and after backing up.
- Backups should be multi threaded.
I picked python as I wanted to be able to quickly iterate, and wasn't too concerned with performance. I also decided to use YAML for my configuration file format as it's fairly easy to read if you structure it correctly.