[amazon-web-services] 더 빠른 s3 버킷 복제

s3cmd 보다 버킷 복제를위한 더 나은 명령 줄 도구를 찾으려고했습니다 . s3cmd각 파일을 다운로드하고 업로드하지 않고도 버킷을 복제 할 수 있습니다. s3cmd를 사용하여 버킷을 복제하기 위해 일반적으로 실행하는 명령은 다음과 같습니다.

s3cmd cp -r --acl-public s3://bucket1 s3://bucket2

이것은 작동하지만 API를 통해 한 번에 하나씩 각 파일을 복사하므로 매우 느립니다. s3cmd병렬 모드로 실행할 수 있다면 매우 기쁠 것입니다.

사람들이보다 빠른 버킷을 복제하는 데 사용하는 명령 줄 도구 또는 코드로 사용할 수있는 다른 옵션이 s3cmd있습니까?

편집 : s3cmd-modification 이 정확히 내가 찾고있는 것 같습니다. 안타깝게도 작동하지 않습니다. 다른 옵션이 있습니까?



답변

AWS CLI는 작업을 완벽하게 수행하는 것으로 보이며 공식적으로 지원되는 도구라는 보너스가 있습니다.

aws s3 sync s3://mybucket s3://backup-mybucket

http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html

기본적으로 동시 전송을 지원합니다. http://docs.aws.amazon.com/cli/latest/topic/s3-config.html#max-concurrent-requests를 참조 하십시오.

많은 수의 작은 파일을 빠르게 전송하려면 EC2 인스턴스에서 스크립트를 실행하여 지연 시간 max_concurrent_requests을 줄이고 증가시켜 지연 시간 의 영향을 줄이십시오. 예 :

aws configure set default.s3.max_concurrent_requests 200


답변

AWS 콘솔을 사용해도 괜찮다면 다음을 수행 할 수 있습니다.

  1. 첫 번째 버킷의 모든 파일 / 폴더를 선택합니다.
  2. 조치> 복사를 클릭하십시오.
  3. 새 버킷을 만들고 선택합니다.
  4. 조치> 붙여 넣기를 클릭하십시오.

여전히 상당히 느리지 만 그대로 두어도됩니다.


답변

AWS 웹 콘솔 s3cmd및 AWS CLI를 사용하여 두 개의 버킷을 복제 해 보았습니다 . 이러한 방법은 대부분 작동하지만 고통스럽게 느립니다.

그런 다음 s3s3mirror두 개의 S3 버킷을 동기화하기위한 특수 도구를 찾았습니다 . 다중 스레드이며 내가 시도한 다른 접근 방식보다 훨씬 빠릅니다. 한 AWS 리전에서 다른 리전으로 기가 바이트의 데이터를 빠르게 이동했습니다.

https://github.com/cobbzilla/s3s3mirror 에서 확인 하거나 https://registry.hub.docker.com/u/pmoust/s3s3mirror/ 에서 Docker 컨테이너를 다운로드 하십시오.


답변

임시 솔루션을 사용 aws cli하여 버킷 간 동기화 :

aws s3 sync속도는 다음에 따라 다릅니다.
-S3 엔드 포인트에 대한 API 호출 대기 시간
-동시 수행 된 API 호출 양

동기화 속도를 높이려면 :
– 실행 aws s3 syncAWS 인스턴스 (FreeBSD의에 c3.large은 OK입니다 ;-))에서
– 갱신 ~ / .aws / config로 :
max_concurrent_requests = 128
max_queue_size = 8096

다음 구성 및 인스턴스 유형을 사용하여 474 초 이내에 버킷 (309GB, 72K 파일, us-east-1)을 동기화 할 수있었습니다.

보다 일반적인 솔루션은 AWS DataPipeLine 또는 S3 교차 리전 복제를 고려하십시오.


답변

이 주제에 대한 Google의 첫 번째 히트작이므로 추가 정보를 추가합니다.

‘Cyno’는 이제 병렬 버킷 간 동기화를 지원하는 최신 버전의 s3cmd-modification을 만들었습니다. 정확히 내가 기다리고 있었던 것.

Pull 요청은 https://github.com/pcorliss/s3cmd-modification/pull/2 , 그의 버전은 https://github.com/pearltrees/s3cmd-modification입니다.


답변

다른 S3 명령 줄 도구는 모르지만 여기에 아무것도 나타나지 않으면 직접 작성하는 것이 가장 쉬울 수 있습니다.

원하는 언어와 Amazon SDK / Toolkit을 선택하십시오. 그런 다음 소스 버킷 내용을 나열 / 검색하고 각 파일을 복사하면됩니다 (분명히 병렬로).

s3cmd-modification 에 대한 소스를 살펴보면 (그리고 저는 파이썬에 대해 아무것도 모른다는 것을 인정합니다) 버킷 간 코드를 병렬화하지 않은 것처럼 보이지만 아마도 표준 업로드 / 다운로드 병렬 코드를 시작점으로 사용할 수 있습니다. 이 작업을 수행.


답변

간단하게 aws s3 cp s3://[original-bucket] s3://[backup-bucket] --recursive잘 작동합니다 (aws cli 설정이 있다고 가정).