Derek Sivers recently wrote a post explaining how he backups his computers. His post inspired me to improve my own backup strategy and also to write this post.

My computer

I only have two personal computers whose data I care about; my Macbook Pro and my wife’s Macbook Air. The strategies for backing these up are the same, so I’ll just talk about my computer.

It has a lot of important things: files, videos, photos, personal code, and more. I’d be pretty sad and set back if I lost all of it. So I’m pretty exhaustive about my backup strategy, but it ends up taking very little of my personal time because most of it happens with little thought on my part.

Backup strategies

Every one of these strategies encrypts the data. I don’t trust cloud providers to never get hacked and don’t want somebody to have all my files if an external HDD is stolen.

Time Machine:

I have a two external HDDs I plug into my Mac on a periodic basis. I use Time Machine to create backups to them. The nice thing about Time Machine is that it’s a complete system backup, so if my computer get lost or stolen, I can use them to restore my computer to the exact point in time of my last backup. I don’t even have to reinstall of of my software. My computer gets restored to exactly the way it was.

The external drives are encrypted, so if they get stolen nobody has my files.

iCloud Drive:

I pay for Apple’s 2 TB iCloud Drive plan as well. It’s a family plan, so all of the computers and phones in my house have access to it as well. (It’s how I backup my iPhone as well.)

Any change to local files are synced to iCloud Drive pretty much immediately, so they are being backed up continuously.

iCloud Drive technically isn’t a backup solution because it won’t help you if a virus encrypts all of your files, but it mitigate a lot of physical risk like your house burning down or your computer getting stolen.

I have enabled Advanced Data Protection for iCloud Drive, so all of my data is end-to-end encrypted.

We pay $10 total per month for 2 GB of storage. We’ve been using a cheaper plan ($3/month) until we had Theo and suddenly we took a lot more photos and videos than we used to. :)

Apple Photos:

I use Apple photos to store all of the photos and videos I take. This is really nice because everything gets synced automatically between my phone and computer.

I have configured Photos to download full resolution photos and videos to my Mac. I don’t quite trust iCloud Drive enough to give up having full resolution copies locally. These memories go back almost two decades at this point, so they are really important to me. Because I have high resolution copies on my Mac, they get backed up in high resolution to all the external HDDs I use for backup.

This excellent blog post by Fatih Arslan is a good read on this topic.

Rsync backups:

I’ve been doing the above things for quite a while. But Derek Sivers’s blog post encouraged me to take it a little further and do more offline file backups by just copying my files to external drives by using rsync. rsync has been around and is very fast and reliable.

I really like that the files are off-site and that they are a few weeks or months old.

I added the below code to my ~/.bash_profile, so I can run them easily from my terminal.

  • bk backs up a subset of my files to a Linux server running in my closet.
  • bkexternal is a more comprehensive backup and copies all of my files to an external HDD. I have two identically named external HDDs for this purpose and one them is always kept at a separate physical location in case my house is destroyed.
# Backup my files
bk () {
    HOST=$(hostname -s)

    # Helpful cheat sheet: https://devhints.io/rsync
    rsync -avz --delete \
        --exclude '.DS_Store' \
        "$HOME/Desktop" \
        "$HOME/Documents" \
        simas@HOSTNAME_HERE:/home/simas/backup
}

# Backup my files to external drive
bkexternal () {
    HOST=$(hostname -s)

    EXT_DRIVE_PATH="/Volumes/RsyncBackupDrive"
    if [[ ! -e "$EXT_DRIVE_PATH" ]]; then
        echo "Drive path not found: $EXT_DRIVE_PATH"
        return 1
    fi

    # Helpful cheat sheet: https://devhints.io/rsync
    rsync -avz --delete \
        --exclude 'Applications' \
        --exclude '.DS_Store' \
        --exclude '.Trash' \
        --exclude 'Library' \
        "$HOME/" \
        "$EXT_DRIVE_PATH/backup-$HOST"

    date > "$EXT_DRIVE_PATH/backup-$HOST-last-backup.txt"
}

In closing

I really like these concert of strategies. It’s really affordable and provides a high degree of security for recoverying from data loss from many different types of threats.

I was a paying Backblaze customer for years and years. It’s a good service, but they raised their prices and iCloud Drive does a lot of what I need. Plus, at $9 a computer, that was $18 a month between my wife’s computer and mine. The savings in the first year alone will more than pay for the two new external HDDs I purchased.