OBS может хранить несколько версий объекта. Вы можете быстро искать и восстанавливать разные версии или восстанавливать данные в случае случайных удалений или сбоев приложения.
По умолчанию функция версионирования отключена для новых Бакетов в OBS. Поэтому, если вы загрузите объект в Бакет, где уже существует объект с тем же именем, новый объект перезапишет существующий.
Включение версионирования
- Включение версионирования не меняет версии и содержимое существующих объектов в Бакете. Идентификатор версии объекта — null до того, как будет включено версионирование. Если объект с тем же именем загружен после включения версионирования, объект получит идентификатор версии. Для подробностей см. Рисунок 1.
Рисунок 1 Версионирование (с существующими объектами)

- OBS автоматически назначает уникальный идентификатор версии ново загруженному объекту. Объекты с одинаковым именем хранятся в OBS с разными идентификаторами версий.
Рисунок 2 Версионирование (для новых объектов)

Таблица 1 Описание версии Версия
Описание
Последняя версия
После включения версионирования каждая операция с объектом приводит к сохранению объекта с новым идентификатором версии. Идентификатор версии, сгенерированный при последней операции, называется последней версией.
Историческая версия
После включения версионирования каждая операция с объектом приводит к сохранению объекта с новым идентификатором версии. Идентификаторы версии, сгенерированные при операциях, отличных от последней операции, называют историческими версиями.
- Объекты последней версии в бакете возвращаются по умолчанию после запроса GET Object.
- Объекты можно загрузить по идентификаторам версии. По умолчанию загружается объект последней версии, если идентификатор версии не указан. Для получения подробностей см. Связанные операции в Настройка версионирования.
- Вы можете выбрать объект и нажать Удалить справа, чтобы удалить объект. После удаления объекта OBS генерирует Маркер удаления с уникальным идентификатором версии для удалённого объекта, и удалённый объект отображается в Удалённые объекты списке. Подробности см. Удаление объекта или папки. Если затем попытаться получить доступ к этому удалённому объекту, будет возвращена ошибка 404.
Рисунок 3 Объект с маркером удаления

- Вы можете восстановить удалённый объект, удалив маркер удаления. Подробности см. Связанные операции в Восстановление удалённого объекта.
- После удаления объекта вы можете указать номер версии в Удалённые объекты для окончательного удаления объекта указанной версии. Подробнее см. Связанные операции в Удаление объекта или папки.
- Объект отображается либо в списке объектов, либо в списке удалённых объектов. Он никогда не будет отображаться в обоих списках одновременно.
Например, после объекта A удаляется, он появится в Удалённые объекты списке. Если позже вы загрузите другой объект с тем же именем A, новый объект A появится в Объекты список, но ранее удалённый объект A исчезнет из Удалённые объекты список. Подробнее смотрите Рисунок 4.
Рисунок 4 Загрузка одноимённого объекта после удаления оригинального

Приостановка версионирования
После того как версионирование включено для бакета, его нельзя отключить, но его можно приостановить. При приостановке версионирования новому загруженному объекту будет назначен null, а не конкретный идентификатор версии. Если новый загруженный объект имеет то же имя, что и существующий объект с null‑идентификатором версии, новый объект перезапишет существующий объект.
Рисунок 5 Версии объектов в сценарии, когда версионирование приостановлено

Если версионирование больше не требуется, его можно приостановить. После приостановки версионирования:
- Существующие версии объектов всё ещё сохраняются в OBS. Если вы больше не хотите эти версии, удалите их вручную.
- Объекты можно загрузить по идентификаторам версии. По умолчанию, если идентификатор версии не указан, загружается последний объект.
Различия между сценариями, когда версионирование приостановлено и отключено
Если вы удалите объект после того, как версионирование приостановлено для бакета, будет создан маркер удаления, независимо от того, есть ли у объекта исторические версии. Однако, если версионирование отключено, то же действие не создаст маркер удаления.