Category: Patching and MaintenanceUpdated 2026-10-22

Backup rule (3-2-1)

The 3-2-1 backup rule is to keep three copies of your data (the original plus two backups), on two different kinds of storage, with one copy stored off-site. It is generally credited to photographer Peter Krogh, who described it in The DAM Book. Some vendors extend it to 3-2-1-1-0 by adding an immutable or air-gapped copy and zero errors after verification.

What each number protects against

Three copies mean a single failed backup is not a disaster. Two kinds of storage mean one fault, such as a bad disk model or a provider bug, cannot take both. One off-site copy survives the loss of the whole site or provider account.

What the rule does not cover

The rule does not say whether an attacker can reach your backups, or whether they restore. Add a copy that cannot be deleted from the production server and test restores on a schedule. The full plan, with tools and commands, is in our VPS backup strategy guide.

Counting copies honestly

The numbers in 3-2-1 only help if each copy can survive the loss of the others. A quick audit of your own setup is more useful than reciting the rule. For every copy, write down three facts: where it physically lives, which account or key can change it, and which account or key can delete it. Then apply a few tests:

If one set of credentials can modify every copy, you have one copy with extra steps. This is why the backup strategy guide adds a copy the production server cannot delete, and why CISA's #StopRansomware Guide pairs offline backups with regular testing. Repeat the audit after each infrastructure change.

Verifying the chain with restic and Borg

A listed snapshot is not proof that the data inside can be read. Both common tools include verification, and the restic documentation explains the cost. The default restic check verifies the structure of snapshots, trees and pack files but does not confirm that the pack files on disk are unmodified. --read-data downloads and verifies every pack file, which is thorough but slow, and --read-data-subset spreads that work over time:

restic check
restic check --read-data-subset=1/5
restic restore latest --target /tmp/restore --include /etc/hostname

Using subsets 1/5 through 5/5 on five separate runs covers the whole repository. The restore line, in the form shown in the restic restore docs, proves one real file comes back. For Borg, borg check runs a repository check and an archive check, and --verify-data adds a full cryptographic check that reads, decrypts and decompresses everything, which the docs call very slow. Leave --repair alone until the repository itself is backed up, since the docs label it potentially dangerous.

Schedule the cheap checks, rotate the deep ones, and alert on any failure, as the monitoring guide explains.

Related terms: Ransomware, Incident response, VPS, RPO and RTO, Object Lock.

Frequently asked questions

Who invented the 3-2-1 backup rule?

It is generally credited to photographer Peter Krogh, who described it in The DAM Book. It is a widely used rule of thumb rather than an official standard.

Does a provider snapshot count as one of the copies?

It can count as a copy, but it usually lives in the same provider account as the server, so it should not be your only protection. Keep at least one independent copy elsewhere.

What is 3-2-1-1-0?

A vendor-popularised extension that adds one immutable or air-gapped copy and zero errors after automated backup verification. The wording varies by source.

Is a RAID mirror or a synced folder a backup?

No. A mirror copies every change immediately, including a mistaken deletion or malicious encryption, so it protects against disk failure only. A backup keeps earlier versions that you can go back to.

How can I verify a restic backup without downloading everything each time?

Use restic check with --read-data-subset, for example 1/5 on one run, 2/5 on the next and so on. Across five runs it verifies the whole repository, while each run reads only a fraction of it.

Want to see where your own server stands?

Run the free, read-only server check, or open the Security Lab and watch the detect, contain, recover, verify loop in action.

Get your free server checkOpen the Security Lab