Назад | Перейти на главную страницу

Игнорирует ли управление версиями облачных объектов объекты без изменений?

У меня есть служба, которая генерирует большие наборы данных, в которых фактически изменяется только несколько файлов, а остальные остаются неизменными (но все еще находятся в папке с данными). Нам необходимо сохранить каждую версию наборов данных, но я хотел бы использовать управление версиями объектов, чтобы сократить расходы на мое облачное архивное хранилище. Если я загружу новый набор данных с большим количеством старых файлов и только с несколькими новыми, будет ли корзина генерировать только новые версии объектов, которые изменились? Будет ли в папке один и тот же набор файлов с несколькими версиями?

Каждый раз вы загружаете файл, S3 создает новая версия. Даже если у файла такое же содержимое.

Чтобы обойти эту проблему, вам необходимо:

  1. Генерировать ваш новый набор данных локально.
  2. Список все файлы из корзины S3 - это даст вам Размер и ETag который является файлом сумма md5.
  3. Сравнить локальные файлы со списком ведра - если Размер отличается или полученный ETag отличается от рассчитанного сумма md5 это явно другой файл -> загрузите его.

В качестве альтернативы используйте такие инструменты, как aws s3 sync или s3cmd sync которые делают именно это из командной строки или сценариев оболочки.

Надеюсь, это поможет :)

Вы включаете управление версиями объектов для корзины. После включения облачное хранилище создает архивную версию объекта каждый раз, когда действующая версия объекта перезаписывается или удаляется.

https://cloud.google.com/storage/docs/object-versioning

Хотя, возможно, прямо об этом не говорится, каждый раз, когда живая версия объекта перезаписывается включает случай, когда вы перезаписываете объект с точно такой же полезной нагрузкой.

Чтобы этого избежать, вам нужно загружать объекты с помощью утилиты, которая избегает перезаписи неизмененных файлов. gsutil rsync появляется чтобы сделать это, но прочтите документацию и понаблюдайте за его поведением, потому что, хотя он может синхронизироваться с временными метками или контрольными суммами, он, похоже, предпочитает временные метки, поэтому может не делать правильных действий, если локальные файлы идентичны, но выглядят более новыми.