我有一個 s3 儲存桶,其中包含超過一百萬個文件,每天由各種應用程式將大約一千個文件添加到各個資料夾中。
我想在 Linux 伺服器上本地下載並保存所有檔案。一次下載所有文件然後僅下載新文件(例如過去 24 小時內上傳的文件)的最佳方式是什麼?
據我了解,亞馬遜會收取列出每個 s3 文件的費用,因此我不想每天列出所有文件,然後下載最新文件。
我嘗試使用以下劇本來做到這一點並且它有效,但我想知道是否有更好的方法。它不一定必須使用 Ansible,我只是使用它,因為我們幾乎用它來做所有事情。
- name: List s3 objects
aws_s3:
bucket: "testbucket"
prefix: "test"
mode: list
register: s3objects
- name: Download s3objects
aws_s3:
bucket: "testbucket"
object: "{{ item }}"
mode: get
dest: "/tmp/{{ item|basename }}"
with_items: "{{ s3objects.s3_keys }}"
答案1
使用AWS s3 同步命令
aws s3 sync s3://bucketname/folder/ c:\localcopy
aws s3 sync s3://bucketname/folder/ c:\localcopy --delete
我在該命令末尾使用 --delete 標誌來刪除本地從伺服器中刪除的內容。我不知道使用同步時的列表成本等,但閱讀文檔,您應該解決它。