Ваш первый шаг должен быть должен видеть, может ли программное обеспечение сервера DNS обработать это исходно, возможно путем вывода файла журнала, который можно проанализировать в другом месте. Сбой этого, Вы могли использовать Dnstop, который обеспечивает подобный вершине вывод запросов DNS, сделанных путем контроля сетевого трафика. Это не только даст Вам статистику по главным запросам, главным запрашивающим сторонам и типам запроса, но это также дает количество того, сколько запросов было выполнено всего.
Альтернатива должна использовать Ntop для измерения сетевого трафика в целом. Это не даст Вам тот же подробный точный вывод как Dnstop, но это даст Вам общее представление относительно того, сколько трафика DNS Вы видите, и это будет также иметь размеры, сколько другого трафика Вы получаете, который мог бы быть полезен для другого планирования мощностей.
Миллионы - это большое число - я вернусь к этому позже.
Независимо от вашего подхода, базовый механизм должен копировать напрямую из одной корзины в другую - таким образом (поскольку ваши сегменты находятся в одном регионе) вы не платите за пропускную способность. Любой другой подход просто неэффективен (например, загрузка и повторная загрузка файлов).
Копирование между бакетами выполняется с помощью 'PUT copy' - это запрос PUT, который включает заголовок 'x-amz-copy-source' - I считают, что это классифицируется как запрос на КОПИРОВАНИЕ. Это скопирует файл и по умолчанию связанные метаданные. Вы должны включить «x-amz-acl» с правильным значением, если вы хотите установить ACL одновременно (в противном случае он будет по умолчанию закрытым). С вас будет взиматься плата за запросы КОПИРОВАНИЯ (0,01 доллара США за 1000 запросов). Вы можете удалить ненужные файлы после того, как они были скопированы (запросы DELETE не тарифицируются). (Один момент, который я не совсем понимаю, заключается в том, требует ли запрос COPY также плату за запрос GET, поскольку объект должен быть сначала извлечен из исходного сегмента - если это так, плата будет дополнительно составлять 0,01 доллара США / 10 000 запросов).
Вышеупомянутые расходы кажутся неизбежными - для миллиона объектов вы просматриваете около 10 долларов (или 11 долларов). Поскольку в конечном итоге вы должны фактически создать файлы в целевом сегменте, другие подходы (например, сжатие файлов в формате tar, импорт / экспорт Amazon и т. Д.) Не помогут обойти эту стоимость. Тем не менее, возможно, стоит обратиться к Amazon, если вам нужно передать более пары миллионов объектов.
Учитывая вышеизложенное (неизбежная цена), следующее, на что нужно обратить внимание, - это время, что будет большим фактором при копировании «миллионов файлов». Все инструменты, которые могут выполнять прямое копирование между корзинами, требуют одинаковой платы. К сожалению, вам требуется один запрос на файл (для копирования), один запрос на удаление и, возможно, один запрос на чтение данных ACL (если ваши файлы имеют разные ACL). Наилучшая скорость обеспечивается тем, что может выполнять наиболее параллельные операции.
Есть несколько подходов к командной строке, которые могут быть весьма жизнеспособными:
Существует некоторая вероятность того, что s3fs может работать - он довольно параллелен, поддерживает копии между одним и тем же сегментом - НЕ поддерживает копии между разными сегментами, но может поддерживать перемещения между разными ведрами.
I '
Я не уверен, что это лучший подход, но в консоли управления AWS есть функция вырезания / копирования / вставки. очень проста в использовании и эффективна.
Думаю, вы уже нашли хорошее решение, но для тех, кто столкнулся с этой проблемой (как и я недавно), я создал простую утилиту специально для зеркалирования одной корзины S3. к другому с высокой степенью параллелизма, но при этом эффективно использовать процессор и память.
Он находится на github под лицензией Apache здесь: https://github.com/cobbzilla/s3s3mirror
Если вы решите дать ему попробуйте, дайте мне знать, если у вас есть отзывы.
В проигрышном сегменте выберите файлы, которые вы хотите скопировать в другой сегмент.
Старая тема, но это для всех, кто исследует тот же сценарий. Наряду со временем, которое потребовалось мне, на 20000+ объектов. Работает на AWS Linux / Centos, причем каждый объект представляет собой по большей части изображения, а также некоторые видео и различные мультимедийные файлы.
Использование инструментов интерфейса командной строки AWS для копирования файлов из сегмента A в сегмент B.
A. Создайте новую корзину
$ aws s3 mb s3://new-bucket-name
B. Синхронизация старого сегмента с новым сегментом
$ aws s3 sync s3://old-bucket-name s3://new-bucket-name
Копирование 20 000+ объектов ...
Начало 17:03
Окончание 17:06
Общее время для 20 000+ объектов = примерно 3 минуты
Один раз новый ведро настроено правильно, т.е. разрешения, политика и т. д., и вы хотите удалить старую корзину.
C. Удалите / удалите старую корзину
$ aws s3 rb --force s3://old-bucket-name
Интерфейс командной строки AWS позволяет копировать одну корзину в другую в параллельных процессах. Взято из https://stackoverflow.com/a/40270349/371699 :
Следующие команды сообщают интерфейсу командной строки AWS использовать 1000 потоков для выполнения заданий (каждый небольшой файл или одна часть составной копии) и просматривайте 100 000 заданий:
aws configure set default.s3.max_concurrent_requests 1000
aws configure set default.s3.max_queue_size 100000
После их выполнения вы можете использовать простую команду синхронизации, как показано ниже:
aws s3 sync s3://source-bucket/source-path s3://destination-bucket/destination-path
На машине m4.xlarge (в AWS - 4 ядер, 16 ГБ ОЗУ), в моем случае (файлы от 3 до 50 ГБ) скорость синхронизации / копирования увеличилась с 9,5 МБ / с до 700 + МБ / с, что в 70 раз больше по сравнению с конфигурацией по умолчанию.