使用 aws clisync 包含並排除刪除選項

使用 aws clisync 包含並排除刪除選項
aws s3 sync /WordProcessing/DOCUMENTS s3://mybigbucket --delete --include "*" --exclude ".DS_Store"

如果 .DS_Store 以某種方式到達 AWS S3 mybigbucket(從先前的備份),則使用上述命令不會從目標中刪除 .DS_Store 文件,即使我手動執行:

rm /WordProcessing/DOCUMENTS/.DS_Store

在檔案伺服器上。

我是否缺少 aws s3 同步運作原理的邏輯?在我看來,如果 .DS_Store 已從檔案伺服器上的來源中刪除,則應該從 S3 儲存桶上的目標中刪除它。

如果我取消 --exclude 並再次執行該命令,當 .DS_Store 從檔案伺服器中刪除時,它會從目標中刪除它。這似乎不對。

我採取了錯誤的方法嗎?我想要做的是每晚同步檔案伺服器,並讓它不將數千個 .DS_Store 檔案傳輸到 S3 儲存桶。

答案1

您似乎在第一次同步後更改了參數。

當您使用時,--exclude它會從與指定模式相符的命令中排除所有檔案或物件。如果匹配,它將忽略該模式的任何操作。

如果檔案 (.DS_Store) 已位於 s3 儲存桶中且選項--exclude與其匹配,則它將忽略它。它是否已更改或從資料來源中消失。

你可以做:

  1. 在第一個和所有後續同步上使用 --exclude (這使檔案從一開始就保持在 s3 之外)
  2. 首先從本地主機刪除文件,同步,然後放入排除(如果文件位於 s3 中,這將刪除該文件,然後阻止添加它)
  3. 將 --exclude 放入並手動從 s3 中刪除該檔案(這將阻止該檔案重新新增至 s3)

參考

AWS cli - 同步

相關內容