Comment puis-je utiliser des caractères génériques pour `cp` un groupe de fichiers avec l'AWS CLI

109

J'ai des difficultés à utiliser *dans l'AWS CLI pour sélectionner un sous-ensemble de fichiers dans un certain compartiment.

Ajouter *au chemin comme celui-ci ne semble pas fonctionner

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

mètresk
la source

Réponses:

181

Pour télécharger plusieurs fichiers à partir d' un seau aws dans votre répertoire en cours, vous pouvez utiliser recursive, exclude, et des includedrapeaux comme celui - ci:

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

punkrockpolly
la source
24
Je tiens à souligner que ce --exclude "*"n'est pas une faute de frappe. Si vous ne l'ajoutez pas, l'inclusion correspondra à tout . Selon la documentation: Notez que, par défaut, tous les fichiers sont inclus. Cela signifie que fournir uniquement un filtre --include ne changera pas les fichiers transférés. --include ne ré-inclura que les fichiers qui ont été exclus d'un filtre --exclude. Si vous souhaitez uniquement télécharger des fichiers avec une extension particulière, vous devez d'abord exclure tous les fichiers, puis ré-inclure les fichiers avec l'extension particulière.
pyb
7
Soyez conscient de l'ordre d'exclusion et d'inclusion.
keiki
3
Vous pouvez également utiliser syncpour un effet similaire, qui est récursif par défaut:aws s3 sync s3://data/ . --exclude "*" --include "2016-08*"
enharmonic
55

L'ordre des paramètres compte

L'exclusion et l'inclusion doivent être utilisées dans un ordre spécifique, nous devons d'abord exclure, puis inclure. L'inverse ne sera pas couronné de succès.

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

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

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

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

loneStar
la source