Amazon-S3
從 S3 下載文件而不列出
我有一個 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 標誌來刪除從伺服器中刪除的本地內容。當您使用同步時,我不知道列表的成本等,但請閱讀文件,您應該解決它。