Загрузка всего ведра S3? - PullRequest
       42

Загрузка всего ведра S3?

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

Я заметил, что, похоже, нет возможности загрузить весь контейнер S3 из Консоли управления AWS.

Есть ли простой способ собрать все в одном из моих контейнеров?Я думал о том, чтобы сделать корневую папку общедоступной, используя wget, чтобы захватить все это, а затем снова сделать ее приватной, но я не знаю, есть ли более простой способ.

Ответы [ 29 ]

7 голосов
/ 05 января 2018

Ответ @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 раз выше конфигурация по умолчанию.

4 голосов
/ 14 сентября 2012

Если вы используете Firefox с S3Fox, это позволяет вам выбрать все файлы (shift-select first and last), щелкнуть правой кнопкой мыши и загрузить все ... Я сделал это с 500+ файлами без проблемы

4 голосов
/ 12 ноября 2015

Вы можете сделать это с помощью 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.

3 голосов
/ 18 марта 2019

Чтобы добавить еще один вариант графического интерфейса, мы используем Функциональность WinSCP S3 . Это очень легко подключить, требуя только ваш ключ доступа и секретный ключ в пользовательском интерфейсе. Затем вы можете просматривать и загружать любые файлы, которые вам нужны, из любых доступных групп, включая рекурсивные загрузки вложенных папок.

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

3 голосов
/ 06 февраля 2016

Если у вас есть только файлы (без подкаталогов), быстрое решение состоит в том, чтобы выбрать все файлы (click в первом, Shift+click в последнем) и нажать Enter или right click и выбрать Open.Для большинства файлов данных они будут загружены прямо на ваш компьютер.

3 голосов
/ 29 октября 2013

Когда в Windows я предпочитаю инструмент GUI для Cloudberry Explorer для S3., http://www.cloudberrylab.com/free-amazon-s3-explorer-cloudfront-IAM.aspx. Имеет довольно отполированный файловый менеджер, похожий на ftp интерфейс.

3 голосов
/ 27 декабря 2018

AWS SDK API будет только лучшим вариантом для загрузки всей папки и репо на s3 и загрузки всего пакета s3 локально.

Для загрузки всей папки в s3

aws s3 sync . s3://BucketName

для загрузкивесь s3 bucket локально

aws s3 sync s3://BucketName . 

вы также можете назначить путь Как BucketName / Path для конкретной папки в s3 для загрузки

1 голос
/ 20 сентября 2018

Если вы хотите только загрузить корзину из AWS, сначала установите CLI AWS на свой компьютер. В терминале перейдите в каталог, куда вы хотите скачать файлы и выполните эту команду.

aws s3 sync s3://bucket-name .

Если вы также хотите синхронизировать как локальные каталоги, так и каталоги s3 (если вы добавили некоторые файлы в локальную папку), выполните эту команду:

aws s3 sync . s3://bucket-name
1 голос
/ 13 мая 2018

Вы можете просто получить его с помощью команды s3cmd :

s3cmd get --recursive --continue s3://test-bucket local-directory/
1 голос
/ 23 июня 2017

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

    //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.");
}

}

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