Amazon S3同步删除排除的文件

时间:2015-08-31 05:10:00

标签: amazon-web-services amazon-s3

我有2个桶,Bucket A和Bucket B. Bucket A包含Javascript文件,bucket B包含javascript和其他文件类型的混合。我试图只从桶A到B同步JS文件。

我使用以下内容:

  

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

我假设这将为存储桶B留下所有js文件的精确副本。但是,上面的命令将开始删除Bucket B中的所有非js文件。

当我运行以下命令时:

  

aws s3同步。 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

1 个答案:

答案 0 :(得分:0)

如果我正确理解了问题, - 删除会删除目标中存在但在同步期间不在源中的文件,这些是您排除的文件。使用aws s3 cp而不是aws s3同步。

Check AWS CLI reference