[英]AWS CLI S3 Sync exclude not working in script, directly in terminal it does
我正在尝试创建一个shell脚本来管理与s3-bucket的同步。 这是我的脚本中的内容:
#!/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是因为它位于$里面(..)?
我用python重写了脚本,并将其更改为:
os.system("set -f noglob && aws s3.....")
那行得通。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.