Versioning File System emulation

My current pet idea is to simulate a versioning file system on UNIX simply by using a naming convention, similar to that used by the Glindra project, a set of utilities meant to offer OpenVMS-like file management for UNIX command-line usage. In particular, it uses a version numbering convention, and a purge utility to prune older revisions. The FILE server program would have to abide by this convention, and simulate ITS-like behavior to the FILE clients.

One of the key things to consider is that (as far as I can tell), versioning file systems maintained an idea of the latest version for a particular name, even if that file is deleted. This prevents the obvious failure mode where deleting a file and creating a new file with the same name would result in different files with the same name and version, confusing any program that was using version information. It seems one should keep a placeholder for a deleted file; my current thinking is that we might hide the “version metadata” in a “.versioning” subdirectory, which contains zero-byte files corresponding to the latest version number used. Of course, the filenames would still need to have version encoded in them, because multiple versions of the same file name can coexist. The .versioning subdirectory, however, would retain a record even if all the versions were deleted.

Leave a comment