Загрузка всего ведра S3?
Я заметил, что, похоже, нет возможности загружать целую ведро S3 из консоли управления AWS.
Есть ли простой способ захватить все в одном из моих ведер? Я думал о том, чтобы сделать корневую папку общедоступной, используя wget
, чтобы захватить все это, а затем снова сделать ее закрытой, но я не знаю, есть ли более простой способ.
Ответы
Ответ 1
AWS CLI
Документация для AWS CLI
AWS недавно выпустила свои инструменты командной строки. Это работает как boto и может быть установлено с помощью sudo easy_install awscli
или sudo pip install awscli
После установки вы можете просто запустить:
Команда:
aws s3 sync s3://mybucket .
Выход:
download: s3://mybucket/test.txt to test.txt
download: s3://mybucket/test2.txt to test2.txt
Это загрузит все ваши файлы (односторонняя синхронизация). Он не удалит существующие файлы в вашем текущем каталоге (если вы не укажете --delete), и не изменит и не удалит файлы на S3.
Вы также можете выполнить S3 Bucket для S3 Bucket или локально для S3 Bucket Sync.
Ознакомьтесь с документацией и другими примерами:
http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html
Скачивание папки из ведра
В то время как в приведенном выше примере показано, как загрузить полный пакет, вы также можете загрузить папку, выполнив
aws s3 cp s3://BUCKETNAME/PATH/TO/FOLDER LocalFolderName --recursive
Это даст CLI команду рекурсивно загружать все файлы и ключи папок в каталоге PATH/TO/FOLDER
в BUCKETNAME
.
Ответ 2
Вы можете использовать s3cmd для загрузки своего ведра.
s3cmd --configure
s3cmd sync s3://bucketnamehere/folder /destination/folder
Обновление
Существует еще один инструмент, который вы можете использовать: Rclone. Ниже приведен пример кода в документации Rclone.
rclone sync /home/local/directory remote:bucket
Ответ 3
Я использовал несколько разных методов для копирования данных Amazon S3 на локальный компьютер, включая s3cmd, и, безусловно, самый легкий Cyberduck. Все, что вам нужно сделать, это ввести свои учетные данные Amazon и использовать простой интерфейс для загрузки/выгрузки/синхронизации любых ваших ведер/папок/файлов.
![Снимок экрана]()
Ответ 4
У вас есть много вариантов для этого, но лучший из них - использование AWS CLI.
Здесь прохождение
Загрузите и установите AWS CLI на свой компьютер
Установите интерфейс командной строки AWS с помощью установщика MSI (Windows)
Установите интерфейс командной строки AWS с помощью комплектного установщика (Linux, OS X или Unix)
Настроить интерфейс командной строки AWS
![enter image description here]()
Убедитесь, что вы ввели действительный ключ доступа и секретный ключ, которые вы получили при создании учетной записи
Синхронизируйте ведро s3 с помощью следующей команды
aws s3 sync s3://yourbucket /local/path
Замените вышеприведенную команду следующими данными
yourbucket >> ваше ведро s3, которое вы хотите скачать
/local/path >> путь в вашей локальной системе, куда вы хотите скачать все файлы
Надеюсь это поможет!
Ответ 5
Загрузить с помощью AWS S3 CLI:
aws s3 cp s3://WholeBucket LocalFolder --recursive
aws s3 cp s3://Bucket/Folder LocalFolder --recursive
Чтобы загрузить с помощью кода, используйте AWS SDK.
Чтобы загрузить с помощью графического интерфейса, используйте Cyberduck.
Надеюсь, что это поможет...:)
Ответ 6
Браузер S3 - самый простой способ, который я нашел. Это отличное программное обеспечение... И это бесплатно для некоммерческого использования. Только для Windows
http://s3browser.com/
Ответ 7
Если вы используете Visual Studio, загрузите http://aws.amazon.com/visualstudio/
После установки перейдите в Visual Studio - AWS Explorer - S3 - Ваше ведро - Дважды щелкните
В окне вы сможете выбрать все файлы. Щелкните правой кнопкой мыши и загрузите файлы.
Ответ 8
Другим вариантом, который может помочь некоторым пользователям osx, является передавать. Это программа ftp, которая также позволяет подключаться к вашим файлам s3. И он имеет возможность монтировать любое хранилище ftp или s3 в качестве папки в finder. Но это только в течение ограниченного времени.
Ответ 9
Я немного поработал для s3, и я не нашел простой способ загрузить целую ведро.
Если вы хотите закодировать в Java, jets3t lib прост в использовании, чтобы создать список ведер и перебрать этот список, чтобы загрузить их.
http://jets3t.s3.amazonaws.com/downloads.html
сначала получите набор закрытых личных ключей из консула управления AWS, чтобы вы могли создать объект S3service...
AWSCredentials awsCredentials = new AWSCredentials(YourAccessKey, YourAwsSecretKey);
s3Service = new RestS3Service(awsCredentials);
затем получите массив объектов ваших ведер...
S3Object[] objects = s3Service.listObjects(YourBucketNameString);
наконец, итерации по этому массиву для загрузки объектов по одному с помощью этого кода...
S3Object obj = s3Service.getObject(bucket, fileName);
file = obj.getDataInputStream();
Я установил код подключения в потокобезопасный синглтон. Необходимый синтаксис try/catch был опущен по понятным причинам.
Если вы предпочитаете код на Python, вы можете использовать Boto.
PS после осмотра BucketExplorer я делаю то, что вы хотите.
https://forums.aws.amazon.com/thread.jspa?messageID=248429
Ответ 10
Используйте эту команду с CLI AWS:
aws s3 cp s3://bucketname. --recursive
Ответ 11
Ответ от @Layke хорош, но если у вас есть тонна данных и вы не хотите ждать вечно, вам следует обратить пристальное внимание на эту документацию о том, как получить команду синхронизации CLI AWS S3 для синхронизации сегментов с массовой распараллеливанием. Следующие команды сообщат CLI 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
или же
aws s3 sync s3://source-bucket/source-path c:\my\local\data\path
В системе с процессором 4 ядра и 16 ГБ ОЗУ, для таких случаев, как у меня (файлы 3-50 ГБ), скорость синхронизации/копирования была увеличена с 9,5 МБ/с до 700 + МБ/с, что в 70 раз больше, чем в конфигурации по умолчанию.
Ответ 12
Если вы используете Firefox с S3Fox, это позволяет вам выбирать все файлы (shift-select first и last) и rightclick и загружать все... Я сделал это с 500 + файлами без проблем
Ответ 13
В Windows мой предпочтительный инструмент GUI для этого - это Cloudberry Explorer для S3. http://www.cloudberrylab.com/free-amazon-s3-explorer-cloudfront-IAM.aspx. Имеет довольно полированный файловый проводник, ftp-подобный интерфейс.
Ответ 14
Вы можете сделать это с помощью https://github.com/minio/mc:
mc cp -r https://s3-us-west-2.amazonaws.com/bucketName/ localdir
mc также поддерживает сеансы, возобновляемые загрузки, загрузки и многое другое. mc
поддерживает операционные системы Linux, OS X и Windows. Написано в Golang и выпущено под Apache версии 2.0.
Ответ 15
Если у вас есть только файлы (нет подкаталогов), быстрое решение - выбрать все файлы (click
для первого, Shift+click
последним) и нажать Enter
или right click
и выбрать Open
. Для большинства файлов данных это загрузит их прямо на ваш компьютер.
Ответ 16
AWS SDK API будет только лучшим вариантом для загрузки всей папки и репозитория на s3 и загрузки всей корзины s3 локально.
Для загрузки всей папки в s3
aws s3 sync . s3://BucketName
для загрузки всего ведра s3 локально
aws s3 sync s3://BucketName .
Вы также можете назначить путь Как и BucketName/Path для конкретной папки в s3 для загрузки
Ответ 17
Чтобы добавить еще один вариант графического интерфейса, мы используем функциональность WinSCP S3. Это очень легко подключить, требуя только ваш ключ доступа и секретный ключ в пользовательском интерфейсе. Затем вы можете просматривать и загружать любые файлы, которые вам нужны, из любых доступных групп, включая рекурсивные загрузки вложенных папок.
Поскольку очистка нового программного обеспечения с помощью безопасности может быть сложной задачей, а WinSCP довольно распространен, может быть действительно полезно просто использовать его, а не пытаться установить более специализированную утилиту.
Ответ 18
-
Пользователю Windows необходимо загрузить S3EXPLORER по этой ссылке, которая также содержит инструкции по установке: - http://s3browser.com/download.aspx
-
Затем предоставите вам учетные данные AWS, такие как secretkey, accesskey и region, в s3explorer, эта ссылка содержит инструкцию по конфигурации для s3explorer: Копировать вставить ссылку в brower: s3browser.com/s3browser-first-run.aspx
-
Теперь все ваши ведра s3 будут видны на левой панели s3explorer.
-
Просто выберите ведро и нажмите "Меню ведер" в верхнем левом углу, затем выберите "Загрузить все файлы в опцию" в меню. Ниже приведен снимок экрана для этого:
Экран выбора ведра
-
Затем просмотрите папку для загрузки ведра в определенном месте
-
Нажмите "ОК", и начнется загрузка.
Ответ 19
aws sync - идеальное решение. Это не делает два пути. Это один путь от источника к месту назначения. Кроме того, если у вас много элементов в ковше, будет полезно сначала создать конечную точку s3, чтобы загрузка выполнялась быстрее (потому что загрузка не происходит через Интернет, а через интрасеть) и никаких сборов
Ответ 20
Вот некоторые вещи, чтобы загрузить все ведра, перечислить их, перечислить их содержимое.
//connection string
private static void dBConnection() {
app.setAwsCredentials(CONST.getAccessKey(), CONST.getSecretKey());
conn = new AmazonS3Client(app.getAwsCredentials());
app.setListOfBuckets(conn.listBuckets());
System.out.println(CONST.getConnectionSuccessfullMessage());
}
private static void downloadBucket() {
do {
for (S3ObjectSummary objectSummary : app.getS3Object().getObjectSummaries()) {
app.setBucketKey(objectSummary.getKey());
app.setBucketName(objectSummary.getBucketName());
if(objectSummary.getKey().contains(CONST.getDesiredKey())){
//DOWNLOAD
try
{
s3Client = new AmazonS3Client(new ProfileCredentialsProvider());
s3Client.getObject(
new GetObjectRequest(app.getBucketName(),app.getBucketKey()),
new File(app.getDownloadedBucket())
);
} catch (IOException e) {
e.printStackTrace();
}
do
{
if(app.getBackUpExist() == true){
System.out.println("Converting back up file");
app.setCurrentPacsId(objectSummary.getKey());
passIn = app.getDataBaseFile();
CONVERT= new DataConversion(passIn);
System.out.println(CONST.getFileDownloadedMessage());
}
}
while(app.getObjectExist()==true);
if(app.getObjectExist()== false)
{
app.setNoObjectFound(true);
}
}
}
app.setS3Object(conn.listNextBatchOfObjects(app.getS3Object()));
}
while (app.getS3Object().isTruncated());
}
/---------------------------- Методы расширения ---------------- ---------------------/
//Unzip bucket after download
public static void unzipBucket() throws IOException {
unzip = new UnZipBuckets();
unzip.unZipIt(app.getDownloadedBucket());
System.out.println(CONST.getFileUnzippedMessage());
}
//list all S3 buckets
public static void listAllBuckets(){
for (Bucket bucket : app.getListOfBuckets()) {
String bucketName = bucket.getName();
System.out.println(bucketName + "\t" + StringUtils.fromDate(bucket.getCreationDate()));
}
}
//Get the contents from the auto back up bucket
public static void listAllBucketContents(){
do {
for (S3ObjectSummary objectSummary : app.getS3Object().getObjectSummaries()) {
if(objectSummary.getKey().contains(CONST.getDesiredKey())){
System.out.println(objectSummary.getKey() + "\t" + objectSummary.getSize() + "\t" + StringUtils.fromDate(objectSummary.getLastModified()));
app.setBackUpCount(app.getBackUpCount() + 1);
}
}
app.setS3Object(conn.listNextBatchOfObjects(app.getS3Object()));
}
while (app.getS3Object().isTruncated());
System.out.println("There are a total of : " + app.getBackUpCount() + " buckets.");
}
}
Ответ 21
Вы можете просто получить его с помощью команды s3cmd:
s3cmd get --recursive --continue s3://test-bucket local-directory/
Ответ 22
Как объяснил Нил Баат в этом блоге, для этой цели можно использовать много разных инструментов. Некоторые из них предоставляются AWS, а большинство - сторонними инструментами. Все эти инструменты требуют сохранения ключа учетной записи AWS и секрета в самом инструменте. Будьте очень осторожны при использовании сторонних инструментов, поскольку учетные данные, которые вы сохраняете, могут стоить вам, всей вашей ценности и привести к смерти.
Поэтому я всегда рекомендую использовать для этой цели интерфейс командной строки AWS. Вы можете просто установить это по этой ссылке. Затем выполните следующую команду и сохраните ключ, секретные значения в 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>
Ответ 23
Если вы хотите только загрузить пакет с AWS, сначала установите CLI AWS на своем компьютере. В терминале измените каталог, куда вы хотите скачать файлы и выполните эту команду.
aws s3 sync s3://bucket-name .
Если вы также хотите синхронизировать как локальный каталог, так и каталог s3 (если вы добавили некоторые файлы в локальную папку), выполните следующую команду:
aws s3 sync . s3://bucket-name
Ответ 24
Расширенные приложения Chrome-s3
вы можете использовать его бесплатно
Наконец, я использовал кукурузу, и это было круто
облачная ягода
Ответ 25
Как сказал @layke, лучше всего скачать файл с S3 cli, это безопасно и надежно. Но в некоторых случаях люди должны использовать wget для загрузки файла, и вот решение
aws s3 presign s3://<your_bucket_name/>
Это приведет к тому, что вы получите временный общедоступный URL-адрес, который вы можете использовать для загрузки контента с S3 с помощью presign_url, в вашем случае - с помощью wget или любого другого загрузочного клиента.
Ответ 26
Мой комментарий не добавляет новое решение. Как говорили многие здесь, aws s3 sync
- лучшая. Но никто не указал на мощный вариант: dryrun
. Эта опция позволяет вам увидеть, что будет загружено/загружено с/на s3, когда вы используете sync
. Это действительно полезно, когда вы не хотите перезаписывать контент ни в вашем локальном хранилище, ни в сегменте s3. Вот как это используется:
aws s3 sync <source> <destination> --dryrun
Я использовал его все время, прежде чем помещать новый контент в корзину, чтобы не загружать нежелательные изменения.
Ответ 27
Попробуйте эту команду:
aws s3 sync yourBucketnameDirectory yourLocalDirectory
Например, если ваше имя myBucket
- myBucket
а локальный каталог - c:\local
, то:
aws s3 sync s3://myBucket c:\local
Для получения дополнительной информации о awscli проверьте эту установку aws cli
Ответ 28
AWS CLI - лучший вариант для загрузки всей корзины S3 локально.
-
Установите AWS CLI.
-
Настройте интерфейс командной строки AWS для использования учетных данных безопасности по умолчанию и региона AWS по умолчанию.
-
Чтобы загрузить всю корзину S3, используйте команду
aws s3 sync s3://yourbucketname localpath
Ссылка на использование AWS cli для различных сервисов AWS: https://docs.aws.amazon.com/cli/latest/reference/
Ответ 29
Вы можете использовать эту команду AWS cli для загрузки всего содержимого сегмента S3 в локальную папку.
aws s3 sync s3://your-bucket-name "Local Folder Path"
Если вы видите ошибку, как это
fatal error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)
--no-verify-ssl (логическое)
По умолчанию интерфейс командной строки AWS использует SSL при взаимодействии со службами AWS. Для каждого SSL-соединения AWS CLI будет проверять SSL-сертификаты. Этот параметр переопределяет поведение по умолчанию при проверке сертификатов SSL. ссылка
Используйте этот тег с командой --no-verify-ssl
aws s3 sync s3://your-bucket-name "Local Folder Path" --no-verify-ssl
Ответ 30
Если s4cmd
достаточно большая, есть команда s4cmd
которая выполняет параллельные соединения и s4cmd
время загрузки:
Чтобы установить его на Debian, как
apt install s4cmd
Если у вас есть пункт:
pip install s4cmd
Он прочитает файл ~/.s3cfg
если он есть (если не установить s3cmd
и не запустить s3cmd --configure
), или вы можете указать --access-key=ACCESS_KEY --secret-key=SECRET_KEY
в команде.
s3cmd
похож на s3cmd
. В вашем случае рекомендуется sync
как вы можете отменить загрузку и начать ее заново без необходимости повторной загрузки файлов.
s4cmd [--access-key=ACCESS_KEY --secret-key=SECRET_KEY] sync s3://<your-bucket> /some/local/dir
Будьте внимательны, если вы загружаете много данных (> 1 ТБ), это может повлиять на ваш счет, сначала рассчитайте, какой будет стоимость.