https://github.com/inokinoki/dalfs
https://github.com/inokinoki/dalfs
Last synced: over 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/inokinoki/dalfs
- Owner: Inokinoki
- License: mit
- Archived: true
- Created: 2023-09-09T17:02:45.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-03-11T19:54:00.000Z (over 2 years ago)
- Last Synced: 2025-01-24T15:22:30.478Z (over 1 year ago)
- Language: Rust
- Size: 56.6 KB
- Stars: 25
- Watchers: 2
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# DalFs: a Userspace filesystem based on OpenDAL
Could be buggy and risky, please use a VM to test. Take your own risk.
Update:
- **2024/03/11: Not continue anymore. Any further efforts are welcomed in [OpenDAL ofs](https://github.com/apache/opendal/tree/main/bin/ofs#opendal-file-system).**
Currently, it can provide a Userspace filesystem backing by [OpenDAL](https://github.com/apache/incubator-opendal), thus supports the following backend as data sources:
- Atomicserver
- Azblob
- Azdls
- Cacache
- Cos
- Dashmap
- Etcd
- Foundationdb
- Fs
- Ftp
- Gcs
- Ghac
- Hdfs
- Http
- Ipfs
- Ipmfs
- Memcached
- Memory
- MiniMoka
- Moka
- Obs
- Onedrive
- Gdrive
- Dropbox
- Oss
- Persy
- Redis
- Postgresql
- Rocksdb
- S3
- Sftp
- Sled
- Supabase
- VercelArtifacts
- Wasabi
- Webdav
- Webhdfs
- Redb
- Tikv
The functionnality is very limited right now, because I just use several hours to come up with the idea and implement it.
Here are the main fs functionnalities implemented:
- Read directory
- Read file
- Read attributes (not well implemented)
- Create directory
- Create file
- Write file
or not yet implemented:
- Permission (?)
- Fsync (?)
- ...
## Build
You might need to install `libfuse-dev` in order to use Rust `fuser` crate.
Just run the following command to build it:
```bash
cargo build
```
## Run
To run, you will need to provide a series of
```bash
cargo run --release -- -t ...
```
where the `mount-point` is a path to mount the filesystem; `scheme` is an OpenDAL scheme, all in lowercase (e.g. "ftp", "s3", "fs", etc.).
The remaining parameters are `=[,=]` pairs needed by OpenDAL schemes.
Currently `fs` and `s3` backends are tested. For example, the following command will mount a filesystem using the data in your `/tmp` directory to the mount-point.
```bash
cargo run --release -- -t fs -o root=/tmp
```

And the following mount a filesystem backed by s3:
```bash
cargo run --release -t s3 -o root=,endpoint=,bucket=,access_key_id=,secret_access_key=,region=auto
```
For more details and more backends, please check [OpenDAL scheme doc](https://opendal.apache.org/docs/rust/opendal/enum.Scheme.html).
## Contribution
All kinds of contributions are welcomed. But I will firstly work on the functionnalities.