ssh2-fs

Transparent use of the `fs` module locally or over SSH

Usage no npm install needed!

<script type="module">
  import ssh2Fs from 'https://cdn.skypack.dev/ssh2-fs';
</script>

README

Build Status

Node.js ssh2-fs

The Node.js ssh2-fs package extends the ssh2 module to provide transparent of the fs and module either locally or over SSH.

Installation

This is OSS and licensed under the new BSD license.

npm install ssh2-fs

Usage

The API borrows from the fs.promises module with the additionnal first argument. The function run locally when "null" or it run over SSH when an ssh2 connection. Otherwise the API is strictly the same with a few exception due to the SSH2 API:

  • The exists function which execute the call with 2 arguments: an error and the exists argument.
  • The functions createReadStream and createWriteStream return a promise with a stream argument.

Only the asynchronous functions are ported, we have no plan to support sunchronous functions. Morevover, they are not supported by [ssh2].

Non (yet) implemented functions are "ftruncate", "truncate", "fchown", "lchown", "fchmod", "lchmod", "fstat", "realpath", "rmdir", "close", "open", "utimes", "fsync", "write", "read", "appendFile", "watchFile", "unwatchFile", "watch".

Examples

The example is using both the "ssh2-connect" and "ssh2-fs" modules.

const connect = require('ssh2-connect');
const fs = require('ssh2-fs');
const ssh = await connect({host: 'localhost'});
await fs.mkdir(ssh, '/tmp/a_dir');

Development

Tests are executed with mocha. To install it, simple run npm install, it will install mocha and its dependencies in your project "node_modules" directory.

To run the tests:

npm test

The tests run against the CoffeeScript source files.

To generate the JavaScript files:

make build

The test suite is run online with Travis against Node.js version 0.9, 0.10 and 0.11.

Contributors