Skip to content

Temporal module for SQLiteFS written in Rust, with configurable synchronization and storage options. Useful for filesystem change auditing. Optional compression.

License

Notifications You must be signed in to change notification settings

ris-work/sqlitefs_temporal

Repository files navigation

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

About

sqlite-fs allows Linux and MacOS to mount a sqlite database file as a normal filesystem.

Requirements

  • Latest Rust Programming Language (≥ 1.38)
  • libfuse(Linux) or osxfuse(MacOS) is requied by fuse-rs

Usage

Mount a filesystem

$ 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.

Unmount a filesystem

  • Linux
$ fusermount -u <mount_point>
  • Mac
$ umount <mount_point>

example

$ sqlite-fs ~/mount ~/filesystem.sqlite &
$ echo "Hello world\!" > ~/mount/hello.txt
$ cat ~/mount/hello.txt
Hello world!

functions

  • 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

About

Temporal module for SQLiteFS written in Rust, with configurable synchronization and storage options. Useful for filesystem change auditing. Optional compression.

Resources

License

Stars

Watchers

Forks

Packages

No packages published