针对文件夹子集优化gsutil下载

时间:2019-11-19 01:59:47

标签: google-cloud-platform gsutil

我在Google Cloud存储桶中存储了一组文件-100k文件,总计1 TB。我需要一种从存储桶中有效下载各种文件子集的方法。

有一种方法可以将所需文件列表传递到gsutilpython generate_filenames.py | gsutil -m cp -I .,但是对于我的情况来说非常慢(大约2 MB /秒)。

或者,我注意到如果使用通配符模式-gsutil -m cp gs://bucketname/folderpath/* .-下载速度大约是10倍。我可以下载所有文件,然后删除不想要的文件,但是如果文件集很小,仍然效率不高。

是否有任何方法可以利用gsutil仅下载指定的文件列表,但速度仍高于2 MB /秒?

1 个答案:

答案 0 :(得分:1)

尝试随机化输入列表中文件的顺序。 GCS将文件存储在按对象键分布的分片上,因此在词法上相似的文件很可能存储在同一分片上。如果您试图从单个分片中提取大量小文件,则可能会导致性能下降。根据文件的命名约定,使用此策略可能会受到限制。请参阅using a naming convention that distributes load evenly across key ranges上的文档。

除此之外,还有许多会影响性能的变量:您的互联网连接,您的GCS存储类,您的机器等。Google Cloud提供了一个名为perfdiag的工具,可以帮助诊断这种情况。问题。