1
我试图创建一个脚本来将文件传输到我的NAS用于备份目的。 我正在使用SSH2模块(https://github.com/mscdex/ssh2)设置SFTP连接。 对于较小的文件一切顺利,大文件(> 500MB)通常会在70%到100%之间完成冻结。 我用于传输的fastPut方法突然停止传输,不再触发任何事件。SSH2.SFTP node.js备份脚本与大文件冻结
我已经采取了相关的一段代码:
var uploadUpdate=true;
sftp.fastPut(localPath+'/'+upload, receiver.path+'/'+newDir+'/'+upload, {step:function(totalTransferred, chunk, total){
if(uploadUpdate){ //since this event will be triggered a lot I figured I should keep some time (5 sec) between the logs
uploadUpdate=false;
console.log("- Progress '"+upload+"' => "+(Math.floor(totalTransferred/total*10000)/100)+"%, "+totalTransferred+" of "+total+" bytes, chunk: "+chunk);
setTimeout(function(){
uploadUpdate=true;
},5000);
}
}}, function(err){
if(err){
if(!fileErrors[upload]) fileErrors[upload]=0;
++fileErrors[upload];
if(fileErrors[upload]==5)
console.log("'"+upload+"' failed 5 times... skipping now...");
else{
console.log("Upload of '"+upload+"' failed, re-add to queue.");
uploadsToDo.push(upload);
}
}
nextUpload();
});
没有人有任何想法可能会导致这个问题?
你使用的是什么ssh服务器和ssh服务器版本?另外,你使用的是什么版本的节点? – mscdex
Node.js版本:3.14.5.10, ssh2版本:0.2.17 – NullCrayfish
这有点晚,但您可以尝试ssh2 v0.3.x.它包含对ChannelStream的改进,反过来可以改进SFTP。 – mscdex