2017-11-21 1 views
0

한 Google 클라우드 저장소 버킷에서 ~ 80,000 개의 이미지를 다른 곳으로 복사하려고합니다. gsutil 4.28이 포함 된 google cloud sdk 180.0.1이있는 Mac에서이 작업을 시작합니다.~ 10,000 개의 파일을 전송 한 후 "cat urls.txt | gsutil -m cp -I gs : // 대상 버킷 이름 /"이 끊어짐

~ 각 이미지의 URL은 ... 내가 그렇게 같은 CP를 인 gsutil 먹이를 텍스트 파일에 전송 될

urls.txt의 모습을 특징으로
$cat urls.txt | gsutil -m cp -I gs://target-bucket-name/ 

...

head -3 urls.txt 
gs://source-bucket-name/1506567870546.jpg 
gs://source-bucket-name/1506567930548.jpg 
gs://source-bucket-name/1507853339446.jpg 

~ 10,000 개의 이미지가 전송 된 후 프로세스가 계속 중단됩니다.

I에 $ HOME/.boto는 주석을 편집 한 :

parallel_composite_upload_threshold = 0 

이 매달려에서 작업을 방해하지 않았다.

무엇이 매달린 지 불확실합니다.

일반적으로 N 유틸리티를 하나의 버킷에서 다른 버킷으로 복사하는 것이 필요합니다. 그 임무를 완수 할 수있는 일이 필요합니다. -m 옵션을 제거

UPDATE

매달려 문제를 해결하기 위해 보이지만 파일 전송은 이제 상당히 느립니다. 가능한 경우 병행 성을 사용하여 속도를 얻는 동안 걸려있는 문제를 피할 수 있기를 바랍니다.

답변

1
  1. gstuil이 걸려 있으면 안됩니다. 이것은 버그입니다. gsutl -D의 결과를 기록해 두었다가 멈 추면 출력이 첨부 된 gsutil github repo에 문제를 만들고 여기에 링크를 달아서 의견을 말합니까? 당신은 출력 로그 다음 명령을 사용할 수 있습니다 : 한편

    $ cat urls.txt | gsutil -D -m cp -I gs://target-bucket-name/ 2>&1 | tee output 
    
  2. 을, 당신은 스레드의 수를 줄이는 실험을 시도 할 수 있으며, 이러한 기본 설정을 변경하여 병렬 모드 (-m)를 사용하는 처리하여 boto 파일.

    : 새로운 버킷 양동이 또는 하위 디렉토리에있는 모든 파일을 복사하는 옵션뿐만 아니라 단지 변경 또는 다음 명령을 사용하여 대상에 존재하지 않는 파일을 복사 등이있다 인 gsutil

    parallel_process_count = 1 # Default - 12 
    parallel_thread_count = 10 # Default - 10 
    
  3. gsutil -m cp gs://source-bucket/ gs://target-bucket 
    gsutil -m cp 'gs://source-bucket/dir/**' gs://target-bucket 
    gsutil -m rsync -r gs://source-bucket gs://target-bucket 
    
+0

감사합니다. Macos에서 gcloud 182 (gsutil 4.28)부터는 제대로 작동하는 것으로 보입니다. –

관련 문제