Como posso usar curingas para `cp` um grupo de arquivos com o AWS CLI

109

Estou tendo problemas para usar *o AWS CLI para selecionar um subconjunto de arquivos de um determinado intervalo.

Adicionar *ao caminho como este não parece funcionar

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

metrosk
fonte

Respostas:

181

Para fazer download de vários arquivos de um balde AWS para o seu diretório atual, você pode usar recursive, exclude, e includebandeiras como este:

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

Para obter mais informações sobre como usar esses filtros: http://docs.aws.amazon.com/cli/latest/reference/s3/#use-of-exclude-and-include-filters

punkrockpolly
fonte
24
Gostaria de salientar que --exclude "*"não é um erro de digitação. Se você não adicionar, a inclusão irá corresponder a qualquer coisa . De acordo com a documentação: Observe que, por padrão, todos os arquivos estão incluídos. Isso significa que fornecer apenas um filtro --include não mudará quais arquivos são transferidos. --include irá incluir novamente os arquivos que foram excluídos de um filtro --exclude. Se você deseja apenas fazer upload de arquivos com uma extensão específica, primeiro exclua todos os arquivos e, em seguida, inclua novamente os arquivos com a extensão específica.
pyb
7
Esteja ciente da ordem de exclusão e inclusão também.
keiki de
3
Você também pode usar syncpara um efeito semelhante, que é recursivo por padrão:aws s3 sync s3://data/ . --exclude "*" --include "2016-08*"
enarmônico
55

A ordem dos parâmetros é importante

Excluir e incluir devem ser usados ​​em uma ordem específica. Primeiro, devemos excluir e depois incluir. A vice-versa disso não terá sucesso.

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

Isso falhará porque a ordem dos parâmetros é importante neste caso. A inclusão é excluída pelo *

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

Este funcionará porque excluímos tudo, mas depois incluímos o diretório específico.

estrela Solitária
fonte