我正在使用下面的代碼遞回獲取檔案夾中的所有路徑,并將它們一一推送到谷歌云存盤桶中。問題是,它非常慢。我每天需要推送大約 30-40K 檔案,每個檔案都需要 0.25 到 0.5 秒來推送。有什么辦法可以把它們推到一起嗎?散裝?或者另一種讓它更快的方法?
const {Storage} = require('@google-cloud/storage');
const fs = require('fs');
const path = require('path');
function getAllFilesInDirectoryRecursively(dir){
const files = fs.readdirSync(dir, {withFileTypes: true});
for (const file of files) {
if (file.isDirectory()) {
yield* getAllFilesInDirectoryRecursively(path.join(dir, file.name));
} else {
yield path.join(dir, file.name);
}
}
}
const storage = new Storage();
(async function(){
for (let filePath of getAllFilesInDirectoryRecursively('./main/')) {
await storage.bucket('bucket.domain.com').upload('./' filePath, {
destination: filePath.replace('main', ''),
});
}
})()
uj5u.com熱心網友回復:
您可以使用gsutil以下方式上傳目錄的內容:
gsutil cp -r ./main gs://bucket-name
要定期運行此命令,您可以使用 cron 作業或在生成檔案后從 NodeJS 腳本運行命令。
對于沒有 的解決方案gsutil,最好使用Promise.all()而不是單獨運行所有uploadPromise。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/531236.html
標籤:Google Cloud Collective javascript节点.js谷歌云平台谷歌云存储
