Amazon S3 sync删除排除的文件



我有2个桶,桶A和桶B。桶A包含Javascript文件,桶B包含Javascript和其他文件类型的混合。我正试图做一个只有JS文件从桶a到b的同步

我使用以下语句:

aws s3 sync s3://bucket-a s3://bucket-b——delete——exclude *——包括"* . js"

我假设这将留下桶B与所有js文件的精确副本。然而,上面的命令将开始删除桶b中的所有非js文件。

当我执行以下命令时:

aws s3 sync。s3://bucket-b——delete——exclude"*"——包括"* . js"

如果当前目录包含桶a的副本,桶B将拥有与桶a相同的js文件,非js文件将不受影响。

为什么这个命令在本地到桶同步和桶到桶同步时的功能不同?

编辑:添加CLI输入/输出来重现问题。

Darrrens-MBP:testFolder darren$ aws --version
aws-cli/1.7.4 Python/2.7.9 Darwin/14.4.0
Darrrens-MBP:testFolder darren$ aws s3 ls s3://tmp-test-bucket-a
2015-09-01 11:40:44          2 test1.js
2015-09-01 11:40:43          2 test2.js
Darrrens-MBP:testFolder darren$ aws s3 ls s3://tmp-test-bucket-b
2015-09-01 11:39:32          2 test1.js
2015-09-01 11:39:34          2 test2.js
2015-09-01 11:39:34          3 test3.php
Darrrens-MBP:testFolder darren$ ls
test1.js    test2.js
Darrrens-MBP:testFolder darren$ aws s3 sync . s3://tmp-test-bucket-b --delete --exclude "*" --include "*.js"
Darrrens-MBP:testFolder darren$ aws s3 sync s3://tmp-test-bucket-a s3://tmp-test-bucket-b --delete --exclude "*" --include "*.js"
delete: s3://tmp-test-bucket-b/test3.php
copy: s3://tmp-test-bucket-a/test2.js to s3://tmp-test-bucket-b/test2.js
copy: s3://tmp-test-bucket-a/test1.js to s3://tmp-test-bucket-b/test1.js

如果我正确理解了这个问题,——delete删除同步期间存在于目标但不存在于源的文件,这是您排除的文件。最好使用aws s3 cp而不是aws s3 sync。

查看AWS CLI参考

最新更新