У меня есть каталог с небольшими файлами в минимальных диапазонах от 2000 до 10000 файлов.
В настоящее время нет способов напрямую загрузить папку на s3 в aws-sdk-js.
мне нужно рекурсивно перебрать файлы внутри папки и загрузить их в s3.
Я использовал эти строки кода.
const PARALLEL_UPLOADS = 10;
const q = async.queue((task, callback) => {
s3.upload({
Bucket: 'xxx',
Key: task.name,
Body: fs.createReadStream(task.path)
}, callback)
}, PARALLEL_UPLOADS);
q.drain = function() {
console.log('all items have been processed');
};
Я использовал пакет walk npm для рекурсивного чтения файлов внутри папки.
внутри я помещаю файлы в очередь.
let walker = walk.walk(path);
walker.on("file", async function(root, stat, next) {
q.push({
name: stat.name,
path: root + "/" + stat.name,
}) })
Я тестировал папку размером 108 МБ, но в ней было 2700 файлов во вложенной папке.
загрузка занимает более 45 минут.
так как сократить время загрузки ??? Заранее спасибо.