Cloud Storage has features that help manage your objects'
[storage classes](https://docs.cloud.google.com/storage/docs/storage-classes.md.txt):

- [**Object Lifecycle Management**](https://docs.cloud.google.com/storage/docs/lifecycle.md.txt) can be configured for a bucket to give you
  more automated control over moving objects to colder storage classes. When you
  define a lifecycle configuration, Cloud Storage performs a specified
  action, such as setting a colder storage class for an object, only if the
  object meets your criteria.

- [**Autoclass**](https://docs.cloud.google.com/storage/docs/autoclass.md.txt) can be enabled on a bucket, which lets Cloud Storage
  manage the storage classes of objects in the bucket automatically.

If you are concerned that your application software or users might erroneously
delete or replace objects at some point, Cloud Storage also has
features that help you protect your data:

- [**Soft delete**](https://docs.cloud.google.com/storage/docs/soft-delete.md.txt) provides default bucket-level
  protection for your data from accidental or malicious deletion by preserving
  all recently deleted objects for a specified period of time. You can restore
  the deleted objects within this duration. For more information on how to
  restore soft-deleted objects, see [Use soft-deleted objects](https://docs.cloud.google.com/storage/docs/use-soft-deleted-objects.md.txt).

- [**Bucket Lock**](https://docs.cloud.google.com/storage/docs/bucket-lock.md.txt): A retention policy that specifies a retention period
  can be [placed on a bucket](https://docs.cloud.google.com/storage/docs/using-bucket-lock.md.txt#set-policy). Each object in the bucket must reach the
  specified age before it can be deleted or replaced.

- [**Object Retention Lock**](https://docs.cloud.google.com/storage/docs/object-lock.md.txt): A retention configuration that specifies a
  retain-until date and time can be [set for an individual object](https://docs.cloud.google.com/storage/docs/using-object-lock.md.txt). The
  object cannot be deleted or replaced until after the specified date and time.

- An [**object hold**](https://docs.cloud.google.com/storage/docs/object-holds.md.txt) can be [placed on individual objects](https://docs.cloud.google.com/storage/docs/holding-objects.md.txt#set-object-hold) to prevent
  anyone from deleting or replacing the object until the hold is removed.

- [**Object Versioning**](https://docs.cloud.google.com/storage/docs/object-versioning.md.txt) can be enabled on a bucket in order
  to retain older versions of objects. When the *live* version of an object is
  deleted or replaced, it becomes *noncurrent* if versioning is enabled on the
  bucket. If you accidentally delete a live object version, you can
  [restore the noncurrent version](https://docs.cloud.google.com/storage/docs/using-versioned-objects.md.txt#restore) of it back to the live version.

  > [!CAUTION]
  > **Caution:** Object Versioning **does not** protect your data if you [delete the entire bucket](https://docs.cloud.google.com/storage/docs/deleting-buckets.md.txt).

  Object Versioning increases storage costs, but this can be partially
  mitigated by configuring Object Lifecycle Management to delete older
  object versions. For one possible setup, see the lifecycle configuration
  example for [deleting objects](https://docs.cloud.google.com/storage/docs/lifecycle-configurations.md.txt#deletion-example).
- [**Object Lifecycle Management**](https://docs.cloud.google.com/storage/docs/lifecycle.md.txt) can be configured for a bucket to give
  you more automated control over deleting objects. When you define a lifecycle
  configuration, Cloud Storage performs a specified action, such as
  deleting an object, only if the object meets your criteria.