Amazon-S3

從 S3 下載文件而不列出

  • March 9, 2018

我有一個 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 }}"

使用aws s3 同步命令

aws s3 sync  s3://bucketname/folder/ c:\localcopy

aws s3 sync  s3://bucketname/folder/ c:\localcopy --delete

我在該命令末尾使用 –delete 標誌來刪除從伺服器中刪除的本地內容。當您使用同步時,我不知道列表的成本等,但請閱讀文件,您應該解決它。

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