我可以按 contentType 列出我的 GCS Bucket 中的对象吗?还是按 suffix/file 的名字?

Can I list objects in my GCS Bucket by contentType? Or by suffix/file name?

我有一个非常大的 GCS 存储桶(数千万个对象)。在过去一年左右的时间里,上传了一些 MIME/content 类型不正确的文件,并且由于类型不正确,这些文件没有得到正确处理。

我想识别这些文件,以便可以使用正确的 contentType 重新上传它们,以便正确处理它们。

我认为有两种方法可以识别它们而无需简单地列出存储桶中的所有对象(由于列出所有对象的成本):

  1. 按内容类型列出对象。我知道错误文件的内容类型是什么,所以如果我可以执行类似 WHERE contentType 的操作,那么我可以轻松获取文件

  2. 幸运的是,所有不正确的文件都具有完全相同的文件名。因此,如果我可以列出具有“后缀”(而不是支持的前缀查询)的文件,那么我可以获得所有这些文件。

有人有什么想法吗?如果这两种解决方案都不支持我想我将不得不列出存储桶中的所有文件并花费数百美元。

您可以使用通配符 (*/** ) 来列出所有匹配共同后缀的对象,如 here.

在您的用例中,要更新具有共同后缀的所有对象的元数据,您可以 运行 一个简单的 gsutil 命令,如前所述 here,它将更新 Content-Type对象。

由于您有很多文件,您可以使用 -m 选项进行并行 (multi-threaded/multi-processing) 更新。因此示例命令将如下所示 -

gsutil -m setmeta -h "Content-Type:image/png" gs://bucket-name/**.txt

对于名称以 .txt.

结尾的存储桶内的所有对象,命令会将 Content-Type 设置为 image/png