SFTP client for node.js.
Support download or upload specified directories or files.
- node.js -- v0.8.0 or newer
npm install ssh2-sftp
ex. dirs:
node-sftp
|- /build
|- index.html
|- page.html
|- /static
|- /js
|- index.js
|- page.js
|- /css
|- index.css
|- page.css
|- /down
const Sftp = require('ssh2-sftp');
var client = new Sftp({
"host": "192.168.1.1",
"port": 22,
"user": "root",
"password": "root",
"privateKey": fs.readFileSync('/.ssh/id_rsa') // password or privateKey
});
client.connect(callback);
Upload from local dirs: static
in ./build
to remote SFTP: /node-sftp/build
.
client.connect(() => {
let options = {
source: 'static', // ex. static js static/js static/js/index.js
localPath: './build',
remotePath: '/node-sftp/build'
};
client.download(options, callback);
});
/* Remote SFTP dirs output:
* node-sftp
* |- /build
* |- /static
* |- /js
* |- index.js
* |- page.js
* |- /css
* |- index.css
* |- page.css
*/
Download from romate SFTP: static
in /node-sftp/build
to local: ./down
.
client.connect(() => {
let options = {
source: 'static', // ex. static static/js static/js/index.js
localPath: './down',
remotePath: '/node-sftp/build'
};
client.download(options, callback);
});
/* Local dirs output:
* node-sftp
* |- /build
* |- ...
* |- /down
* |- /static
* |- /js
* |- index.js
* |- page.js
* |- /css
* |- index.css
* |- page.css
*/
To create an instance of the wrapper use the following code:
var sftpClient = require('ssh2-sftp'),
client = new sftpClient(config);
config
containers the sftp server configuration:
- host - string - Hostname or IP address of the server. Default:
'localhost'
- port - integer - Port number of the server. Default:
'localhost'
- user - string - Username for authentication.
- password - string - Password for password-based user authentication.
- privateKey - mixed - Buffer or string that contains a private key for either key-based or hostbased user authentication (OpenSSH format).
After creating the new object you have to manually connect to the server bt using the connect
method:
client.connect(callback);
And passing the callback which should be executed when the client is ready.
-
upload(< Object > options,< Function > callback) - expand the
options.source
paths using the glob module, upload all found files and directories to the specifiedoptions.remotePath
, and passing the callback which should be executed after the client uploaded successfully.options
can have the following properties:- source - string - The
source
which should to be uploaded, if not setsource
, upload all of files and directories. Supports files and directories. Default:''
- localPath - string - The local directory which should to be uploaded.
- remotePath - string - The remote sftp directory which should to be received.
- source - string - The
-
download(< Object > options,< Function > callback) - downloads the contents of
options.remotePath
tooptions.localPath
if both exist, and passing the callback which should be executed after the client downloaded successfully.options
can have the following properties:- source - string - The
source
which should to be downloaded. Supports files and directories. If not setsource
, download all of files and directories. Default:''
(notice:Source
path is based onremotePath
.) - localPath - string - The local directory which should to be received.
- remotePath - string - The remote sftp directory which should to be downloaded.
- source - string - The