222 votes

Comment utiliser des caractères génériques pour " cp " un groupe de fichiers avec l'AWS CLI ?

J'ai du mal à utiliser * dans l'AWS CLI pour sélectionner un sous-ensemble de fichiers dans un certain seau.

Ajout de * au chemin comme ceci ne semble pas fonctionner

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

392voto

punkrockpolly Points 2399

Pour télécharger plusieurs fichiers d'un seau aws vers votre répertoire actuel, vous pouvez utiliser recursive , exclude et include drapeaux. L'ordre des paramètres est important.

Exemple de commande :

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

Pour plus d'informations sur l'utilisation de ces filtres : http://docs.aws.amazon.com/cli/latest/reference/s3/#use-of-exclude-and-include-filters

80 votes

Je tiens à souligner que --exclude "*" n'est pas une faute de frappe. Si vous ne l'ajoutez pas, l'inclusion correspondra à n'importe quoi. . Comme indiqué dans la documentation : Notez que, par défaut, tous les fichiers sont inclus. Cela signifie que le fait de fournir uniquement un filtre --include ne changera pas les fichiers transférés. L'option --include ne fait que ré-inclure les fichiers qui ont été exclus par un filtre --exclude. Si vous ne voulez transférer que les fichiers ayant une extension particulière, vous devez d'abord exclure tous les fichiers, puis ré-inclure les fichiers ayant cette extension particulière.

19 votes

Faites également attention à l'ordre d'exclusion et d'inclusion.

7 votes

Vous pouvez également utiliser sync pour un effet similaire, qui est récursif par défaut : aws s3 sync s3://data/ . --exclude "*" --include "2016-08*"

89voto

Achyuth Points 1421

L'ordre des paramètres est important

L'exclusion et l'inclusion doivent être utilisées dans un ordre précis. Il faut d'abord exclure, puis inclure. L'inverse ne fonctionnera pas.

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

Cela échouera car l'ordre des paramètres est important dans ce cas. L'include est exclu par le *

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

Celui-ci fonctionnera parce que nous avons tout exclu, mais plus tard nous avons inclus le répertoire spécifique.

12voto

Patrick Palmer Points 69

Bon, je dois dire que l'exemple est faux et devrait être corrigé comme suit :

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

Le site . doit se trouver juste après le cp . La finale --exclude est de s'assurer que rien n'est récupéré dans les sous-répertoires qui sont récupérés par la commande --recursive (j'ai appris cela par erreur...)

Ça marchera pour tous ceux qui ont eu du mal à s'en sortir au moment où ils sont arrivés ici.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X