I'm working on a FUSE filesystem that represents file tags as dynamically
nested directories. It's heavily inspired by Tagsistant. I would have been
happy with Tagsistant if it didn't segfault and fill my console with
errors every time I access the mounted directory.
The idea is that you can tag a file by copying it to a path with tags in it.
[code]
$ cp goblin_slayer_s1e1.mkv mnt/mkv/anime/rape/@
[\code]
You can get all files with the given tags by listing in a path with tags in it.
[code]
$ ls mnt/anime/tiddies/@
[\code]
My filesystem can only read files and copy from outside the filesystem. I plan
to get the following features in someday:
* copy from one tag to another
* mody files
* delete files or tags
* ontological reasoning (anime is show)
* triple (machine) tags (show:episode:1)
* negate tags (ls mnt/anime/-gayshit/@)
* or-ing tags (ls mnt/anime/ass/+/anime/tiddies/@)
* multithreading
Tags are stored in an SQLite database with file hashes. Files are stored in
the Tagfs home directory in subdirectories named after their hash. Files may
have multiple names, which are stored as hardlinks to the original data file.
The reason I store the names as hardlinks is so they can be easily copied out
of the database if it ever becomes corrupted.
[code]
$ tree ./local/share/tagfs
.local/share/tagfs
├── 25
│ └── c
│ └── fe17c3006dd3f5d5f46a8a54d699c
│ ├── data
│ └── names
│ └── spooked_cat.gif
├── 99
│ └── 4
│ └── d9b168731bf38e93de20ead7600cb
│ ├── data
│ └── names
│ └── wiggle_cat.gif
└── tagfs.sqlite3
8 directories, 5 files
[\code]
Is this something you'd use? Have any suggestions or code review?
Here's a link to my GitLab repo.
https://gitlab.com/elitist_neckbeard/tagfs
Here's a link to Tagsistant which inspired my project.
https://www.tagsistant.net/