saved.sh
DocsPricingDownloadBlog

By source

  • Database backupsPostgres today, on any of the three paths.
  • Files and foldersDirectories on your own hardware. Local path only.
  • Anything you can scriptThe escape hatch, with no reduced guarantees.

By how it runs

  • Backups you driveCLI or API, driven by whatever you already run.
  • Backups on your infrastructureOur worker, your hardware. We never hold the credential.
  • Fully managed backupsWe execute and orchestrate. Nothing to host.
  • Compliance and custodyYour bucket, your account, our orchestration.

Understand it

  • How it worksThree paths, one artifact lifecycle
  • SecurityWhat we can and cannot see
  • CompareAgainst snapshots, cloud-native and scripts
Get started
saved.sh

External backups for the systems a business actually runs on.

A product of reops.

Product

  • Documentation
  • Solutions
  • Compare
  • How it works
  • Security
  • Pricing
  • Download

Developers

  • CLI
  • REST API
  • Recover

Company

  • Blog
  • Privacy
  • Terms

© 2026 saved.sh

Your data survives what holds it.

All postsProduct

How long should you keep backups?

The honest answer depends on why you are keeping them, and there are only three reasons. Work out which apply and the schedule falls out. Then avoid the one retention setting that quietly deletes your last good copy.

8 August 2026·saved.shView as Markdown

"How long should we keep backups" gets answered with a number someone half remembers from a compliance document, usually 30 days, occasionally seven years, almost never with a reason attached.

There are only three reasons to keep a backup, they want very different windows, and once you know which apply to you the schedule writes itself.

The three reasons

1. Somebody broke something and noticed. A dropped table, a bad migration, a deploy that corrupted a column. Detection is fast, usually minutes to hours.

Window needed: 7 to 14 days. Frequency matters far more than duration here, because your exposure is the gap between backups, not their age.

2. Somebody broke something and did not notice. A silent corruption, a half-working integration writing bad rows, an encryption event that sat dormant. Detection is slow, weeks to months.

Window needed: 90 days to a year, and this is the reason most teams under-retain.

3. Somebody outside asks. An auditor, a regulator, a customer contract, a legal hold.

Window needed: whatever the document says, and it is not negotiable by you. Go read the actual clause rather than the summary; the difference between "seven years" and "seven years after account termination" is enormous.

14days

Covers the incidents you notice

90days

Covers the ones you do not

1

Reason that is not your decision

A default that works for most teams

If nobody has handed you a compliance requirement:

Age of backupKeepWhy
0 to 14 daysEvery runReason one, and it is cheap because dumps compress
14 to 90 daysOne per weekReason two, at a fraction of the storage
90 days to 1 yearOne per monthReason two's long tail, plus most audit asks
Beyond a yearOnly if requiredStorage that grows forever, for a case that may never come

The instinct to keep everything forever is understandable and expensive. Retention is the only setting that bounds your storage bill, so a policy of "keep everything" is a policy of "this line item grows without limit".

90days lockedInside the lockthe account holder cannot delete itAfter itordinary retention, then swept on scheduleRefusedand nobody can shorten the hold
Frequency covers the incidents you catch quickly. Duration covers the ones you do not.

The setting that deletes your last good copy

Here is the trap, and it catches careful people.

The most common way to express retention is a bucket lifecycle rule: delete objects older than 30 days. It is one line, it works, and it has no idea whether your backups have been succeeding.

If your dumps started failing 40 days ago, that rule has been methodically deleting your last good copies, on schedule, one per day, while your storage graph looked completely normal. On day 31 you had one good backup left. On day 32 you had none.

Age-based expiry with no knowledge of success is a deletion policy pretending to be a retention policy. It is the single most dangerous configuration in this entire subject, and it is the default almost everywhere.

Count and duration are not the same setting

The other common mistake is expressing retention as a count, "keep the last 5", and assuming it bounds anything.

A count is a floor, not a cap. It says which recent copies are protected from expiry. It cannot decide what to delete on its own, because deleting by count alone is how you lose your only recent copies the moment a source starts producing runs faster than you expected. A backup that suddenly runs hourly instead of nightly will blow through "keep the last 5" in five hours.

So we treat them as what they are:

  • Expire after is the trigger. It is the only thing that deletes.
  • Keep last is the floor. The newest N are protected from that trigger, and on its own it deletes nothing at all.
  • Lock for is protection. It is a promise that nobody may delete the artifact during that window, including us.

The three combine with and. An artifact goes only when it is older than the expiry window, outside the protected floor, and not locked. And whatever the policy says, the newest remaining copy is never deleted, because a backup that has run once should always have something to restore from.

Two questions that set your policy

How long could something be wrong with your data before anyone would notice? That number is your retention window, and it is usually much larger than 30 days. Then: if every backup failed starting tomorrow, how long until your expiry rules deleted the last good one? If you cannot answer the second, your retention is a timer, not a policy.

The short version

Keep everything for two weeks, thin it out to weekly for three months, monthly for a year, and longer only when a document tells you to.

Then check the more important thing: that whatever expires your old backups knows whether your new ones are working.

Read next

Immutable backups with S3 Object Lock: what it protects and what it does not

Object Lock is the only thing on this list that stops an attacker with your credentials from deleting your backups. It also cannot be undone, which is the part people find out too late.

Backups that survive the thing that took out production.

How it worksStart free