Версионирование бакета
В объектном хранилище S3 можно включить версионирование для бакета, чтобы хранить разные версии объектов. Это дает следующие возможности:
- Предотвращение потери данных:
Если объект случайно удалили или изменили, его можно вернуть, используя предыдущую версию; - Обеспечение контроля изменений:
Версионирование позволяет фиксировать историю изменений файлов, что удобно для проверок или аудита; - Поддержка совместной работы:
Несколько пользователей могут редактировать один файл, сохраняя свои правки как отдельные версии, которые легко сравнить; - Оптимизация хранения данных:
Можно настроить автоматическую очистку устаревших версий, чтобы управлять объемом хранимых данных.
Для включения версионирования бакета см. инструкцию Включить версионирование бакета.
Принцип работы
Включение версионирования необратимо: его нельзя отключить, но можно временно остановить создание новых версий. При приостановке новые объекты будут сохраняться с версией null.
При включенном версионировании в бакете:
- каждый загруженный объект получает уникальный идентификатор версии;
- при изменении объекта он не перезаписывается, а сохраняется как новая отдельная версия;
- все версии объекта хранятся в бакете, что увеличивает занимаемое пространство;
- самая последняя загруженная версия объекта является актуальной.
Когда в бакете включено версионирование, удаление объектов работает иначе, чем в бакете без версионирования. Вместо окончательного удаления объекта объектное хранилище S3 добавляет маркер удаления (delete marker), который становится текущей версией объекта. Это позволяет восстановить предыдущие версии объекта, если удаление было случайным.
Очистить бакет от ненужных или удаленных версий объектов можно вручную либо с помощью настройки политики жизненного цикла.
Приостановка версионирования
Версионирование в бакете можно приостановить в любой момент. После приостановки:
- все существующие версии остаются доступными;
- возможность восстановления ранее созданных версий сохраняется.
При выполнении новых операций:
- новые объекты не получают идентификатор версии при загрузке;
- объекты с идентификатором версии null перезаписываются при совпадении имен;
- объекты, загруженные после приостановки, удаляются без создания маркеров удаления и без возможности восстановления;
- все версии, созданные до приостановки, продолжают быть доступными.
Для приостановки версионирования см. инструкцию Приостановить версионирование бакета.