Я искал инструмент, который помог бы мне скопировать содержимое корзины AWS S3 во вторую корзину AWS S3 без загрузки содержимого сначала в локальную файловую систему.
Я попытался использовать опцию копирования консоли AWS S3, но это привело к отсутствию некоторых вложенных файлов.
Я пробовал использовать приложение Transmit (от Panic). Команда duplicate сначала загружает файлы в локальную систему, а затем загружает их обратно во вторую корзину, что довольно неэффективно.
amazon-s3
copy
amazon-web-services
cnicolaou
источник
источник
aws configure set default.s3.max_concurrent_requests 200
Смотрите этот пост для более подробной информации и опции stackoverflow.com/questions/4663016/...Ответы:
Копирование между сегментами S3
AWS (совсем недавно) выпустила интерфейс командной строки для копирования между бакетами.
http://aws.amazon.com/cli/
Это скопирует из одного целевого сегмента в другой.
Смотрите документацию здесь: Документация S3 CLI
источник
A client error (PermanentRedirect) occurred when calling the ListObjects operation: The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.
Упрощенный пример использования гема aws-sdk:
Если вы хотите выполнить копирование между разными сегментами, укажите имя целевого сегмента:
источник
Теперь вы можете сделать это из интерфейса администратора S3. Просто войдите в одно ведро и выберите все свои папки
actions->copy
. Затем переходите в новое ведроactions->paste
.источник
Это возможно с недавним гемом aws-sdk , см. Пример кода:
подробнее: Как скопировать файл между корзинами с помощью драгоценного камня aws-s3
источник
Копирование между корзинами в разных регионах
Приведенная выше команда копирует файл из корзины в Европе (eu-west-1) в Японию (ap-northeast-1). Вы можете получить кодовое имя для региона вашего сегмента с помощью этой команды:
Кстати, использовать «Копировать и вставить» в веб-консоли S3 просто, но кажется, что она загружается из исходного сегмента в браузер, а затем выгружается в целевой сегмент. Для меня использование "aws s3" было намного быстрее.
источник
Я создал исполняемый файл Docker для инструмента s3s3mirror . Утилита для копирования и зеркалирования из одной корзины AWS S3 в другую.
Он многопоточен, что позволяет выполнять параллельное КОПИРОВАНИЕ и очень эффективно использовать память, он успешно работает там, где s3cmd полностью не работает.
Использование:
Чтобы увидеть полный список вариантов, попробуйте:
источник
Ознакомьтесь с документацией ниже. Я думаю, это то, что вы ищете. http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectCOPY.html
В интерфейсе S3Interface от RightAws gem есть функции копирования, которые делают то же самое.
http://rubydoc.info/gems/right_aws/3.0.0/RightAws/S3Interface#copy-instance_method
источник
Я предполагаю, что вы, вероятно, уже нашли хорошее решение, но для других, кто сталкивается с этой проблемой (как я был совсем недавно), я создал простую утилиту специально для цели зеркалирования одной корзины S3 в другую в высокая степень одновременности, но эффективный способ использования ЦП и памяти.
Он находится на github под лицензией Apache здесь: https://github.com/cobbzilla/s3s3mirror
Если у вас очень большой ковш и вы ищете максимальную производительность, возможно, стоит попробовать.
Если вы решите попробовать, дайте мне знать, если у вас есть отзывы.
источник
Если вы находитесь в оболочке и хотите скопировать несколько файлов, но не все файлы: s3cmd cp --recursive s3: // BUCKET1 / OBJECT1 s3: // BUCKET2 [/ OBJECT2]
источник
Я написал сценарий для резервного копирования ведра S3: https://github.com/roseperrone/aws-backup-rake-task
Я использую это в грабельной задаче (для приложения Rails):
источник
Я слышал, что для этого есть модуль узла, если вам нравится javascript: p
Из документов knox-copy :
источник
Мне сообщили, что вы также можете сделать это с помощью s3distcp в кластере EMR. Предполагается, что это будет быстрее для данных, содержащих большие файлы. Он достаточно хорошо работает с небольшими наборами данных, но я бы предпочел другое решение, учитывая кривую обучения, которая потребовалась для настройки такого небольшого объема данных (я никогда раньше не работал с EMR).
Вот ссылка из документации AWS: http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/UsingEMR_s3distcp.html
Обновление: для того же набора данных s3s3mirror был намного быстрее, чем s3distcp или AWS cli. Гораздо проще настроить.
источник
Скопировать из одного ведра S3 в тот же или другой ведро S3 без загрузки на локальный, довольно просто. Используйте приведенную ниже команду оболочки.
Это скопирует все файлы из
SourceFoldername
папки исходного сегмента в папку целевого сегментаTargetFoldername
. В приведенном выше коде, пожалуйста , заменитеAccessKey
,SecurityKey
иExternalBucket
с соответствующими значениями.источник
hdfs
?из AWS cli https://aws.amazon.com/cli/ вы могли бы сделать
aws s3 ls
- В этом списке будут перечислены все сегменты S3.aws cp --recursive s3://<source bucket> s3://<destination bucket>
- Это скопирует файлы из одной корзины в другую.Примечание. * Очень полезно при создании сегментов межрегиональной репликации. Выполняя описанные выше действия, вы отслеживаете все ваши файлы, и обновление исходного файла региона будет распространено на реплицированный сегмент. Все, кроме удаления файлов, синхронизируется.
Для CRR убедитесь, что для сегментов включено управление версиями.
источник
Как насчет
aws s3 sync
команды cli. aws s3 sync s3: // bucket1 / s3: // bucket2 /источник
Как объяснил Нил Бхаат в этом блоге , для этой цели можно использовать множество различных инструментов. Некоторые из них предоставляются AWS, большинство из них - сторонние инструменты. Все эти инструменты требуют, чтобы вы сохранили ключ и секрет своей учетной записи AWS в самом инструменте. Будьте очень осторожны при использовании сторонних инструментов, так как учетные данные, которые вы сохраняете, могут стоить вам всей вашей ценности и убить вас.
Поэтому я всегда рекомендую использовать для этой цели AWS CLI . Вы можете просто установить это по этой ссылке . Затем выполните следующую команду и сохраните ключ и секретные значения в AWS CLI.
И используйте следующую команду для синхронизации AWS S3 Bucket с локальным компьютером. (На локальном компьютере должен быть установлен AWS CLI)
Примеры:
1) Для AWS S3 в локальное хранилище
2) Из локального хранилища в AWS S3
3) Из ведра AWS s3 в другое ведро
источник
Лучший способ скопировать корзину S3 - использовать AWS CLI .
Он включает в себя 3 шага:
Если вы копируете сегменты между двумя учетными записями AWS, вам необходимо прикрепить правильную политику к каждому сегменту.
После этого используйте эту команду для копирования из одного ведра в другое.
Подробности шага 2 и шага 3 приведены по этой ссылке:
источник
Вы можете написать приложение Java - возможно, даже приложение SWING с графическим интерфейсом пользователя, которое использует API Java AWS. Для копирования объектов см.
https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javav2/example_code/s3/src/main/java/com/example/s3/CopyObject.java
источник