假设有一个带有根文件夹的存储桶,它包含子文件夹和文件。有什么方法可以获取根文件夹的文件总数和总大小?
我尝试了什么:
使用gsutil du
可以快速获取大小,但不会得到计数。如果使用gsutil ls ___
,我将得到列表和大小,如果将其与awk进行管道相加并求和。我可能会得到预期的结果,但是ls本身要花费很多时间。
那么有没有更好/更快的方法来解决这个问题?
答案 0 :(得分:2)
如果要长时间跟踪存储桶中的对象数,则Cloud Monitoring提供metric“ storage / object_count”。该指标每天大约更新一次,这对于长期趋势而言更有用。
关于即时计数,不幸的是gsutil ls
可能是您最好的选择。
答案 1 :(得分:0)
要做某种对象列表是一种方法-gsutil中的ls
和du
命令在后台执行对象列表API调用。
如果要获取存储桶中所有所有对象的摘要,请选中Cloud Monitoring(as mentioned in the docs)。但是,如果您需要对象的子集的统计信息,这将不适用-GCS不支持实际的“文件夹”,因此,“文件夹” foo
下的所有对象实际上都是使用通用前缀命名的对象,foo/
。
如果要分析给定前缀下的对象数量,则需要执行对象列表API调用(使用客户端库或gsutil)。列表操作每个响应只能返回这么多对象,因此是分页的,这意味着如果在所需前缀下有很多对象,则必须进行多次调用。目前,每个列表调用的结果数上限为1,000。例如,如果要列出200,000个对象,则必须进行200次连续的API调用。
ls
的注释:在多种情况下,gsutil在完成ls
命令时可以做“额外”工作,例如,使用-L
标志进行“长”列出或使用{{ 1}}标志。为了节省时间并执行尽可能少的列表,以获得某个前缀下的字节总数,您需要使用gsutil的通配符支持来进行“固定”列表,例如:
-r
或者,您可以尝试使用一种GCS客户端库(例如the Python library及其list_blobs功能)编写脚本。