2015-07-21 80 views
2

我需要同步兩個AWS S3存儲桶,但我只需要同步列表中的文件。 這是情景:AWS CLI S3僅在選定的文件上同步?

BucketA:

File1.jpg Deleted 
File2.jpg Modified 
File3.jpg Deleted 
File4.jpg Modified 
File5.jpg Modified 
File6.jpg New 

BucketB:

File1.jpg 
File2.jpg 
File3.jpg 
File4.jpg 
File5.jpg 

我正在尋找這樣的命令:

aws s3 sync s3://BucketA s3://BucketB --delete --exclude "*" --include "File1.jpg;File2.jpg;File4.jpg" 

結果BucketB必須是這樣的:

File1.jpg deleted 
File2.jpg Modified 
File3.jpg No changed 
File4.jpg Modified 
File5.jpg No changed 

任何想法?

回答

2

看起來這是可以實現的,除了刪除部分。

該命令將sync只有指定的文件:

aws s3 sync s3://bucketA s3://bucketB --exclude "*" --include "File1.jpg" --include "File2.jpg" --include "File4.jpg" 

然而,--delete參數似乎只看看這包括在--include參數BucketA文件,導致所有其他文件,以「隱形」因此從BucketB中刪除。

此命令:

aws s3 sync s3://bucketA s3://bucketB --delete --exclude "*" --include "File1.jpg" --include "File2.jpg" --include "File4.jpg" 

實際上,除了刪除和File2.jpg所有File4.jpg文件。所以,它看起來不像你可以按照預期的方式進行選擇性刪除。

這裏有一個腳本來測試所有上述的:

aws s3 cp foo s3://bucketa/File1.jpg 
aws s3 cp foo s3://bucketa/File2.jpg 
aws s3 cp foo s3://bucketa/File3.jpg 
aws s3 cp foo s3://bucketa/File4.jpg 
aws s3 cp foo s3://bucketa/File5.jpg 
aws s3 sync s3://bucketa s3://bucketb 
aws s3 rm s3://bucketa/File1.jpg 
aws s3 rm s3://bucketa/File3.jpg 
aws s3 cp foo s3://bucketa/File6.jpg 
aws s3 cp bar s3://bucketa/File2.jpg 
aws s3 cp bar s3://bucketa/File4.jpg 
aws s3 cp bar s3://bucketa/File5.jpg 

aws s3 ls s3://bucketa 
2015-07-23 08:50:44   49 File2.jpg 
2015-07-23 08:50:49   49 File4.jpg 
2015-07-23 08:50:53   49 File5.jpg 
2015-07-23 08:50:20   24 File6.jpg 

aws s3 ls s3://bucketb 
2015-07-23 08:49:35   24 File1.jpg 
2015-07-23 08:49:35   24 File2.jpg 
2015-07-23 08:49:36   24 File3.jpg 
2015-07-23 08:49:36   24 File4.jpg 
2015-07-23 08:49:36   24 File5.jpg 

aws s3 sync s3://bucketa s3://bucketb --exclude "*" --include "File1.jpg" --include "File2.jpg" --include "File4.jpg" 
+0

非常感謝約翰。我將嘗試在分離的命令中執行刪除操作。 –

+0

可能AWS架構應考慮改進--include參數,以更緊湊的形式執行此類型的過程。我認爲將同步過程僅應用於列表中的文件並不處理不在此列表中的文件並不困難。 –

+0

我已經在真實案例中測試過這個解決方案,並且它是不可靠的。帶有50的AWS CLI命令 - 包括凍結控制檯。 –