Cgofuse is a cross-platform FUSE library for Go. It is supported on multiple platforms and can be ported to any platform that has a FUSE implementation. It has cgo and !cgo ("nocgo") variants depending on the platform.
Windows
macOS
Linux
FreeBSD
NetBSD*
OpenBSD*
cgo
✓
✓
✓
✓
✓
✓
!cgo
✓
* NetBSD and OpenBSD support is experimental. There are known issues that stem from the differences in the NetBSD librefuse and OpenBSD libfuse implementations from the reference libfuse implementation
$ cd cgofuse
$ go install -v ./fuse ./examples/memfs ./examples/passthrough
Linux
Prerequisites: libfuse-dev, gcc
Build:
$ cd cgofuse
$ go install -v ./fuse ./examples/memfs ./examples/passthrough
FreeBSD
Prerequisites: fusefs-libs
Build:
$ cd cgofuse
$ go install -v ./fuse ./examples/memfs ./examples/passthrough
# You may also need the following in order to run FUSE file systems.
# Commands must be run as root.
$ vi /boot/loader.conf # add: fuse_load="YES"
$ sysctl vfs.usermount=1 # allow user mounts
$ pw usermod USERNAME -G operator # allow user to open /dev/fuse
NetBSD
Prerequisites: NONE
Build:
$ cd cgofuse
$ go install -v ./fuse ./examples/memfs ./examples/passthrough
# You may also need the following in order to run FUSE file systems.
# Commands must be run as root.
$ chmod go+rw /dev/puffs
$ sysctl -w vfs.generic.usermount=1
OpenBSD
Prerequisites: NONE
Build:
$ cd cgofuse
$ go install -v ./fuse ./examples/memfs ./examples/passthrough
NOTE: OpenBSD 6 removed the kern.usermount option, which allowed non-root users to mount file systems [link]. Therefore you must be root in order to use FUSE and cgofuse.
How to use
User mode file systems are expected to implement fuse.FileSystemInterface. To make implementation simpler a file system can embed ("inherit") a fuse.FileSystemBase which provides default implementations for all operations. To mount a file system one must instantiate a fuse.FileSystemHost using fuse.NewFileSystemHost.
The full documentation is available at GoDoc.org: package fuse
There are currently three example file systems:
Hellofs is an extremely simple file system. Runs on all OS'es.
Memfs is an in memory file system. Runs on all OS'es.
Passthrough is a file system that passes all operations to the underlying file system. Runs on all OS'es except Windows.
Notifyfs is a file system that can issue file change notifications. Runs on Windows only.
How it is tested
The following software is being used to test cgofuse.
请发表评论