Understanding Object Versioning

Explains how versioning works for objects.

Buckets in the HPE Ezmeral Object Store can be versioning enabled, versioning suspended, or completely unversioned.

See mc version enable, mc version suspend, mc mb and mc ubfor enabling and suspending bucket versioning.

The following table explains the behavior of common operations such as PUT, DELETE and GET on these bucket types.

Operation Versioning Enabled Bucket Versioning Suspended Bucket Unversioned Bucket
PUT object Creates a new version of the object and retains all old versions (if any). Adds new object with null version and overwrites any object having the same name and the version as null. Retains old versions (if any). Add new object with null version and overwrites any existing object with the same name.
Simple DELETE object Adds a delete marker and makes the deleted object as the current version. Permanently deletes object with the null version and adds the delete marker. Permanently deletes object with the null version.
DELETE object with version ID Permanently deletes an object with the given version ID. Permanently deletes an object with the given version ID. Permanently deletes an object with the given version ID. The only valid version ID is null.
Simple GET object Returns the current version of the object, or a Not Found error if the current version is a delete marker. Returns the current version of the object, or a Not Found error if the current version is a delete marker. Returns the object with the null version.
GET object with version ID Returns the object with the specified version, or a Not Found error if the object is not found. Returns the object with the specified version, or a Not Found error if the object is not found. Returns the object with the specified version, or a Not Found error if the object is not found.

The only valid version ID is null.