{"id":16282960,"url":"https://github.com/paulrobello/parfuse","last_synced_at":"2025-08-26T22:28:27.522Z","repository":{"id":95730889,"uuid":"345779270","full_name":"paulrobello/ParFuse","owner":"paulrobello","description":"NodeJs in memory Fuse filesystem written in Typescript","archived":false,"fork":false,"pushed_at":"2021-08-04T16:51:59.000Z","size":171,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-12-02T09:44:33.493Z","etag":null,"topics":["example","fuse","fuse-filesystem","nodejs","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/paulrobello.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-03-08T20:01:15.000Z","updated_at":"2023-12-21T12:43:27.000Z","dependencies_parsed_at":"2023-05-21T19:45:08.272Z","dependency_job_id":null,"html_url":"https://github.com/paulrobello/ParFuse","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulrobello%2FParFuse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulrobello%2FParFuse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulrobello%2FParFuse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulrobello%2FParFuse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/paulrobello","download_url":"https://codeload.github.com/paulrobello/ParFuse/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228528598,"owners_count":17933283,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["example","fuse","fuse-filesystem","nodejs","typescript"],"created_at":"2024-10-10T19:12:08.895Z","updated_at":"2024-12-06T21:44:15.673Z","avatar_url":"https://github.com/paulrobello.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"**ParFuse FS** is an example in memory filesystem written in Typescript that attempts to implement all Fuse callbacks \nimplemented by the [fuse-friends/fuse-native](https://github.com/fuse-friends/fuse-native) package.\n\nNote for custom INode, Devices file types, or SUID to work you must use \n[my fork of the fuse-native package](https://github.com/paulrobello/fuse-native) and run as a privileged user.\n\nMy fork also has support for WinFsp copied from [SandruSebastian/fuse-native](https://github.com/SandruSebastian/fuse-native).\n\nThis filesystem implements **very** basic INode and file descriptor tracking.\n\nGeneral utilities are located in _utils.ts_. Fuse or filesystem related items are in fuseUtils.ts. Fortune example items  \nare located in _fortune.ts_. The main entry point is _index.ts_.\n\nThis project attempts to mount the filesystem on _mnt_ in the same folder as the running script. There is an option to \nauto create the folder if it does not exist.\n\nThe system will allow up to 75% of available NodeJs heap memory to be used by files.\nIt simulates blocks as 4KB blocks which is the minimum any nonempty file will occupy.\n\nParFuse also has a mechanism to issue commands to the filesystem by writing to _/proc/cmd_.\nContents in /proc/cmd are processed line by line.\n\nCurrent supported commands are:\n- delay timeMs  will delay execution of the next commands for timeMs milliseconds.\n- newFortune will create or overwrite the file named fortune in the root of the fs with a random quote obtained from \n  [ruanyf/fortunes](https://raw.githubusercontent.com/ruanyf/fortunes/master/data/fortunes)  \n\nThere are some helper functions named _mntChroot_ and _unmountChroot_ that will handle mounting the needed folders from \nthe host onto the ParFuse fs to allow you to chroot into the virtual filesystem and run things such as _bash_.\nYou must be using a privileged user to use these functions.\n\nMost files in this project have a debugLevel const at the top of the file which will when set to 'trace' will enable \nlots of debug output. Trace mode is set by an environment variable named \"trace\" being set to \"1\".\n\n\n\nHave fun and please give feedback!\n\n\n### License ###\n\nThis content is released under the (http://opensource.org/licenses/MIT) MIT License.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaulrobello%2Fparfuse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpaulrobello%2Fparfuse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaulrobello%2Fparfuse/lists"}