Обзор
В Object Storage для каждого объекта можно хранить версии. Для этого нужно включить версионирование в бакете. С помощью версионирования вы сможете:
- Защитить данные от случайного удаления или перезаписи
Если объект был случайно удален или перезаписан, его можно восстановить из предыдущей версии. - Обеспечить безопасность хранения
С помощью версионирования можно отслеживать изменения файлов и хранить историю изменений — например, для возможных проверок и аудитов. - Организовать совместную работу
Разные пользователи смогут работать над одним и тем же файлом, сохраняя результаты работы в виде разных версий. Вы всегда сможете сравнить версии между собой. - Управлять жизненным циклом данных
Вы можете настроить автоматическое удаление для утративших актуальность версий.
Принципы работы
Заголовок раздела «Принципы работы»Когда в бакете включено версионирование:
- каждый объект после загрузки получает уникальный идентификатор версии;
- при любом изменении объект не перезаписывается, а сохраняется в виде отдельной версии;
- все версии объектов хранятся вместе, увеличивая объем используемого пространства;
- последняя загруженная версия объекта считается текущей.
Удаление объектов из бакетов с версионированием
Заголовок раздела «Удаление объектов из бакетов с версионированием»Любую версию объекта можно удалить из бакета — все остальные версии при этом останутся доступными.
Если удалить объект, не указав его конкретной версии (то есть, стандартным способом):
Объект становится недоступным. Если вы попытаетесь скачать объект, Object Storage вернет ошибку 404 Not Found. В списке объектов бакета он также не будет отображаться.
Объект фактически не удаляется. Вместо удаления создается новая версия в виде служебного объекта — маркера удаления. Эта версия становится текущей. Все предыдущие версии остаются доступными.
Объект можно восстановить. Чтобы восстановить объект, достаточно удалить маркер удаления. После этого удаленная версия объекта снова станет доступной. Подробнее в статье Удаление и восстановление объектов.
Приостановка версионирования
Заголовок раздела «Приостановка версионирования»Версионирование в бакете можно в любой момент приостановить. После приостановки:
- доступ ко всем версиям сохраняется;
- сохраняется возможность восстановления версий.
При этом при выполнении новых операций:
- новым объектам при загрузке не будет присваиваться идентификатор версии;
- при совпадении имен объекты с идентификатором версии
nullбудут перезаписываться; - загруженные после приостановки объекты будут удаляться без создания маркеров и без возможности восстановления.
- все версии, созданные до приостановки версионирования, останутся доступными.
Если для бакета были настроены правила жизненного цикла, они продолжают действовать и после приостановки версионирования.