Fuse for OS X


A few months ago I posted a short article about using the SSH filesystem to mount an OS X directory from Ubuntu in Parallels. At the time, I had no idea what it was or how it worked.

Yesterday, however, I recorded an interview with Amit Signh, the author of the OS X Internals book. This interview will show up on my Technometria podcast on IT Conversations next week. We got into a discussion of the MacFUSE project, which Amit runs and something clicked.

FUSE is a specification for creating file systems in user space (i.e. not in the kernel). The hard parts are put in the kernel and then users can write file systems using those API commands to do interesting things--like build SSH-based filesystems.

I'd installed FUSE on Ubuntu for my little project without really realizing what it was and then just used sshfs. MacFUSE is FUSE for OS X. So, install the MacFUSE kernel extension and then you can write mountable file systems, for almost anything, as user-space programs in whatever language you like.

Finder showing an sshfs
mounted remote directory
Finder showing an sshfs mounted remote directory
(click to enlarge)

Why do you care? Simple: file systems are ubiquitous and so are the tools that work on them. Run sshfs to mount a remote directory via SSH and all of a sudden you can use local editors on remote files conveniently. I've used tramp in Emacs to do this for years, but this is much more universal. I can, for example, grep a set of files on the remote machine without starting up a shell on that machine. And so on.

To emphasize this point, the picture at the right shows an sshfs mounted remote directory in the OS X Finder.

Update: Watch this video of Amit demoing MacFUSE to get an idea of some of the things you can do. He has filesystems for Spotlight, Google Docs, Picassa, and RSS. I don't think any but the Spotlight filesystem are available at present.