monofs is a powerful, distributed filesystem designed for distributed workloads. It provides a simple and intuitive API for managing files and directories in a content-addressed storage system.
[!WARNING] This project is in early development and is not yet ready for production use.
Features
- Content-addressed storage
- Immutable data structures with copy-on-write semantics
- Support for files, directories, and symbolic links
- Asynchronous API for efficient I/O operations
- Versioning support for tracking file and directory history
Usage
Here are some examples of how to use the monofs API:
Working with Files
use ;
use ;
use ;
async
Working with Directories
use ;
use ;
async
API Overview
File: Represents a file in the filesystemDir: Represents a directory in the filesystemFileInputStream: Provides read access to file contentsFileOutputStream: Provides write access to file contentsMetadata: Stores metadata for files and directoriesStorable: Trait for storing and loading entities from the content-addressed store
For more detailed examples and API usage, check out the examples directory and the API documentation.
Development
To set up monofs for development:
- Ensure you have Rust installed (latest stable version)
- Clone the monocore repository:
- Build the project:
- Run tests:
Contributing
Contributions are welcome! Please read the CONTRIBUTING.md file for guidelines on how to contribute to this project.
License
This project is licensed under the Apache License 2.0.
Acknowledgements
monofs draws inspiration from the WNFS (Webnative File System) project.