我试图了解如何计算google-cloud-storage存储区内目录的大小。
到目前为止,我找到了两种方法:
gsutils
(我无法做到,因为它无法在我需要的机器中使用)getMetadata
库中的nodejs
方法。问题是getMetatada
方法仅适用于文件,而不适用于目录(或称为前缀)。
我可以列出所有文件,并询问所有文件的大小,但getMetadata
不允许进行查询批处理,我可能会让人们对@google感到愤怒。
你们是否知道以任何方式正确地做到这一点?
此致
答案 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
中读取所述日志