Мы поместили сотни файлов изображений на Amazon S3, которые наши пользователи должны синхронизировать с их локальными каталогами. Для экономии места на диске и пропускной способности мы архивируем файлы, хранящиеся на S3.
На стороне пользователя есть скрипт на python, который запускается каждые 5 минут для получения текущего списка файлов и загрузки новых / обновленных файлов.
Мой вопрос: как лучше всего определить, что нового или изменено для загрузки?
В настоящее время мы добавляем дополнительный заголовок, который мы помещаем в сжатый файл, который содержит значение MD5 для несжатого файла ...
Мы начинаем с файла, подобного этому:
image_file_1.tif 17MB MD5 = xxxx1234
Сжимаем (7zip) и помещаем в S3 (с Python / Boto):
image_file_1.tif.z 9MB MD5 = yyy3456 x-amz-meta-uncompressedmd5 = xxxx1234
Проблема в том, что мы не можем получить большой список файлов из S3, которые включают заголовок x-amz-meta-uncompressedmd5 без дополнительного API для КАЖДОГО (МЕДЛЕННО для сотен / тысяч файлов).
Наше наиболее практичное решение заключается в том, чтобы пользователи получали полный список файлов (без дополнительных заголовков), загружали файлы, которые не существуют локально. Если он существует локально, то выполните дополнительный вызов API и получите полные заголовки для сравнения локальной контрольной суммы MD5 с x-amz-meta-uncompressedmd5.
Я думаю, что должен быть лучший способ.