У меня есть миллион файлов в разных папках на ведре S3.
Файлы очень маленькие. Я хочу скачать все файлы, которые
в папке с именем VER1
. Папка VER1
содержит множество подпапок,
Я хочу загрузить весь миллион файлов во всех подпапках VER1
.
(например, VER1
-> sub1
-> file1.txt
, VER1
-> sub1
-> subsub1
-> file2.text
и т. д.)
Как быстрее всего скачать все файлы?
Используете s3 cp
? s3 sync
?
Есть ли способ загрузить все файлы, находящиеся в папке, параллельно?
Используйте Интерфейс командной строки AWS (CLI):
aws s3 sync s3://bucket/VER1 [name-of-local-directory]
По моему опыту, он будет загружаться параллельно, но он не обязательно будет использовать всю полосу пропускания, потому что для каждого объекта есть много накладных расходов. (Это более эффективно для больших объектов, поскольку снижает накладные расходы.)
Именно возможный у aws s3 sync
может быть проблема с большим количеством файлов. Вам нужно будет попробовать, чтобы увидеть, работает ли он.
Если вам действительно нужна полная производительность, вы можете написать свой собственный код, который будет загружаться параллельно, но экономия времени, вероятно, будет потеряна из-за времени, необходимого вам для написания и тестирования такой программы.
Другой вариант - использовать aws s3 sync
для загрузки в экземпляр Amazon EC2, затем заархивировать файлы и просто загрузить zip-файл. Это снизит требования к пропускной способности.