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

Как загрузить несколько файлов из каталога в S3?

У меня есть каталог на Ubuntu, с изображениями 340K, общим размером 45 ГБ! Есть ли эффективный способ перенести их все на S3 DigitalOcean?

Я думал об использовании s3cmd put или s3cmd sync но я предполагаю, что это приведет к put операции с каждым файлом индивидуально.

Любые мысли были бы очень признательны!

Я не верю, что S3 API позволяет отправлять несколько файлов за один вызов API, но вы можете изучить параметры параллелизма для используемого вами клиента.

Хорошей отправной точкой будет официальный интерфейс командной строки AWS (CLI) который имеет некоторые Значения конфигурации S3 которые позволяют настроить параллелизм для aws s3 Команды передачи CLI, включая cp, sync, mv, и rm:

max_concurrent_requests - The maximum number of concurrent requests (default: 10)
max_queue_size          - The maximum number of tasks in the task queue (default: 1000)
multipart_threshold     - The size threshold the CLI uses for multipart transfers of
                          individual files (default: 8MB)
multipart_chunksize     - When using multipart transfers, this is the chunk size
                          that the CLI uses for multipart transfers of individual
                          files (default: 8MB)
max_bandwidth           - The maximum bandwidth that will be consumed for uploading
                          and downloading data to and from Amazon S3 (default: None)

В приведенном выше руководстве по настройке AWS S3 также содержатся рекомендации по настройке этих значений для различных сценариев.

Для более быстрой передачи вам также следует создать корзину S3 в регионе с наименьшей задержкой для вашего экземпляра Digital Ocean или рассмотреть возможность включения S3 Ускорение передачи. Если вы используете S3 Acceleration, существуют дополнительные параметры интерфейса командной строки (и стоимость).

После того, как ваши параметры конфигурации установлены, вы можете использовать командную строку, например aws s3 sync /path/to/files s3://mybucket для рекурсивной синхронизации каталога изображений с вашего сервера DigitalOcean с корзиной S3. В процессе синхронизации копируются только новые или обновленные файлы, поэтому вы можете запустить ту же команду еще раз, если синхронизация прервана или исходный каталог был обновлен.