Ho problemi a utilizzare *
nell'AWS CLI per selezionare un sottoinsieme di file da un determinato bucket.
L'aggiunta *
al percorso in questo modo non sembra funzionare
aws s3 cp s3://data/2016-08* .
Risposte:
Per scaricare più file da un secchio AWS nella directory corrente, è possibile utilizzare recursive
, exclude
e include
le bandiere come questo:
aws s3 cp s3://data/ . --recursive --exclude "*" --include "2016-08*"
Per maggiori informazioni su come utilizzare questi filtri: http://docs.aws.amazon.com/cli/latest/reference/s3/#use-of-exclude-and-include-filters
sync
per un effetto simile, che è ricorsivo per impostazione predefinita:aws s3 sync s3://data/ . --exclude "*" --include "2016-08*"
L'ordine dei parametri è importante
Escludi e includi devono essere utilizzati in un ordine specifico, dobbiamo prima escludere e poi includere. Il viceversa non avrà successo.
aws s3 cp s3://data/ . --recursive --include "2016-08*" --exclude "*"
Questo fallirà perché in questo caso l'ordine dei parametri è importante. L'inclusione è esclusa da *
aws s3 cp s3://data/ . --recursive --exclude "*" --include "2016-08*"`
Questo funzionerà perché abbiamo escluso tutto ma in seguito abbiamo incluso la directory specifica.
Va bene, devo dire che l'esempio è sbagliato e dovrebbe essere corretto come segue:
aws s3 cp . s3://data/ --recursive --exclude "*" --include "2006-08*" --exclude "*/*"
Le .
esigenze devono essere subito dopo cp
. Il finale --exclude
è assicurarsi che nulla venga prelevato dalle sottodirectory che vengono raccolte da--recursive
(appreso quello per errore ...)
Questo funzionerà per chiunque abbia problemi con questo quando saranno arrivati qui.
--exclude "*"
non è un errore di battitura. Se non lo aggiungi, l'inclusione corrisponderà a qualsiasi cosa . Come da documentazione: nota che, per impostazione predefinita, tutti i file sono inclusi. Ciò significa che fornire solo un filtro --include non cambierà i file trasferiti. --include includerà di nuovo solo i file che sono stati esclusi da un filtro --exclude. Se desideri caricare solo file con una particolare estensione, devi prima escludere tutti i file, quindi includere nuovamente i file con la particolare estensione.