River
Y CombinatorBacked by Y Combinator

Free template

Technical Disaster Recovery Plan Template

A recovery plan, test procedure and communication plan for your IT systems, plus five sheets that track restores, targets, recovery order, step timings and tests.

Free download · No account needed

What you get

Pack of 10 files: 5 documents, 5 spreadsheets

Technical Disaster Recovery Plan Template
  • Why a Green Backup Dashboard Says NothingDocument
  • Worked Example, HalstowDocument
  • Recovery PlanDocument
  • Test ProcedureDocument
  • Communication PlanDocument
  • Recovery Objective by ServiceSpreadsheet
  • Backup Verification LogSpreadsheet
  • Recovery OrderSpreadsheet
  • Recovery Time BreakdownSpreadsheet
  • Test Result HistorySpreadsheet

How to write an IT disaster recovery plan

An IT disaster recovery plan is the playbook your team follows to restore systems and data after a serious failure, like a deleted database or a lost cloud region. A good plan lists every system with a recovery time and a data-loss limit it can actually meet. It sets the order systems come back in, gives step-by-step procedures with owners, names who declares a disaster and keeps dated proof that each restore worked.

The rule that matters most: a backup proves nothing until you have restored it, so build the plan from restores you have actually run.

An engineer in a plaid shirt plugs a cable into a rack of equipment in a dimly lit room
Recovery is hands-on work, so rehearse it before you need it. Photo: ThisisEngineering on Unsplash

List every system and what it needs to start

Start with an inventory of everything you would have to bring back: databases, services, file stores and the outside services you rely on. Then add what nobody thinks of as a system. Amazon Web Services' disaster recovery guidance says to back up code and configuration as well as data1, because the infrastructure has to be redeployed too.

Systems that are easy to leave off the list

SystemWhat breaks without it
Internal DNSServices start, then can't find each other
Secrets storeServices can't get the passwords to their own data
Identity providerNobody can log in to run the recovery
CertificatesA correct restore looks broken to clients
Infrastructure codeEvery network and server is rebuilt by hand

For each system, write down what must be running before it can start. Order the recovery by those needs first and by importance second. NIST, the US standards agency, asks for recovery procedures in a stepwise, sequential format2: restore and check a server's operating system before its application and data. Your most important service may come back 10th, behind the systems it needs.

Set recovery targets your backups can meet

Give each system two numbers. NIST's contingency planning guide defines the recovery time objective (RTO)2 as the longest a system can stay unavailable before the impact becomes unacceptable. The recovery point objective (RPO) is the point in time you can recover data to, given your latest backup. In short: how long you can be down, and how much recent work you can lose.

The business decides how much downtime and data loss it can take, usually from the deadlines in its business continuity plan. The backup method decides what is possible. Every method has a floor on data loss, and a target below the floor is a wish.

How much data common backup methods can lose

Backup methodData you can loseWatch for
Nightly snapshotUp to 24 hours, depending on when the failure hitsA 1-hour target can't be met
Point-in-time recoveryUp to the interval at which logs are shippedA target of zero is out of reach
Replica in another zone or regionThe replication lag, which can grow under loadDeletions and corruption copy across too
Rebuilt from another systemWhatever its source losesIt can't come back before its source

Point-in-time recovery sounds like zero data loss, but it isn't. Amazon's RDS database service uploads transaction logs to storage every 5 minutes3, so a restore can land minutes short of the failure.

Keep the original target on record

When a target proves impossible, record the target, the floor and the gap. Then change the method, change the target or have the system's owner accept the gap in writing.

Prove every backup with a restore

A backup job that reports success tells you a job ran, not that the data can come back. When an engineer accidentally wiped GitLab.com's primary database in January 2017, GitLab found that the process of both finding and using backups failed completely4. Its daily database dumps had been failing silently. The site was down for about 18 hours and lost about 6 hours of database changes.

Google's site reliability engineering book quotes a saying: no one really wants to make backups; what people really want are restores5. So restore each system for real, into an environment with production's permissions, network and keys. Then check something a person would notice, like the latest order. Look for failures around the data, not just in it:

  • The backup was taken from a replica whose replication had quietly stopped
  • The encryption key lives in the account you are recovering from
  • Old backups aged into an archive tier that takes hours to retrieve
  • The restored database came up with default settings and refused connections

Keep at least one copy where an attacker can't reach it. CISA, the US cybersecurity agency, advises offline, encrypted backups of critical data6, tested regularly in a disaster recovery scenario. It warns that many ransomware variants hunt for backups they can reach, to delete or encrypt them.

Write the steps for each kind of loss

Organize procedures by what is lost, not by what caused it. A flood, a fire and a bad upgrade that take out the same database need the same steps. Four kinds of loss cover most plans: one system, a whole environment or region, the data itself, and a provider you depend on.

Plan hardest for losing the data itself. When records are corrupted, deleted or encrypted, failover won't save you. Amazon's disaster recovery whitepaper warns that replication may not protect against data corruption or destruction1 unless you also keep versioned or point-in-time backups. Keep backups for longer than it could take you to notice the damage.

Each kind of loss gets the same five parts:

  • Trigger: what counts as a disaster, and who can declare one
  • Steps in dependency order, each with an owner and a runbook link
  • The data you will really lose, from the backup method's floor
  • What stays degraded, and for about how long
  • Cleanup: replayed transactions, re-sent webhooks, re-run jobs

A chat app that signs in through the identity provider you are recovering will be down when you need it. Name and test a fallback channel, and draft customer status page updates in advance. If an attack caused the loss, your security incident response plan should cover who you must notify and by when.

Test the disaster recovery plan end to end

Tests come in three strengths (tabletop, functional and full interruption), so record which kind you ran. NIST's guide describes a tabletop exercise as discussion-based only, without deploying equipment2. A functional exercise has people do their jobs in a simulated environment. For federal systems rated moderate impact, NIST says it should include an element of recovery from backup media.

Start the clock when a monitor would have fired, not at the restore command. Paging people and deciding to declare count against your target too. Amazon's RDS documentation notes that a restored database starts with the default parameter and option groups3 unless you choose your own. It also keeps loading data in the background after it shows as available. Both add minutes that restore estimates miss.

ExampleA one-hour recovery, timed for realAn illustrative example written for this guide, using the template's made-up timings.

Target: the orders database back within 60 minutes. Measured end to end: 185 minutes.

Before the restore, 35 minutes: alert and page 4, declare a disaster 22, find the right snapshot 9.

The restore itself: 34 minutes, until the database showed as available.

After it, 116 minutes: fix default settings 17, repoint the app and DNS 13, warm up 28, reconcile missing transactions 41, check a real order 17.

  • The restore was the short part. A target built on restore time alone missed by a factor of 3.
  • The fixes sit around it. Name the settings in the restore call, script the declaration and write the reconciliation query in advance.

Before you sign off the plan

  • Every system, DNS and secrets included, has an owner and a place in the order
  • Each target sits beside what its backup method can deliver
  • Every backup has been restored at least once, with the date and minutes logged
  • At least one copy of critical data is offline
  • Each test is labeled tabletop, functional or full interruption
  • A printed copy of the plan and contacts is stored outside your systems

The template on this page has a sheet or document for each step above. Open it with Edit with AI, and River starts by sorting your systems into restored recently, restored long ago, never restored and not backed up at all.

How to use this template

Fill in the files yourself, or open the template in River and send what you already have. That means your service inventory, how each system is backed up and where its keys live, any architecture map, your current plan and any notes from past restores. Include your stated targets, even the ones you doubt.

River works in a fixed order and reports after each step. It finds which systems have ever been restored and which targets sit below what their backup can deliver. Then it sorts the recovery order by what each system needs to start, and lays out one recovery as timed steps from first alert to final check. Your original targets stay on record beside each gap.

  1. Download it or open it in River

    Take the five Word documents and five CSV sheets as a free download, or open the whole set in River.

  2. Share your current setup

    Paste or attach your inventory, backup settings and current plan. Include targets you doubt, since the gaps are the point.

  3. Read what River finds

    Which systems were never restored, which targets their backups miss, and the order systems really come back in.

  4. Test, then write the plan

    Run a real restore with the Test Procedure, log the minutes, then write the Recovery Plan yourself or ask River to draft it.

What's in the template

Thirty-four green backups, eleven restores, five failuresThree sheets from one estate. What has actually been restored, where the recovery time really goes, and the order the plan has to run in.
Technical Disaster Recovery Plan Template
RiverBackup Verification

Backup Verification Log

Illustrative rows for a fictional logistics platform, Halstow, with 41 services. Keyed on restores attempted, not on backup jobs. Never attempted is a state, not a blank cell.

DateSystemElapsedOutcomeWhat failedWhere the failure lived
2026-02-11Orders database185 minpass with findings82% of the elapsed time sat outside the restore stepprocess
2026-02-04Billing ledgeraborted at 51 minfailSnapshot encrypted with a key held in the account being recovered fromkey custody
2026-01-28Rating engine DB74 minfailRestored onto the default parameter group; refused every application connectionconfiguration
2026-01-21Partner API DB63 minfailRestored into the default security group; nothing could route to itnetwork
2025-11-06Orders search index140 minfailBacked up from a replica whose replication had broken 6 weeks earlierbackup source
2025-09-17Customer document storeaborted at 12 hfailObjects had aged into a tier with a 12-hour retrievalstorage tier
2025-06-12Analytics warehouse206 minpassnonen/a
never attempted23 further servicesn/auntestedNothing has ever been triedunknown

Thirty-four green jobs, eleven systems ever restored, five failures. And not one of the five was a bad backup. Every failure is in the machinery around the data: what the backup read from, where the key lives, what tier the objects aged into, what configuration a restored instance inherits.

Two of them are documented behaviour. A restored database instance takes the default parameter group and the default network permissions unless the restore call names others. Both restores succeeded. Neither system could be used.

The bottom row is the real finding. Twenty-three systems have a backup, a green dashboard, a recovery objective in a plan, and no evidence of any kind that they can come back.

RiverRecovery Time

Recovery Time Breakdown

The orders database, stated at one hour, measured end to end from the moment a monitor would have fired.

StepMinutesIn the stated hourFixSaves
Detection: a monitor fires and pages somebody4nonone needed0
Decision: declare a disaster and invoke the plan22noMake declaring a single scripted command16
Locate the right snapshot, confirm its timestamp9noName snapshots by recovery point0
Restore until status reaches available34yesprovider operation0
Reattach the parameter group and security group17noName both in the restore call17
Repoint the application, then DNS at a 300s TTL13noLower the TTL before a planned cutover9
Warm the instance against background loading28noA scripted scan set rather than ad hoc queries21
Reconcile the five-minute transaction gap41noBuild the reconciliation query in advance26
Verify: smoke tests plus one business check17nonone yet0
MEASURED TOTAL185stated 60after the fixes: 9689

The restore is 34 of 185 minutes, which is 18 percent. That is why the one-hour figure had survived years of review: the step everybody pictures does fit inside an hour. Thirty-five minutes elapse before it starts and 116 after it reports success, so 82 percent of the recovery sits outside the part being estimated.

The warming step is not padding. A restored instance reports itself available and continues loading its data in the background, serving early reads from object storage on demand. Halstow’s first query against a cold table took eleven seconds and nothing was broken.

None of the five fixes worth 89 minutes is clever, and none of them was findable without running the thing once.

RiverRecovery Order

Recovery Order

The same 41 services, sorted by what each one needs before it can start, against the criticality order the plan was written in.

By dependencyServiceBy criticalityTierNeeded byMove
1Internal DNS29unclassified31 services+28
2Certificate issuance34unclassified26 services+32
3Shared Postgres cluster2233 foundations+19
4Secrets store18324 services+14
5Identity provider16322 services+11
6Service registry25319 services+19
9Orders database419 services-5
11Checkout service11nothing-10

The criticality-ordered plan could not be executed. Run top down, nine of its first twelve steps blocked on something further down the list, and none of the first five could actually run. Checkout is position one by criticality and position eleven by dependency, because it authenticates against the identity provider, reads its credentials from the secrets store, and resolves both through internal DNS.

Eight services turned out to be foundations that something else needed first. Five were classified tier three and three were not classified as services at all, which is how internal DNS ends up at position 29 in a plan that 31 services depend on.

Sorted properly, all eight foundations occupy the first eight positions and the first revenue-facing service lands at eleven. It looks wrong on a slide and it is the only order that runs.

  • Why a Green Backup Dashboard Says NothingThe four checks that separate a recovery plan from a recovery you can actually perform.
  • Worked Example, HalstowA made-up logistics platform with 41 services, taken through all four checks with counts and minutes.
  • Recovery PlanThe plan by kind of loss: trigger, steps in dependency order, real data loss, degraded service and cleanup.
  • Test ProcedureTabletop, functional and full interruption tests, and how to run a restore test that measures something real.
  • Communication PlanWho declares, the fallback channel when your own tools are down, and what never goes out mid-recovery.
  • Recovery Objective by Service sheetEach system's stated RPO and RTO beside its backup method, what that method can deliver, and the gap.
  • Backup Verification Log sheetOne row per restore attempt: who ran it, how long it took, what failed and when to retest.
  • Recovery Order sheetEvery service sorted by what it needs to start, beside its ranking by importance.
  • Recovery Time Breakdown sheetMinutes for each step from detection to verification, with an owner and a fix for each.
  • Test Result History sheetEvery exercise with its type, scope, measured timing, findings and next due date.

Common questions

What should a disaster recovery plan include?

A disaster recovery plan should include every system, what each one depends on, its recovery time and recovery point objectives, and the recovery order. It also needs procedures for each kind of loss, each step with an owner. Name who can declare a disaster and how the team talks when its tools are down, and keep dated results for every restore test.

What is the difference between RTO and RPO?

RTO, the recovery time objective, is how long a system can be down before the outage does unacceptable harm. RPO, the recovery point objective, is how much recent data you can afford to lose, counted back from the failure. A 4-hour RTO and a 15-minute RPO mean back within 4 hours, missing no more than 15 minutes of data.

What are the main disaster recovery strategies?

Amazon Web Services' disaster recovery whitepaper groups them into four approaches1, from the cheapest and simplest to the most complex and costly. Backup and restore rebuilds from copies. Pilot light keeps data copied to a second region with servers switched off. Warm standby runs a smaller working copy. Multi-site active/active serves traffic from all of its regions at once.

How often should you test a disaster recovery plan?

At least once a year, and again whenever a system changes significantly. NIST's contingency planning guide2 leaves the exact frequency to each organization, giving yearly as an example, and also calls for a test after any significant change. Give critical systems a real restore test, not just a tabletop, and retest them after any change to how they are backed up or encrypted.

How is a disaster recovery plan different from a business continuity plan?

A disaster recovery plan restores IT systems and data. A business continuity plan keeps the work going until they return, with manual workarounds and backup people, sites and suppliers. The two depend on each other: the continuity plan sets how long each process can wait, and every recovery time in the disaster recovery plan has to fit inside it.

Is this disaster recovery plan template free?

Yes. The download is free and needs no account: five Word documents and five CSV sheets in one zip file. Every sheet is pre-filled with a made-up company's systems, so you can see how it works before clearing it. Edit with AI opens the same template in River, which is free to start.

What does Edit with AI do?

It opens the template in a free River workspace and asks for your service inventory, backup settings, architecture map and current plan. River then reports, one step at a time, which systems have never been restored and which targets their backups can't meet. It also sorts the recovery order by dependency and breaks one recovery into timed steps.

Sources

  1. AWS Documentation. “Disaster recovery options in the cloud.” docs.aws.amazon.com (opens in a new tab)

  2. NIST. “NIST 800-34, Rev 1 Contingency Planning Guide for Federal Information Systems.” nvlpubs.nist.gov (opens in a new tab)

  3. AWS Documentation. “Restoring a DB instance to a specified time for Amazon RDS.” docs.aws.amazon.com (opens in a new tab)

  4. GitLab. “Postmortem of database outage of January 31.” about.gitlab.com (opens in a new tab)

  5. Google SRE. “Data Integrity: What You Read Is What You Wrote.” sre.google (opens in a new tab)

  6. CISA. “#StopRansomware Guide.” cisa.gov (opens in a new tab)

Written by

Chandler Supple

Co-founder & CEO, River

Chandler has spent the last six years working in AI, building tools for millions of users and Fortune 100 companies. In 2025, he co-founded River to build a new kind of operating system for AI agents.

Reviewed by

Brian Joseff, Co-founder, River