Настройте политику жизненного цикла корзины, например, корзину, на короткое время сохраняя удаленные файлы.
Я храню документы в GCS, и я хотел бы повторить понятие Windows/OSX о файлах, перемещающихся в корзину / корзину после удаления, чтобы их можно было восстановить, а не просто удалить. Другими словами, я бы хотел, чтобы удаленные файлы оставались доступными в течение определенного периода времени (скажем, месяц). Мне не нужно полное управление версиями, так как я просто забочусь о прецеденте, который я удалил, что-то важное. Как мне настроить политику жизненного цикла, чтобы поддерживать это, минимизируя затраты на хранение?
2 ответа
Для начала, включение контроля версий для вашего сегмента гарантирует, что ничто, случайно удаленное пользователем, не будет потеряно.
$ 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
при условии, что вы не можете использовать оба способа и хранить только одну архивную версию любого файла, удаленного или нет.
Я не понимаю, как это было бы возможно в данный момент. Условие жизненного цикла Age проверяет время создания объекта, которое, по-видимому, не изменяется при удалении объекта. С помощью
{
"action": {"type": "Delete"},
"condition": {"isLive": false, "age": 30}
}
не будет работать: если вы загрузите объект в корзину, сохраните его там в течение 30 дней, а затем удалите его, управление жизненным циклом мгновенно (+ запаздывает) удалит архивированную версию, так как возраст архивных версий превышает 30 дней в эта точка. Кажется, что нет никакого условия, связанного со временем удаления, поэтому нет способа использовать его в условиях жизненного цикла.