Amazon-S3

使用帶有刪除選項的 aws cli 同步包含和排除

  • January 23, 2020
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 儲存桶。

看起來您在第一次同步後更改了參數。

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

如果文件 (.DS_Store) 已經位於 s3 儲存桶中並且--exclude選項匹配它,它將忽略它。無論是更改還是從數據源中消失。

你可以做:

  1. 在第一個和所有後續同步上使用 –exclude (這使文件在一開始就關閉 s3)
  2. 首先從本地主機中刪除文件,同步,然後將排除項放入(如果文件在 s3 中,這將刪除文件,然後阻止添加)
  3. 將 –exclude 放入並從 s3 中手動刪除文件(這將防止文件被重新添加到 s3)

參考

AWS cli - 同步

引用自:https://serverfault.com/questions/999859