Скачать файлы с S3 без листинга

Скачать файлы с S3 без листинга

У меня есть хранилище s3 с более чем миллионом файлов и около тысячи файлов, которые каждый день добавляются различными приложениями в различные папки.

Я хотел бы скачать и сохранить все файлы локально, на сервере Linux. Какой был бы лучший способ скачать все файлы один раз, а затем скачать только новые файлы, скажем, загруженные в течение предыдущих 24 часов.

Я понимаю, что Amazon взимает плату за размещение каждого файла 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 в конце этой команды, чтобы локально удалить вещи, которые удалены с сервера. Я не знаю о расходах на листинги и т. п., когда вы используете синхронизацию, но прочитайте документацию, и вы должны это понять.

Связанный контент