c4milo / fusejs

Low level fuse bindings for nodejs
http://c4milo.github.io/fusejs
111 stars 72 forks source link
filesystem fuse-filesystem fusejs libfuse nodejs

FuseJS - Low level bindings for Fuse

Gitter Build Status

Fusejs are a set of NodeJS bindings for Fuse low level API. It allows you to write filesystems, in userspace, using Javascript and NodeJS. Even though most of the Fuse functions are already binded, this module has not been used in production. Use it at your own risk.

How it works

Fuse low level API is inherently asynchronous, therefore, there is no need for libuv thread pool.

FuseJS workflow looks like:

          node example/hello.js /tmp/hello_fs -ofsname=hellofs -orw -d
                                         ↕
                                Google V8 / FuseJS
Flow starts here!                        ↕
    ls -lah /tmp/hello_fs             libfuse
              ↕                          ↕
            glibc                      glibc
Userspace     ↕                          ↕
---------------------------------------------         
Kernel        ↕                          ↕
              ↕                          ↕
             VFS ↔ ↔ ↔ ↔ ↔ ↔ ↔ ↔ ↔ ↔ ↔  FUSE

                                        ...
                                        Ext4
                                        NFS
                                        ZFS

Fuse operations supported

The following Fuse low level operations are fully supported:

Installation

OSX

In order to use FuseJS you need to install any of the Fuse implementations for OSX. OSXFuse is the one that has been used throughout the FuseJS development. Go to http://osxfuse.github.com/ and follow the instructions to get it installed. Additionally, FuseJS toolchain uses pkg-config, you need to have it installed in your system as well, in order to compile FuseJS. It usually should come by default in your operating system, if not, then use your package manager to install it.

Linux

API Documentation

All the API Documentation can be found at:

You can also take a look at the examples in: (TODO!)

TODO

License

(The Mozilla Public License v 2.0 License) Copyright 2015 FuseJS Authors. All rights reserved.

This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.