谷歌云存储目录大小

时间:2018-05-14 17:28:06

标签: node.js google-cloud-storage

我试图了解如何计算google-cloud-storage存储区内目录的大小。

到目前为止,我找到了两种方法:

  • 使用gsutils(我无法做到,因为它无法在我需要的机器中使用)
  • 使用getMetadata库中的nodejs方法。

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

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

你们是否知道以任何方式正确地做到这一点?

此致

1 个答案:

答案 0 :(得分:0)

如果您能够使用private MainWindow parent; public Page1() { InitializeComponent(); } public Page1(MainWindow main) { this.parent = main; InitializeComponent(); } ,则可以使用du,如下所示:

gsutil

gsutil du -sh YOUR_BUCKET/YOUR_DIRECTORY标志只会显示目录的大小,如果删除它,您还会看到里面文件的大小。 -s标志以人类可读的格式(KiB,MiB等)返回大小。如果不存在,它将以字节为单位显示大小。

但是,既然你提到你不能这样做,你将不得不使用-h

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

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的依赖项。

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

中读取所述日志