Как загрузить структуру каталогов корзины S3 (без файлов)?

Мне нужно рекурсивно загрузить дерево каталогов папки в ведре с оговоркой, что не нужно скачивать ни один из файлов (они большие). Это то, что у меня есть до сих пор:

s3cmd --dry-run --recursive --no-delete-removed --verbose --rinclude='^[^.]*$' 
    --rexclude='[^.]*$' sync s3://bucket_name/folder/ ~/Downloads/local_folder/

который правильно пропускает файлы, но не загружает папки.

Вот некоторые связанные вопросы, которые я нашел


person M.R.    schedule 06.10.2015    source источник
comment
Как отмечено в ответе на другой вопрос, который вы процитировали, нет папок для загрузки. Папки в S3 в значительной степени являются иллюзией, побочным эффектом разделителей / в именах ключей... s3cmd может не иметь простого способа загрузки вещей, которых на самом деле не существует. Прямой вызов API к интерфейсу REST для ListObjects позволяет вам получать общие префиксы — папки — но использует ли s3cmd это полезным способом, мне неизвестно, fwiw.   -  person Michael - sqlbot    schedule 07.10.2015


Ответы (1)


В Amazon S3 нет папок. Наиболее близкой концепцией является CommonPrefix, которая позволяет перечислять файлы " внутри» каталога.

Вам придется написать свою собственную программу (например, на Python, используя boto), чтобы получить эти общие префиксы и локально создать структуру каталогов.

Кстати, в наши дни лучше использовать интерфейс командной строки (CLI) AWS, а не s3cmd, поскольку он может работать со всеми сервисами AWS, а не только с Amazon S3.

person John Rotenstein    schedule 07.10.2015