The backup type you schedule decides how long a restore takes, how much a single corrupt file can cost you and how far back you must reach to find a copy that ransomware never touched. Full, incremental and differential backups are usually compared on storage cost alone, but the trade-offs that hurt in an incident are restore chain length, dependency on every link in that chain, and retention long enough to outlast an attacker's dwell time. This guide compares the three by recovery time and recovery point arithmetic, chain corruption failure modes, ransomware risk, storage cost and restore testing, with worked scenarios and a decision checklist. It is written for backup engineers, infrastructure leads and resilience owners. Database and cloud examples come from Amazon Web Services, Google Cloud, Microsoft and Oracle, plus PostgreSQL, listed alphabetically; the order is not a ranking. For immutability, isolation and backup platform hardening, see the Backup Security and Immutable Backup Guide.
Key takeaways
- Each type is defined by its reference point. A full copies everything; an incremental copies changes since the last backup of any kind; a differential copies changes since the last full. That one difference drives restore speed and failure exposure.
- Restore steps grow differently. A differential restore always needs two sets (the full plus the latest differential); an incremental restore needs the full plus every incremental since, so one missing or corrupt link breaks every later restore point.
- Vocabulary is not standard. Oracle RMAN calls changes since the last level 1 a "differential" incremental and changes since level 0 a "cumulative" incremental, which is what most people mean by differential. Check terms in each product before writing policy.
- Ransomware attacks the chain, not just the data. CISA notes that many ransomware variants try to find and delete or encrypt accessible backups. Incrementals taken after compromise capture encrypted files faithfully, so recovery depends on retaining clean, isolated restore points from before the intrusion.
- Synthetic and incremental-forever designs change the maths. Merging incrementals into a new full on the backup side shortens restores without re-reading production, but makes the backup system's metadata a single point of failure that must be tested.
The short answer
Take a full backup at a regular interval to reset the chain, and fill the gaps with incrementals when backup windows and storage are tight, or differentials when restore speed matters more than storage. Microsoft's SQL Server guidance captures the core trade-off: a differential taken soon after its base is much smaller and faster than a full, but it grows the longer you go from the base and can approach the size of the full. Oracle's RMAN documentation makes the same point from the other side: cumulative incrementals (differentials in common usage) are preferable when recovery time is more important than disk space, because fewer backups must be applied during recovery. Whatever the mix, the ransomware question is separate: keep isolated copies, retain enough history to pre-date the intrusion, and prove restores.
Side-by-side comparison
| Dimension | Full | Incremental | Differential |
|---|---|---|---|
| Reference point | None: copies all selected data | Last backup of any type | Last full backup |
| Backup size and time | Largest, longest | Smallest, fastest each run | Grows each day until the next full |
| Sets needed to restore | One | Full plus every incremental since | Full plus the latest differential |
| Restore time | Fastest | Slowest, rises with chain length | Moderate and predictable |
| Effect of one corrupt set | Lose that restore point only | Lose that point and every later point until the next full | Lose that point only, if the full is intact |
| Load on production | Highest (reads all data) | Lowest | Moderate, rising |
| Storage across a week | Highest | Lowest | Middle, with duplication across days |
| Typical use | Weekly or monthly base, small systems, archive copies | Daily or hourly gaps, large slowly changing data | Daily gaps where restore speed matters |
How the three types work in practice
Full backups
A full backup is self-contained: one set restores the system to that point. It is the simplest to verify, the easiest to move offline and the safest to keep as a long-term archive. Its costs are backup window, network and production load. A full is also the base every other type depends on, so its integrity governs everything that follows. Oracle draws a subtle line here: in RMAN, a "full" backup is never part of an incremental strategy and cannot be the parent of an incremental; the base must be taken as a level 0 incremental, which copies all blocks containing data.
Incremental backups
An incremental copies only what changed since the previous backup. Change detection matters: SQL Server tracks changed extents in a differential bitmap, Oracle can use a block change tracking file so RMAN avoids scanning every block for level 1 backups, and PostgreSQL (incremental backup arrived in version 17) uses WAL summaries to decide which blocks changed since the earlier backup's manifest. The PostgreSQL documentation is explicit about the chain: you need the incremental and every earlier backup it directly or indirectly depends on, PostgreSQL does not track those dependencies for you, and you must never delete a backup a later one still needs. Restore runs pg_combinebackup to merge the chain into a synthetic full before recovery.
Differential backups
A differential copies everything changed since the last full, so restores need only two sets. SQL Server restores the base full with NORECOVERY, then the most recent differential with RECOVERY. Microsoft recommends taking a new full at set intervals, for example weekly, because large differentials lose their speed and size advantages. Note the copy-only trap: a copy-only full does not update the differential bitmap, so differentials keep pointing at the earlier base, which is correct behaviour but must be understood by anyone managing retention.
Snapshots and incremental-forever
Cloud block storage snapshots are incremental under the hood but behave like fulls at restore time. AWS states that each EBS snapshot saves only blocks changed since the most recent snapshot, yet each contains everything needed to restore the volume, and deleting a snapshot removes only data no other snapshot references. Google Cloud describes standard snapshots as incremental backups of a disk that can create a new disk directly. Microsoft Azure incremental snapshots store a full copy first, then only changes, and each reconstructs the complete disk. The backup service manages the chain, which removes manual dependency tracking but concentrates risk in the provider account and its identities: whoever can delete snapshots can delete history. Snapshot security is covered in the Cloud Native Backup and Ransomware Resilience Guide.
RTO and RPO arithmetic
Recovery point objective (RPO) is set by backup frequency (plus log or journal shipping where available). Recovery time objective (RTO) is set by how much data must be read back and how many sets must be applied. A simple model helps compare schedules:
- Full restore time: data size divided by restore throughput, plus fixed overhead (mounting media, catalogue lookups, verification).
- Differential restore time: full restore time plus the latest differential's size divided by throughput, plus one extra fixed overhead.
- Incremental restore time: full restore time plus the sum of all incrementals since the full, plus one fixed overhead per set. With tape or remote object storage, per-set overhead often dominates.
| Illustrative weekly schedule (10 TB, 2 percent daily change) | Worst-case Saturday restore reads | Sets applied | Weekly backup volume |
|---|---|---|---|
| Daily full | 10 TB | 1 | 70 TB |
| Sunday full, daily differentials (no overlap in change) | 10 TB + 1.2 TB | 2 | 10 TB + 4.2 TB (0.2 + 0.4 + ... + 1.2) |
| Sunday full, daily incrementals | 10 TB + 1.2 TB | 7 | 10 TB + 1.2 TB |
The figures are illustrative and assume each day changes different blocks; real change overlaps, so differentials grow more slowly. The data read is similar for both partial schemes; the difference is the number of sets and the exposure to any one being bad. That is why the restore-time gap is small on fast disk and large on tape, deduplicated storage with slow rehydration, or cross-region object storage. Measure your own throughput per set, not the vendor's headline figure. For setting the objectives themselves, see the Business Continuity and Disaster Recovery Guide.
Chain corruption failure modes
- Broken link: one unreadable incremental makes every later point in that chain unrestorable until the next full. Differentials limit damage to one point, provided the full is intact.
- Bad base: a corrupt full breaks every differential and incremental that depends on it. Verify fulls more rigorously than anything else, and keep at least two good bases in retention.
- Retention deleting a needed parent: age-based retention that removes the full while dependent sets remain leaves orphans. PostgreSQL warns that it does not track dependencies; cloud snapshot services do, which is one reason to prefer managed chains where available.
- Broken base metadata: SQL Server stores the differential base for read-only databases in
master; Microsoft warns that rebuilding, restoring or detaching and reattaching a read-only database loses that base information and later differentials may give unexpected results. Back upmasteralongside. - Silent change-tracking gaps: if change tracking misses blocks (summariser falling behind, tracking file reset), incrementals look successful but are incomplete. PostgreSQL fails the backup when WAL summaries are missing, which is the right behaviour; confirm what your tools do.
- Synthetic full built from bad parts: merging a corrupt incremental into a synthetic full propagates corruption into the new base. Verify before merge, not only after.
Ransomware: encrypted into the backup
Ransomware (ATT&CK T1486 Data Encrypted for Impact) interacts with backup types in three ways, and attackers also go after recovery directly (T1490 Inhibit System Recovery, T1485 Data Destruction).
- Encryption gets backed up: an incremental or differential after files are encrypted captures ciphertext perfectly. Every restore point after the encryption event is useless for those files, and a short retention window may cycle out the last clean point.
- Slow, partial encryption hides: some operators encrypt a subset of files or only part of each file, so backup job sizes look normal. Change rate monitoring is the earliest signal a backup system can give.
- The chain is attacked: deleting or encrypting the last full breaks every dependent incremental. CISA's ransomware guide calls for offline, encrypted backups and warns that many variants seek out and delete accessible backups; the NCSC advises keeping at least one backup offline and restricting backup clients to creating or appending so ransomware cannot overwrite existing copies.
Practical consequences for schedule design:
- Retention longer than dwell time: keep enough restore points, including older fulls, to reach back before likely intrusion. Monthly fulls retained for several months are cheap insurance.
- Immutable fulls first: if you can only afford immutability or offline storage for part of the data, protect the fulls and the chain metadata, because they are what everything else depends on.
- Clean-point identification: per-run change rate and file entropy trends let you pick the last clean restore point fast. CISA also advises confirming that dropper malware is gone before restoring.
- Restore order: CISA recommends restoring critical services first, from offline encrypted backups, with only clean systems joining the recovery network.
The 3-2-1-1-0 Backup Rule Explained covers copy counts and isolation; the MITRE ATT&CK T1486 Data Encrypted for Impact page covers detection on endpoints.
Storage cost and retention
Storage is where incrementals win, but the gap narrows with deduplication and block-level snapshots. AWS notes that deleting an EBS snapshot might not reduce storage costs much, because data referenced by other snapshots is kept. Azure bills incremental snapshots on used size. Plan cost using three numbers: daily change rate, number of fulls retained and the retention length required to pre-date an intrusion. Long retention of differentials is wasteful because each repeats the changes of the days before it; long retention of incrementals is cheap but lengthens chains unless you take periodic fulls or synthetic fulls. A common balanced design is weekly or monthly fulls (or synthetic fulls), daily incrementals, transaction log backups for databases, and a monthly full copied to offline or immutable storage.
Where identity fits
Every backup type runs under a service identity with read access to all protected data and write access to the repository. The account that can delete fulls can break every chain, so separate the identity that writes backups from the one that can expire or delete them, protect console and API access with phishing-resistant MFA, and keep repository credentials off production domains. The NCSC's advice to limit devices that hold backup credentials applies directly. See the Backup Identity Isolation Guide.
Decision guidance and worked scenarios
- Choose full only when: data is small enough to back up within the window every time, or the copy is an archive or offline set where self-containment matters most.
- Choose full plus differential when: restore speed and simplicity matter more than storage, operators are less specialised, or restores come from slower media where per-set overhead is high.
- Choose full plus incremental when: data is large and changes slowly, backup windows are tight, and the platform tracks dependencies and verifies each set.
- Choose incremental-forever with synthetic fulls when: the backup platform supports verified merging and you can protect its catalogue as carefully as the data.
- Small organisations: a managed service with automatic chain handling, weekly fulls and at least one offline or immutable copy covers most needs. Avoid hand-built incremental scripts with no dependency tracking.
- Large organisations: tier by system criticality. Tier 1 systems get frequent log backups and short chains; bulk file data gets incrementals with periodic synthetic fulls.
Scenario 1, file server encrypted on a Thursday, intrusion began the previous Monday: Sunday full plus daily incrementals with seven-day retention. Restore points after Monday may carry staged malware, Thursday onward carries ciphertext, and the last clean full ages out on Sunday. Fix: retain at least four weekly fulls and keep one monthly full immutable.
Scenario 2, ERP database corrupted, 4 hour RTO: nightly incrementals from a weekly full mean up to seven sets from a remote object store. Moving to a cumulative or differential design means two sets plus logs; the extra storage buys the RTO.
Scenario 3, cloud volumes in an account the attacker reached: snapshots are independently restorable, but the attacker's identity could delete them. Fix: copy snapshots to a separate account with its own identities and deletion protection.
Implementation: a phased approach
- Classify systems: set RTO and RPO per system with the business owner; record data size, change rate and restore media.
- Model restore time: measure throughput per set from each storage tier and calculate worst-case restore for each candidate schedule.
- Choose and document the chain: full interval, partial type, log backups, synthetic full schedule, and the terms each product uses (for example RMAN differential versus cumulative).
- Set retention by dependency: configure retention so parents are never deleted while children remain, and so clean points outlast realistic dwell time.
- Isolate and protect fulls: copy fulls to offline or immutable storage with separate credentials.
- Pilot and test restores: run full-chain restores to an isolated environment, including the worst-case point just before the next full.
- Roll out and keep rollback: run the old schedule in parallel until two full cycles of the new one restore successfully, then retire it.
Testing restores
A backup is only evidence of intent until a restore succeeds. Test each type at its weakest point: the last incremental before a new full (longest chain), the latest differential (largest), and a restore from the oldest retained full. Rotate test targets so every critical system is restored within a year, and record the actual time against RTO. NIST CSF 2.0 RC.RP-03 asks that backup integrity be verified before use, and SP 800-53 CP-9(1) calls for testing backups for reliability and integrity. Use the Backup and Recovery Testing Checklist for the test record.
Detection and measurement
- Monitor: failed or partial jobs, change rate spikes or drops against baseline, deletions or retention changes on fulls, chain verification failures, and access to backup consoles from unusual identities.
- KPI 1: restore success rate in tests, by backup type and tier.
- KPI 2: measured worst-case restore time as a percentage of RTO.
- KPI 3: age of the oldest clean, immutable or offline full available per critical system.
- KPI 4: percentage of chains passing verification in the last cycle.
- KPI 5: mean chain length (sets per restore) for tier 1 systems.
Common failure patterns
- Choosing by storage cost alone. The cheapest schedule produces the longest chains and the slowest restores.
- Retention shorter than dwell time. Every remaining restore point contains the attacker's changes.
- Unprotected fulls. One deleted base breaks a week of incrementals.
- Assuming "differential" means the same everywhere. RMAN differential level 1 behaves like an incremental, so policies written in generic terms misconfigure Oracle backups.
- Testing only the latest restore point. The longest chain and the oldest full are where failures hide.
- Backups and production sharing one admin domain. Attackers who own the domain own the chain; see the Backup Identity Isolation Guide.
Framework mapping
| Framework | Reference | Relevance |
|---|---|---|
| NIST CSF 2.0 | PR.DS-11 | Backups of data are created, protected, maintained and tested |
| NIST CSF 2.0 | RC.RP-03 | Integrity of backups is verified before restoration |
| NIST SP 800-53 Rev 5 | CP-9, CP-9(1), CP-9(8) | System backup; testing for reliability and integrity; cryptographic protection |
| NIST SP 800-53 Rev 5 | CP-10, CP-10(4) | System recovery and reconstitution; restore within time period |
| CIS Controls v8.1 | 11.2 to 11.5 | Automated backups, protect recovery data, isolated instance, test recovery |
| ISO/IEC 27001:2022 | A.8.13 | Information backup |
| MITRE ATT&CK | T1486, T1490, T1485 | Encryption for impact, inhibiting recovery and data destruction aimed at backups |
Practitioner checklist
- Every system has an RTO and RPO, and the backup schedule is modelled against them with measured throughput.
- Full intervals are set so worst-case chain length meets RTO.
- Product-specific terms (differential, cumulative, level 0) are written into the backup standard.
- Retention never deletes a parent while children remain, and reaches back beyond realistic dwell time.
- Fulls and chain metadata are copied to offline or immutable storage under separate credentials.
- Change rate per job is baselined and alerted.
- Restores are tested at the longest chain point and from the oldest retained full.
- Backup write, delete and administration identities are separated and protected with phishing-resistant MFA.
Standards and references
- CISA: #StopRansomware Guide
- NCSC: Offline backups in an online world
- Microsoft: Differential backups (SQL Server)
- Oracle: RMAN backup concepts
- PostgreSQL: Continuous archiving and point-in-time recovery
- AWS: Amazon EBS snapshots
- Google Cloud: Disk snapshots
- Microsoft: Incremental snapshots for managed disks
Related NHI Mgmt Group resources: Backup Security and Immutable Backup Guide · The 3-2-1-1-0 Backup Rule Explained · Database Backup Security Guide · Disaster Recovery Testing Guide · M1053 Data Backup