我可以按contentType列出GCS Bucket中的对象吗?还是按后缀/文件名



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

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

我认为有两种方法可以在不简单地列出bucket中的所有对象的情况下识别它们(由于列出所有对象的成本(:

  1. 按内容类型列出对象。我知道不正确文件的内容类型是什么,所以如果我可以执行类似WHERE contentType的操作,那么我可以很容易地获得文件

  2. 幸运的是,所有不正确的文件都有完全相同的文件名。因此,如果我可以列出具有";后缀";(与支持的前缀查询相反(,然后我可以获得所有这些文件。

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

您可以使用通配符(*/**(来列出与此处提到的公共后缀匹配的所有对象。

在您的用例中,要更新具有公共后缀的所有对象的元数据,您可以运行这里提到的简单gsutil命令,它将更新对象的内容类型。

由于您有许多文件,因此可以使用-m选项进行并行(多线程/多处理(更新。因此,一个示例命令将如下所示-

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

其中,该命令将bucket中名称以.txt结尾的所有对象的"内容类型"设置为image/png。

最新更新