{"id":15350600,"url":"https://github.com/gaul/mirrorfs","last_synced_at":"2025-04-15T04:22:16.762Z","repository":{"id":50358741,"uuid":"184847158","full_name":"gaul/mirrorfs","owner":"gaul","description":"Mirror filesystem operations and check for consistency","archived":false,"fork":false,"pushed_at":"2019-07-03T23:32:51.000Z","size":9,"stargazers_count":9,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-13T19:23:23.266Z","etag":null,"topics":["filesystem","fuse","testing"],"latest_commit_sha":null,"homepage":"","language":"C","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/gaul.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-05-04T03:19:39.000Z","updated_at":"2025-04-02T21:31:11.000Z","dependencies_parsed_at":"2022-09-22T00:11:31.628Z","dependency_job_id":null,"html_url":"https://github.com/gaul/mirrorfs","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/gaul%2Fmirrorfs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gaul%2Fmirrorfs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gaul%2Fmirrorfs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gaul%2Fmirrorfs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gaul","download_url":"https://codeload.github.com/gaul/mirrorfs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249004378,"owners_count":21196864,"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":["filesystem","fuse","testing"],"created_at":"2024-10-01T11:58:48.602Z","updated_at":"2025-04-15T04:22:16.731Z","avatar_url":"https://github.com/gaul.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mirrorfs\n\nA [FUSE](https://en.wikipedia.org/wiki/Filesystem_in_Userspace) filesystem that\nmirrors operations and checks for consistency.  mirrorfs ensures that the\nresults of operations are exactly the same, e.g., system call results, errnos,\nstat structs, read buffers.  This can help test an in-development filesystem\nagainst a known good one, e.g., ext4.\n\n## Usage\n\nOn Fedora, install dependencies via:\n\n```\nsudo dnf install fuse3 fuse3-devel fuse3-libs\n```\n\nBuild via `make` then run via:\n\n```\n./mirrorfs GOOD_PATH TESTING_PATH MOUNT_PATH\n```\n\nIf you provide the `-f` option mirrorfs will start in the foreground and log\nits operations.  Now programs can interact with `MOUNT_PATH` as usual.  When\nmirrorfs detects an inconsistency it will log the diverging result and abort.\n\n## License\n\nCopyright (C) 2019 Andrew Gaul\n\nLicensed under the MIT License\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgaul%2Fmirrorfs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgaul%2Fmirrorfs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgaul%2Fmirrorfs/lists"}