gpt4 book ai didi

node.js - 谷歌云存储目录大小

转载 作者:太空宇宙 更新时间:2023-11-04 00:09:55 25 4
gpt4 key购买 nike

我正在尝试了解如何计算 google-cloud-storage 存储桶内目录的大小。

到目前为止我发现了两种方法:

  • 使用 gsutils (我真的不能这样做,因为它在我需要执行此操作的计算机中不可用)
  • 使用 nodejs 库中的 getMetadata 方法。

问题是 getMetatada 方法仅适用于文件,而不适用于目录(或所谓的前缀)。

我可以列出所有文件并询问它们的大小,但 getMetadata 不允许查询批处理,我可能会让人们对 @google 感到愤怒。

你们知道有什么方法可以以尊重的方式正确地做到这一点吗?

真诚的

最佳答案

如果您能够使用gsutil,则可以使用du ,像这样:

gsutil du -sh YOUR_BUCKET/YOUR_DIRECTORY

-s 标志只会为您提供目录的大小,如果删除它,您还将看到其中文件的大小。 -h 标志以人类可读的格式(KiB、MiB 等)返回大小。如果不存在,它将显示大小(以字节为单位)。

但是,既然您提到不能那样做,那么您将必须使用如上所述的getMetadata

这个简单的脚本将在控制台中显示您想要的文件夹中所有文件的大小(以字节为单位)。您可以稍后修改它以将这些尺寸相加。

var http = require("http");
http.createServer(function (request, response) {
const Storage = require('@google-cloud/storage');
const projectId = "PROJECT-ID";
const bucketName = "BUCKET-NAME";
const storage = Storage({
projectId: projectId,
});
const options = {
prefix: "FOLDER-IN-BUCKET/"
}
storage
.bucket(bucketName)
.getFiles(options)
.then(results => {
const files = results[0];
files.forEach(file => {
storage.
bucket(bucketName)
.file(file.name)
.getMetadata()
.then(metadata_results => {
const metadata = metadata_results[0];
console.log(metadata.size);
console.log(metadata.name);
}).catch(metadata_err => {
console.error(metadata_err);
});
});
}).catch(err => {
console.error(err);
});
response.writeHead(200, {'Content-Type': 'text/plain'});
response.end('Hello World\n');
}).listen(8080);
console.log("Hello World");

不要忘记添加 Cloud Storage 的依赖项在您的 package.json 中。

您可以关注this suggestion ,使用每日存储日志,并从Node读取所述日志

关于node.js - 谷歌云存储目录大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50335898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com