我有一个GCS存储桶,它非常大(数千万个对象(。在过去一年左右的时间里,有一些文件上传的MIME/内容类型不正确,而这些文件由于类型不正确而没有得到正确处理。
我想识别这些文件,以便使用正确的contentType重新上传,以便正确处理它们。
我认为有两种方法可以在不简单地列出bucket中的所有对象的情况下识别它们(由于列出所有对象的成本(:
-
按内容类型列出对象。我知道不正确文件的内容类型是什么,所以如果我可以执行类似
WHERE contentType
的操作,那么我可以很容易地获得文件 -
幸运的是,所有不正确的文件都有完全相同的文件名。因此,如果我可以列出具有";后缀";(与支持的前缀查询相反(,然后我可以获得所有这些文件。
有人有什么想法吗?如果这两种解决方案都不受支持,我想我将不得不列出存储桶中的所有文件,并花费数百美元。
您可以使用通配符(*
/**
(来列出与此处提到的公共后缀匹配的所有对象。
在您的用例中,要更新具有公共后缀的所有对象的元数据,您可以运行这里提到的简单gsutil命令,它将更新对象的内容类型。
由于您有许多文件,因此可以使用-m
选项进行并行(多线程/多处理(更新。因此,一个示例命令将如下所示-
gsutil -m setmeta -h "Content-Type:image/png" gs://bucket-name/**.txt
其中,该命令将bucket中名称以.txt
结尾的所有对象的"内容类型"设置为image/png。