One of the nice things about the Unix philosophy that Linux inherited is that the filesystem is very modular. That’s good, too, because a typical system might want a choice of filesystems like ext4, riserfs, btrfs, and even network systems like nfs. Besides that, there are fake file systems like /sys and /dev that help Linux make everything look like a file. The downside is that building a filesystem required changing the kernel or, at least, writing a loadable module. That’s not as hard as it sounds, but it is a little more difficult than writing a normal program. Then came FUSE — file system in user space. This is a single file system module that allows you to create new file systems by writing ordinary code.
My Favorite Fuses
There are several FUSE filesystems that are really useful. Here are some of my favorites:
sshfs – Mount a remote filesystem using nothing more than ssh access
rclone – Rclone can access and mount many remote file systems
tagassistant – Store files with a unique tag access method
fuse-zip – Mount zip files
gitfs – Mount with git
There are many others. You can find systems to work with, for example, NTFS and a slew of cloud service providers.