dalfs

Crates.iodalfs
lib.rsdalfs
version0.1.0
sourcesrc
created_at2023-10-07 14:23:08.126495
updated_at2023-10-11 13:26:47.750531
descriptionA Userspace filesystem based on OpenDAL
homepage
repository
max_upload_size
id996349
size88,076
Inoki (Inokinoki)

documentation

README

DalFs: a Userspace filesystem based on OpenDAL

Still a WIP!!! Could be buggy and risky, please use a VM to test. Take your own risk.

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 (?)
  • ...

Build

You might need to install libfuse-dev in order to use Rust fuser crate.

Just run the following command to build it:

cargo build

Run

To run, you will need to provide a series of

cargo run <mount-point> <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> 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 <mount-point> fs root=/tmp
image

And the following mount a filesystem backed by s3:

cargo run <mount-point> s3 root=/tmp 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.

Contribution

All kinds of contributions are welcomed. But I will firstly work on the functionnalities.

Commit count: 0

cargo fmt