我有一个 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 同步命令
我在该命令末尾使用 --delete 标志来删除从服务器中删除的本地内容。当您使用同步时,我不知道列表的成本等,但是阅读文档,您应该解决它。