Einen ganzen S3-Bucket herunterladen?

705

Mir ist aufgefallen, dass es anscheinend keine Option gibt, einen gesamten S3-Bucket von der AWS Management Console herunterzuladen.

Gibt es eine einfache Möglichkeit, alles in einen meiner Eimer zu packen? Ich habe darüber nachgedacht, den Stammordner öffentlich wgetzu machen, alles abzurufen und dann wieder privat zu machen, aber ich weiß nicht, ob es einen einfacheren Weg gibt.

Rugbert
quelle
4
Wie viele Leute hier sagten, aws s3 syncist das Beste. Aber niemand wies auf eine mächtige Option hin : dryrun. Mit dieser Option können Sie sehen, was bei Verwendung von / nach s3 heruntergeladen / hochgeladen wird sync. Dies ist sehr hilfreich, wenn Sie Inhalte weder in Ihrem lokalen noch in einem S3-Bucket überschreiben möchten. So wird es verwendet: aws s3 sync <source> <destination> --dryrunIch habe es die ganze Zeit verwendet, bevor ich neue Inhalte in einen Bucket verschoben habe, um keine unerwünschten Änderungen hochzuladen.
Perimosh

Antworten:

1334

AWS CLI

Weitere Informationen finden Sie in der " AWS CLI-Befehlsreferenz ".

AWS hat kürzlich seine Befehlszeilentools veröffentlicht, die ähnlich wie Boto funktionieren und mit installiert werden können

sudo easy_install awscli

oder

sudo pip install awscli

Nach der Installation können Sie einfach Folgendes ausführen:

aws s3 sync s3://<source_bucket> <local_destination>

Zum Beispiel:

aws s3 sync s3://mybucket .

lädt alle Objekte in mybucketdas aktuelle Verzeichnis herunter .

Und wird ausgegeben:

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

Dadurch werden alle Ihre Dateien über eine Einweg-Synchronisierung heruntergeladen. Es wird nicht alle vorhandenen Dateien im aktuellen Verzeichnis löschen , wenn Sie angeben , und es wird keine Dateien auf S3 ändern oder löschen. --delete

Sie können auch die Synchronisierung von S3-Bucket zu S3-Bucket oder lokal zu S3-Bucket durchführen.

Lesen Sie die Dokumentation und andere Beispiele .

Während das obige Beispiel zeigt, wie ein vollständiger Bucket heruntergeladen wird, können Sie einen Ordner auch rekursiv herunterladen, indem Sie ausführen

aws s3 cp s3://BUCKETNAME/PATH/TO/FOLDER LocalFolderName --recursive

Dadurch wird die CLI angewiesen, alle Dateien und Ordnerschlüssel rekursiv innerhalb des PATH/TO/FOLDERVerzeichnisses im BUCKETNAMEBucket herunterzuladen .

Layke
quelle
223
Führen Sie zuerst aus aws configureund fügen Sie Ihr access keyund hinzu, secret access keydas Sie hier finden .
Erwin Rooijakkers
12
Hier finden Sie das Windows-Installationsprogramm aws.amazon.com/cli . Die Zugriffsschlüssel-ID wird von der Umgebungsvariablen "AWS_ACCESS_KEY_ID" und Ihr geheimer Schlüssel von "AWS_SECRET_ACCESS_KEY" abgerufen.
Matt Bond
7
Ich habe es versucht s3cmdund Cyberduck, aber für mich awscliwar es bei weitem der schnellste Weg, ~ 70.000 Dateien aus meinem Eimer herunterzuladen.
Arjen
11
Bitte beachten Sie, dass dieser Befehl zwar nur zum Herunterladen gestellt wird, dieser Befehl jedoch eine bidirektionale Synchronisierung zwischen Ihrem Verzeichnis und S3 durchführt. Wenn Sie nicht versuchen, etwas hochzuladen, stellen Sie sicher, dass das aktuelle Verzeichnis leer ist.
Jesse Crossen
15
@JesseCrossen Dieser aws s3 syncBefehl lädt nichts hoch , löscht jedoch Dateien lokal, wenn sie in S3 nicht vorhanden sind. Siehe die Dokumentation .
Flimm
168

Sie können s3cmdIhren Bucket herunterladen:

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

Es gibt ein anderes Tool, das Sie verwenden können rclone. Dies ist ein Codebeispiel in der Rclone-Dokumentation:

rclone sync /home/local/directory remote:bucket
Phil M.
quelle
5
Das ist ziemlich langsam. Vor allem, wenn Sie versuchen, es schrittweise zu verwenden. Gibt es eine Multithread-Lösung, mit der die Bandbreite gesättigt werden kann?
Peter Lada
Die Lösungen darunter sind besser, standardisierter und offen für mehr Plattformen
abc123
Dies funktioniert nicht für Anforderer zahlt Eimer (siehe arxiv.org/help/bulk_data_s3 ) :-(
Martin Thoma
Wie kann ich Ihre Lösung verwenden, wenn ich zum Herunterladen einen Mustervergleich durchführen muss? Meine Frage: stackoverflow.com/questions/25086722/…
Shrikant Kakani
84

Ich habe einige verschiedene Methoden verwendet, um Amazon S3-Daten auf einen lokalen Computer zu kopieren, einschließlich s3cmdund bei weitem am einfachsten ist Cyberduck .

Sie müssen lediglich Ihre Amazon-Anmeldeinformationen eingeben und über die einfache Oberfläche Ihre Buckets, Ordner oder Dateien herunterladen, hochladen und synchronisieren.

Bildschirmfoto

Wedocando
quelle
Funktioniert super! Verfügbar für Windows und Mac (GPL).
Craastad
Cyberduck macht es auch einfach, öffentliche Dateien anonym herunterzuladen - s3cmd scheint Anmeldeinformationen zu erfordern
chrishiestand
Funktioniert auch hervorragend mit Transmit.
Undistraction
CLI gab mir einen Fehler, als ich versuchte, meinen Eimer zu retten, das funktionierte perfekt!
Lazar Kukolj
Oh, das kam unerwartet. Ich habe Cyberduck früher für FTP verwendet, aber nie damit gerechnet, dass es über S3-Konnektivität verfügt. Danke für einen tollen Hinweis!
Jskierbi
51

Sie haben viele Möglichkeiten, dies zu tun, aber die beste ist die Verwendung der AWS-CLI.

Hier ist ein Rundgang:

  1. Laden Sie AWS CLI herunter und installieren Sie es auf Ihrem Computer:

  2. Konfigurieren Sie die AWS CLI:

    Geben Sie hier die Bildbeschreibung ein

    Stellen Sie sicher, dass Sie einen gültigen Zugriff und geheime Schlüssel eingeben, die Sie beim Erstellen des Kontos erhalten haben.

  3. Synchronisieren Sie den S3-Bucket mit:

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

    Ersetzen Sie im obigen Befehl die folgenden Felder:

    • yourbucket >> Ihren S3-Bucket, den Sie herunterladen möchten.
    • /local/path >> Pfad in Ihrem lokalen System, in den Sie alle Dateien herunterladen möchten.
Darshan Lila
quelle
Ich habe dies anstelle von Cyberduck verwendet, da Cyberduck Dateien "vorbereiten" muss, bevor der Download beginnt. Für große Mengen von Dateien, die ewig zu dauern schienen und ich konnte keine Informationen darüber finden, was "Vorbereiten" tatsächlich bewirkt. CLI begann sofort mit dem Download
Tashows
Stellen Sie sicher, dass Sie dieses s3://Präfix im Bucket-Namen haben !!! Mit aws s3 lsbrauchen Sie dieses s3://Präfix nicht, aber Sie brauchen einen cpBefehl.
cjmling
43

So laden Sie mit AWS S3 CLI herunter:

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

Verwenden Sie zum Herunterladen mit Code das AWS SDK.

Verwenden Sie zum Herunterladen über die GUI Cyberduck.

Sarat Chandra
quelle
1
Wie ignoriere ich einige Dateien oder Ordner?
Nabin
1
@Nabin Sie können --include & --exclude mit Platzhalter verwenden, um eine Datei oder einen Ordner wie aws s3 cp s3://my-bucket-name ./local-folder --recursive --include "*" --exclude "excludeFolder/*" --exclude "includeFolder/excludeFile.txt"
folgt
21

Für Windows ist der S3-Browser der einfachste Weg, den ich gefunden habe. Es ist eine ausgezeichnete Software und für den nichtkommerziellen Gebrauch kostenlos.

dworrad
quelle
3
Ich habe gerade die Option "Alle Dateien herunterladen in ..." ausprobiert (die vermutlich dem "gesamten s3-Bucket herunterladen" entspricht und besagt, dass ich die Pro-Version benötige.
Jack Ukleja
2
Update: Aber ich konnte einen ganzen Ordner innerhalb des
Buckets
Ja, die kostenlose Version ist ziemlich begrenzt, Sie können alle auswählen und herunterladen, aber auf nur 2 gleichzeitige Übertragungen beschränkt
Hayden Thring
Ich suchte nach einer einfachen Windows-Version, nachdem ich unter Ubuntu 17.1 und s3cmd einen Python3-Unterstützungsfehler erhalten hatte. Dies funktionierte gut.
Edencorbin
21

Wenn Sie Visual Studio verwenden, laden Sie " AWS Toolkit for Visual Studio " herunter .

Wechseln Sie nach der Installation zu Visual Studio - AWS Explorer - S3 - Ihr Bucket - Doppelklicken Sie

Im Fenster können Sie alle Dateien auswählen. Klicken Sie mit der rechten Maustaste und laden Sie die Dateien herunter.

Ives.me
quelle
13

Die Antwort von @Layke ist gut, aber wenn Sie eine Menge Daten haben und nicht ewig warten möchten, sollten Sie " AWS CLI S3-Konfiguration " lesen .

Die folgenden Befehle weisen die AWS-CLI an, 1.000 Threads zum Ausführen von Jobs (jeweils eine kleine Datei oder ein Teil einer mehrteiligen Kopie) zu verwenden und 100.000 Jobs vorauszusehen:

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

Nachdem Sie diese ausgeführt haben, können Sie den einfachen syncBefehl verwenden:

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

oder

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

Auf einem System mit CPU 4-Kernen und 16 GB RAM stieg die Synchronisierungs- / Kopiergeschwindigkeit in Fällen wie meinem (3-50 GB-Dateien) von etwa 9,5 MB / s auf 700 + MiB / s, was einer Geschwindigkeitssteigerung von 70x gegenüber der Standardkonfiguration entspricht.

James
quelle
1
Das ist die wahre Antwort. habe es gerade getestet, von ec2 hat es ca. 2.3GB / min übertragen. ohne die gleichzeitigen Optionen ca. 1 GB / min. Lebensretter.
Karsten
12

Verwenden Sie diesen Befehl mit der AWS-CLI :

aws s3 cp s3://bucketname . --recursive
Ashack
quelle
12

Eine weitere Option, die einigen OS X-Benutzern helfen könnte, ist Senden.

Es ist ein FTP-Programm, mit dem Sie auch eine Verbindung zu Ihren S3-Dateien herstellen können. Es besteht die Möglichkeit, einen beliebigen FTP- oder S3-Speicher als Ordner im Finder bereitzustellen, dies ist jedoch nur für eine begrenzte Zeit möglich.

Diederik
quelle
9

Ich habe ein bisschen für S3 entwickelt und keine einfache Möglichkeit gefunden, einen ganzen Bucket herunterzuladen.

Wenn Sie in Java codieren möchten, können Sie mit jets3t lib einfach eine Liste von Buckets erstellen und diese Liste durchlaufen, um sie herunterzuladen.

Rufen Sie zunächst einen öffentlich-privaten Schlüsselsatz vom AWS-Verwaltungskonsul ab, damit Sie ein S3service-Objekt erstellen können:

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

Holen Sie sich dann ein Array Ihrer Buckets-Objekte:

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

Zum Schluss iterieren Sie über dieses Array, um die Objekte einzeln herunterzuladen mit:

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

Ich habe den Verbindungscode in einen threadsicheren Singleton eingefügt. Die erforderliche Try / Catch-Syntax wurde aus offensichtlichen Gründen weggelassen.

Wenn Sie lieber in Python codieren möchten, können Sie stattdessen Boto verwenden.

Nachdem Sie sich in BucketExplorer umgesehen haben, kann " Herunterladen des gesamten Buckets" das tun, was Sie wollen.

jeremyjjbrown
quelle
Wenn Sie keine Java-Lösung benötigen, verwenden Sie die Antwort aws cli oben.
Jeremyjjbrown
Erstellen Sie einen neuen Ordner und so das gleiche
Jisson
7

Die AWS SDK-API bietet nur die beste Option zum Hochladen des gesamten Ordners und Repos auf s3 und zum lokalen Herunterladen des gesamten Buckets von s3.

Zum Hochladen des gesamten Ordners auf s3

aws s3 sync . s3://BucketName

zum Download des gesamten s3-Buckets lokal

aws s3 sync s3://BucketName . 

Sie können auch einen Pfad wie BucketName / Path für einen bestimmten Ordner in s3 zum Herunterladen zuweisen

Harte Manvar
quelle
6

Sie können dies mit https://github.com/minio/mc tun :

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

mc unterstützt auch Sitzungen, wiederaufnehmbare Downloads, Uploads und vieles mehr. mcunterstützt Linux-, OS X- und Windows-Betriebssysteme. Geschrieben in Golang und veröffentlicht unter Apache Version 2.0.

Krishna Srinivas
quelle
5

Wenn Sie Firefox mit S3Fox verwenden, können Sie damit alle Dateien auswählen (Shift-Select zuerst und zuletzt) ​​und mit der rechten Maustaste klicken und alle herunterladen ... Ich habe es mit mehr als 500 Dateien ohne Problem gemacht

jpw
quelle
Dies funktioniert nicht für Unterordner innerhalb eines Buckets, selbst wenn die "Pseudoordner" in der AWS-Konsole erstellt wurden. (Zum Zeitpunkt des Schreibens dieses Kommentars)
Wesley
Bestätigt, dass es nicht funktioniert, ich habe ungefähr 12k Schlüssel der obersten Ebene = Unterordner), S3Fox startet nicht einmal. Bestehen Sie auch auf der Erlaubnis, alle Eimer aufzulisten!
Peter Lada
3

Wenn Sie dort nur Dateien haben (keine Unterverzeichnisse), besteht eine schnelle Lösung darin, alle Dateien ( clickim ersten, Shift+clickim letzten) auszuwählen und auf Enteroder zu right clickklicken Open. Bei den meisten Datendateien werden diese direkt auf Ihren Computer heruntergeladen.

Lukasz Czerwinski
quelle
3

Um eine weitere GUI-Option hinzuzufügen, verwenden wir die S3-Funktionalität von WinSCP . Die Verbindung ist sehr einfach und erfordert nur Ihren Zugriffsschlüssel und Ihren geheimen Schlüssel in der Benutzeroberfläche. Sie können dann alle gewünschten Dateien aus allen verfügbaren Buckets durchsuchen und herunterladen, einschließlich rekursiver Downloads verschachtelter Ordner.

Da es eine Herausforderung sein kann, neue Software durch Sicherheit zu löschen, und WinSCP weit verbreitet ist, kann es sehr vorteilhaft sein, sie nur zu verwenden, anstatt zu versuchen, ein spezialisierteres Dienstprogramm zu installieren.

bsplosion
quelle
1
  1. Windows-Benutzer müssen S3EXPLORER über diesen Link herunterladen, der auch Installationsanweisungen enthält: - http://s3browser.com/download.aspx

  2. Geben Sie dann AWS-Anmeldeinformationen wie Secretkey, Accesskey und Region für den s3explorer ein. Dieser Link enthält Konfigurationsanweisungen für s3explorer: Kopieren Einfügen Link in Browser: s3browser.com/s3browser-first-run.aspx

  3. Jetzt sind alle s3-Buckets im linken Bereich von s3explorer sichtbar.

  4. Wählen Sie einfach den Bucket aus und klicken Sie oben links auf das Menü Buckets. Wählen Sie dann im Menü die Option Alle Dateien herunterladen in. Unten ist der Screenshot für das gleiche:

Eimerauswahlbildschirm

  1. Durchsuchen Sie dann einen Ordner, um den Bucket an einer bestimmten Stelle herunterzuladen

  2. Klicken Sie auf OK und Ihr Download beginnt.

Patrick R.
quelle
1

aws sync ist die perfekte Lösung. Es gibt keine Zweiwege. Es ist eine Einbahnstraße von der Quelle zum Ziel. Wenn Sie viele Elemente im Bucket haben, ist es eine gute Idee, zuerst einen s3-Endpunkt zu erstellen, damit der Download schneller (da der Download nicht über das Internet, sondern über das Intranet erfolgt) und ohne Gebühren erfolgt

Deepak Singhal
quelle
1

Hier sind einige Dinge, mit denen Sie alle Eimer herunterladen, auflisten und deren Inhalt auflisten können.

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

/ ---------------------------- Erweiterungsmethoden ------------------- ------------------ /

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

}}

John Hanewich
quelle
1

Sie können es einfach mit dem Befehl s3cmd erhalten :

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

Wie Neel Bhaat in diesem Blog erklärt hat , gibt es viele verschiedene Tools, die für diesen Zweck verwendet werden können. Einige werden von AWS bereitgestellt, wobei die meisten Tools von Drittanbietern sind. Für alle diese Tools müssen Sie Ihren AWS-Kontoschlüssel und Ihr Geheimnis im Tool selbst speichern. Seien Sie sehr vorsichtig, wenn Sie Tools von Drittanbietern verwenden, da die Anmeldeinformationen, die Sie speichern, Sie und Ihren gesamten Wert kosten und Sie umbringen können.

Daher empfehle ich immer, die AWS CLI für diesen Zweck zu verwenden. Sie können dies einfach über diesen Link installieren . Führen Sie als Nächstes den folgenden Befehl aus und speichern Sie Ihre geheimen Schlüsselwerte in AWS CLI.

aws configure

Verwenden Sie den folgenden Befehl, um Ihren AWS S3-Bucket mit Ihrem lokalen Computer zu synchronisieren. (Auf dem lokalen Computer sollte AWS CLI installiert sein.)

aws s3 sync <source> <destination>

Beispiele:

1) Für AWS S3 zum lokalen Speicher

aws s3 sync <S3Uri> <LocalPath>

2) Vom lokalen Speicher zum AWS S3

aws s3 sync <LocalPath> <S3Uri>

3) Vom AWS s3-Bucket zu einem anderen Bucket

aws s3 sync <S3Uri> <S3Uri> 
Keet Sugathadasa
quelle
Kann ich beispielsweise 3 auf einen Bucket-Ordner in einen anderen Bucket-Ordner verweisen? Eigentlich möchte ich einen Bucket-Ordner mit einem anderen Bucket-Ordner synchronisieren.
Lukai
@ Lukai ja. Dies ist, was ich in Beispiel 3 gegeben habe. Sie müssen nur die s3-Bucket-URIs von Quelle und Ziel haben
Keet Sugathadasa
1

Wenn Sie nur den Bucket von AWS herunterladen möchten, installieren Sie zuerst die AWS-CLI auf Ihrem Computer. Wechseln Sie im Terminal in das Verzeichnis, in das Sie die Dateien herunterladen möchten, und führen Sie diesen Befehl aus.

aws s3 sync s3://bucket-name .

Wenn Sie auch das lokale und das s3-Verzeichnis synchronisieren möchten (falls Sie einige Dateien im lokalen Ordner hinzugefügt haben), führen Sie den folgenden Befehl aus:

aws s3 sync . s3://bucket-name
Muzammil
quelle
1

AWS CLI ist die beste Option, um einen gesamten S3-Bucket lokal herunterzuladen.

  1. Installieren Sie AWS CLI.

  2. Konfigurieren Sie die AWS-CLI für die Verwendung der Standardsicherheitsanmeldeinformationen und der Standard-AWS-Region.

  3. Verwenden Sie den Befehl, um den gesamten S3-Bucket herunterzuladen

    aws s3 sync s3: // yourbucketname localpath

Verweis auf die Verwendung von AWS cli für verschiedene AWS-Services: https://docs.aws.amazon.com/cli/latest/reference/

singh30
quelle
1

Mit diesem AWS cli-Befehl können Sie den gesamten S3-Bucket-Inhalt in den lokalen Ordner herunterladen

aws s3 sync s3://your-bucket-name "Local Folder Path"

Wenn Sie einen solchen Fehler sehen

fatal error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)

--no-verify-ssl (Boolescher Wert)

Standardmäßig verwendet die AWS CLI SSL bei der Kommunikation mit AWS-Diensten. Für jede SSL-Verbindung überprüft die AWS CLI die SSL-Zertifikate. Diese Option überschreibt das Standardverhalten beim Überprüfen von SSL-Zertifikaten. Referenz

Verwenden Sie dieses Tag mit dem Befehl --no-verify-ssl

aws s3 sync s3://your-bucket-name "Local Folder Path" --no-verify-ssl
Dimuthu
quelle
Die Verwendung des s3 syncwird oben bereits mehrfach behandelt. + Es --no-verify-sslist ein Verbrechen, eine Verwendung von ohne Erklärung der Sicherheitsfolgen vorzuschlagen.
Martin Prikryl
Vielen Dank für die Informationen zur Sicherheit. Ich habe dieses Problem behoben und es mithilfe dieser Referenzdokumentation gelöst. Docs.aws.amazon.com/cli/latest/reference
Dimuthu
1

Wenn der Bucket ziemlich groß ist, wird ein Befehl aufgerufen, s4cmdder parallele Verbindungen herstellt und die Downloadzeit verbessert:

Um es auf Debian wie zu installieren

apt install s4cmd

Wenn Sie pip haben:

pip install s4cmd

Die ~/.s3cfgDatei wird gelesen , falls vorhanden (falls nicht installiert s3cmdund ausgeführt s3cmd --configure), oder Sie können sie --access-key=ACCESS_KEY --secret-key=SECRET_KEYim Befehl angeben .

Das Cli ist ähnlich wie s3cmd. In Ihrem Fall syncwird a empfohlen, da Sie den Download abbrechen und erneut starten können, ohne die Dateien erneut herunterladen zu müssen.

s4cmd [--access-key=ACCESS_KEY --secret-key=SECRET_KEY] sync s3://<your-bucket> /some/local/dir

Seien Sie vorsichtig, wenn Sie viele Daten herunterladen (> 1 TB). Dies kann sich auf Ihre Rechnung auswirken. Berechnen Sie zuerst, welche Kosten anfallen

Bartomeu
quelle
0

Wie @layke sagte, ist es die beste Vorgehensweise, die Datei von der S3-Cli herunterzuladen. Es ist sicher und sicher. In einigen Fällen müssen die Benutzer jedoch wget verwenden, um die Datei herunterzuladen. Hier ist die Lösung

aws s3 presign s3://<your_bucket_name/>

Mit diesem Presign erhalten Sie eine temporäre öffentliche URL, mit der Sie Inhalte von S3 mithilfe von presign_url herunterladen können, in Ihrem Fall mit wget oder einem anderen Download-Client.

Balaji JB
quelle
0

Versuchen Sie diesen Befehl:

aws s3 sync yourBucketnameDirectory yourLocalDirectory

Wenn beispielsweise Ihr Bucket-Name myBucketund das lokale Verzeichnis lautet c:\local, gilt Folgendes:

aws s3 sync s3://myBucket c:\local

Weitere Informationen zu awscli finden Sie in dieser aws cli-Installation

PKP
quelle