목록 없이 S3에서 파일 다운로드

목록 없이 S3에서 파일 다운로드

백만 개가 넘는 파일이 포함된 s3 버킷이 있고 매일 다양한 애플리케이션에서 다양한 폴더에 약 천 개의 파일이 추가됩니다.

모든 파일을 Linux 서버에 로컬로 다운로드하여 보관하고 싶습니다. 모든 파일을 한 번에 다운로드한 다음 새 파일만 다운로드하는 가장 좋은 방법은 무엇입니까? 지난 24시간 동안 업로드된 파일을 예로 들어보겠습니다.

저는 Amazon이 각 s3 파일 나열에 대해 비용을 청구한다는 것을 알고 있으므로 매일 모든 파일을 나열한 다음 최신 파일을 다운로드하고 싶지 않습니다.

다음 플레이북을 사용하여 시도해 보았지만 작동하지만 더 좋은 방법이 있는지 궁금합니다. 반드시 Ansible을 사용할 필요는 없습니다. 저는 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 플래그를 사용하여 서버에서 제거된 항목을 로컬로 삭제합니다. 동기화를 사용할 때 목록 비용 등을 모르지만 문서를 읽고 해결해야 합니다.

관련 정보