Paranoid - A backup script for when the world's out to get you

When I’ve put a ton of effort into a personal project, I tend to get paranoid that I’ll somehow find a way to toast it. I know, I know, git, github, and time machine already have my back. Sometimes that’s just not enough, though, and I find myself periodically making manual copies of important projects to a backup directory. Whether I need it or not, having hardcopy snapshots just makes me feel better.

So I wrote paranoid, a Thor script for those paranoid but lazy coders like me. Sure, we could use a one-liner cp -rf, or rsync command, but there are a few niceties that paranoid gives you:

  • Timestamped backups, so they are never written over, and you can easily revisit a snapshot of the project at any given time.

  • You can specify files to exclude from a backup on a project-by-project basis by modifying a .backupignore file. This allows you to ignore .git and .bundle directories as well as any project specific files such as large data dumps that you might not want copied over and over.

Install paranoid

Paranoid is a Thor script, and you will have to install Thor first. Then, clone the repository and run: thor install paranoid.thor

Make your projects paranoid

In your project root directory, run: thor paranoid init This creates a default .backupignore file. This file defines patterns for files you don’t want to backup in this project. You can now add or remove patterns as you wish.

Backup a paranoid project

In your project root directory, run: thor paranoid backup This rsyncs your project to the ~/.paranoid directory, ignoring any files matching the patterns in the project’s .backupignore file.