Just added: Algorithms you can run and practice
Updated Jul 10, 2026 Edit on GitHub

Backup vs Disaster Recovery

Picture two bad mornings. In the first, a teammate runs a query against the wrong database and deletes a table of customer orders. The servers are fine, the app is up, but a chunk of data is gone. In the second, the data center your VPS lives in catches fire. Nothing is corrupt - it's unreachable, and your whole service is dark.

Those are two different problems, and the word "backup" only solves the first one cleanly - which is why "we have backups" never quite answers "are we safe?"

The two problems, kept separate

A backup answers: can I get my data back? It's a copy of your bytes - the database, the user uploads, the config - stored somewhere you can pull from later. Backups are about data loss.

Disaster recovery (DR) answers a bigger question: can I get my whole service running again? That includes the data, but also the servers, the network, the DNS, the certificates, the deploy process - everything between "I have my bytes" and "customers can log in." DR is about downtime.

BACKUP                         DISASTER RECOVERY
--------------------           ----------------------------------
"I have my data back."         "Customers can use the service again."
copy of the bytes              data + servers + network + DNS + deploy
fixes: deletion, corruption    fixes: fire, region outage, ransomware
the input to recovery          the whole play, start to finish

What just happened: a backup is one ingredient; disaster recovery is the finished meal. You can have a perfect backup and still be down for three days because nobody knew how to rebuild the server it restores onto. Holding these apart is the whole mental model - most "our backups failed us" stories are actually "we had backups but no recovery plan."

Why a single copy is not a backup

Here's the trap that catches people: they copy the database to a second folder on the same machine and call it a backup. Then the machine dies, and both copies die together. A copy that shares a fate with the original isn't protecting you - it's using more disk.

A real backup has to survive the thing that kills the original. That means a separate failure domain: different disk, different machine, different building. The question to ask of any copy is blunt: what single event takes out both this copy and the thing it's backing up? If you can name one, it's not a backup yet.

The first rule of backups: a backup you've never restored from is a hope, not a backup. We'll come back to this hard in Phase 3 - it's the single most expensive mistake in this whole topic.

The 3-2-1 rule

The industry boiled "separate failure domain" down to a rule you can recite from memory. It's old, it predates the cloud, and it still holds:

3  copies of your data        (the live one + two backups)
2  different media / systems   (so one storage failure can't kill both copies)
1  copy kept offsite           (so one building can't kill everything)

What just happened: each number kills a different disaster. Three copies means one corrupt copy doesn't leave you at zero. Two media means a single storage technology failing (a bad disk batch, a filesystem bug, one cloud bucket misconfigured) can't take all your copies at once. One offsite means a fire, flood, or region-wide outage in one location doesn't end you. Miss any one number and you've left a specific disaster un-handled.

A concrete, modest version for a small project:

copy 1:  the live database on your VPS         (the original)
copy 2:  nightly dump to a cloud object store   (different system, offsite)
copy 3:  weekly pull of that dump to your laptop or a home NAS (different media)

What just happened: that's 3-2-1 without buying anything exotic. Three copies, more than one kind of storage, and at least one copy that isn't in the same building as your server. A side project can hit this; there's no excuse rooted in scale.

For builders

If you're running anything on your own box - see /guides/what-a-server-is and /guides/deploying-to-a-vps - the cheapest correct first move is a nightly database dump shipped to object storage. That single step takes you from "one copy that dies with the server" to genuinely offsite. It's not the whole 3-2-1, but it's the rung that matters most, and it's a cron job and a bucket away.

# nightly: dump the DB and push it offsite (sketch, not production-hardened)
pg_dump mydb | gzip > /tmp/mydb-$(date +%F).sql.gz
# then upload /tmp/mydb-*.sql.gz to an offsite bucket and rotate old ones

What just happened: this is the second copy in the 3-2-1 list - a point-in-time snapshot living somewhere your server can't take down with it. Note what it does not do: prove it restores. That proof is Phase 3.

[
  {
    "q": "What's the core difference between a backup and disaster recovery?",
    "choices": [
      "Backups are for databases; DR is for files",
      "A backup gets your data back; DR gets your whole service running again",
      "DR is just a backup stored in the cloud",
      "They're two words for the same thing"
    ],
    "answer": 1,
    "explain": "A backup is a copy of your bytes (fixes data loss). DR is the full play to restore the running service - data plus servers, network, DNS, and deploy (fixes downtime)."
  },
  {
    "q": "You copy your database to a second folder on the same server. Why isn't that a backup?",
    "choices": [
      "It uses too much disk space",
      "Folders can't hold database files",
      "It shares a failure domain - one dead machine kills both copies",
      "Backups must always be encrypted"
    ],
    "answer": 2,
    "explain": "A real backup has to survive the event that destroys the original. A copy on the same machine dies with it, so it protects against nothing structural."
  },
  {
    "q": "In the 3-2-1 rule, what does the '1' stand for?",
    "choices": [
      "One copy kept offsite",
      "One backup per day",
      "One person responsible for backups",
      "One cloud provider only"
    ],
    "answer": 0,
    "explain": "3 copies, 2 different media/systems, and 1 copy kept offsite - so a single building, fire, or region outage can't take out everything at once."
  }
]

Before the quiz: without looking back, say (or jot down) the core idea of this phase in your own words.

Check your understanding 3 questions

1. What's the core difference between a backup and disaster recovery?

2. You copy your database to a second folder on the same server. Why isn't that a backup?

3. In the 3-2-1 rule, what does the '1' stand for?