Amazon php sdk (http://docs.aws.amazon.com/aws-sdk-php/v3/guide/service/s3-transfer.html) операции синхронизации выполняются с использованием вышеуказанных связанных методов. Я успешно их кодировал и настраивал, но при каждом вызове метода дата последнего изменения файлов в корзине обновляется до самого последнего времени, учитывая, что файлы не были изменены локально по сравнению с предыдущим вызовом синхронизации.
Интересно, это вообще операция синхронизации или просто перезапись того, что отправлено из локального каталога?
Почему это важно, мы планируем синхронизировать файлы между сервером и S3 Bucket. Используя корзины S3 в качестве резервного хранилища, в случае каких-либо сбоев мы можем синхронизировать (корзина S3 -> сервер) обратным способом, чтобы сделать недостающие фрагменты данных доступными на нашем сервере.
Заметки:
К сожалению, я считаю, что ответ нет, я также вижу полную загрузку каждого файла при использовании Transfer
учебный класс.
Раньше работал, от v2
API документы:
uploadDirectory()
метод клиента будет сравнивать содержимое
локальный каталог с содержимым в корзине Amazon S3 и только
перенести файлы, которые изменились.
Отлично, это то, что мы хотим!
Однако в v3
они сохранили S3Client::uploadDirectory()
для совместимости API, я думаю, но это просто обертка за Transfer::promise()
, который, как мы знаем, просто загружает без какой-либо синхронизации. Сохранение совместимости API, но изменение поведения таким образом выглядит как действительно плохая идея мне.
В итоге мне пришлось добавить поддержку в мой проект, чтобы использовать инструмент AWS CLI для фактической загрузки, который отлично поддерживает синхронизацию. Далеко от идеала.
Если есть способ использовать Transfer
класс для легкой синхронизации вместо полной загрузки, я надеюсь, что кто-то может доказать, что я не прав.
Других решений пока нет …