AWS S3 копирует файлы и папки между двумя корзинами - PullRequest
104 голосов
/ 15 февраля 2012

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

Я пробовал использовать консольное копирование AWS S3, ноэто привело к отсутствию некоторых вложенных файлов.

Я пытался использовать приложение Transmit (Panic), но дублирующая команда сначала копирует файлы в локальную систему, а затем обратно во второе ведро

Ответы [ 17 ]

1 голос
/ 26 декабря 2018

от AWS cli https://aws.amazon.com/cli/ вы можете сделать

aws s3 ls - здесь будут перечислены все корзины S3

aws cp --recursive s3://<source bucket> s3://<destination bucket> - это скопирует файлы из одного сегмента в другое

Примечание. * Очень полезно при создании сегментов межрегиональной репликации. При выполнении вышеизложенного все файлы отслеживаются, а обновление исходного файла региона будет распространяться в реплицируемом сегменте. Все, кроме удаления файлов, синхронизируются.

Для CRR убедитесь, что в корзинах включено управление версиями.

1 голос
/ 20 мая 2015

Мне сообщили, что вы также можете сделать это с помощью s3distcp в кластере EMR.Предполагается, что это быстрее для данных, содержащих большие файлы.Он работает достаточно хорошо для небольших наборов данных - но я бы предпочел другое решение, учитывая кривую обучения, которая потребовалась для настройки столь малого количества данных (я никогда раньше не работал с EMR).

Вот ссылкаиз документации AWS: http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/UsingEMR_s3distcp.html

Обновление: для того же набора данных s3s3mirror был намного быстрее, чем s3distcp или AWS cli.Гораздо проще настроить тоже.

1 голос
/ 15 октября 2012

Я слышал, что для этого есть модуль узла, если вы используете javascript: p

Из knox-copy документы:

knoxCopy = require 'knox-copy'

client = knoxCopy.createClient
  key: '<api-key-here>'
  secret: '<secret-here>'
  bucket: 'backups'

client.copyBucket
  fromBucket: 'uploads'
  fromPrefix: '/nom-nom'
  toPrefix: "/upload_backups/#{new Date().toISOString()}"
  (err, count) ->
     console.log "Copied #{count} files"
0 голосов
/ 19 января 2019

Лучший способ скопировать корзину S3 - использовать AWS CLI .

Он включает в себя следующие 3 шага:

  1. Установка интерфейса командной строки AWS на вашем сервере.
**https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html**

Если вы копируете сегменты между двумя учетными записями AWS, вам необходимо прикрепить правильную политику к каждому сегменту.

После этого используйте эту команду для копирования из одного сегмента в другой..

aws s3 sync s3://sourcebucket s3://destinationbucket

Подробная информация о шаг 2 и шаг 3 приведена по этой ссылке:

https://aws.amazon.com/premiumsupport/knowledge-center/account-transfer-s3/

0 голосов
/ 15 января 2019

Как объяснил Нил Бхаат в этом блоге , для этой цели можно использовать множество различных инструментов. Некоторые из них предоставляются AWS, а большинство - сторонними инструментами Все эти инструменты требуют сохранения ключа учетной записи AWS и секрета в самом инструменте. Будьте очень осторожны при использовании сторонних инструментов, поскольку учетные данные, которые вы сохраняете, могут стоить вам, вашей полной стоимости и даже замертво.

Поэтому я всегда рекомендую использовать AWS CLI для этой цели. Вы можете просто установить это из по этой ссылке . Затем выполните следующую команду и сохраните ключ, секретные значения в CLI AWS.

aws configure

И используйте следующую команду для синхронизации вашего AWS S3 Bucket с вашим локальным компьютером. (На локальном компьютере должен быть установлен AWS CLI)

aws s3 sync <source> <destination>

Примеры:

1) Для AWS S3 в локальном хранилище

aws s3 sync <S3Uri> <LocalPath>

2) Из локального хранилища в AWS S3

aws s3 sync <LocalPath> <S3Uri>

3) Из корзины AWS s3 в другую корзину

aws s3 sync <S3Uri> <S3Uri> 
0 голосов
/ 24 августа 2018

Как насчет aws s3 sync команды cli.aws s3 sync s3: // bucket1 / s3: // bucket2 /

0 голосов
/ 02 мая 2018

Копировать из одной корзины S3 в ту же или другую корзину S3 без загрузки в локальную, это довольно просто.Используйте команду оболочки ниже.

hdfs dfs -cp -f "s3://AccessKey:SecurityKey@ExternalBucket/SourceFoldername/*.*" "s3://AccessKey:SecurityKey@ExternalBucket/TargetFoldername"

Это скопирует все файлы из папки SourceFoldername исходного сегмента в папку TargetFoldername целевого сегмента.В приведенном выше коде замените AccessKey, SecurityKey и ExternalBucket на соответствующие значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...