Я использую сервер узлов для проверки и передачи файла с одного сервера (экземпляр EC2) на другой (ферма коммерческих серверов) с помощью scp2.
copyFile(tmpZip, remotepath, opts) {
return new Promise((resolve, reject) => {
const Client = require('scp2').Client;
const client = new Client(opts);
let perc = 0;
client.on('transfer', (buffer, uploaded, total) => {
const currentPerc = Math.round(uploaded * 100 / total);
if (currentPerc > perc) {
perc = currentPerc;
console.log('[ %s ] - [ %s ] Copied %s%', new Date(), tmpZip, perc);
}
});
console.log('[ %s ] Copy started %s', new Date(), tmpZip);
client.upload(tmpZip, remotepath, err => {
if (err) {
console.error('[ %s ]Copy failed ', tmpZip, err);
reject(err);
return;
}
console.log('[ %s ]File copied!', tmpZip);
resolve();
});
});
}
Мой выбор:
const opts = {
host,
username,
privateKey: Buffer.from(privateKey)
};
if (passphrase) {
opts.passphrase = passphrase;
}
Моя проблема заключается в том, что Node-серверу требуется около 20 минут для передачи (только передача, без проверки) файла объемом 1 ГБ, в то время как для обычного bash scp требуется всего 1 минута.
Известна ли проблема scp2?
Дополнительная информация:
Node-сервер находится внутри док-контейнера на сервере Ubuntu 16.04, во время процесса больше не генерируется сетевой трафик.