我尝试使用AWS s3 cp CLI运行递归复制命令。我正在运行的命令在下面(我用#34替换了真正的桶名; mybucket"):
aws s3 cp s3://mybucket/NJ/Monthly/2014/06/ /home/bob/work/NJ/Monthly/2014/06/ --recursive --exclude "*" --include “monthly_summary_*” --region us-east-1
我还要格式化它以适应:
aws s3 cp s3://mybucket/NJ/Monthly/2014/06/ /home/bob/work/NJ/Monthly/2014/06/
--recursive --exclude "*" --include “monthly_summary_*” --region us-east-1
由于某种原因,这是行不通的。但是,它不会记录任何类型的错误或输出。有句法错误吗?
我已验证该文件与" monthly_summary _ *"匹配确实存在于该位置的存储桶中。我还验证了我可以在没有--recursive, - exclude和--include的情况下执行正常的aws s3 cp命令,只需指定文件名即可。意思是,下面的代码可以工作,但不能得到所有东西(因为它不是递归的):
aws s3 cp s3://mybucket/NJ/Monthly/2014/06/monthly_summary_201406.txt
/home/bob/work/NJ/Monthly/2014/06/monthly_summary_201406.txt --region us-east-1
非常感谢任何帮助!
答案 0 :(得分:6)
之前弄清楚了,但我想发布了我的答案。 AWS命令行工具似乎不完全支持通配符,它们仅支持文件扩展名。因此,“ .txt”将使用--exclude“” - 包含“ .txt”逻辑,但通配符如“monthly _ _summary.txt”或“monthly_summary_” *“ 不管用。
答案 1 :(得分:1)
我知道这个帖子已经过时了。但想要更新。即使使用monthly_summary_*
,该命令现在也可以使用!
答案 2 :(得分:0)
如果这对跟随我的其他人有用,请在源和目标之间添加一些额外的空格。我一直不敢对单引号,双引号,斜杠等的每种组合运行类似的命令:
aws s3 cp /home/<username>/folder/ s3://<bucketID>/<username>/archive/ --recursive --exclude "*" --include "*.csv"
它会给我:“ aws:错误:参数太少”。单。办法。我尝试过。
所以最终在aws s3 cp help
中看到了--debug选项
因此以这种方式再次运行:
aws s3 cp /home/<username>/folder/ s3://<bucketID>/<username>/archive/ --recursive --exclude "*" --include "*.csv" --debug
这是相关的调试行:
MainThread - awscli.clidriver - DEBUG - Arguments entered to CLI: ['s3', 'cp', 'home/<username>/folder\xc2\xa0s3://<bucketID>/<username>/archive/', '--recursive', '--exclude', '*', '--include', '*.csv', '--debug']
我不知道\xc2\xa0
来自源和目标之间的哪里,但是确实有!更新了该行以添加几个额外的空格,现在它可以正常运行了:
aws s3 cp /home/<username>/folder/ s3://<bucketID>/<username>/archive/ --recursive --exclude "*" --include "*.csv"