aws s3 ls - как рекурсивно перечислять объекты с помощью скрипта bash, чтобы избежать ошибки разбиения на страницы - PullRequest
1 голос
/ 02 апреля 2020

У меня в помещении AWS S3 как хранилище. Мне нужно перечислить все файлы на указанном c ведре. Когда я делаю это наверху корзины, я получаю сообщение об ошибке:

Error during pagination: The same next token was received twice:{'ContinuationToken':"file path"}

Я думаю, это происходит, когда нужно перечислить два объекта. Это что-то не так на стороне хранилища, но сейчас нет лекарства от этого.

Я нашел обходной путь и запустил S3 ls в bash l oop while. Мне удается подготовить простой l oop для другого ведра, где у меня гораздо меньше объектов. Это l oop действовало глубоко внутри, где я знал, сколько у меня каталогов.

./aws  --profile us-bucket --endpoint-url https://endpoint:18082 --no-verify-ssl s3 ls  us-bucket/dir1/dir2/dir3/dir4/dir5/dir6/ | tr -s ' '| tr '/' ' ' | awk '{print $2}' | while read line0; do ./aws  --profile us-bucket --endpoint-url https://endpoint:18082 --no-verify-ssl s3 ls  us-bucket/dir1/dir2/dir3/dir4/dir5/dir6/${line0}/| tr -s ' '| tr '/' ' ' | awk '{print $2}' | while read line1; do ./aws  --profile us-bucket --endpoint-url https://endpoint:18082 --no-verify-ssl s3 ls  us-bucket/dir1/dir2/dir3/dir4/dir5/dir6/${line0}/${line1}/| tr -s ' '| tr '/' ' ' | awk '{print $2}' |while read line2; do ./aws  --profile us-bucket --endpoint-url https://endpoint:18082 --no-verify-ssl s3 ls --recursive us-bucket/dir1/dir2/dir3/dir4/dir5/dir6/${line0}/${line1}/${line2}/;done;done;done > /tmp/us-bucket/us-bucket_dir2_dir3_dir4_dir5_dir6.txt 

Я хотел бы написать l oop, который go сверху или root (как вы предпочесть) и перечислить все файлы (независимо от того, сколько dir у нас на пути), начиная с последнего dir на пути, идущем вверх, чтобы избежать появления:

    Error during pagination: The same next token was received twice:{'ContinuationToken':"file path"}

Любая помощь / подсказки приветствуются. Спасибо.

Br, Jay

...