Ich möchte die AWS S3-CLI verwenden, um eine vollständige Verzeichnisstruktur in einen S3-Bucket zu kopieren.
Bisher hat alles, was ich versucht habe, die Dateien in den Bucket kopiert, aber die Verzeichnisstruktur ist reduziert. (Anders ausgedrückt, jede Datei wird in das Stammverzeichnis des Buckets kopiert.)
Der Befehl, den ich benutze, ist:
aws s3 cp --recursive ./logdata/ s3://bucketname/
Ich habe auch versucht, den abschließenden Schrägstrich auf meiner Quellenbezeichnung (dh die Kopie aus dem Argument) wegzulassen. Ich habe auch einen Platzhalter verwendet, um alle Dateien zu kennzeichnen. Bei jedem Versuch werden die Protokolldateien einfach in das Stammverzeichnis des Buckets kopiert.
amazon-web-services
amazon-s3
agentv
quelle
quelle
aws s3 cp --recursive mylocalsrcdir s3://bucket/
dann wird es einfach auszudrücken , die Dateien in Ihrem lokalen Repository auf dem heißen Stein „root directory“ Wenn Sieaws s3 cp --recursive mydirectory s3://bucket/mydirectory
dann wird es die Verzeichnisstruktur auf dem Zielende neu zu erstellen.Antworten:
Ich glaube, Synchronisierung ist die Methode, die Sie wollen. Versuchen Sie dies stattdessen:
quelle
aws s3 sync ./logdata s3://bucketname/logdata
Danke für die Führung. --- vIch hatte diesen Fehler festgestellt, als ich einen dieser Befehle verwendet habe.
Ich dachte sogar daran, den S3-Bucket lokal zu mounten und dann rsync auszuführen, auch wenn dies fehlschlug (oder für einige Stunden zum Erliegen kam), da ich Tausende von Dateien habe.
Schließlich wirkte s3cmd wie ein Zauber.
Dies macht nicht nur die Arbeit gut und zeigt eine ziemlich ausführliche Ausgabe auf der Konsole, sondern lädt auch große Dateien in Teilen hoch.
quelle
Folgendes hat für mich funktioniert:
aws s3 cp ~/this_directory s3://bucketname/this_directory --recursive
AWS "erstellt" dann
this_directory
alle lokalen Inhalte und kopiert sie hinein.quelle
Verwenden Sie das folgende Skript zum Kopieren der Ordnerstruktur:
quelle
Ich konnte nicht bekommen
s3 sync
oders3 cp
innen mit 55 GB - Ordner auf einen zu arbeiten Tausenden von Dateien und mehr als 2 Dutzend Verzeichnissen. Der Versuch, den gesamten Ordner zu synchronisieren, würde dazu führen, dass awscli unbemerkt fehlschlägt, ohne dass etwas in den Bucket hochgeladen wird.Dies wurde getan, um zuerst alle Unterverzeichnisse und deren Inhalte zu synchronisieren (die Ordnerstruktur bleibt erhalten):
Dann habe ich dies getan, um die 30.000 Dateien in der obersten Ebene zu erhalten:
Stellen Sie sicher, dass Sie die Last auf dem Server beobachten (Protip, mit dem Sie
w
nur die Last anzeigen können ) undctrl-z
den Befehl anhalten, wenn die Last zu hoch wird. (fg
um es wieder fortzusetzen).Stellen Sie dies hier auf, falls es jemandem in einer ähnlichen Situation hilft.
Anmerkungen:
-mindepth 1
schließt aus.
-maxdepth 1
Verhindert, dass find Inhalte von Unterverzeichnissen auflistet, das3 sync
diese erfolgreich verarbeitet werden.cut -c 3-
Entfernt das "./" vom Anfang jedes Ergebnisses aus der Suche.quelle
Alternativ können Sie auch den Minio-Client aka mc ausprobieren
Hoffe es hilft.
PS: Ich bin einer der Mitwirkenden am Projekt.
quelle
(Verbesserung der Lösung von Shishir )
s3Copy.sh
)/PATH/TO/s3Copy.sh /PATH/TO/ROOT/DIR/OF/SOURCE/FILESandDIRS PATH/OF/S3/BUCKET
Wenn beispielsweise im Basisverzeichnis
s3Copy.sh
gespeichert ist und ich alle Dateien und Verzeichnisse kopieren möchte, die sich im aktuellen Verzeichnis befinden, führe ich Folgendes aus:~/s3Copy.sh . s3://XXX/myBucket
Sie können ganz einfach das Skript ändern , um andere Argumente zu ermöglichen ,
s3 cp
wie--include
,--exclude
...quelle