У меня есть объекты s3 bucket, как показано ниже:
my_bucket/inside/another/2018-10-09/hello.txt
my_bucket/inside/another/2018-10-09/hello.json
my_bucket/inside/another/2018-10-08/hello.java
my_bucket/inside/another/2018-10-08/hello.json
my_bucket/inside/another/2018-10-10/hello.json
Я пытаюсь получить локальный каталог, например, новый, как показано ниже:
new/2018-10-09/hello.json
new/2018-10-08/hello.json
new/2018-10-10/hello.json
Пришел с командой, чтобы вытащитьфайлы, но я хочу изменить структуру каталогов при записи локальных файлов:
aws s3api list-objects --bucket "my_bucket" --output text --query "Contents[?(LastModified>='2018-10-07' && contains(Key,'.json'))].{Key: Key}" | xargs -I {} aws s3 cp my_bucket/{} new/{}
Я ищу способ заменить структуру каталогов на свои собственные без изменения значения при вызове команды копирования s3.например, возможно что-то вроде ~
aws s3api list-objects --bucket "my_bucket" --output text --query "Contents[?(LastModified>='2018-10-07' && contains(Key,'.json'))].{Key: Key}" | xargs -I {} aws s3 cp my_bucket/{} new/`echo {} | sed 's/inside\/another\//my_directory/g'`
Хотя это скорее unix-запрос, я открыт для предложений, которые позволят мне обработать через s3api, если будут доступны опции.
PS для целей тестирования можно также рассмотреть ниже:
where list.txt contains:
my_bucket/inside/another/2018-10-09/hello.txt
my_bucket/inside/another/2018-10-09/hello.json
my_bucket/inside/another/2018-10-08/hello.java
my_bucket/inside/another/2018-10-08/hello.json
my_bucket/inside/another/2018-10-10/hello.json
команда:
cat list.txt | xargs -I {} aws s3 cp s3://my_bucket/{} new/`echo {} | sed 's/inside\/another\//my_directory/g'`