Descargar archivos desde S3 sin listar

Descargar archivos desde S3 sin listar

Tengo un depósito s3 con más de un millón de archivos y alrededor de mil archivos agregados cada día por varias aplicaciones en varias carpetas.

También me gustaría descargar y conservar todos los archivos localmente, en un servidor Linux. ¿Cuál sería la mejor manera de descargar todos los archivos una vez y luego descargar solo archivos nuevos, digamos los que se cargaron durante las 24 horas anteriores?

Entiendo que Amazon cobra por enumerar cada archivo s3, por lo que no quiero enumerar todos los archivos todos los días y luego descargar los archivos más recientes.

Intenté hacerlo con el siguiente manual y funciona, pero me preguntaba si hay una manera mejor. No necesariamente tiene que usar Ansible, simplemente lo usé porque lo usamos para prácticamente todo.

  - 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 }}"

Respuesta1

Utilizar elsincronización de aws s3dominio

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

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

Utilizo el indicador --delete al final de ese comando para eliminar localmente cosas que se eliminan del servidor. No sé acerca de los costos de los listados y demás cuando usas la sincronización, pero lee la documentación y deberías resolverlo.

información relacionada