This project aims to implement a remote file system client in Rust that presents a local mount point, mirroring the structure of a file system hosted on a remote server. The file system should support transparent read and write access to remote files.
- Provide a local file system interface that interacts with a remote storage backend
- Enable standard file operations (read, write, create, delete, etc.) on remote files as if they were local
- Ensure compatibility with Linux systems
- Optionally support Windows and macOS with best-effort implementation
- Mount a virtual file system to a local path (e.g.,
/mnt/remote-fs) - Display directories and files from a remote source
- Read files from the remote server
- Write modified files back to the remote server
- Support creation, deletion, and renaming of files and directories
- Maintain file attributes such as size, timestamps, and permissions (as feasible)
- Run as a background daemon process that handles filesystem operations continuously
The server should offer a set of RESTful APIs for file operations:
GET /list/<path>– List directory contentsGET /files/<path>– Read file contentsPUT /files/<path>– Write file contentsPOST /mkdir/<path>– Create directoryDELETE /files/<path>– Delete file or directory
The server can be implemented using any language or framework, but should be RESTful and stateless.
- Optional local caching layer for performance
- Configurable cache invalidation strategy (e.g., TTL or LRU)
- ✅ Linux – Full support using FUSE (
libfuse,fuser, orasync-fuse) - ⚪ macOS – Optional support using macFUSE (best effort, no guarantee of full stability)
- ⚪ Windows – Optional support using WinFSP or Dokany with C bindings (lower priority)
- Support for large files (100MB+) with streaming read/write
- Reasonable latency (<500ms for operations under normal network conditions)
- Graceful startup and shutdown procedures