Синхронизация файлов AWS S3 - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь выполнить синхронизацию файлов из локального источника в корзину S3, где я загружаю файлы в корзину S3, вычисляя контрольную сумму MD5 и помещая ее в метаданные для каждого файла. Проблема в том, что при этом я также проверил файлы, которые уже есть в месте назначения, чтобы избежать повторной загрузки. Я делаю это, создавая список файлов для загрузки, который не совпадает ни по имени, ни по MD5. Эта операция по извлечению метаданных для файлов S3 и вычислению MD5 для локальных файлов на лету и последующему их сопоставлению занимает много времени, поскольку у меня для сопоставления имеется от 200 000 до 500 000 файлов.

Есть ли лучший способ добиться этого, используя многопоточность или что-то еще. Я не очень представляю, как этого добиться в многопоточной среде, так как в конечном итоге мне нужен один список и несколько потоков, выполняющих обработку и добавление в один и тот же список. Любой пример кода или помощь очень ценится.

Это приложение для работы с Windows написано на C # с использованием платформы .NET 4.6.1.

1 Ответ

0 голосов
/ 18 сентября 2018

Вы можете использовать Интерфейс командной строки AWS (CLI) , который имеет команду aws s3 sync, которая работает очень похоже на то, что вы описываете.Однако с несколькими сотнями тысяч файлов он также будет работать медленно при сопоставлении.

Или вы можете использовать Amazon S3 Inventory - Amazon Simple Storage Service для получения ежедневного спискафайлов в корзине S3 (включая контрольную сумму MD5), а затем сравните ваши файлы с этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...