Як я можу використовувати узагальнюючі символи для `cp` групи файлів за допомогою CLI AWS


109

У мене виникають проблеми з використанням *в AWS CLI вибору підмножини файлів із певного сегмента.

*Схоже, додавання до шляху не працює

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

Відповіді:


181

Для завантаження декількох файлів з AWS відра в поточному каталозі, ви можете використовувати recursive, excludeі includeпрапори , як це:

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

Для отримання додаткової інформації про використання цих фільтрів: http://docs.aws.amazon.com/cli/latest/reference/s3/#use-of-exclude-and-include-filters


24
Я хотів би зазначити, що --exclude "*"це не помилка. Якщо ви не додасте його, включення буде відповідати будь-чому . Відповідно до документації: Зверніть увагу, що за замовчуванням усі файли включені. Це означає, що надання лише фільтру --include не змінить передані файли. --include буде повторно включати файли, які були виключені з фільтра --exclude. Якщо ви хочете завантажити лише файли з певним розширенням, спочатку потрібно виключити всі файли, а потім повторно включити файли з певним розширенням.
pyb

7
Слід пам’ятати про порядок виключення та включення.
keiki

3
Ви також можете використовувати syncдля подібного ефекту, який за замовчуванням є рекурсивним:aws s3 sync s3://data/ . --exclude "*" --include "2016-08*"
енгармонія

55

Порядок параметрів має значення

Виключати та включати слід використовувати в певному порядку. Ми повинні спочатку виключити, а потім включити. Навпаки це не матиме успіху.

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

Це не вдасться, оскільки порядок параметрів у цьому випадку має значення. Включення виключається *

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

Цей буде працювати, тому що ми виключили все, але пізніше ми включили конкретний каталог.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.