我正在尝试将〜80,000张图像从一个Google云存储存储桶复制到另一个。我正在使用Google Cloud SDK 180.0.1启动此操作,该操作包含GSUTIL 4.28。
每个图像的〜URL要传输到文本文件中,我将其馈送到gsutil cp so ...
$cat urls.txt | gsutil -m cp -I gs://target-bucket-name/
其中urls.txt看起来像...
head -3 urls.txt
gs://source-bucket-name/1506567870546.jpg
gs://source-bucket-name/1506567930548.jpg
gs://source-bucket-name/1507853339446.jpg
在传输了约10,000张图像后,该过程始终悬挂。
我已经编辑了$ home/.boto to Uncomenty:
parallel_composite_upload_threshold = 0
这并没有阻止操作悬挂。
我不确定是什么原因导致悬挂。
潜在的需求是通用实用程序将n个项目从一个水桶复制到另一个存储桶。我需要围绕使我完成任务的工作。
update
删除-m选项似乎涉及悬挂问题,但文件传输现在大大降低。我希望能够避免悬挂问题,同时仍会在可能的情况下获得并发速度。
-
gstuil不应悬挂。这是一个错误。您能记录GSUTL -D的输出,并在悬挂悬挂时,在GSUTIL GITHUB存储库中创建一个问题,并在此处使用链接进行评论?您可以使用以下命令记录输出:
$ cat urls.txt | gsutil -D -m cp -I gs://target-bucket-name/ 2>&1 | tee output
-
与此同时,您可以尝试尝试减少并行模式(-m)通过更改boto文件中使用这些默认值的线程和过程的数量。
parallel_process_count = 1 # Default - 12 parallel_thread_count = 10 # Default - 10
-
请注意,Gsutil具有将存储桶或子目录中的所有文件复制到新存储桶中的选项,以及仅复制目标中已更改或不存在的文件,并使用以下命令:
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