繁体   English   中英

在 GCS 中获取文件数和文件夹总大小的最快方法?

[英]Fastest way to get the files count and total size of a folder in GCS?

假设有一个文件夹根目录存储桶,它有子文件夹和文件。 有没有办法获得根文件夹的总文件数和总大小?

我尝试过的:使用gsutil du我可以快速获取大小,但不会计数。 使用gsutil ls ___我得到列表和大小,如果我用 awk 管道它并总结它们。 我可能会得到预期的结果,但 ls 本身需要很多时间。

那么有没有更好/更快的方法来处理这个问题?

如果您想长时间跟踪存储桶中的对象计数, Cloud Monitoring提供了指标“storage/object_count”。 该指标大约每天更新一次,这使得它对长期趋势更有用。

至于即时计数,不幸的是gsutil ls可能是您最好的选择。

进行某种对象列表是一种可行的方法 - gsutil 中的lsdu命令都在幕后执行对象列表 API 调用。

如果您想获取存储桶中所有对象的摘要,请检查 Cloud Monitoring( 如文档中所述)。 但是,如果您想要对象子集的统计信息,这不适用 - GCS 不支持实际的“文件夹”,因此“文件夹” foo下的所有对象实际上只是使用通用前缀foo/命名的对象。

如果要分析给定前缀下的对象数量,则需要执行对象列表 API 调用(使用客户端库或使用 gsutil)。 列出操作每个响应只能返回这么多对象,因此是分页的,这意味着如果您在所需前缀下有很多对象,则必须进行多次调用。 每个列表调用的最大结果数目前为 1,000。 例如,如果您要列出 200,000 个对象,则必须进行 200 个连续的 API 调用。

关于 gsutil 的ls

在完成ls命令时,gsutil 可以在多种情况下执行“额外”工作,例如使用-L标志执行“长”列表或使用-r标志执行递归列表时。 为了节省时间并尽可能少地执行列表以获取某个前缀下的总字节数,您需要使用 gsutil 的通配符支持进行“平面”列表,例如:

gsutil ls -l gs://my-bucket/some-prefix/**

或者,您可以尝试使用 GCS 客户端库之一编写脚本,例如Python 库及其list_blobs功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM