Wie kann ich Platzhalter verwenden, um eine Gruppe von Dateien mit der AWS-CLI zu "cp"?

107

Ich habe Probleme, *in der AWS-CLI eine Teilmenge von Dateien aus einem bestimmten Bucket auszuwählen.

Das Hinzufügen *zu diesem Pfad scheint nicht zu funktionieren

aws s3 cp s3://data/2016-08* .

meterk
quelle

Antworten:

178

Um mehrere Dateien von einem aws Eimer in Ihr aktuelles Verzeichnis heruntergeladen haben , können Sie verwenden recursive, excludeund includeFahnen wie folgt aus :

aws s3 cp s3://data/ . --recursive --exclude "*" --include "2016-08*"

Weitere Informationen zur Verwendung dieser Filter finden Sie unter: http://docs.aws.amazon.com/cli/latest/reference/s3/#use-of-exclude-and-include-filters

Punkrockpolly
quelle
24
Ich möchte darauf hinweisen, dass dies --exclude "*"kein Tippfehler ist. Wenn Sie es nicht hinzufügen, stimmt das Include mit allem überein . Gemäß Dokumentation: Beachten Sie, dass standardmäßig alle Dateien enthalten sind. Dies bedeutet, dass durch die Bereitstellung eines --include-Filters nicht geändert wird, welche Dateien übertragen werden. --include schließt nur Dateien wieder ein, die von einem --exclude-Filter ausgeschlossen wurden. Wenn Sie nur Dateien mit einer bestimmten Erweiterung hochladen möchten, müssen Sie zuerst alle Dateien ausschließen und dann die Dateien mit der bestimmten Erweiterung erneut einschließen.
Pyb
7
Beachten Sie auch die Reihenfolge des Ausschlusses und Einschlusses.
Keiki
3
Sie können auch synceinen ähnlichen Effekt verwenden, der standardmäßig rekursiv ist:aws s3 sync s3://data/ . --exclude "*" --include "2016-08*"
Enharmonic
54

Die Reihenfolge der Parameter ist wichtig

Das Ausschließen und Einschließen sollte in einer bestimmten Reihenfolge verwendet werden. Wir müssen zuerst ausschließen und dann einschließen. Das Gegenteil davon wird nicht erfolgreich sein.

aws s3 cp s3://data/ . --recursive  --include "2016-08*" --exclude "*" 

Dies schlägt fehl, da in diesem Fall die Reihenfolge der Parameter von Bedeutung ist. Das Include wird durch das * ausgeschlossen

aws s3 cp s3://data/ . --recursive --exclude "*" --include "2016-08*"`

Dieser wird funktionieren, weil wir alles ausgeschlossen haben, aber später das spezifische Verzeichnis aufgenommen hatten.

loneStar
quelle