2012-05-18 2 views
4

Я хочу периодически перемещать изображения из локального каталога в s3, но я не хочу перезаписывать файлы, которые были нажаты ранее, которые не менялись с тех пор , Вот варианты, которые я рассмотрел:Не загружать в aws s3, если точный файл уже существует в bucket

  1. Сравните длину контента. Недостаток: новая версия файла может иметь одинаковую длину содержимого, но быть другой.

  2. Сохраните локальную информацию о модификации в метаданных s3, чтобы сравнить их в момент времени. Недостаток: для этого требуется POST и PUT, удвоение загруженных данных, добавление накладных расходов к задаче push и может быть непоследовательным при запуске с разных компьютеров.

Должен быть лучший способ. Что мне не хватает?

P.S. Я использую жемчужину aws-s3 в задаче грабли.

+0

Невозможно сохранить хэш изображений в метаданных S3 при их первой загрузке, а затем использовать API, который позволяет вам получать только заголовки S3 и сравнивать хэш с локально рассчитанным хэш для текущей версии файла в локальной системе? – Daan

+0

Спасибо, Даан. Документация показала, что из-за ограничений в публичном API метаданные можно было добавить только путем получения изображения, добавления метаданных и сохранения его снова, в результате чего была добавлена ​​двойная загрузка. Это, по общему признанию, мало смысла. Может быть, ограничение ушло, или я не ошибаюсь. Я буду экспериментировать и видеть ... – glortho

+0

Это верно для добавления метаданных в существующие файлы, но не на начальной стадии загрузки, я думаю? :-) – Daan

ответ