Как загрузить из папки S3 разные папки разных каталогов, возможно с bash? - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть список папок корзины S3, которые я хочу загрузить из разных каталогов в формате .txt. Я могу использовать команду CP, чтобы загрузить одну папку. Но я не уверен, как мы можем запустить команду CLI, предоставляющую файл .txt, и загружать разные папки из разных каталогов. Любое руководство будет высоко ценится.

Обновление : мой каталог с S3 выглядит следующим образом, где я хочу загрузить папки A1, A2, B5, C9 и C11. У меня есть файл .txt со списком папок.

s3://storage-folder/Folder A/A1
s3://storage-folder/Folder A/A2
s3://storage-fodler/Folder B/B5
s3://storage-fodler/Folder B/B6
s3://storage-fodler/Folder C/C9
s3://storage-fodler/Folder C/C11

хочу получить локально на моем компьютере как:

Folder A/A1
Folder A/A2
Folder B/B5
Folder B/B6
Folder C/C9
Folder C/C11

Для только одной папки я использую следующий cp команда

aws s3 cp "s3://storage-folder/Folder A/A1" "./Folder A/A1/" --recursive

1 Ответ

0 голосов
/ 28 апреля 2020

Вот как будет выглядеть ваш bash скрипт:

while IFS="" read -r line || [ -n "$line" ]
do
    local_path="./$(echo "$line" | cut -d '/' -f4-)"
    aws s3 cp "\"$line\"" "\"$local_path\"" --recursive
done < file.txt

Пока l oop объяснено здесь: Цикл по содержимому файла в Bash


Кроме того, я настоятельно рекомендую вам не использовать пробелы в ваших путях, которые помогут вам избежать некоторых неприятных кавычек.

...