bucketpilot
For anyone who has just found out what a delete marker is

Restore deleted or overwritten S3 objects

Find the version you need and put it back — delete markers removed, older versions promoted, and a live versioning check that refuses an unsafe restore.

The BucketPilot dashboard, where a bucket's objects and their versions are browsed

What actually happened when the file disappeared

On a versioned bucket, deleting an object does not remove it. S3 writes a delete marker as the newest version, and the marker is what listing shows you — or rather, what listing stops showing you. The bytes are still there, one version down.

An overwrite works the same way: the previous contents become an older version rather than being replaced. Which is good news, and useless if you cannot find the version you need or are not sure which operation will bring it back without destroying something else.

If versioning was not on, this is a different conversation — and the honest answer is that the object is gone. That is why the backup pages exist.

How a restore works

  1. 1.Open the bucket and find the object. Search covers every indexed bucket at once, which matters when you are not certain where it was.
  2. 2.Show its versions — every version of that key, newest first, including delete markers.
  3. 3.Choose what to put back. BucketPilot does one of two things depending on what you picked, and says which before it does it.
  4. 4.Confirm. The object is current again, and nothing that existed before the restore has been removed.
  5. 5.If versioning was off, restore from a backup instead: a backup job restores back to the original bucket, never deletes, and leaves newer files untouched.

Two operations behind one button

  • A deleted object is restored by removing the delete marker. The versions were never gone; the marker was hiding them. Taking it away makes the most recent real version current again.
  • An older version is restored by copying it onto its own key, which makes it the current version and keeps everything else — including what is current right now, which becomes just another older version. Nothing is destroyed, and the confirmation says so before you agree to it.
  • ⚠️ Versioning is read live, and a suspended bucket is refused. A stored flag is a cache: someone can suspend versioning in the AWS console and BucketPilot would not know until the next index run. Restoring into a suspended bucket writes the object as the "null" version and the previous null version is gone for good — an undo that destroys the thing it was meant to protect. So the live status decides, and anything other than "Enabled" is refused with the reason.
  • Versioning is an S3 feature. Cloudflare R2 and Google Cloud Storage do not offer object versioning, so there are no versions to restore there. On those, recovery means a backup copy, not a version.
  • Archived objects have to be restored in AWS first. An object in Glacier or Deep Archive cannot be copied until AWS has restored it — their rule, and the interface says so rather than failing halfway.

What you get

  • Every version of a key, listed newest first, with delete markers shown for what they are.
  • A restore that never destroys — the current version survives as an older version.
  • A refusal when the bucket cannot do it safely, with the reason, instead of a silent, destructive write.
  • Search across every indexed bucket, for when you do not know where the object was.
  • Restore from a backup job for buckets without versioning, one folder at a time, leaving newer files untouched.

Who can do this, and what is recorded

Restoring is a write to the bucket, so it follows the same access rules as any other change: workspace role first, then the per-bucket and per-folder access levels. A read-only member cannot restore, and a member's access can be scoped to a single folder. See Access levels.

Every restore is recorded in the workspace activity log with who did it, to which object, and when. Full detail: Security & privacy.

When this will work — and when it will not

  • Versioning was on before the deletion, and you need the object back as it was.
  • Something overwrote a file and you want the previous contents.
  • You are not sure which bucket it was in, and need to search before you can restore.

When it will not. If versioning was off at the time, there are no versions and no marker — nothing here can recover the object, and only a backup copy can. If the bucket has since had versioning suspended, the restore is refused rather than performed unsafely. And if what you need back is thousands of objects rather than one, a folder restore from a backup job is the tool, not a version at a time.

Questions

Can I recover an object if versioning was off?
Not from S3 — there is nothing to recover, because the object was replaced or removed rather than superseded. A backup copy is the only route, which is why a backup job is worth having before you need it.
What is a delete marker?
On a versioned bucket, a delete writes a marker as the newest version instead of removing anything. Listing hides everything behind it. Removing the marker makes the most recent real version current again.
Does restoring an old version destroy the current one?
No. The old version is copied onto the key, which makes it current and turns what was current into just another older version. Nothing is removed.
Why was my restore refused?
Because the bucket's versioning is not Enabled right now. BucketPilot reads the live status rather than a cached flag, since restoring into a suspended bucket would overwrite the null version and lose the very thing you were recovering.
Can I do this on Cloudflare R2 or Google Cloud Storage?
No. Neither offers object versioning, so there are no versions to restore. On those, recovery comes from a backup copy instead.
What about objects in Glacier?
They have to be restored in AWS first before anything can copy them. That is an AWS rule, and the interface tells you rather than failing part-way through.
How do I restore a whole folder?
From a backup job rather than version by version. A folder restore copies back to the original bucket, never deletes, and leaves files that are already there untouched.

Go deeper

Restore my deleted objects

Full Pro access for 14 days. No card. Connect an account in seconds.