gsutil / gcloud 按限制和分页存储列表文件
Posted
技术标签:
【中文标题】gsutil / gcloud 按限制和分页存储列表文件【英文标题】:gsutil / gcloud storage list files by limits and pagination 【发布时间】:2021-06-08 22:13:20 【问题描述】:有什么方法可以列出 GCS 存储桶中的文件有限制。
假设我的存储桶中有 2k 个对象。但是当我执行 gsutil ls 时,我只想要前 5 个对象,而不是全部。 如何做到这一点。
还有分页功能吗? gsutil ls gs://my-bucket/test_file_03102021* 2>/dev/null | grep -i ".txt$" || :
【问题讨论】:
【参考方案1】:通过查看gsutil help ls
,gsutil
目前没有选项来限制从ls
调用返回的项目数。
虽然您可以将结果通过管道传递到 awk
之类的东西以仅获取前 5 个项目,但如果您的存储桶中有很多对象,那将是非常浪费的(因为 gsutil
将继续进行分页 HTTP 调用,直到它列出了所有 N 个对象)。
如果您需要在包含大量对象的存储桶上定期执行此操作,您最好编写一个使用 GCS 客户端库之一的简短脚本。例如,查看google-cloud-storage Python library -- 具体来说,请参见the list_blobs 方法,该方法接受max_results
参数。
【讨论】:
【参考方案2】:当您直接使用 API 时,可以使用分页。如果您只想要前 5 个对象并使用 gsutil,则必须等待数百(数千、数百万......)个文件的完整答案才能获得前 5 个。
如果您使用 API,您可以这样做
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://storage.googleapis.com/storage/v1/b/<BUCKET_NAME>/o?alt=json&&maxResults=5" \
| jq .items[].name
当然,您可以更改最大结果大小
您也可以在过滤时包含前缀。更多详情见API documentation
【讨论】:
以上是关于gsutil / gcloud 按限制和分页存储列表文件的主要内容,如果未能解决你的问题,请参考以下文章
通过 GSUTIL 将文件从 Windows 10 文件夹上传到 Gcloud 存储桶时出现问题
在 python 脚本中运行 gcloud auth 和 gsutil 命令