AWS CLI S3 Sync исключить не работает в сценарии, непосредственно в терминале это делает - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь создать shell-скрипт для управления моей синхронизацией с помощью s3-корзины.Вот что в моем сценарии:

#!/bin/bash

aws s3 sync $1 $2 $(for word in $(echo "$excludeconf"| tr ";" " "); do echo -n "--exclude \"$word\" "; done) $del --no-follow-symlinks $3

$1 - это источник $2 - это пункт назначения $3 - это еще один параметр, который передается (dryrun).$(word... берет список файлов и папок $excludeconf и создает с ними --exclude ....

Если я запусту скрипт, он ничего не исключит.

Если я добавлюecho перед командой, приведенной выше, я получаю это:

aws s3 sync . s3://BUCKETNAME/FOLDERNAME/ --exclude .SOMEFILE --exclude "public/icon/*" --delete --no-follow-symlinks --dryrun

Если я скопирую эту команду и запусту ее вручную в терминале, она будет работать просто отлично.

Есть идеи?

К вашему сведению: я использую CentOS 7

Редактировать:

после некоторых тестов я обнаружил, что проблема заключается в глобализации: public / icon / * интерпретируется как public / icon/ folder1 public / icon / folder2 Если я попытаюсь установить noglob, он не будет работать .. ist, потому что он находится внутри $ (..)?

1 Ответ

0 голосов
/ 01 июня 2018

Я переписал скрипт на python и изменил его на:

os.system("set -f noglob && aws s3.....")

Это сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...