2017-07-12 76 views
0

我們有兩個s3桶,並且我們有一個同步cron作業,應該將bucket1更改複製到bucket2。AWS S3在桶之間同步覆蓋較新的目標文件

aws s3 sync s3://bucket1/images/ s3://bucket2/images/ 

當新圖像添加到bucket1時,它會正確地被複制到bucket2。但是,如果我們將該圖像的新版本上傳到bucket2,那麼當同步作業下次運行時,它實際上會將舊版本從bucket1複製到bucket2,替換剛剛放在那裏的較新版本。

這是一個遷移過程的一部分,及時上傳到的唯一地點將是bucket2,但暫時有時他們可能會上傳到任一個,而我們只希望更改形式爲bucket1來複制直到第二桶,而不是相反。

爲什麼aws sync作業似乎認爲bucket1上的文件已更改?它不知道bucket2中的文件是新的,所以它應該被單獨留下?

回答

0

AWS Command-Line Interface (CLI)aws s3 sync命令將內容從源位置複製到目標位置。它僅複製自上次同步以來添加或更改的文件。

它被設計成一個單向同步,而不是一個雙向同步。您的文件正被覆蓋,因爲源中的文件不在目標中。這是正確的行爲

有有限範圍來調整這些控制,例如(來自sync command documentation):

--exact-timestamps(布爾)當從S3同步到本地,相同尺寸的物品都將被忽略,只有當時間戳匹配究竟。默認行爲是忽略相同大小的項目,除非本地版本比S3版本更新。

但是,似乎並沒有出現這樣的選項,僅僅因爲存在同名的文件,或者有一些偏好保留較新的文件而停止覆蓋文件。

如果您想要使用更具體的規則進行雙向同步,您需要自行編碼。

相關問題