{"id":37089683,"url":"https://github.com/andrewstuart/go-fuse","last_synced_at":"2026-01-14T10:59:42.117Z","repository":{"id":34683135,"uuid":"38657051","full_name":"andrewstuart/go-fuse","owner":"andrewstuart","description":"FUSE bindings for Go","archived":false,"fork":true,"pushed_at":"2015-06-29T09:06:25.000Z","size":4174,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-04-14T03:59:44.041Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"hanwen/go-fuse","license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andrewstuart.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":"CONTRIBUTING","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-07-07T01:48:04.000Z","updated_at":"2024-04-14T03:59:44.042Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/andrewstuart/go-fuse","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/andrewstuart/go-fuse","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewstuart%2Fgo-fuse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewstuart%2Fgo-fuse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewstuart%2Fgo-fuse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewstuart%2Fgo-fuse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andrewstuart","download_url":"https://codeload.github.com/andrewstuart/go-fuse/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrewstuart%2Fgo-fuse/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28417801,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T10:47:48.104Z","status":"ssl_error","status_checked_at":"2026-01-14T10:46:19.031Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-14T10:59:41.225Z","updated_at":"2026-01-14T10:59:42.104Z","avatar_url":"https://github.com/andrewstuart.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\nGO-FUSE: native bindings for the FUSE kernel module.\n\n\nHIGHLIGHTS\n\n* High speed: as fast as libfuse using the gc compiler for single\nthreaded loads.\n\n* Supports in-process mounting of different FileSystems onto\nsubdirectories of the FUSE mount.\n\n* Supports 3 interfaces for writing filesystems:\n  - PathFileSystem: define filesystems in terms path names.\n  - NodeFileSystem: define filesystems in terms of inodes.\n  - RawFileSystem: define filesystems in terms of FUSE's raw\n  wire protocol.\n\n* Both NodeFileSystem and PathFileSystem support manipulation of true\n  hardlinks.\n\n* Includes two fleshed out examples, zipfs and unionfs.\n\n\nEXAMPLES\n\n* examples/hello/hello.go contains a 60-line \"hello world\" filesystem\n\n* zipfs/zipfs.go contains a small and simple read-only filesystem for\n  zip and tar files. The corresponding command is in example/zipfs/\n  For example,\n\n    mkdir /tmp/mountpoint\n    example/zipfs/zipfs /tmp/mountpoint file.zip \u0026\n    ls /tmp/mountpoint\n    fusermount -u /tmp/mountpoint\n\n* zipfs/multizipfs.go shows how to use in-process mounts to\n  combine multiple Go-FUSE filesystems into a larger filesystem.\n\n* fuse/loopback.go mounts another piece of the filesystem.\n  Functionally, it is similar to a symlink.  A binary to run is in\n  example/loopback/ . For example\n\n    mkdir /tmp/mountpoint\n    example/loopback/loopback -debug /tmp/mountpoint /some/other/directory \u0026\n    ls /tmp/mountpoint\n    fusermount -u /tmp/mountpoint\n\n* unionfs/unionfs.go: implements a union mount using 1 R/W branch, and\n  multiple R/O branches.\n\n    mkdir -p  /tmp/mountpoint /tmp/writable\n    example/unionfs/unionfs /tmp/mountpoint /tmp/writable /usr \u0026\n    ls /tmp/mountpoint\n    ls -l /tmp/mountpoint/bin/vi\n    rm /tmp/mountpoint/bin/vi\n    ls -l /tmp/mountpoint/bin/vi\n    cat /tmp/writable/*DELETION*/*\n\n* union/autounionfs.go: creates UnionFs mounts automatically based on\n  existence of READONLY symlinks.\n\n\nTested on:\n\n- x86 32bits (Fedora 14).\n- x86 64bits (Ubuntu Lucid).\n\n\nBENCHMARKS\n\nWe use threaded stats over a read-only filesystem for benchmarking.\nAutomated code is under benchmark/ directory. A simple C version of\nthe same FS gives a FUSE baseline\n\nData points (Go-FUSE version May 2012), 1000 files, high level\ninterface, all kernel caching turned off, median stat time:\n\nplatform                    libfuse     Go-FUSE      difference (%)\n\nLenovo T60/Fedora16 (1cpu)  349us       355us        2% slower\nLenovo T400/Lucid   (1cpu)  138us       140us        5% slower\nDell T3500/Lucid    (1cpu)   72us        76us        5% slower\n\nOn T60, for each file we have\n- Client side latency is 360us\n- 106us of this is server side latency (4.5x lookup 23us, 1x getattr 4us)\n- 16.5us is due to latency measurements.\n- 3us is due to garbage collection.\n\n\n\nMACOS SUPPORT\n\ngo-fuse works somewhat on OSX. Known limitations:\n\n* All of the limitations of OSXFUSE, including lack of support for\n  NOTIFY.\n\n* OSX issues STATFS calls continuously (leading to performance\n  concerns).\n\n* OSX has trouble with concurrent reads from the FUSE device, leading\n  to performance concerns.\n\n* A bunch of tests under fuse/test/ fail, and the functionality they\n  test for OSX is likely broken.\n\n\nCREDITS\n\n* Inspired by Taru Karttunen's package, https://bitbucket.org/taruti/go-extra.\n\n* Originally based on Ivan Krasin's https://github.com/krasin/go-fuse-zip\n\n\nBUGS\n\nYes, probably.  Report them through\nhttps://github.com/hanwen/go-fuse/issues\n\n\nDISCLAIMER\n\nThis is not an official Google product.\n\n\nKNOWN PROBLEMS\n\nGrep source code for TODO.  Major topics:\n\n* Support for umask in Create\n\n* Missing support for network FS file locking: FUSE_GETLK, FUSE_SETLK,\n  FUSE_SETLKW\n\n* Missing support for FUSE_INTERRUPT, CUSE, BMAP, POLL, IOCTL\n\n* In the path API, renames are racy; See also:\n\n    http://sourceforge.net/mailarchive/message.php?msg_id=27550667\n\n  Don't use the path API if you care about correctness.\n\n\nLICENSE\n\nLike Go, this library is distributed under the new BSD license.  See\naccompanying LICENSE file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrewstuart%2Fgo-fuse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandrewstuart%2Fgo-fuse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrewstuart%2Fgo-fuse/lists"}