Я храню документы в GCS, и я хотел бы воспроизвести представление Windows / OSX о файлах, перемещающихся в корзину / корзину после удаления, чтобы их можно было восстановить, а не удалять их напрямую. Другими словами, я бы хотел, чтобы удаленные файлы были доступны в течение определенного периода времени (скажем, месяц). Мне не нужен полный управление версиями так как меня просто волнует вариант использования "упс-я-удалил что-то важное". Как мне настроить политика жизненного цикла для поддержки этого при минимизации накладных расходов на хранилище?
Я не понимаю, как это возможно в настоящий момент. В Состояние жизненного цикла возраста проверяет время создания объекта, которое не меняется при удалении объекта. С помощью
{
"action": {"type": "Delete"},
"condition": {"isLive": false, "age": 30}
}
не будет работать: Если вы загрузите объект в корзину, храните его там в течение 30 дней, а затем удалите его, управление жизненным циклом мгновенно (+ отставание) удалите архивную версию, так как на данный момент срок хранения архивных версий превышает 30 дней. Кажется, что нет никаких условий, связанных со временем удаления, поэтому нет возможности использовать его в условиях жизненного цикла.
Для начала, включение управления версиями для вашего сегмента не даст потерять ничего, что случайно удалит пользователь.
$ gsutil versioning set on gs://bucket
Однако это излишек; нас интересует только предыдущая версия файла, поэтому мы позволим GCS очистить ненужные версии с помощью управления жизненным циклом. Сначала мы можем очистить любой давно удаленный контент с помощью следующего правила жизненного цикла:
{
"action": {"type": "Delete"},
"condition": {"isLive": false, "age": 30}
}
Следующим шагом будет удаление ненужных версий, которые младше установленной даты. Если вы хотите сохранить только архивную версию удалено файлов используйте это правило:
{
"action": {"type": "Delete"},
"condition": {"isLive": false, "numNewerVersions": 1}
}
Для файлов, которые все еще существуют, все заархивированные версии будут удалены (поскольку есть более новая, действующая версия), а для файлов, которые были удалены, самая последняя заархивированная версия будет самой новой и, следовательно, не будет удалена. По сути, это мусорная корзина.
Если вместо этого вы хотите сохранить предыдущую версию для всех файлов, вам просто нужно настроить numNewerVersions
к 2
, однако это приведет к тому, что удаленные файлы сохранят последние две версии, а не одну. Поскольку нет NumberOfNewerArchivedVersions
при условии, что вы не можете иметь оба варианта и хранить только одну заархивированную версию любого файла, удаленного или нет.