【问题标题】:gsutil / gcloud storage list files by limits and paginationgsutil / gcloud 按限制和分页存储列表文件
【发布时间】: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$" || :

【问题讨论】:

    标签: google-cloud-platform google-cloud-storage gsutil


    【解决方案1】:

    通过查看gsutil help lsgsutil 目前没有选项来限制从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

      【讨论】:

        猜你喜欢
        • 2023-03-26
        • 2019-09-07
        • 2013-02-10
        • 2019-05-22
        • 1970-01-01
        • 2020-11-30
        • 2014-05-03
        • 1970-01-01
        • 2021-01-22
        相关资源
        最近更新 更多