Request for a Versioning File System on Linux

The people who make file systems are developers. As a developer myself the value of a versioning file system is so keenly clear I’m so surprised it’s not, at the very least, a standard option on every single file system ever created. So this is a request to all the file system developers out there: Please, what can we do to get a versioning file system?

The people who make file systems are developers. As a developer myself the value of a versioning file system is so keenly clear I’m surprised it’s not a standard option, at the very least, on every single file system ever created. So this is a request to all the file system developers out there: Please, what can we do to get a versioning file system?

I’ve googled for years looking for a production ready versioning file system. I think a fuse-based fs would even suffice. I may even take the plunge and see what I can do with fuse and perl. But I’m just so surprised it’s not already done.

There are projects out there like ext3cow, which looks like the Right Way(TM) to do it but seems dead, and the Wayback FS, but it looks dead, too. I love the way they tried to implement versioning on ext3cow. It looks exactly like what I’d want. Everything integrated at the console as a first-class citizen fs.

Now, I know people say just use a revision control system. But initialization and adding and committing files on an ongoing basis is just not something I’m going to do. Anything requiring manual labour will slip through the cracks one day. We have computers to do things for us. This should just be one more thing.

Other arguments include things like revisioning constantly changing files like database blobs, log files or just plain very large files (images, movies, data, etc.). I agree there are some things you don’t want to revision but the benefit to a developer of versioning would be immense.

I once lost a day’s work because of a bad console rm. Since it was in the span of a work day, what was supposed to save me? Frequent rcs commits? I don’t use rcs for backup (neither should you, but that’s a whole other story) and I don’t commit unfinished code. That’s just bad practice and is a symptom of a problem. So, daily backups wouldn’t have saved me, but a versioning file system would have. It got me so worked up that I created a poor man’s versioning “file system” in shell script using rsync to mirror a directory and timestamp backups. Unfortunately, it’s IO requirements caused stuttering when doing normal work. I think I’ll post that shell script in case any one wants to improve on it to see if they reduce the IO requirements. Ooh, good time to try github.

So, what can we do to get a versioning file system on linux? I’ve wanted one for years and I can’t understand why it’s not a priority. If I don’t have the knowledge to code a file system myself what can I do to bring this goal a little closer?

2 thoughts on “Request for a Versioning File System on Linux”

  1. Hello, my name is Tom from South Korea.
    Yes I agree with your point.
    I am a beginner in Versioning File System.
    I also have been googling for several days to learn and experience it on my linux PC, but so far I have found out that “Ext3cow” runs on Linux Kernel 2.6.20.3, “NilFS” is merged from Linux Kerenel 2.6.30 (Fedora 11& 12 include it), while others I could not find out the Linux Kernel Version requirement. (e.g. Wayback, Tux3, btrfs, …)

    I want to really experience the Versioning File System with my linux PC.
    I guess I have to find old Linux Kernel Version OS first of all….

    Have you ever had Versioning File System installed in your PC?

    1. I thought I was the only one! I never really was able to try any of them.

      I did investigate other ways of accomplishing the same thing, though. For example, rsync snapshotting, using git to version files, etc. You can get pretty creative with a little shell scripting.

Leave a Reply