Soft Delete | Tigris Object Storage Documentation

On this page

Soft delete protects your bucket against accidental deletion. When soft delete is enabled, deleting an object does not immediately remove its data. Tigris keeps the deleted object for a configurable retention window during which you can list it, restore it, or permanently remove it. Once the retention window expires, Tigris cleans the data up automatically.

The same retention policy also protects the bucket itself: deleting a bucket with soft delete enabled moves the bucket into a soft-deleted state instead of hard deleting it. A soft-deleted bucket can be restored back into an active bucket within the retention window, and is permanently removed once the retention window expires.

How soft delete works

When soft delete is enabled on a bucket:

At a glance, the lifecycle looks like this:

     DELETE        ──►   soft-deleted state   ──┬──►   permanently removed

bucket or object         (recoverable)          │      (async, after retention)

│

◄─── restore ─────┘

Cleanup runs asynchronously, so data is removed shortly after the retention window passes.

Enabling soft delete on a bucket

Soft delete is configured per bucket from the Tigris Dashboard.

You can enable it when creating a bucket by toggling Enable Soft Delete in the Create Bucket dialog and choosing a retention window:

For an existing bucket, open Bucket Settings → Data Management and toggle Enable Soft Delete:

The retention window controls how long deleted buckets and objects remain recoverable. It must be between 7 and 90 days, and defaults to 7 days when soft delete is first enabled.

Enabling soft delete via the S3 API

Set the X-Tigris-Soft-Delete header on CreateBucket — use true for the default 7-day retention, or a number between 7 and 90 for a custom window.

func createBucketWithSoftDelete(ctx context.Context, client *s3.Client, bucketName string) error {

_, err := client.CreateBucket(ctx, &s3.CreateBucketInput{Bucket: aws.String(bucketName)}, func(options *s3.Options) {

options.APIOptions = append(options.APIOptions, http.AddHeaderValue("X-Tigris-Soft-Delete", "30"))

})

return err

}

Viewing soft delete status on the buckets list

A Soft Delete column on the buckets list marks which buckets have soft delete enabled, showing Enabled or Disabled for each row.

Deleting a bucket with soft delete enabled

When you delete a bucket that has soft delete enabled, the delete confirmation dialog reflects that the action is recoverable instead of permanent. It tells you the bucket can be restored from the Deleted buckets tab within its retention period — and that after that window passes, the deletion is permanent. The action button is labeled Soft Delete rather than Delete, and you still confirm by typing the bucket name.

This is the cue that the bucket is moving into the soft-deleted state covered below rather than being permanently removed.

Restoring a deleted bucket

A bucket deleted while soft delete was enabled is not removed immediately. It moves to a soft-deleted state where it is hidden from your normal bucket list but stays recoverable until the retention window expires.

The buckets page in the Tigris Dashboard has a segmented control above the list with an All buckets, Own by me, and Deleted buckets segment. The Deleted buckets segment is where every bucket that was deleted while soft delete was enabled shows up — each row in this view represents a soft-deleted bucket that is still within its retention window.

To restore a bucket, open the row's overflow menu (...) and choose Restore:

After a successful restore, the bucket is fully active again — it moves back to the regular bucket list and every object it held at the time of deletion is live and readable, exactly as it was before the bucket was deleted. If you want to remove a soft-deleted bucket immediately instead of waiting for the retention window to expire, choose Delete from the same menu.

While a bucket is in the soft-deleted state, its name stays reserved — you cannot create a new bucket with the same name until either the bucket is restored or permanently removed.

Deleting an object in a soft-delete-enabled bucket

Inside a soft-delete-enabled bucket, the files browser splits into an All files and a Deleted files segment above the list. All files is the regular live view; Deleted files is where every soft-deleted object in this bucket shows up while it's within its retention window.

Deleting an object from the All files view brings up a confirmation dialog that mirrors the bucket-level one. It tells you the file will be moved to the Deleted files tab and can be restored within the bucket's retention period — and that after that window passes, the file is permanently removed.

Restoring a deleted object

Every delete on a key produces its own soft-deleted version, stamped with the time it was deleted. The same key can therefore have many soft-deleted versions stacked up if it has been written and deleted more than once. For example, if you write an object at key a, delete it, write a fresh copy at a, delete that, then repeat one more time, the key will have three soft-deleted versions — one for each delete — all independently restorable until their retention windows expire.

In the Deleted files segment, selecting a deleted object opens its Version history panel on the right, which lists each soft-deleted version of that key along with its timestamp, version ID, size, and ETag. To restore the object, pick the version you want to recover and click Restore this version:

The selected version becomes live immediately and is visible to all subsequent reads.

Permanently deleting an object

Permanently deleting a soft-deleted object is always scoped to a specific version of that object. There is no single "delete the object" button — because the same key can have many soft-deleted versions stacked up, you pick which version to purge from the Version history panel.

To do this, open the Version history panel for the object in the Deleted files segment, select the version you want to purge, and click the red Delete button at the bottom of the panel. The panel shows a Permanently delete this file? confirmation just above the button, calling out that the version will be permanently deleted and cannot be restored.

Unlike the regular delete from the All files view, this action bypasses the retention window entirely — the selected version is purged immediately and is not recoverable. To fully remove an object that has multiple soft-deleted versions, repeat this for each version you want gone.

Snapshot buckets

On a snapshot-enabled bucket, deleting a specific version moves that version into the soft-deleted state, where it appears in the Deleted files tab and can be restored from its Version history panel the same way. A plain delete on a snapshot-enabled bucket behaves as usual — it records a delete marker and leaves earlier versions live and accessible.

Things to note