Скачивание очень большого количества файлов с S3 - PullRequest
3 голосов
/ 28 декабря 2011

Я хотел бы настроить копию Disaster Recovery для корзины s3 с ~ 2 миллионами файлов.

Это не нужно автоматизировать, поскольку мы доверяем обещанию Amazon обеспечить высокую надежность, мы включили управление версиями и настройкуMFA для удаления самой корзины.

Поэтому я просто хочу периодически (вручную) загружать содержимое корзины, чтобы сохранить автономную копию.

Я пробовал несколько клиентов S3, но большинствоони зависают при работе с такой большой папкой.

Есть ли какой-нибудь инструмент, который подходит для работы, или мы должны прибегнуть к сервису экспорта данных Amazon (где мы должны отправлять им usb-диск каждый раз, когда нам нужнорезервное копирование в автономном режиме).

Заранее благодарим за совет!

Ответы [ 2 ]

4 голосов
/ 28 декабря 2011

Работа с корзиной с миллионами файлов может быть очень сложной, если в именах ваших файлов нет какой-то «структуры».К сожалению, это не поможет ни одному из инструментов GUI, поэтому вы застряли в реализации своего собственного решения.Например:

  1. Если все ваши файлы начинаются с даты , вы можете использовать заголовок marker в запросе Get Bucketвернуть только файлы старше определенной даты.

  2. Если ваши файлы расположены в «виртуальных» папках , вы можете использовать заголовки prefix и delimiter для обработки каждой папки отдельно.(Попробуйте сделать это параллельно, чтобы ускорить процесс)

Даже если у вас нет структуры, все не потеряно.Клиенты S3 зависают, потому что они пытаются сохранить в памяти весь список из 2 миллионов файлов.Вы можете загрузить объект, содержащий 1000 файлов одновременно, но сохранить его в файл / базу данных и т. Д. Чтобы получить все 2 миллиона, потребуется много времени, но как только вы закончите, просто переберите свой сохраненный список и загрузите, если необходимо.

Еще лучше, если вы можете «индексировать» свои файлы в базе данных по мере их добавления в S3, вы можете просто использовать это, чтобы определить, какие файлы загружать.

0 голосов
/ 29 декабря 2011

Вы можете использовать библиотеку jets3t с Java для создания своего собственного инструмента.Если вы знаете ядро ​​Java, его не сложно использовать.

http://jets3t.s3.amazonaws.com/toolkit/toolkit.html

Есть несколько примеров кода.

http://jets3t.s3.amazonaws.com/toolkit/code-samples.html

...