2016-10-10 45 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){}) –

相關問題