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.
Currently, it can provide a Userspace filesystem backing by 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 (?)
- ...
You might need to install libfuse-dev
in order to use Rust fuser
crate.
Just run the following command to build it:
cargo build
To run, you will need to provide a series of
cargo run --release -- <mount-point> -t <scheme> ...
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 <key>=<value>[,<key>=<value>]
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.
cargo run --release -- <mount-point> -t fs -o root=/tmp
And the following mount a filesystem backed by s3:
cargo run --release <mount-point> -t s3 -o root=<s3-root-path>,endpoint=<end-point-url>,bucket=<bucket>,access_key_id=<access-key-id>,secret_access_key=<secret-access-key>,region=auto
For more details and more backends, please check OpenDAL scheme doc.
All kinds of contributions are welcomed. But I will firstly work on the functionnalities.