2016-10-10 21 views
0

手动创建读/写流并有效地自己执行复制代码的缺点是否有一个简单的方法来使用节点复制sftp文件夹中的文件?我已经检查过第三方库,并且有很多简单的方法可以将本地文件复制到sftp站点。但我想到的是连接到sftp,那么理想情况下使用库来发出一个简单的命令,如“复制文件A并将其重命名为B”,而不必下载文件。使用节点复制一个sftp文件到位

回答

0

有一个叫做ssh2的模块。我认为这是你需要的。

https://github.com/mscdex/ssh2

阅读文档有很多的例子。

例如何获得目录列表

var Client = require('ssh2').Client; 

var conn = new Client(); conn.on('ready', function() { console.log('Client :: ready'); conn.sftp(function(err, sftp) { if (err) throw err; sftp.readdir('foo', function(err, list) { if (err) throw err; console.dir(list); conn.end(); }); }); }).connect({ host: '192.168.100.100', port: 22, username: 'frylock', password: 'nodejsrules' });

而且看一看方法fastPutfastGet

https://github.com/mscdex/ssh2-streams/blob/master/SFTPStream.md#sftpstream-static-constants

希望这有助于。

+0

谢谢,米科拉。但fastPut和fastGet实际上下载和上传文件。我需要一些可以轻松地将文件复制到sftp服务器的地方,而不需要涉及我的本地文件结构。我看了一下ssh,并没有真正看到那些符合法案的东西,没有手动设置读/写流来打开文件,复制数据,然后将它写入新文件。据推测,任何复制功能都可以。我只是懒惰,寻找一个隐藏在一个简单的“复制”API调用背后的脏工作的图书馆:-) –

+0

你也可以运行shel命令。因此,只检查文档,你会看到。你可以做一些像rm -rf someDir或cp的文件到其他地方。或者任何 –

+0

像这样client.exec('cd'+ config.projectPath +'&& git status'+'&& git branch'+'&& git checkout',function(err,stream){}) –

相关问题