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
與其匹配,則它將忽略它。它是否已更改或從資料來源中消失。
你可以做:
- 在第一個和所有後續同步上使用 --exclude (這使檔案從一開始就保持在 s3 之外)
- 首先從本地主機刪除文件,同步,然後放入排除(如果文件位於 s3 中,這將刪除該文件,然後阻止添加它)
- 將 --exclude 放入並手動從 s3 中刪除該檔案(這將阻止該檔案重新新增至 s3)
參考