This project contains my first Rust project, the one I used to learn how to write Rust programs and also my first RDBMS audit triggers project. This was a learning exercise on handling and shaving temporal data. This project also introduces some advanced configurables and incorporates some bugfixes from my other sqlitefs
repository. Thanks for creating the original SQLiteFS, @narumatt and the original SQLite project, Dr. D. Richard Hipp. This project is mostly complete save two features I wish it had:
- Periodic writes or write-on-socket-activation to the disks from a DB mapped by memory
- Create genesis from a given time T and shave the past entries
This has been tested extensively on a Chromebook ((probably ext4) eMMC, external flash drive), FreeBSD VM (UFS backing it), NetBSD VM (FFS or whatever NetBSD uses + Puffs/librefuse). Contents are licensed under the Open Software License, version 3.0 (no later versions).
sqlite-fs allows Linux and MacOS to mount a sqlite database file as a normal filesystem.
- Latest Rust Programming Language (≥ 1.38)
- libfuse(Linux) or osxfuse(MacOS) is requied by fuse-rs
$ sqlite-fs <mount_point> [<db_path>]
If a database file doesn't exist, sqlite-fs create db file and tables.
If a database file name isn't specified, sqlite-fs use in-memory-db instead of a file. All data will be deleted when the filesystem is closed.
- Linux
$ fusermount -u <mount_point>
- Mac
$ umount <mount_point>
$ sqlite-fs ~/mount ~/filesystem.sqlite &
$ echo "Hello world\!" > ~/mount/hello.txt
$ cat ~/mount/hello.txt
Hello world!
- Create/Read/Delete directories
- Create/Read/Write/Delete files
- Change attributions
- Copy/Move files
- Create Hard Link and Symbolic Link
- Read/Write extended attributes
- [] File lock operations
- [] Strict error handling