Download di un intero bucket S3?

Ho notato che non sembra esserci un’opzione per scaricare un intero bucket S3 dalla Console di gestione AWS.

C’è un modo semplice per prendere tutto in uno dei miei secchi? Stavo pensando di rendere pubblica la cartella radice, usando wget per afferrare tutto e renderlo nuovamente privato, ma non so se c’è un modo più semplice.

AWS CLI

Documentazione per AWS CLI

AWS ha recentemente rilasciato i suoi strumenti a riga di comando. Funziona molto come Boto e può essere installato usando sudo easy_install awscli o sudo pip install awscli

Una volta installato, puoi semplicemente eseguire:

Comando :

 aws s3 sync s3://mybucket . 

Uscita :

 download: s3://mybucket/test.txt to test.txt download: s3://mybucket/test2.txt to test2.txt 

Questo scaricherà tutti i tuoi file (sincronizzazione unidirezionale). Non cancellerà alcun file esistente nella tua directory corrente (a meno che tu non specifichi –delete ), e non cambierà o cancellerà alcun file su S3.

È inoltre ansible eseguire il bucket S3 su bucket S3 o sincronizzazione locale su S3 bucket.

Controlla la documentazione e altri esempi:

http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html

Puoi usare s3cmd per scaricare il tuo bucket.

 s3cmd --configure s3cmd sync s3://bucketnamehere/folder /destination/folder 

Aggiornare

C’è un altro strumento che puoi usare chiamato Rclone . Di seguito è riportato un esempio di codice nella documentazione di Rclone.

 rclone sync /home/local/directory remote:bucket 

Ho usato diversi metodi per copiare i dati di Amazon S3 su un computer locale, incluso s3cmd, e di gran lunga il più semplice è Cyberduck . Tutto quello che devi fare è inserire le credenziali di Amazon e utilizzare l’interfaccia semplice per scaricare / caricare / sincronizzare i tuoi bucket / cartelle / file.

Immagine dello schermo

Per scaricare utilizzando la CLI di AWS S3:

 aws s3 cp s3://WholeBucket LocalFolder --recursive aws s3 cp s3://Bucket/Folder LocalFolder --recursive 

Per scaricare utilizzando il codice, utilizzare AWS SDK .

Per scaricare utilizzando la GUI, utilizzare Cyberduck .

Spero che sia d’aiuto.. 🙂

Hai praticamente molte opzioni per farlo, ma la migliore è usare la CLI di AWS

Ecco una soluzione

  • Passo 1

Scarica e installa AWS CLI nella tua macchina

Installa la CLI di AWS utilizzando MSI Installer (Windows)

Installa la CLI di AWS utilizzando il programma di installazione in bundle (Linux, OS X o Unix)

  • Passo 2

Configura la CLI di AWS

inserisci la descrizione dell'immagine qui

Assicurati di inserire una chiave di accesso valida e una chiave segreta che hai ricevuto quando hai creato l’account

  • Passaggio 3

Sincronizza il secchio s3 con il seguente comando

 aws s3 sync s3://yourbucket /local/path 

Sostituisci il comando precedente con i seguenti dati

yourbucket >> il tuo secchio s3 che vuoi scaricare

/ local / path >> percorso nel sistema locale in cui si desidera scaricare tutti i file

Spero che questo ti aiuti!

S3 Browser è il modo più semplice che ho trovato. È un software eccellente … ed è gratuito per uso non commerciale. Solo per Windows.

http://s3browser.com/

Se usi Visual Studio, scarica http://aws.amazon.com/visualstudio/

Dopo l’installazione, vai a Visual Studio – AWS Explorer – S3 – Il tuo secchio – Doppio clic

Nella finestra sarai in grado di selezionare tutti i file. Fare clic destro e scaricare i file.

Un’altra opzione che potrebbe aiutare alcuni utenti di osx , è trasmettere . È un programma ftp che ti permette anche di connetterti ai tuoi file s3. E ha un’opzione per montare qualsiasi archivio ftp o s3 come cartella nel Finder. Ma è solo per un tempo limitato.

Ho fatto un po ‘di sviluppo per s3 e non ho trovato un modo semplice per scaricare un intero bucket. Se vuoi programmare in Java, la lib di jets3t è facile da usare per creare un elenco di bucket e iterare su quell’elenco per scaricarli.

http://jets3t.s3.amazonaws.com/downloads.html

per prima cosa ottieni un set di chiavi private pubbliche dalla console di gestione AWS in modo da poter creare un object S3service …

 AWSCredentials awsCredentials = new AWSCredentials(YourAccessKey, YourAwsSecretKey); s3Service = new RestS3Service(awsCredentials); 

quindi ottieni una serie di oggetti bucket …

 S3Object[] objects = s3Service.listObjects(YourBucketNameString); 

infine, scorrere su quell’array per scaricare gli oggetti uno alla volta con questo codice …

 S3Object obj = s3Service.getObject(bucket, fileName); file = obj.getDataInputStream(); 

Ho inserito il codice di connessione in un singleton thread-safe. La syntax try / catch necessaria è stata omessa per ovvi motivi.

Se preferisci il codice in Python, puoi usare invece Boto.

PS dopo aver guardato BucketExplorer, fai quello che vuoi. https://forums.aws.amazon.com/thread.jspa?messageID=248429

Usa questo comando con la CLI di AWS :

 aws s3 cp s3://bucketname. --recursive 

Se utilizzi Firefox con S3Fox, questo ti consente di selezionare tutti i file (seleziona maiuscola prima e ultima) e fai clic destro e scarica tutto … l’ho fatto con più di 500 file senza problemi

La risposta di @Layke è buona, ma se hai un sacco di dati e non vuoi aspettare per sempre, dovresti prestare molta attenzione a questa documentazione su come ottenere il comando SYS CLI di AWS S3 per sincronizzare i bucket con una grande parallelizzazione . I seguenti comandi indicheranno alla CLI AWS di utilizzare 1.000 thread per eseguire i lavori (ognuno un piccolo file o una parte di una copia multiparte) e guardare avanti 100.000 lavori:

 aws configure set default.s3.max_concurrent_requests 1000 aws configure set default.s3.max_queue_size 100000 

Dopo aver eseguito questi, è ansible utilizzare il comando di sincronizzazione semplice come segue:

 aws s3 sync s3://source-bucket/source-path s3://destination-bucket/destination-path 

o

 aws s3 sync s3://source-bucket/source-path c:\my\local\data\path 

Su un sistema con CPU 4 core e 16 GB di RAM, per casi come il mio (file da 3 a 50 GB) la velocità di sincronizzazione / copia passava da circa 9,5 MiB / sa 700 + MiB / s, un aumento della velocità di 70 volte rispetto alla configurazione predefinita.

Quando in Windows, il mio strumento GUI preferito per questo è Cloudberry Explorer per S3., http://www.cloudberrylab.com/free-amazon-s3-explorer-cloudfront-IAM.aspx . Ha un file explorer abbastanza shiny, interfaccia simile a ftp.

Puoi farlo con https://github.com/minio/mc :

 mc cp -r https://s3-us-west-2.amazonaws.com/bucketName/ localdir 

mc supporta anche sessioni, download ripristinabili, caricamenti e molti altri. mc supporta i sistemi operativi Linux, OS X e Windows. Scritto in Golang e rilasciato con Apache versione 2.0.

Se si dispone solo di file (senza sottodirectory), una soluzione rapida è selezionare tutti i file ( click sul primo, Shift+click sull’ultimo) e Enter o right click e selezionare Open . Per la maggior parte dei file di dati questo li scaricherà direttamente sul tuo computer.

  1. L’utente di Windows deve scaricare S3EXPLORER da questo collegamento che ha anche le istruzioni di installazione: – http://s3browser.com/download.aspx

  2. Quindi fornisci credenziali AWS come secretkey, accesskey e region a s3explorer, questo link contiene istruzioni di configurazione per s3explorer: Copia Paste Link in brower: s3browser.com/s3browser-first-run.aspx

  3. Ora tutti i tuoi bucket s3 saranno visibili sul pannello sinistro di s3explorer.

  4. Basta selezionare il bucket e fare clic sul menu Benetti nell’angolo in alto a sinistra, quindi selezionare Scarica tutti i file su un’opzione dal menu. Di seguito è lo screenshot per lo stesso:

Schermo di selezione della benna

  1. Quindi sfogliare una cartella per scaricare il bucket in un punto particolare

  2. Fare clic su OK e il download inizierà.

la sincronizzazione di aws è la soluzione perfetta. Non fa un doppio senso .. è unidirezionale dalla fonte alla destinazione. Inoltre, se nel bucket sono presenti molti articoli, è consigliabile creare prima l’endpoint s3 in modo che il download avvenga più velocemente (poiché il download non avviene tramite Internet ma tramite la rete Intranet) e senza costi aggiuntivi

Ecco alcune cose per scaricare tutti i bucket, elencarli, elencarne i contenuti.

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

/ —————————- Metodi di estensione ——————- —————— /

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

}

Potresti semplicemente ottenerlo con il comando s3cmd :

 s3cmd get --recursive --continue s3://test-bucket local-directory/ 

Come Neel Bhaat ha spiegato in questo blog , ci sono molti strumenti diversi che possono essere utilizzati per questo scopo. Alcuni sono forniti da AWS, dove la maggior parte sono strumenti di terze parti. Tutti questi strumenti richiedono di salvare la chiave e il segreto dell’account AWS nello strumento stesso. Sii molto cauto quando usi strumenti di terze parti, poiché le credenziali che salvi potrebbero costarti, tutto il tuo valore e farti morire.

Pertanto, consiglio sempre di utilizzare la CLI di AWS per questo scopo. Puoi semplicemente installare questo da questo link . Successivamente, esegui il seguente comando e salva la tua chiave, i valori segreti nella CLI di AWS.

 aws configure 

E usa il seguente comando per sincronizzare il tuo bucket di AWS S3 sul tuo computer locale. (La macchina locale dovrebbe avere la CLI AWS installata)

 aws s3 sync   

Esempi:

1) Per AWS S3 su memoria locale

 aws s3 sync   

2) Da archivio locale ad AWS S3

 aws s3 sync   

3) Dal secchio AWS s3 a un altro secchio

 aws s3 sync   

App per Chrome estese-s3-browser

puoi usarlo gratis

finalmente ho usato la bacca del cloud e l’ho comprato ed era una nuvola di bacche fresche